replace getNextPlayer with the pure function nextPlayerID
This commit is contained in:
parent
0f035e74cc
commit
c582d83267
|
|
@ -152,7 +152,7 @@ distributeQuests = do
|
|||
activePlayerState . playerIncompleteQuests <>= [quest]
|
||||
name <- use $ activePlayerName
|
||||
broadcast $ printf "%s chose the %s quest." name (quest ^. questTitle)
|
||||
p' <- getNextPlayer =<< use gameActivePlayer
|
||||
p' <- nextPlayerID <$> use gameActivePlayer <*> get
|
||||
withActivePlayer p' $ distribute (deleteAt i remQuests)
|
||||
distribute =<< catMaybes <$> (flip replicateM drawQuest' =<< use gameNumberOfPlayers)
|
||||
|
||||
|
|
|
|||
|
|
@ -105,17 +105,22 @@ waterdeepGame = do
|
|||
, ("No", return ())
|
||||
]
|
||||
gameConsecutivePasses .= 0
|
||||
gameCurrentPlayer <~ (getNextPlayer =<< use gameCurrentPlayer)
|
||||
advanceToNextPlayer
|
||||
loop
|
||||
Nothing -> do
|
||||
passes <- gameConsecutivePasses <+= 1
|
||||
when (passes < np) $ do
|
||||
gameCurrentPlayer <~ (getNextPlayer =<< use gameCurrentPlayer)
|
||||
advanceToNextPlayer
|
||||
loop
|
||||
scoreFinalPoints
|
||||
notifyState
|
||||
determineWinners
|
||||
|
||||
advanceToNextPlayer :: Waterdeep ()
|
||||
advanceToNextPlayer = do
|
||||
p' <- nextPlayerID <$> use gameCurrentPlayer <*> get
|
||||
gameCurrentPlayer .= p'
|
||||
|
||||
beginRound :: Int -> Waterdeep ()
|
||||
beginRound round = do
|
||||
broadcast $ "Starting round " ++ show round ++ "."
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@ module Waterdeep.Types
|
|||
, activePlayerState
|
||||
, activePlayerName
|
||||
, withActivePlayer
|
||||
, nextPlayerID
|
||||
, noPlayerID
|
||||
, getNextPlayer
|
||||
, newPlayerState
|
||||
, newBuildingState
|
||||
, notifyState
|
||||
|
|
@ -325,10 +325,8 @@ withActivePlayer p m = do
|
|||
gameActivePlayer .= p0
|
||||
return r
|
||||
|
||||
getNextPlayer :: PlayerID -> Waterdeep PlayerID
|
||||
getNextPlayer p = do
|
||||
np <- use gameNumberOfPlayers
|
||||
return $ (p `mod` np) + 1
|
||||
nextPlayerID :: PlayerID -> WaterdeepState -> PlayerID
|
||||
nextPlayerID p w = (p `mod` (w ^. gameNumberOfPlayers)) + 1
|
||||
|
||||
noPlayerID :: PlayerID
|
||||
noPlayerID = 0
|
||||
|
|
|
|||
Loading…
Reference in New Issue