Safe Haskell | None |
---|
Language.Nomyx.Engine
Description
Warning: Nomyx internals (not required to compose rules and play the game) This module implements game engine. the module manages the effects of rules over each others. This module is not required
- data GameEvent
- data LoggedGame = LoggedGame {
- _game :: Game
- _gameLog :: [TimedEvent]
- type GameName = String
- data Game = Game {
- _gameName :: GameName
- _gameDesc :: GameDesc
- _rules :: [Rule]
- _players :: [PlayerInfo]
- _variables :: [Var]
- _events :: [EventHandler]
- _outputs :: [Output]
- _victory :: [PlayerNumber]
- _logs :: [Log]
- _currentTime :: UTCTime
- data GameDesc = GameDesc {}
- execGameEvent :: GameEvent -> StateT LoggedGame IO ()
- execGameEvent' :: Maybe (RuleCode -> IO RuleFunc) -> GameEvent -> StateT LoggedGame IO ()
- execWithGame :: UTCTime -> State LoggedGame () -> LoggedGame -> LoggedGame
- execWithGame' :: UTCTime -> StateT LoggedGame IO () -> LoggedGame -> IO LoggedGame
- game :: Lens LoggedGame Game
- emptyGame :: GameName -> GameDesc -> UTCTime -> Game
- getLoggedGame :: Game -> (RuleCode -> IO RuleFunc) -> [TimedEvent] -> IO LoggedGame
- gameName :: Lens Game GameName
- data Var = forall a . (Typeable a, Show a, Eq a) => Var {
- _vRuleNumber :: RuleNumber
- _vName :: String
- vData :: a
- data SubmitRule = SubmitRule RuleName RuleDesc RuleCode
- activeRules :: Game -> [Rule]
- pendingRules :: Game -> [Rule]
- rejectedRules :: Game -> [Rule]
- data EventHandler where
- EH :: (Typeable e, Show e, Eq e) => {
- _eventNumber :: EventNumber
- _ruleNumber :: RuleNumber
- event :: Event e
- handler :: (EventNumber, EventData e) -> Nomex ()
- _evStatus :: Status
- EH :: (Typeable e, Show e, Eq e) => {
- data Status
- getEventHandler :: EventNumber -> LoggedGame -> EventHandler
- events :: Lens Game [EventHandler]
- data UInputData
- = URadioData Int
- | UCheckboxData [Int]
- | UTextData String
- | UTextAreaData String
- | UButtonData
- data Output = Output {}
- displayGame :: Game -> String
- data Log = Log {}
- getTimes :: EventHandler -> Maybe UTCTime
- currentTime :: Lens Game UTCTime
- tracePN :: Monad m => Int -> String -> m ()
Game management
a list of possible events affecting a game
data LoggedGame Source
A game being non serializable, we have to store events in parralel in order to rebuild the state latter.
Constructors
LoggedGame | |
Fields
|
Instances
The state of the game:
Constructors
Game | |
Fields
|
execGameEvent :: GameEvent -> StateT LoggedGame IO ()Source
execGameEvent' :: Maybe (RuleCode -> IO RuleFunc) -> GameEvent -> StateT LoggedGame IO ()Source
execWithGame :: UTCTime -> State LoggedGame () -> LoggedGame -> LoggedGameSource
A helper function to use the state transformer GameState. It additionally sets the current time.
execWithGame' :: UTCTime -> StateT LoggedGame IO () -> LoggedGame -> IO LoggedGameSource
getLoggedGame :: Game -> (RuleCode -> IO RuleFunc) -> [TimedEvent] -> IO LoggedGameSource
Variables management
stores the variable's data
Constructors
forall a . (Typeable a, Show a, Eq a) => Var | |
Fields
|
Rules management
data SubmitRule Source
Constructors
SubmitRule RuleName RuleDesc RuleCode |
activeRules :: Game -> [Rule]Source
pendingRules :: Game -> [Rule]Source
rejectedRules :: Game -> [Rule]Source
Events management
data EventHandler whereSource
Constructors
EH :: (Typeable e, Show e, Eq e) => EventNumber -> RuleNumber -> Event e -> ((EventNumber, EventData e) -> Nomex ()) -> Status -> EventHandler | |
Fields
|
Instances
events :: Lens Game [EventHandler]Source
data UInputData Source
Constructors
URadioData Int | |
UCheckboxData [Int] | |
UTextData String | |
UTextAreaData String | |
UButtonData |
Instances
Constructors
Output | |
Fields |
displayGame :: Game -> StringSource
Constructors
Log | |
Fields
|