Safe Haskell | None |
---|
Game.Antisplice.Monad.Dungeon
Description
Provides the basic data types and monads for Antisplice.
- type DungeonM a = forall m. MonadDungeon m => m a
- type ChattyDungeonM a = forall m. (Functor m, ExtendedPrinter m, MonadScanner m, MonadExpand m, ExpanderEnv m, MonadDungeon m, MonadError SplErr m, MonadAtoms m, MonadClock m, MonadVocab m) => m a
- type Trigger = ChattyDungeonM ()
- newtype TriggerBox = TriggerBox {}
- class IsText t where
- data Direction
- data RoomState = RoomState {}
- newtype RoomT m a = Room {}
- class Monad m => MonadRoom m where
- getRoomState :: m RoomState
- putRoomState :: RoomState -> m ()
- data StatKey
- = Strength
- | Agility
- | Stamina
- | Intelligence
- | Spirit
- | Armor
- | AttackPower
- data EquipKey
- data Implication
- data Feature
- = Damagable
- | Acquirable
- | Equipable EquipKey
- | Mobile
- data ObjectId
- = ObjectId Int
- | FalseObject
- data ObjectState = ObjectState {
- objectIdOf :: !ObjectId
- objectTitleOf :: !Text
- objectDescOf :: !Text
- objectNamesOf :: ![String]
- objectAttributesOf :: ![String]
- objectOnceSeenOf :: !Bool
- objectOnceAcquiredOf :: !Bool
- objectOnceInspectedOf :: !Bool
- objectOnceEquippedOf :: !Bool
- objectMaxHealthOf :: !Int
- objectCurHealthOf :: !Int
- objectStatsOf :: AVL (StatKey, Int)
- objectRouteOf :: ![NodeId]
- objectFeaturesOf :: AVL (Feature, ())
- objectNearImplicationsOf :: [Implication]
- objectCarryImplicationsOf :: [Implication]
- objectWearImplicationsOf :: [Implication]
- objectFactionOf :: !(Maybe (Atom Faction))
- objectTriggerOnFirstSightOf :: Trigger
- objectTriggerOnEachSightOf :: Trigger
- objectTriggerOnFirstAcquireOf :: Trigger
- objectTriggerOnEachAcquireOf :: Trigger
- objectTriggerOnFirstInspectionOf :: Trigger
- objectTriggerOnEachInspectionOf :: Trigger
- objectTriggerOnLookAtOf :: Trigger
- objectTriggerOnLookIntoOf :: Trigger
- objectTriggerOnReadOf :: Trigger
- objectTriggerOnEnterOf :: Trigger
- objectTriggerOnRoomEnterOf :: Trigger
- objectTriggerOnRoomLeaveOf :: Trigger
- objectTriggerOnAnnounceOf :: Trigger
- objectTriggerOnDropOf :: Trigger
- objectTriggerOnFirstEquipOf :: Trigger
- objectTriggerOnEachEquipOf :: Trigger
- objectTriggerOnUnequipOf :: Trigger
- newtype ObjectT m a = Object {
- runObjectT :: ObjectState -> m (a, ObjectState)
- class Monad m => MonadObject m where
- getObjectState :: m ObjectState
- putObjectState :: ObjectState -> m ()
- data Faction = Faction {}
- data Attitude
- data PlayerStereo = PlayerStereo {
- stereoCalcStatBonus :: (StatKey -> Int) -> StatKey -> Int
- data PlayerState = PlayerState {
- playerRoomOf :: !NodeId
- playerMaxHealthOf :: !Int
- playerCurHealthOf :: !Int
- playerInventoryOf :: AVL ObjectState
- playerEquipOf :: AVL (EquipKey, ObjectState)
- playerBaseStatsOf :: AVL (StatKey, Int)
- playerStereosOf :: [Atom PlayerStereo]
- playerReputationOf :: AVL (Atom Faction, Int)
- newtype PlayerT m a = Player {
- runPlayerT :: PlayerState -> m (a, PlayerState)
- class Monad m => MonadPlayer m where
- getPlayerState :: m PlayerState
- putPlayerState :: PlayerState -> m ()
- data DungeonState = DungeonState {}
- currentRoomOf :: DungeonState -> Maybe NodeId
- newtype DungeonT m a = Dungeon {
- runDungeonT :: DungeonState -> m (a, DungeonState)
- class (MonadRoom m, MonadPlayer m) => MonadDungeon m where
- getDungeonState :: m DungeonState
- putDungeonState :: DungeonState -> m ()
Context quantifiers
type DungeonM a = forall m. MonadDungeon m => m aSource
Matches any MonadDungeon
context
type ChattyDungeonM a = forall m. (Functor m, ExtendedPrinter m, MonadScanner m, MonadExpand m, ExpanderEnv m, MonadDungeon m, MonadError SplErr m, MonadAtoms m, MonadClock m, MonadVocab m) => m aSource
Matches any MonadDungeon
context that also implements most of the Chatty classes and some of our utility classes.
type Trigger = ChattyDungeonM ()Source
The common type of all event handlers.
Utilities
Typeclass for all types that are convertible to or from Text
10 directions to go
Rooms
State type for RoomT
Constructors
RoomState | |
The room monad. Used to create or modify room data.
Instances
MonadTrans RoomT | |
Run RoomT | |
(MonadError SplErr m0, Run RoomT) => MonadError SplErr (RoomT m0) | |
Monad m => Monad (RoomT m) | |
Functor m => Functor (RoomT m) | |
ExpanderEnv m0 => ExpanderEnv (RoomT m0) | |
MonadExpand m0 => MonadExpand (RoomT m0) | |
ExtendedPrinter m0 => ExtendedPrinter (RoomT m0) | |
MonadSpawn m0 => MonadSpawn (RoomT m0) | |
MonadPrinter m0 => MonadPrinter (RoomT m0) | |
MonadScanner m0 => MonadScanner (RoomT m0) | |
MonadFinalizer m0 => MonadFinalizer (RoomT m0) | |
MonadClock m0 => MonadClock (RoomT m0) | |
MonadRandom m0 => MonadRandom (RoomT m0) | |
MonadIO m0 => MonadIO (RoomT m0) | |
MonadCounter m0 => MonadCounter (RoomT m0) | |
MonadAtoms m0 => MonadAtoms (RoomT m0) | |
MonadVocab m0 => MonadVocab (RoomT m0) | |
Monad m => MonadRoom (RoomT m) | |
Monad m => OnAnnounce (RoomT m) | |
Monad m => OnLook (RoomT m) | |
Monad m => OnFirstEnter (RoomT m) | |
Monad m => OnEnter (RoomT m) |
class Monad m => MonadRoom m whereSource
Typeclass for all room monads.
Methods
getRoomState :: m RoomStateSource
Get the room state
putRoomState :: RoomState -> m ()Source
Put the room state
Objects
Key for item or player statistics
Constructors
Strength | |
Agility | |
Stamina | |
Intelligence | |
Spirit | |
Armor | |
AttackPower |
Key for equipment slot
data Implication Source
Implications an object infers for its containing room
Object features.
Constructors
Damagable | May take damage. |
Acquirable | May be acquired. |
Equipable EquipKey | May be equipped at the given slot. |
Mobile | May move around. |
data ObjectState Source
State type for ObjectT
Constructors
The object monad. Used to create or modify objects.
Constructors
Object | |
Fields
|
Instances
class Monad m => MonadObject m whereSource
Typeclass for all object monads
Methods
getObjectState :: m ObjectStateSource
Get the object state
putObjectState :: ObjectState -> m ()Source
Put the object state
Instances
MonadObject m0 => MonadObject (CounterT m0) | |
MonadObject m0 => MonadObject (SplErrT m0) | |
Monad m => MonadObject (ObjectT m) |
Factions
A faction
Constructors
Faction | |
Players
data PlayerStereo Source
A player stereotype
Constructors
PlayerStereo | |
Fields
|
Instances
data PlayerState Source
State type for PlayerT
Constructors
PlayerState | |
Fields
|
Instances
The player monad. Used to create or modify players.
Constructors
Player | |
Fields
|
Instances
MonadTrans PlayerT | |
(MonadError SplErr m0, Run PlayerT) => MonadError SplErr (PlayerT m0) | |
Monad m => Monad (PlayerT m) | |
Functor m => Functor (PlayerT m) | |
ExpanderEnv m0 => ExpanderEnv (PlayerT m0) | |
MonadExpand m0 => MonadExpand (PlayerT m0) | |
ExtendedPrinter m0 => ExtendedPrinter (PlayerT m0) | |
MonadSpawn m0 => MonadSpawn (PlayerT m0) | |
MonadPrinter m0 => MonadPrinter (PlayerT m0) | |
MonadScanner m0 => MonadScanner (PlayerT m0) | |
MonadFinalizer m0 => MonadFinalizer (PlayerT m0) | |
MonadClock m0 => MonadClock (PlayerT m0) | |
MonadRandom m0 => MonadRandom (PlayerT m0) | |
MonadIO m0 => MonadIO (PlayerT m0) | |
MonadCounter m0 => MonadCounter (PlayerT m0) | |
MonadAtoms m0 => MonadAtoms (PlayerT m0) | |
MonadVocab m0 => MonadVocab (PlayerT m0) | |
Monad m => MonadPlayer (PlayerT m) | |
Monad m => HasStatsM (PlayerT m) |
class Monad m => MonadPlayer m whereSource
Typeclass for all player monads.
Methods
getPlayerState :: m PlayerStateSource
Get the player state.
putPlayerState :: PlayerState -> m ()Source
Put the player state.
Instances
MonadPlayer m0 => MonadPlayer (CounterT m0) | |
MonadPlayer m0 => MonadPlayer (SplErrT m0) | |
MonadPlayer m0 => MonadPlayer (AtomStoreT m0) | |
MonadPlayer m0 => MonadPlayer (VocabT m0) | |
Monad m => MonadPlayer (DungeonT m) | |
Monad m => MonadPlayer (PlayerT m) |
Dungeons
currentRoomOf :: DungeonState -> Maybe NodeIdSource
For compatibility. Earlier versions of DungeonT had a field for that.
The dungeon monad. Everything runs inside this.
Constructors
Dungeon | |
Fields
|
Instances
MonadTrans DungeonT | |
Run DungeonT | |
(MonadError SplErr m0, Run DungeonT) => MonadError SplErr (DungeonT m0) | |
Monad m => Monad (DungeonT m) | |
Functor m => Functor (DungeonT m) | |
ExpanderEnv m0 => ExpanderEnv (DungeonT m0) | |
MonadExpand m0 => MonadExpand (DungeonT m0) | |
ExtendedPrinter m0 => ExtendedPrinter (DungeonT m0) | |
MonadSpawn m0 => MonadSpawn (DungeonT m0) | |
MonadPrinter m0 => MonadPrinter (DungeonT m0) | |
MonadScanner m0 => MonadScanner (DungeonT m0) | |
MonadFinalizer m0 => MonadFinalizer (DungeonT m0) | |
MonadClock m0 => MonadClock (DungeonT m0) | |
MonadRandom m0 => MonadRandom (DungeonT m0) | |
MonadIO m0 => MonadIO (DungeonT m0) | |
MonadCounter m0 => MonadCounter (DungeonT m0) | |
MonadAtoms m0 => MonadAtoms (DungeonT m0) | |
MonadVocab m0 => MonadVocab (DungeonT m0) | |
Monad m => MonadDungeon (DungeonT m) | |
Monad m => MonadPlayer (DungeonT m) | |
Monad m => MonadRoom (DungeonT m) |
class (MonadRoom m, MonadPlayer m) => MonadDungeon m whereSource
Typeclass for all dungeon monads.
Methods
getDungeonState :: m DungeonStateSource
Get the dungeon state.
putDungeonState :: DungeonState -> m ()Source
Put the dungeon state.
Instances
MonadDungeon m0 => MonadDungeon (CounterT m0) | |
MonadDungeon m0 => MonadDungeon (SplErrT m0) | |
MonadDungeon m0 => MonadDungeon (AtomStoreT m0) | |
MonadDungeon m0 => MonadDungeon (VocabT m0) | |
Monad m => MonadDungeon (DungeonT m) |