Safe Haskell | None |
---|
Game.LambdaHack.Server.Action
Description
Game action monads and basic building blocks for human and computer
player actions. Has no access to the the main action type.
Does not export the liftIO
operation nor a few other implementation
details.
- class MonadActionRO m => MonadServer m where
- getServer :: m StateServer
- getsServer :: (StateServer -> a) -> m a
- modifyServer :: (StateServer -> StateServer) -> m ()
- putServer :: StateServer -> m ()
- saveServer :: m ()
- class MonadServer m => MonadConnServer m
- tryRestore :: MonadServer m => COps -> DebugModeSer -> m (Maybe (State, StateServer))
- updateConn :: (MonadAtomic m, MonadConnServer m) => (FactionId -> ChanFrontend -> ChanServer CmdClientUI CmdSer -> IO ()) -> (FactionId -> ChanServer CmdClientAI CmdSerTakeTime -> IO ()) -> m ()
- killAllClients :: (MonadAtomic m, MonadConnServer m) => m ()
- speedupCOps :: Bool -> COps -> COps
- sendUpdateAI :: MonadConnServer m => FactionId -> CmdClientAI -> m ()
- sendQueryAI :: MonadConnServer m => FactionId -> ActorId -> m CmdSerTakeTime
- sendPingAI :: MonadConnServer m => FactionId -> m ()
- sendUpdateUI :: MonadConnServer m => FactionId -> CmdClientUI -> m ()
- sendQueryUI :: MonadConnServer m => FactionId -> ActorId -> m CmdSer
- sendPingUI :: MonadConnServer m => FactionId -> m ()
- debugPrint :: MonadServer m => Text -> m ()
- dumpCfg :: MonadServer m => FilePath -> m ()
- mkConfigRules :: MonadServer m => Ops RuleKind -> m (Config, StdGen, StdGen)
- restoreScore :: MonadServer m => Config -> m ScoreTable
- revealItems :: (MonadAtomic m, MonadServer m) => Maybe FactionId -> Maybe Actor -> m ()
- deduceQuits :: (MonadAtomic m, MonadServer m) => Actor -> Status -> m ()
- rndToAction :: MonadServer m => Rnd a -> m a
- resetSessionStart :: MonadServer m => m ()
- elapsedSessionTimeGT :: MonadServer m => Int -> m Bool
- resetFidPerception :: MonadServer m => FactionId -> LevelId -> m ()
- getPerFid :: MonadServer m => FactionId -> LevelId -> m Perception
- childrenServer :: MVar [MVar ()]
Action monads
class MonadActionRO m => MonadServer m where
Methods
getServer :: m StateServer
getsServer :: (StateServer -> a) -> m a
modifyServer :: (StateServer -> StateServer) -> m ()
putServer :: StateServer -> m ()
saveServer :: m ()
Instances
class MonadServer m => MonadConnServer m
Instances
tryRestore :: MonadServer m => COps -> DebugModeSer -> m (Maybe (State, StateServer))
updateConn :: (MonadAtomic m, MonadConnServer m) => (FactionId -> ChanFrontend -> ChanServer CmdClientUI CmdSer -> IO ()) -> (FactionId -> ChanServer CmdClientAI CmdSerTakeTime -> IO ()) -> m ()
Update connections to the new definition of factions. Connect to clients in old or newly spawned threads that read and write directly to the channels.
killAllClients :: (MonadAtomic m, MonadConnServer m) => m ()
speedupCOps :: Bool -> COps -> COps
Compute and insert auxiliary optimized components into game content, to be used in time-critical sections of the code.
Communication
sendUpdateAI :: MonadConnServer m => FactionId -> CmdClientAI -> m ()
sendQueryAI :: MonadConnServer m => FactionId -> ActorId -> m CmdSerTakeTime
sendPingAI :: MonadConnServer m => FactionId -> m ()
sendUpdateUI :: MonadConnServer m => FactionId -> CmdClientUI -> m ()
sendQueryUI :: MonadConnServer m => FactionId -> ActorId -> m CmdSer
sendPingUI :: MonadConnServer m => FactionId -> m ()
Assorted primitives
debugPrint :: MonadServer m => Text -> m ()
dumpCfg :: MonadServer m => FilePath -> m ()
Dumps the current game rules configuration to a file.
mkConfigRules :: MonadServer m => Ops RuleKind -> m (Config, StdGen, StdGen)
Create a server config file. Warning: when it's used, the game state may still be undefined, hence the content ops are given as an argument.
restoreScore :: MonadServer m => Config -> m ScoreTable
Read the high scores table. Return the empty table if no file. Warning: when it's used, the game state may still be undefined, hence the config is given as an argument.
revealItems :: (MonadAtomic m, MonadServer m) => Maybe FactionId -> Maybe Actor -> m ()
deduceQuits :: (MonadAtomic m, MonadServer m) => Actor -> Status -> m ()
rndToAction :: MonadServer m => Rnd a -> m a
Invoke pseudo-random computation with the generator kept in the state.
resetSessionStart :: MonadServer m => m ()
elapsedSessionTimeGT :: MonadServer m => Int -> m Bool
resetFidPerception :: MonadServer m => FactionId -> LevelId -> m ()
Update the cached perception for the selected level, for a faction. The assumption is the level, and only the level, has changed since the previous perception calculation.
getPerFid :: MonadServer m => FactionId -> LevelId -> m Perception
childrenServer :: MVar [MVar ()]