replace getNextPlayer with the pure function nextPlayerID

This commit is contained in:
Jesse D. McDonald 2014-05-10 18:49:41 -05:00
parent 0f035e74cc
commit c582d83267
3 changed files with 11 additions and 8 deletions

View File

@ -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)

View File

@ -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 ++ "."

View File

@ -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