Safe Haskell | None |
---|
Game.Antisplice.Monad.Dungeon
Contents
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, MonadExpand m, ExpanderEnv m, MonadDungeon m, MonadError SplErr m, MonadAtoms m, MonadClock m, MonadVocab m, MonadRandom m, Broadcaster PlayerId m) => m a
- type Handler = ChattyDungeonM ()
- newtype HandlerBox = Handler {}
- type Prerequisite = ChattyDungeonM Bool
- newtype PrerequisiteBox = Prerequisite {}
- 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 PathState = PathState {}
- data StatKey
- = Strength
- | Agility
- | Stamina
- | Intelligence
- | Spirit
- | Armor
- | Haste
- | CooldownDuration
- | AttackPower
- data EquipKey
- data Relation
- data Feature
- 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
- objectRouteOf :: ![NodeId]
- objectFeaturesOf :: AVL Feature
- objectFactionOf :: !(Maybe (Atom Faction))
- objectTriggerOnFirstSightOf :: Handler
- objectTriggerOnEachSightOf :: Handler
- objectTriggerOnFirstAcquireOf :: Handler
- objectTriggerOnEachAcquireOf :: Handler
- objectTriggerOnFirstInspectionOf :: Handler
- objectTriggerOnEachInspectionOf :: Handler
- objectTriggerOnLookAtOf :: Handler
- objectTriggerOnLookIntoOf :: Handler
- objectTriggerOnReadOf :: Handler
- objectTriggerOnEnterOf :: Handler
- objectTriggerOnRoomEnterOf :: Handler
- objectTriggerOnRoomLeaveOf :: Handler
- objectTriggerOnAnnounceOf :: Handler
- objectTriggerOnDropOf :: Handler
- objectTriggerOnFirstEquipOf :: Handler
- objectTriggerOnEachEquipOf :: Handler
- objectTriggerOnUnequipOf :: Handler
- objectTriggerOnDieOf :: Handler
- objectTriggerOnTakeDamageOf :: Handler
- 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 Currency = Currency {}
- data CurrencyId
- = Health
- | CurrencyId Int
- data DamageTarget
- newtype PlayerId = PlayerId Int
- data PlayerState = PlayerState {
- playerIdOf :: !PlayerId
- playerRoomOf :: !NodeId
- playerMaxHealthOf :: !Int
- playerInventoryOf :: AVL ObjectState
- playerEquipOf :: AVL (EquipKey, ObjectState)
- playerBaseStatsOf :: AVL (StatKey, Int)
- playerStereosOf :: [Atom PlayerStereo]
- playerReputationOf :: AVL (Atom Faction, Int)
- playerCurrenciesOf :: AVL (CurrencyId, Int)
- playerCooldownsOf :: AVL CooldownId
- playerOpponentOf :: !ObjectId
- newtype PlayerT m a = Player {
- runPlayerT :: PlayerState -> m (a, PlayerState)
- class Monad m => MonadPlayer m where
- getPlayerState :: m PlayerState
- putPlayerState :: PlayerState -> m ()
- modifyPlayerState :: (PlayerState -> PlayerState) -> m ()
- data PlayerStereo = PlayerStereo {
- stereoCalcStatBonus :: (StatKey -> Int) -> StatKey -> Int
- stereoSkillBonus :: String -> Maybe (SkillParam -> HandlerBox)
- data CooldownId
- data SkillParam = SkillParam {}
- data DungeonState = DungeonState {}
- currentRoomOf :: DungeonState -> Maybe NodeId
- playerOf :: DungeonState -> Maybe PlayerState
- newtype DungeonT m a = Dungeon {
- runDungeonT :: DungeonState -> m (a, DungeonState)
- class (MonadRoom m, MonadPlayer m) => MonadDungeon m where
- getDungeonState :: m DungeonState
- putDungeonState :: DungeonState -> m ()
- lowerDungeon :: DungeonT m a -> m a
Context quantifiers
type DungeonM a = forall m. MonadDungeon m => m aSource
Matches any MonadDungeon
context
type ChattyDungeonM a = forall m. (Functor m, ExtendedPrinter m, MonadExpand m, ExpanderEnv m, MonadDungeon m, MonadError SplErr m, MonadAtoms m, MonadClock m, MonadVocab m, MonadRandom m, Broadcaster PlayerId m) => m aSource
Matches any MonadDungeon
context that also implements most of the Chatty classes and some of our utility classes.
type Handler = ChattyDungeonM ()Source
The common type of all event handlers.
newtype HandlerBox Source
A boxed Handler
to avoid ImpredicativeTypes
Constructors
Handler | |
Fields |
Instances
type Prerequisite = ChattyDungeonM BoolSource
The common type of all prerequisites.
newtype PrerequisiteBox Source
A boxed Prerequisite
to avoid ImpredicativeTypes
Constructors
Prerequisite | |
Fields |
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 => MonadError SplErr (RoomT m0) | |
ChannelPrinter Bool m0 => ChannelPrinter Bool (RoomT m0) | |
ChannelPrinter Int m0 => ChannelPrinter Int (RoomT m0) | |
ChannelPrinter Handle m0 => ChannelPrinter Handle (RoomT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (RoomT m0) | |
Monad m => Monad (RoomT m) | |
Functor m => Functor (RoomT m) | |
MonadIO m0 => MonadIO (RoomT m0) | |
MonadCounter m0 => MonadCounter (RoomT m0) | |
MonadAtoms m0 => MonadAtoms (RoomT m0) | |
MonadVocab m0 => MonadVocab (RoomT m0) | |
MonadPrinter m0 => MonadPrinter (RoomT m0) | |
MonadFinalizer m0 => MonadFinalizer (RoomT m0) | |
MonadScanner m0 => MonadScanner (RoomT m0) | |
MonadExpand m0 => MonadExpand (RoomT m0) | |
ExpanderEnv m0 => ExpanderEnv (RoomT m0) | |
MonadRandom m0 => MonadRandom (RoomT m0) | |
MonadClock m0 => MonadClock (RoomT m0) | |
ExtendedPrinter m0 => ExtendedPrinter (RoomT m0) | |
Monad m => MonadRoom (RoomT m) | |
MonadSpawn m0 => MonadSpawn (RoomT m0) | |
HistoryEnv m0 => HistoryEnv (RoomT m0) | |
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 | |
Haste | |
CooldownDuration | |
AttackPower |
Key for equipment slot
Relation between the player and the object.
Object features.
Constructors
Damagable | May take damage. |
Acquirable | May be acquired. |
Equipable EquipKey | May be equipped at the given slot. |
Redeemable Currency Int | May be redeemed for the given currency. |
AutoRedeem Currency Int | Redeem automatically for a given currency. |
Weighty Int | Has a known weight. |
Played PlayerId | Is connected to a real player. |
Mobile | May move around. |
Stereo Relation (Atom PlayerStereo) | Implies an additional stereotype for the nearcarryingwearing player |
Described (Atom String) | Implies an additional particle for the room description |
data ObjectState Source
State type for ObjectT
Constructors
The object monad. Used to create or modify objects.
Constructors
Object | |
Fields
|
Instances
MonadTrans ObjectT | |
MonadError SplErr m0 => MonadError SplErr (ObjectT m0) | |
ChannelPrinter Bool m0 => ChannelPrinter Bool (ObjectT m0) | |
ChannelPrinter Int m0 => ChannelPrinter Int (ObjectT m0) | |
ChannelPrinter Handle m0 => ChannelPrinter Handle (ObjectT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (ObjectT m0) | |
Monad m => Monad (ObjectT m) | |
Functor m => Functor (ObjectT m) | |
MonadIO m0 => MonadIO (ObjectT m0) | |
MonadCounter m0 => MonadCounter (ObjectT m0) | |
MonadAtoms m0 => MonadAtoms (ObjectT m0) | |
MonadVocab m0 => MonadVocab (ObjectT m0) | |
MonadPrinter m0 => MonadPrinter (ObjectT m0) | |
MonadFinalizer m0 => MonadFinalizer (ObjectT m0) | |
MonadScanner m0 => MonadScanner (ObjectT m0) | |
MonadExpand m0 => MonadExpand (ObjectT m0) | |
ExpanderEnv m0 => ExpanderEnv (ObjectT m0) | |
MonadRandom m0 => MonadRandom (ObjectT m0) | |
MonadClock m0 => MonadClock (ObjectT m0) | |
ExtendedPrinter m0 => ExtendedPrinter (ObjectT m0) | |
Monad m => MonadObject (ObjectT m) | |
MonadSpawn m0 => MonadSpawn (ObjectT m0) | |
HistoryEnv m0 => HistoryEnv (ObjectT m0) | |
Monad m => OnRoomLeave (ObjectT m) | |
Monad m => OnRoomEnter (ObjectT m) | |
Monad m => OnRead (ObjectT m) | |
Monad m => OnFirstInspection (ObjectT m) | |
Monad m => OnInspection (ObjectT m) | |
Monad m => OnFirstAcquire (ObjectT m) | |
Monad m => OnAcquire (ObjectT m) | |
Monad m => OnFirstSight (ObjectT m) | |
Monad m => OnSight (ObjectT m) | |
Monad m => OnAnnounce (ObjectT m) | |
Monad m => OnLookInto (ObjectT m) | |
Monad m => OnLook (ObjectT m) | |
Monad m => OnEnter (ObjectT m) |
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) | |
MonadObject m0 => MonadObject (StereoBuilderT m0) |
Factions
A faction
Constructors
Faction | |
Currencies
Currency descriptor (description and expander name)
Constructors
Currency | |
Fields |
Fight
data DamageTarget Source
Target for attacks. May be a player or an object.
Constructors
TargetPlayer PlayerId | |
TargetObject ObjectId |
Players
Phantom ID type for players
Instances
Eq PlayerId | |
Ord PlayerId | |
Indexable PlayerState PlayerId PlayerState | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (CounterT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (SplErrT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (AtomStoreT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (VocabT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (NullExpanderT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (ExpanderT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (DungeonT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (PlayerT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (ObjectT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (RoomT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (HtmlPrinterT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (AnsiPrinterT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (StereoBuilderT m0) | |
(MonadDungeon m0, ChannelPrinter PlayerId m0) => Broadcaster PlayerId (CounterT m0) | |
(MonadDungeon m0, ChannelPrinter PlayerId m0) => Broadcaster PlayerId (SplErrT m0) | |
(MonadDungeon m0, ChannelPrinter PlayerId m0) => Broadcaster PlayerId (AtomStoreT m0) | |
(MonadDungeon m0, ChannelPrinter PlayerId m0) => Broadcaster PlayerId (VocabT m0) | |
ChannelPrinter PlayerId m => Broadcaster PlayerId (DungeonT m) | |
(MonadDungeon m0, ChannelPrinter PlayerId m0) => Broadcaster PlayerId (StereoBuilderT m0) | |
MonadCounter m0 => MonadCounter (PlayerFilterT m0) | |
MonadAtoms m0 => MonadAtoms (PlayerFilterT m0) | |
MonadVocab m0 => MonadVocab (PlayerFilterT m0) | |
MonadFinalizer m0 => MonadFinalizer (PlayerFilterT m0) | |
MonadScanner m0 => MonadScanner (PlayerFilterT m0) | |
MonadExpand m0 => MonadExpand (PlayerFilterT m0) | |
ExpanderEnv m0 => ExpanderEnv (PlayerFilterT m0) | |
MonadRandom m0 => MonadRandom (PlayerFilterT m0) | |
MonadClock m0 => MonadClock (PlayerFilterT m0) | |
MonadSpawn m0 => MonadSpawn (PlayerFilterT m0) | |
HistoryEnv m0 => HistoryEnv (PlayerFilterT m0) |
data PlayerState Source
State type for PlayerT
Constructors
PlayerState | |
Fields
|
The player monad. Used to create or modify players.
Constructors
Player | |
Fields
|
Instances
MonadTrans PlayerT | |
MonadError SplErr m0 => MonadError SplErr (PlayerT m0) | |
ChannelPrinter Bool m0 => ChannelPrinter Bool (PlayerT m0) | |
ChannelPrinter Int m0 => ChannelPrinter Int (PlayerT m0) | |
ChannelPrinter Handle m0 => ChannelPrinter Handle (PlayerT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (PlayerT m0) | |
Monad m => Monad (PlayerT m) | |
Functor m => Functor (PlayerT m) | |
MonadIO m0 => MonadIO (PlayerT m0) | |
MonadCounter m0 => MonadCounter (PlayerT m0) | |
MonadAtoms m0 => MonadAtoms (PlayerT m0) | |
MonadVocab m0 => MonadVocab (PlayerT m0) | |
MonadPrinter m0 => MonadPrinter (PlayerT m0) | |
MonadFinalizer m0 => MonadFinalizer (PlayerT m0) | |
MonadScanner m0 => MonadScanner (PlayerT m0) | |
MonadExpand m0 => MonadExpand (PlayerT m0) | |
ExpanderEnv m0 => ExpanderEnv (PlayerT m0) | |
MonadRandom m0 => MonadRandom (PlayerT m0) | |
MonadClock m0 => MonadClock (PlayerT m0) | |
ExtendedPrinter m0 => ExtendedPrinter (PlayerT m0) | |
Monad m => MonadPlayer (PlayerT m) | |
MonadSpawn m0 => MonadSpawn (PlayerT m0) | |
HistoryEnv m0 => HistoryEnv (PlayerT m0) | |
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.
modifyPlayerState :: (PlayerState -> PlayerState) -> m ()Source
Modify 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) | |
MonadPlayer m0 => MonadPlayer (StereoBuilderT m0) |
Stereotypes
data PlayerStereo Source
A player stereotype
Constructors
PlayerStereo | |
Fields
|
Instances
data CooldownId Source
Phantom ID type for cooldowns
Constructors
GlobalCooldown | |
CooldownId Int |
Instances
Dungeons
currentRoomOf :: DungeonState -> Maybe NodeIdSource
For compatibility. Earlier versions of DungeonT had a field for that.
playerOf :: DungeonState -> Maybe PlayerStateSource
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 => MonadError SplErr (DungeonT m0) | |
ChannelPrinter Bool m0 => ChannelPrinter Bool (DungeonT m0) | |
ChannelPrinter Int m0 => ChannelPrinter Int (DungeonT m0) | |
ChannelPrinter Handle m0 => ChannelPrinter Handle (DungeonT m0) | |
ChannelPrinter PlayerId m0 => ChannelPrinter PlayerId (DungeonT m0) | |
ChannelPrinter PlayerId m => Broadcaster PlayerId (DungeonT m) | |
Monad m => Monad (DungeonT m) | |
Functor m => Functor (DungeonT m) | |
MonadIO m0 => MonadIO (DungeonT m0) | |
MonadCounter m0 => MonadCounter (DungeonT m0) | |
MonadAtoms m0 => MonadAtoms (DungeonT m0) | |
MonadVocab m0 => MonadVocab (DungeonT m0) | |
MonadPrinter m0 => MonadPrinter (DungeonT m0) | |
MonadFinalizer m0 => MonadFinalizer (DungeonT m0) | |
MonadScanner m0 => MonadScanner (DungeonT m0) | |
MonadExpand m => MonadExpand (DungeonT m) | |
ExpanderEnv m0 => ExpanderEnv (DungeonT m0) | |
MonadRandom m0 => MonadRandom (DungeonT m0) | |
MonadClock m0 => MonadClock (DungeonT m0) | |
ExtendedPrinter m0 => ExtendedPrinter (DungeonT m0) | |
Monad m => MonadDungeon (DungeonT m) | |
Monad m => MonadPlayer (DungeonT m) | |
Monad m => MonadRoom (DungeonT m) | |
HistoryEnv m0 => HistoryEnv (DungeonT m0) |
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.
lowerDungeon :: DungeonT m a -> m aSource
Lower a given DungeonT function
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) | |
MonadDungeon m0 => MonadDungeon (StereoBuilderT m0) |