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 ()
- class MonadServer m => MonadConnServer m
- tryRestore :: MonadServer m => COps -> m (Maybe (State, StateServer))
- updateConn :: (MonadAtomic m, MonadConnServer m) => (FactionId -> ChanFrontend -> ChanServer CmdClientUI -> IO ()) -> (FactionId -> ChanServer CmdClientAI -> IO ()) -> m ()
- killAllClients :: (MonadAtomic m, MonadConnServer m) => m ()
- waitForChildren :: IO ()
- speedupCOps :: Bool -> COps -> COps
- sendUpdateUI :: MonadConnServer m => FactionId -> CmdClientUI -> m ()
- sendQueryUI :: MonadConnServer m => FactionId -> ActorId -> m CmdSer
- sendUpdateAI :: MonadConnServer m => FactionId -> CmdClientAI -> m ()
- sendQueryAI :: MonadConnServer m => FactionId -> ActorId -> m CmdSer
- saveGameSer :: MonadServer m => m ()
- saveGameBkp :: MonadServer m => 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
- fovMode :: MonadServer m => m FovMode
- resetFidPerception :: MonadServer m => FactionId -> LevelId -> m ()
- getPerFid :: MonadServer m => FactionId -> LevelId -> m Perception
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
class MonadServer m => MonadConnServer m Source
tryRestore :: MonadServer m => COps -> m (Maybe (State, StateServer))Source
updateConn :: (MonadAtomic m, MonadConnServer m) => (FactionId -> ChanFrontend -> ChanServer CmdClientUI -> IO ()) -> (FactionId -> ChanServer CmdClientAI -> 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
waitForChildren :: IO ()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
sendUpdateUI :: MonadConnServer m => FactionId -> CmdClientUI -> m ()Source
sendQueryUI :: MonadConnServer m => FactionId -> ActorId -> m CmdSerSource
sendUpdateAI :: MonadConnServer m => FactionId -> CmdClientAI -> m ()Source
sendQueryAI :: MonadConnServer m => FactionId -> ActorId -> m CmdSerSource
Assorted primitives
saveGameSer :: MonadServer m => m ()Source
saveGameBkp :: MonadServer m => m ()Source
Save a backup of the save game file, in case of crashes.
See saveGameBkp
.
dumpCfg :: MonadServer m => FilePath -> m ()Source
Dumps the current game rules configuration to a file.
mkConfigRules :: MonadServer m => Ops RuleKind -> m (Config, StdGen, StdGen)Source
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 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.
fovMode :: MonadServer m => m FovModeSource
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