Safe Haskell | None |
---|
This module implements the events that can affect a game.
- data GameEvent
- data TimedEvent = TimedEvent UTCTime GameEvent
- data LoggedGame = LoggedGame {
- _game :: Game
- _gameLog :: [TimedEvent]
- gameLog :: Lens LoggedGame [TimedEvent]
- game :: Lens LoggedGame Game
- enactEvent :: GameEvent -> Maybe (RuleCode -> IO Rule) -> StateT Game IO ()
- enactTimedEvent :: Maybe (RuleCode -> IO Rule) -> TimedEvent -> StateT Game IO ()
- updateError :: SomeException -> StateT Game IO ()
- execGameEvent :: GameEvent -> StateT LoggedGame IO ()
- execGameEvent' :: Maybe (RuleCode -> IO Rule) -> GameEvent -> StateT LoggedGame IO ()
- getLoggedGame :: Game -> (RuleCode -> IO Rule) -> [TimedEvent] -> IO LoggedGame
- gameSettings :: GameName -> GameDesc -> UTCTime -> State Game ()
- joinGame :: PlayerName -> PlayerNumber -> State Game ()
- leaveGame :: PlayerNumber -> State Game ()
- proposeRule :: SubmitRule -> PlayerNumber -> (RuleCode -> IO Rule) -> StateT Game IO ()
- systemAddRule :: SubmitRule -> (RuleCode -> IO Rule) -> StateT Game IO ()
- logGame :: String -> Maybe PlayerNumber -> State Game ()
- inputResult :: PlayerNumber -> EventNumber -> UInputData -> State Game ()
- getEventHandler :: EventNumber -> LoggedGame -> EventHandler
- getTimes :: EventHandler -> Maybe UTCTime
- execWithGame :: UTCTime -> State LoggedGame () -> LoggedGame -> LoggedGame
- execWithGame' :: UTCTime -> StateT LoggedGame IO () -> LoggedGame -> IO LoggedGame
- activeRules :: Game -> [RuleInfo]
- pendingRules :: Game -> [RuleInfo]
- rejectedRules :: Game -> [RuleInfo]
- createRule :: SubmitRule -> PlayerNumber -> (RuleCode -> IO Rule) -> StateT Game IO RuleInfo
- stateCatch :: Exception e => StateT Game IO a -> (e -> StateT Game IO a) -> StateT Game IO a
Documentation
a list of possible events affecting a game
data TimedEvent Source
data LoggedGame Source
A game being non serializable, we have to store events in parralel in order to rebuild the state latter.
LoggedGame | |
|
enactEvent :: GameEvent -> Maybe (RuleCode -> IO Rule) -> StateT Game IO ()Source
perform a game event
enactTimedEvent :: Maybe (RuleCode -> IO Rule) -> TimedEvent -> StateT Game IO ()Source
updateError :: SomeException -> StateT Game IO ()Source
execGameEvent :: GameEvent -> StateT LoggedGame IO ()Source
execGameEvent' :: Maybe (RuleCode -> IO Rule) -> GameEvent -> StateT LoggedGame IO ()Source
getLoggedGame :: Game -> (RuleCode -> IO Rule) -> [TimedEvent] -> IO LoggedGameSource
joinGame :: PlayerName -> PlayerNumber -> State Game ()Source
join the game.
leaveGame :: PlayerNumber -> State Game ()Source
leave the game.
proposeRule :: SubmitRule -> PlayerNumber -> (RuleCode -> IO Rule) -> StateT Game IO ()Source
insert a rule in pending rules.
systemAddRule :: SubmitRule -> (RuleCode -> IO Rule) -> StateT Game IO ()Source
add a rule forcefully (no votes etc.)
inputResult :: PlayerNumber -> EventNumber -> UInputData -> State Game ()Source
the user has provided an input result TODO: this is relying on the EventNumber, which may change at all time
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
activeRules :: Game -> [RuleInfo]Source
pendingRules :: Game -> [RuleInfo]Source
rejectedRules :: Game -> [RuleInfo]Source
createRule :: SubmitRule -> PlayerNumber -> (RuleCode -> IO Rule) -> StateT Game IO RuleInfoSource