Safe Haskell | None |
---|
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 => m String
- mkConfigRules :: MonadServer m => Ops RuleKind -> Maybe StdGen -> 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 whereSource
getServer :: m StateServerSource
getsServer :: (StateServer -> a) -> m aSource
modifyServer :: (StateServer -> StateServer) -> m ()Source
putServer :: StateServer -> m ()Source
saveServer :: m ()Source
class MonadServer m => MonadConnServer m Source
tryRestore :: MonadServer m => COps -> DebugModeSer -> m (Maybe (State, StateServer))Source
updateConn :: (MonadAtomic m, MonadConnServer m) => (FactionId -> ChanFrontend -> ChanServer CmdClientUI CmdSer -> IO ()) -> (FactionId -> ChanServer CmdClientAI CmdSerTakeTime -> IO ()) -> m ()Source
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 ()Source
speedupCOps :: Bool -> COps -> COpsSource
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 ()Source
sendQueryAI :: MonadConnServer m => FactionId -> ActorId -> m CmdSerTakeTimeSource
sendPingAI :: MonadConnServer m => FactionId -> m ()Source
sendUpdateUI :: MonadConnServer m => FactionId -> CmdClientUI -> m ()Source
sendQueryUI :: MonadConnServer m => FactionId -> ActorId -> m CmdSerSource
sendPingUI :: MonadConnServer m => FactionId -> m ()Source
Assorted primitives
debugPrint :: MonadServer m => Text -> m ()Source
dumpCfg :: MonadServer m => m StringSource
Dumps the current game rules configuration to a file.
mkConfigRules :: MonadServer m => Ops RuleKind -> Maybe StdGen -> m (Config, StdGen, StdGen)Source
Read and parse rules config file and supplement it with random seeds. This creates 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 ScoreTableSource
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 ()Source
deduceQuits :: (MonadAtomic m, MonadServer m) => Actor -> Status -> m ()Source
rndToAction :: MonadServer m => Rnd a -> m aSource
Invoke pseudo-random computation with the generator kept in the state.
resetSessionStart :: MonadServer m => m ()Source
elapsedSessionTimeGT :: MonadServer m => Int -> m BoolSource
resetFidPerception :: MonadServer m => FactionId -> LevelId -> m ()Source
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 PerceptionSource
childrenServer :: MVar [MVar ()]Source