LambdaHack- A roguelike game engine in early and active development

Safe HaskellNone




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.


Action monads

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.

speedupCOps :: Bool -> COps -> COpsSource

Compute and insert auxiliary optimized components into game content, to be used in time-critical sections of the code.


Assorted primitives

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.

rndToAction :: MonadServer m => Rnd a -> m aSource

Invoke pseudo-random computation with the generator kept in the state.

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.