implemented homeScorePrompt

This commit is contained in:
Jonathan Lamothe 2019-08-24 19:02:29 -04:00
parent bd561bb7a8
commit 0eb56cda81
4 changed files with 26 additions and 9 deletions

View File

@ -30,6 +30,7 @@ import qualified UI.NCurses as C
import Mtlstats.Actions import Mtlstats.Actions
import Mtlstats.Menu import Mtlstats.Menu
import Mtlstats.Prompt
import Mtlstats.Types import Mtlstats.Types
-- | Event handler -- | Event handler
@ -41,6 +42,10 @@ handleEvent e = gets (view progMode) >>= \case
MainMenu -> menuHandler mainMenu e MainMenu -> menuHandler mainMenu e
NewSeason -> menuHandler newSeasonMenu e >> return True NewSeason -> menuHandler newSeasonMenu e >> return True
NewGame gs NewGame gs
| null $ gs ^. gameType -> | null $ gs ^. gameType -> do
menuHandler gameTypeMenu e >> return True menuHandler gameTypeMenu e
return True
| null $ gs ^. homeScore -> do
promptHandler homeScorePrompt e
return True
| otherwise -> undefined | otherwise -> undefined

View File

@ -23,7 +23,9 @@ module Mtlstats.Prompt (
-- * Prompt Functions -- * Prompt Functions
drawPrompt, drawPrompt,
promptHandler, promptHandler,
numPrompt numPrompt,
-- * Individual prompts
homeScorePrompt
) where ) where
import Control.Monad (when) import Control.Monad (when)
@ -73,3 +75,7 @@ numPrompt pStr act = Prompt
, promptAction = \inStr -> forM_ (readMaybe inStr) act , promptAction = \inStr -> forM_ (readMaybe inStr) act
, promptFunctionKey = const $ return () , promptFunctionKey = const $ return ()
} }
homeScorePrompt :: Prompt
homeScorePrompt = numPrompt "Home score: " $
modify . (progMode . homeScoreL ?~)

View File

@ -38,6 +38,7 @@ module Mtlstats.Types (
-- ** ProgState Lenses -- ** ProgState Lenses
database, database,
progMode, progMode,
inputBuffer,
-- ** GameState Lenses -- ** GameState Lenses
gameType, gameType,
homeScore, homeScore,
@ -110,10 +111,12 @@ type Action a = StateT ProgState Curses a
-- | Represents the program state -- | Represents the program state
data ProgState = ProgState data ProgState = ProgState
{ _database :: Database { _database :: Database
-- ^ The data to be saved -- ^ The data to be saved
, _progMode :: ProgMode , _progMode :: ProgMode
-- ^ The program's mode -- ^ The program's mode
, _inputBuffer :: String
-- ^ Buffer for user input
} deriving (Eq, Show) } deriving (Eq, Show)
-- | The game state -- | The game state
@ -359,8 +362,9 @@ awayScoreL = lens
-- | Constructor for a 'ProgState' -- | Constructor for a 'ProgState'
newProgState :: ProgState newProgState :: ProgState
newProgState = ProgState newProgState = ProgState
{ _database = newDatabase { _database = newDatabase
, _progMode = MainMenu , _progMode = MainMenu
, _inputBuffer = ""
} }
-- | Constructor for a 'GameState' -- | Constructor for a 'GameState'

View File

@ -26,6 +26,7 @@ import Lens.Micro ((^.))
import qualified UI.NCurses as C import qualified UI.NCurses as C
import Mtlstats.Menu import Mtlstats.Menu
import Mtlstats.Prompt
import Mtlstats.Types import Mtlstats.Types
-- | Drawing function -- | Drawing function
@ -39,7 +40,8 @@ draw s = do
MainMenu -> drawMenu mainMenu MainMenu -> drawMenu mainMenu
NewSeason -> drawMenu newSeasonMenu NewSeason -> drawMenu newSeasonMenu
NewGame gs NewGame gs
| null $ gs ^. gameType -> drawMenu gameTypeMenu | null $ gs ^. gameType -> drawMenu gameTypeMenu
| otherwise ->undefined | null $ gs ^. homeScore -> drawPrompt homeScorePrompt s
| otherwise -> undefined
C.render C.render
void $ C.setCursorMode cm void $ C.setCursorMode cm