Safe Haskell | None |
---|---|
Language | Haskell2010 |
A set of atomic commands shared by client and server. These are the largest building blocks that have no components that can be observed in isolation.
We try to make atomic commands respect the laws of energy and mass
conservation, unless they really can't, e.g., monster spawning.
For example item removal from inventory is not an atomic command,
but item dropped from the inventory to the ground is. This makes
it easier to undo the commands. In principle, the commands are the only
way to affect the basic game state (State
).
See https://github.com/LambdaHack/LambdaHack/wiki/Client-server-architecture.
Synopsis
- data CmdAtomic
- data UpdAtomic
- = UpdCreateActor ActorId Actor [(ItemId, Item)]
- | UpdDestroyActor ActorId Actor [(ItemId, Item)]
- | UpdCreateItem ItemId Item ItemQuant Container
- | UpdDestroyItem ItemId Item ItemQuant Container
- | UpdSpotActor ActorId Actor [(ItemId, Item)]
- | UpdLoseActor ActorId Actor [(ItemId, Item)]
- | UpdSpotItem Bool ItemId Item ItemQuant Container
- | UpdLoseItem Bool ItemId Item ItemQuant Container
- | UpdSpotItemBag Container ItemBag [(ItemId, Item)]
- | UpdLoseItemBag Container ItemBag [(ItemId, Item)]
- | UpdMoveActor ActorId Point Point
- | UpdWaitActor ActorId Bool
- | UpdDisplaceActor ActorId ActorId
- | UpdMoveItem ItemId Int ActorId CStore CStore
- | UpdRefillHP ActorId Int64
- | UpdRefillCalm ActorId Int64
- | UpdTrajectory ActorId (Maybe ([Vector], Speed)) (Maybe ([Vector], Speed))
- | UpdQuitFaction FactionId (Maybe Status) (Maybe Status)
- | UpdLeadFaction FactionId (Maybe ActorId) (Maybe ActorId)
- | UpdDiplFaction FactionId FactionId Diplomacy Diplomacy
- | UpdTacticFaction FactionId Tactic Tactic
- | UpdAutoFaction FactionId Bool
- | UpdRecordKill ActorId (ContentId ItemKind) Int
- | UpdAlterTile LevelId Point (ContentId TileKind) (ContentId TileKind)
- | UpdAlterExplorable LevelId Int
- | UpdAlterGold Int
- | UpdSearchTile ActorId Point (ContentId TileKind)
- | UpdHideTile ActorId Point (ContentId TileKind)
- | UpdSpotTile LevelId [(Point, ContentId TileKind)]
- | UpdLoseTile LevelId [(Point, ContentId TileKind)]
- | UpdAlterSmell LevelId Point Time Time
- | UpdSpotSmell LevelId [(Point, Time)]
- | UpdLoseSmell LevelId [(Point, Time)]
- | UpdTimeItem ItemId Container ItemTimer ItemTimer
- | UpdAgeGame [LevelId]
- | UpdUnAgeGame [LevelId]
- | UpdDiscover Container ItemId (ContentId ItemKind) AspectRecord
- | UpdCover Container ItemId (ContentId ItemKind) AspectRecord
- | UpdDiscoverKind Container ItemKindIx (ContentId ItemKind)
- | UpdCoverKind Container ItemKindIx (ContentId ItemKind)
- | UpdDiscoverAspect Container ItemId AspectRecord
- | UpdCoverAspect Container ItemId AspectRecord
- | UpdDiscoverServer ItemId AspectRecord
- | UpdCoverServer ItemId AspectRecord
- | UpdPerception LevelId Perception Perception
- | UpdRestart FactionId PerLid State Challenge ClientOptions
- | UpdRestartServer State
- | UpdResume FactionId PerLid
- | UpdResumeServer State
- | UpdKillExit FactionId
- | UpdWriteSave
- data SfxAtomic
- = SfxStrike ActorId ActorId ItemId CStore
- | SfxRecoil ActorId ActorId ItemId CStore
- | SfxSteal ActorId ActorId ItemId CStore
- | SfxRelease ActorId ActorId ItemId CStore
- | SfxProject ActorId ItemId CStore
- | SfxReceive ActorId ItemId CStore
- | SfxApply ActorId ItemId CStore
- | SfxCheck ActorId ItemId CStore
- | SfxTrigger ActorId Point
- | SfxShun ActorId Point
- | SfxEffect FactionId ActorId Effect Int64
- | SfxMsgFid FactionId SfxMsg
- | SfxSortSlots
- | SfxCollideTile ActorId Point
- data SfxMsg
- = SfxUnexpected ReqFailure
- | SfxExpected Text ReqFailure
- | SfxLoudUpd Bool UpdAtomic
- | SfxLoudStrike Bool (ContentId ItemKind) Int
- | SfxLoudSummon Bool (GroupName ItemKind) Dice
- | SfxFizzles
- | SfxNothingHappens
- | SfxVoidDetection DetectKind
- | SfxUnimpressed ActorId
- | SfxSummonLackCalm ActorId
- | SfxLevelNoMore
- | SfxLevelPushed
- | SfxBracedImmune ActorId
- | SfxEscapeImpossible
- | SfxStasisProtects
- | SfxTransImpossible
- | SfxIdentifyNothing
- | SfxPurposeNothing CStore
- | SfxPurposeTooFew Int Int
- | SfxPurposeUnique
- | SfxPurposeNotCommon
- | SfxColdFish
- | SfxTimerExtended LevelId ActorId ItemId CStore
- | SfxCollideActor LevelId ActorId ActorId
- undoUpdAtomic :: UpdAtomic -> Maybe UpdAtomic
- undoSfxAtomic :: SfxAtomic -> SfxAtomic
- undoCmdAtomic :: CmdAtomic -> Maybe CmdAtomic
Documentation
Abstract syntax of atomic commands, that is, atomic game state transformations.
Instances
Eq CmdAtomic Source # | |
Show CmdAtomic Source # | |
Generic CmdAtomic Source # | |
Binary CmdAtomic Source # | |
type Rep CmdAtomic Source # | |
Defined in Game.LambdaHack.Atomic.CmdAtomic type Rep CmdAtomic = D1 (MetaData "CmdAtomic" "Game.LambdaHack.Atomic.CmdAtomic" "LambdaHack-0.8.3.0-5WMRdylEY9jFLqYScFUab7" False) (C1 (MetaCons "UpdAtomic" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 UpdAtomic)) :+: C1 (MetaCons "SfxAtomic" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 SfxAtomic))) |
Abstract syntax of atomic updates, that is, atomic commands
that really change the State
. Most of them are an encoding of a game
state diff, though they also carry some intentional hints
that help clients determine whether and how to communicate it to players.
Instances
Abstract syntax of atomic special effects, that is, atomic commands
that only display special effects and don't change State
.
Instances
Symbolic representation of text messages sent by server to clients and shown to players.
Instances
undoSfxAtomic :: SfxAtomic -> SfxAtomic Source #