implemented homeScorePrompt
This commit is contained in:
parent
bd561bb7a8
commit
0eb56cda81
|
@ -30,6 +30,7 @@ import qualified UI.NCurses as C
|
|||
|
||||
import Mtlstats.Actions
|
||||
import Mtlstats.Menu
|
||||
import Mtlstats.Prompt
|
||||
import Mtlstats.Types
|
||||
|
||||
-- | Event handler
|
||||
|
@ -41,6 +42,10 @@ handleEvent e = gets (view progMode) >>= \case
|
|||
MainMenu -> menuHandler mainMenu e
|
||||
NewSeason -> menuHandler newSeasonMenu e >> return True
|
||||
NewGame gs
|
||||
| null $ gs ^. gameType ->
|
||||
menuHandler gameTypeMenu e >> return True
|
||||
| null $ gs ^. gameType -> do
|
||||
menuHandler gameTypeMenu e
|
||||
return True
|
||||
| null $ gs ^. homeScore -> do
|
||||
promptHandler homeScorePrompt e
|
||||
return True
|
||||
| otherwise -> undefined
|
||||
|
|
|
@ -23,7 +23,9 @@ module Mtlstats.Prompt (
|
|||
-- * Prompt Functions
|
||||
drawPrompt,
|
||||
promptHandler,
|
||||
numPrompt
|
||||
numPrompt,
|
||||
-- * Individual prompts
|
||||
homeScorePrompt
|
||||
) where
|
||||
|
||||
import Control.Monad (when)
|
||||
|
@ -73,3 +75,7 @@ numPrompt pStr act = Prompt
|
|||
, promptAction = \inStr -> forM_ (readMaybe inStr) act
|
||||
, promptFunctionKey = const $ return ()
|
||||
}
|
||||
|
||||
homeScorePrompt :: Prompt
|
||||
homeScorePrompt = numPrompt "Home score: " $
|
||||
modify . (progMode . homeScoreL ?~)
|
||||
|
|
|
@ -38,6 +38,7 @@ module Mtlstats.Types (
|
|||
-- ** ProgState Lenses
|
||||
database,
|
||||
progMode,
|
||||
inputBuffer,
|
||||
-- ** GameState Lenses
|
||||
gameType,
|
||||
homeScore,
|
||||
|
@ -110,10 +111,12 @@ type Action a = StateT ProgState Curses a
|
|||
|
||||
-- | Represents the program state
|
||||
data ProgState = ProgState
|
||||
{ _database :: Database
|
||||
{ _database :: Database
|
||||
-- ^ The data to be saved
|
||||
, _progMode :: ProgMode
|
||||
, _progMode :: ProgMode
|
||||
-- ^ The program's mode
|
||||
, _inputBuffer :: String
|
||||
-- ^ Buffer for user input
|
||||
} deriving (Eq, Show)
|
||||
|
||||
-- | The game state
|
||||
|
@ -359,8 +362,9 @@ awayScoreL = lens
|
|||
-- | Constructor for a 'ProgState'
|
||||
newProgState :: ProgState
|
||||
newProgState = ProgState
|
||||
{ _database = newDatabase
|
||||
, _progMode = MainMenu
|
||||
{ _database = newDatabase
|
||||
, _progMode = MainMenu
|
||||
, _inputBuffer = ""
|
||||
}
|
||||
|
||||
-- | Constructor for a 'GameState'
|
||||
|
|
|
@ -26,6 +26,7 @@ import Lens.Micro ((^.))
|
|||
import qualified UI.NCurses as C
|
||||
|
||||
import Mtlstats.Menu
|
||||
import Mtlstats.Prompt
|
||||
import Mtlstats.Types
|
||||
|
||||
-- | Drawing function
|
||||
|
@ -39,7 +40,8 @@ draw s = do
|
|||
MainMenu -> drawMenu mainMenu
|
||||
NewSeason -> drawMenu newSeasonMenu
|
||||
NewGame gs
|
||||
| null $ gs ^. gameType -> drawMenu gameTypeMenu
|
||||
| otherwise ->undefined
|
||||
| null $ gs ^. gameType -> drawMenu gameTypeMenu
|
||||
| null $ gs ^. homeScore -> drawPrompt homeScorePrompt s
|
||||
| otherwise -> undefined
|
||||
C.render
|
||||
void $ C.setCursorMode cm
|
||||
|
|
Loading…
Reference in New Issue
Block a user