LambdaHack-0.7.1.0: A game engine library for roguelike dungeon crawlers

Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Common.State

Contents

Description

The common server and client basic game state type and its operations.

Synopsis

Basic game state, local or global

data State Source #

View on the basic game state. The remembered fields, in client copies of the state, carry only a subset of the full information that the server keeps. Clients never directly change their State, but apply atomic actions sent by the server to do so (and/or the server applies the actions to each client state in turn).

Instances

Eq State Source # 

Methods

(==) :: State -> State -> Bool #

(/=) :: State -> State -> Bool #

Show State Source # 

Methods

showsPrec :: Int -> State -> ShowS #

show :: State -> String #

showList :: [State] -> ShowS #

Binary State Source # 

Methods

put :: State -> Put #

get :: Get State #

putList :: [State] -> Put #

State components

State construction

defStateGlobal :: Dungeon -> AbsDepth -> FactionDict -> COps -> ScoreDict -> Id ModeKind -> DiscoveryKind -> State Source #

Initial complete global game state.

emptyState :: COps -> State Source #

Initial empty state.

localFromGlobal :: State -> State Source #

Local state created by removing secret information from global state components.

State update

updateDungeon :: (Dungeon -> Dungeon) -> State -> State Source #

Update dungeon data within state.

updateDepth :: (AbsDepth -> AbsDepth) -> State -> State Source #

Update dungeon depth.

updateActorD :: (ActorDict -> ActorDict) -> State -> State Source #

Update the actor dictionary.

updateItemD :: (ItemDict -> ItemDict) -> State -> State Source #

Update the item dictionary.

updateItemIxMap :: (ItemIxMap -> ItemIxMap) -> State -> State Source #

Update the item kind index map.

updateFactionD :: (FactionDict -> FactionDict) -> State -> State Source #

Update faction data within state.

updateTime :: (Time -> Time) -> State -> State Source #

Update global time within state.

updateCOps :: (COps -> COps) -> State -> State Source #

Update content data within state.

State operations

Internal operations

unknownLevel :: COps -> AbsDepth -> X -> Y -> Text -> Text -> ([Point], [Point]) -> Int -> [Point] -> Bool -> Level Source #