Safe Haskell | None |
---|---|
Language | Haskell2010 |
Network.Anticiv.Modules.Mafia.Core
- data MafiaState = MafiaState {
- mafiaInitiator :: UserA
- mafiaPlayers :: AVL (UserA, PlayerState)
- voteScore :: AVL ((Subject, PlayerId), Int)
- votedAlready :: [(Subject, PlayerId)]
- mafiaDone :: Bool
- triadDone :: Bool
- partyDay :: Int
- actionsDone :: AVL Card
- safeTonight :: [PlayerId]
- lostHandlers :: [HandlerA]
- isNight :: Bool
- coupledPlayers :: Maybe (PlayerId, PlayerId)
- type MafiaStateA = Atom MafiaState
- data PlayerState
- = PlayerState {
- playerAlive :: Bool
- playerCards :: [Card]
- playerRoles :: [Role]
- playerSaved :: Bool
- | NopeNotYet
- = PlayerState {
- data FinishReason
- data Subject
- newtype PlayerId = UnsafePlayerId {}
- toPID :: MafiaStateA -> UserA -> Anticiv (Maybe PlayerId)
- withPID :: MafiaStateA -> UserA -> (PlayerId -> Anticiv ()) -> Anticiv ()
- withAlivePID :: MafiaStateA -> UserA -> (PlayerId -> Anticiv ()) -> Anticiv ()
- withInitiator :: MafiaStateA -> UserA -> (PlayerId -> Anticiv ()) -> Anticiv ()
- forAllPlayers_ :: MafiaStateA -> (PlayerId -> Anticiv ()) -> Anticiv ()
- forAllPlayers :: MafiaStateA -> (PlayerId -> Anticiv a) -> Anticiv [a]
- forAllMafiosi :: MafiaStateA -> (PlayerId -> Anticiv a) -> Anticiv [a]
- forAllMafiosi_ :: MafiaStateA -> (PlayerId -> Anticiv ()) -> Anticiv ()
- forAllTriadists :: MafiaStateA -> (PlayerId -> Anticiv a) -> Anticiv [a]
- forAllTriadists_ :: MafiaStateA -> (PlayerId -> Anticiv ()) -> Anticiv ()
- forAllPred :: MafiaStateA -> (Role -> Bool) -> (PlayerId -> Anticiv a) -> Anticiv [a]
- forAllPred_ :: MafiaStateA -> (Role -> Bool) -> (PlayerId -> Anticiv ()) -> Anticiv ()
- (%|) :: (MafiaStateA, PlayerId) -> (Role -> Bool) -> Anticiv Bool
- (%&) :: (MafiaStateA, PlayerId) -> (Role -> a) -> Anticiv a
- (%|&) :: (MafiaStateA, PlayerId) -> (Role -> a) -> Anticiv a
- (%&&) :: (MafiaStateA, PlayerId) -> (Role -> Role -> a) -> PlayerId -> Anticiv a
- seekRole :: Faction f => MafiaStateA -> f -> Anticiv [PlayerId]
- seekUnusedRole :: Faction f => MafiaStateA -> f -> Anticiv [PlayerId]
- seekCard :: Faction f => MafiaStateA -> PlayerId -> f -> Anticiv [Card]
- seekUnusedCard :: Faction f => MafiaStateA -> PlayerId -> f -> Anticiv [Card]
- isMafioso :: MafiaStateA -> PlayerId -> Anticiv Bool
- isTriadist :: MafiaStateA -> PlayerId -> Anticiv Bool
- pget :: MafiaStateA -> PlayerId -> Anticiv PlayerState
- pgets :: MafiaStateA -> PlayerId -> (PlayerState -> a) -> Anticiv a
- pput :: MafiaStateA -> PlayerId -> PlayerState -> Anticiv ()
- pmodify :: MafiaStateA -> PlayerId -> (PlayerState -> PlayerState) -> Anticiv ()
- joinParty :: MafiaStateA -> UserA -> Anticiv PlayerId
- (#>) :: a -> Atom a -> Anticiv ()
- (#<) :: (a -> b) -> Atom a -> Anticiv b
- (<>#) :: Atom a -> (a -> a) -> Anticiv ()
- (<>&) :: (MafiaStateA, PlayerId) -> (PlayerState -> PlayerState) -> Anticiv ()
- (&>) :: PlayerState -> (MafiaStateA, PlayerId) -> Anticiv ()
- (&<) :: (PlayerState -> a) -> (MafiaStateA, PlayerId) -> Anticiv a
- selectRoles :: Int -> Anticiv [RoleCard]
- chooseN :: Int -> [RoleProposal] -> Anticiv [RoleCard]
- shuffle :: [a] -> Anticiv [a]
- assignRoles :: MafiaStateA -> Anticiv ()
- hasVoted :: MafiaStateA -> PlayerId -> Subject -> Anticiv Bool
- playerVote :: MafiaStateA -> PlayerId -> PlayerId -> Subject -> Speaker -> Anticiv Bool
- partyFinished :: MafiaStateA -> Anticiv Bool
- actionDone :: Faction f => MafiaStateA -> PlayerId -> f -> Anticiv ()
Documentation
data MafiaState Source
Constructors
MafiaState | |
Fields
|
type MafiaStateA = Atom MafiaState Source
data PlayerState Source
Constructors
PlayerState | |
Fields
| |
NopeNotYet |
Instances
Phantom type. Just to make sure. If a function gets a PlayerId
passed,
we're already sure it is contained in mafiaPlayers
and don't need to
handle the Nothing
case any more, as it is already handled in toPID
.
Constructors
UnsafePlayerId | |
withAlivePID :: MafiaStateA -> UserA -> (PlayerId -> Anticiv ()) -> Anticiv () Source
withInitiator :: MafiaStateA -> UserA -> (PlayerId -> Anticiv ()) -> Anticiv () Source
forAllPlayers_ :: MafiaStateA -> (PlayerId -> Anticiv ()) -> Anticiv () Source
forAllPlayers :: MafiaStateA -> (PlayerId -> Anticiv a) -> Anticiv [a] Source
forAllMafiosi :: MafiaStateA -> (PlayerId -> Anticiv a) -> Anticiv [a] Source
forAllMafiosi_ :: MafiaStateA -> (PlayerId -> Anticiv ()) -> Anticiv () Source
forAllTriadists :: MafiaStateA -> (PlayerId -> Anticiv a) -> Anticiv [a] Source
forAllTriadists_ :: MafiaStateA -> (PlayerId -> Anticiv ()) -> Anticiv () Source
forAllPred :: MafiaStateA -> (Role -> Bool) -> (PlayerId -> Anticiv a) -> Anticiv [a] Source
forAllPred_ :: MafiaStateA -> (Role -> Bool) -> (PlayerId -> Anticiv ()) -> Anticiv () Source
(%|) :: (MafiaStateA, PlayerId) -> (Role -> Bool) -> Anticiv Bool Source
Tries to match a predicate on any of the player's roles
(%&) :: (MafiaStateA, PlayerId) -> (Role -> a) -> Anticiv a Source
Runs a function on the most important of the player's roles
(%|&) :: (MafiaStateA, PlayerId) -> (Role -> a) -> Anticiv a Source
Like %&, but makes sure the observation reveals an oblique result
(%&&) :: (MafiaStateA, PlayerId) -> (Role -> Role -> a) -> PlayerId -> Anticiv a Source
Like %&, but takes another player
seekUnusedRole :: Faction f => MafiaStateA -> f -> Anticiv [PlayerId] Source
seekUnusedCard :: Faction f => MafiaStateA -> PlayerId -> f -> Anticiv [Card] Source
isTriadist :: MafiaStateA -> PlayerId -> Anticiv Bool Source
pget :: MafiaStateA -> PlayerId -> Anticiv PlayerState Source
pgets :: MafiaStateA -> PlayerId -> (PlayerState -> a) -> Anticiv a Source
pput :: MafiaStateA -> PlayerId -> PlayerState -> Anticiv () Source
pmodify :: MafiaStateA -> PlayerId -> (PlayerState -> PlayerState) -> Anticiv () Source
(<>&) :: (MafiaStateA, PlayerId) -> (PlayerState -> PlayerState) -> Anticiv () Source
(&>) :: PlayerState -> (MafiaStateA, PlayerId) -> Anticiv () Source
(&<) :: (PlayerState -> a) -> (MafiaStateA, PlayerId) -> Anticiv a Source
selectRoles :: Int -> Anticiv [RoleCard] Source
assignRoles :: MafiaStateA -> Anticiv () Source
playerVote :: MafiaStateA -> PlayerId -> PlayerId -> Subject -> Speaker -> Anticiv Bool Source
actionDone :: Faction f => MafiaStateA -> PlayerId -> f -> Anticiv () Source