implemented startNewGame

This commit is contained in:
Jonathan Lamothe 2019-08-22 01:18:02 -04:00
parent ca60d71006
commit c300542635
5 changed files with 47 additions and 12 deletions

View File

@ -41,4 +41,6 @@ resetYtd
-- | Starts a new game
startNewGame :: ProgState -> ProgState
startNewGame = undefined
startNewGame
= (progMode .~ NewGame newGameState)
. (database . dbGames .~ 0)

View File

@ -40,7 +40,4 @@ handleEvent e = do
case m of
MainMenu -> menuHandler mainMenu e
NewSeason -> menuHandler newSeasonMenu e >> return True
NewGame -> newGame e >> return True
newGame :: C.Event -> StateT ProgState C.Curses ()
newGame = undefined
NewGame _ -> return True

View File

@ -24,7 +24,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
module Mtlstats.Types (
-- * Types
ProgState (..),
GameState (..),
ProgMode (..),
GameType (..),
Database (..),
Player (..),
PlayerStats (..),
@ -34,6 +36,10 @@ module Mtlstats.Types (
-- ** ProgState Lenses
database,
progMode,
-- ** GameState Lenses
gameType,
homeScore,
visitorScore,
-- ** Database Lenses
dbPlayers,
dbGoalies,
@ -63,6 +69,7 @@ module Mtlstats.Types (
gsTies,
-- * Constructors
newProgState,
newGameState,
newDatabase,
newPlayer,
newPlayerStats,
@ -93,11 +100,24 @@ data ProgState = ProgState
, _progMode :: ProgMode
} deriving (Eq, Show)
-- | The game state
data GameState = GameState
{ _gameType :: Maybe GameType
, _homeScore :: Maybe Int
, _visitorScore :: Maybe Int
} deriving (Eq, Show)
-- | The program mode
data ProgMode
= MainMenu
| NewSeason
| NewGame
| NewGame GameState
deriving (Eq, Show)
-- | The type of game
data GameType
= HomeGame
| AwayGame
deriving (Eq, Show)
-- | Represents the database
@ -271,19 +291,28 @@ instance ToJSON GoalieStats where
"ties" .= t
makeLenses ''ProgState
makeLenses ''GameState
makeLenses ''Database
makeLenses ''Player
makeLenses ''PlayerStats
makeLenses ''Goalie
makeLenses ''GoalieStats
-- | Constructor for a new 'ProgState'
-- | Constructor for a 'ProgState'
newProgState :: ProgState
newProgState = ProgState
{ _database = newDatabase
, _progMode = MainMenu
}
-- | Constructor for a 'GameState'
newGameState :: GameState
newGameState = GameState
{ _gameType = Nothing
, _homeScore = Nothing
, _visitorScore = Nothing
}
-- | Constructor for a 'Database'
newDatabase :: Database
newDatabase = Database

View File

@ -36,8 +36,5 @@ draw s = do
case s ^. progMode of
MainMenu -> drawMenu mainMenu
NewSeason -> drawMenu newSeasonMenu
NewGame -> newGame
NewGame _ -> return ()
C.render
newGame :: C.Update ()
newGame = return ()

View File

@ -49,7 +49,17 @@ startNewSeasonSpec = describe "startNewSeason" $ do
s ^. database . dbGames `shouldBe` 0
startNewGameSpec :: Spec
startNewGameSpec = describe "startGame" $ return ()
startNewGameSpec = describe "startNewGame" $ do
let
s = newProgState
& database . dbGames .~ 1
& startNewGame
it "should set the number of games to 0" $
s ^. database . dbGames `shouldBe` 0
it "should set the mode to NewGame" $
s ^. progMode `shouldBe` NewGame newGameState
resetYtdSpec :: Spec
resetYtdSpec = describe "resetYtd" $