implemented player confirmation/addition
This commit is contained in:
@@ -31,6 +31,7 @@ module Mtlstats.Actions
|
||||
, updateGameStats
|
||||
, validateGameDate
|
||||
, createPlayer
|
||||
, addPlayer
|
||||
) where
|
||||
|
||||
import Data.Maybe (fromMaybe)
|
||||
@@ -116,3 +117,15 @@ validateGameDate s = fromMaybe s $ do
|
||||
-- | Starts player creation mode
|
||||
createPlayer :: ProgState -> ProgState
|
||||
createPlayer = progMode .~ CreatePlayer newCreatePlayerState
|
||||
|
||||
-- | Adds the entered player to the roster
|
||||
addPlayer :: ProgState -> ProgState
|
||||
addPlayer s = fromMaybe s $ do
|
||||
let cps = s^.progMode.createPlayerStateL
|
||||
num <- cps^.cpsNumber
|
||||
let
|
||||
name = cps^.cpsName
|
||||
pos = cps^.cpsPosition
|
||||
player = newPlayer num name pos
|
||||
Just $ s & database.dbPlayers
|
||||
%~ (player:)
|
||||
|
||||
@@ -57,6 +57,7 @@ dispatch s = case s^.progMode of
|
||||
| null $ cps^.cpsNumber -> getPlayerNumC
|
||||
| null $ cps^.cpsName -> getPlayerNameC
|
||||
| null $ cps^.cpsPosition -> getPlayerPosC
|
||||
| not $ cps^.cpsConfirmed -> confirmCreatePlayerC
|
||||
| otherwise -> undefined
|
||||
|
||||
mainMenuC :: Controller
|
||||
@@ -223,3 +224,22 @@ getPlayerPosC = Controller
|
||||
promptHandler playerPosPrompt e
|
||||
return True
|
||||
}
|
||||
|
||||
confirmCreatePlayerC :: Controller
|
||||
confirmCreatePlayerC = Controller
|
||||
{ drawController = \s -> do
|
||||
let cps = s^.progMode.createPlayerStateL
|
||||
C.drawString $ " Player number: " ++ show (fromJust $ cps^.cpsNumber) ++ "\n"
|
||||
C.drawString $ " Player name: " ++ cps^.cpsName ++ "\n"
|
||||
C.drawString $ "Player position: " ++ cps^.cpsPosition ++ "\n\n"
|
||||
C.drawString "Create player: are you sure? (Y/N)"
|
||||
return C.CursorInvisible
|
||||
, handleController = \e -> do
|
||||
case ynHandler e of
|
||||
Just True -> do
|
||||
modify addPlayer
|
||||
modify $ progMode .~ MainMenu
|
||||
Just False -> modify $ progMode .~ MainMenu
|
||||
Nothing -> return ()
|
||||
return True
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user