Safe Haskell | None |
---|
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.
LoggedGame | |
|
The state of the game:
Game | |
|
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
forall a . (Typeable a, Show a, Eq a) => Var | |
|
Rules management
data SubmitRule Source
activeRules :: Game -> [Rule]Source
pendingRules :: Game -> [Rule]Source
rejectedRules :: Game -> [Rule]Source
Events management
data EventHandler whereSource
EH :: (Typeable e, Show e, Eq e) => EventNumber -> RuleNumber -> Event e -> ((EventNumber, EventData e) -> Nomex ()) -> Status -> EventHandler | |
|
events :: Lens Game [EventHandler]Source
data UInputData Source
displayGame :: Game -> StringSource