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