LambdaHack-0.2.8: Game/LambdaHack/Server/Action/ActionClass.hs
-- | Basic type classes for server game actions.
-- This module should not be imported anywhere except in 'Action'
-- and 'TypeAction'.
module Game.LambdaHack.Server.Action.ActionClass where
import Game.LambdaHack.Common.Action
import Game.LambdaHack.Common.ClientCmd
import Game.LambdaHack.Server.State
class MonadActionRO m => MonadServer m where
getServer :: m StateServer
getsServer :: (StateServer -> a) -> m a
modifyServer :: (StateServer -> StateServer) -> m ()
putServer :: StateServer -> m ()
-- We do not provide a MonadIO instance, so that outside of Action/
-- nobody can subvert the action monads by invoking arbitrary IO.
liftIO :: IO a -> m a
class MonadServer m => MonadConnServer m where
getDict :: m ConnServerDict
getsDict :: (ConnServerDict -> a) -> m a
modifyDict :: (ConnServerDict -> ConnServerDict) -> m ()
putDict :: ConnServerDict -> m ()