enable toggling of rookie flag for players
This commit is contained in:
@@ -32,6 +32,7 @@ module Mtlstats.Actions
|
||||
, createGoalie
|
||||
, edit
|
||||
, editPlayer
|
||||
, editSelectedPlayer
|
||||
, editGoalie
|
||||
, addPlayer
|
||||
, addGoalie
|
||||
@@ -47,6 +48,7 @@ import Data.Maybe (fromMaybe)
|
||||
import Lens.Micro ((^.), (&), (.~), (%~))
|
||||
|
||||
import Mtlstats.Types
|
||||
import Mtlstats.Util
|
||||
|
||||
-- | Starts a new season
|
||||
startNewSeason :: ProgState -> ProgState
|
||||
@@ -106,6 +108,19 @@ edit = progMode .~ EditMenu
|
||||
editPlayer :: ProgState -> ProgState
|
||||
editPlayer = progMode .~ EditPlayer newEditPlayerState
|
||||
|
||||
-- | Edits the selected 'Player'
|
||||
editSelectedPlayer
|
||||
:: (Player -> Player)
|
||||
-- ^ The modification to be made to the 'Player'
|
||||
-> ProgState
|
||||
-> ProgState
|
||||
editSelectedPlayer f s = fromMaybe s $ do
|
||||
n <- s^.progMode.editPlayerStateL.epsSelectedPlayer
|
||||
let
|
||||
players = s^.database.dbPlayers
|
||||
players' = modifyNth n f players
|
||||
Just $ s & database.dbPlayers .~ players'
|
||||
|
||||
-- | Starts the 'Goalie' editing process
|
||||
editGoalie :: ProgState -> ProgState
|
||||
editGoalie = progMode .~ EditGoalie newEditGoalieState
|
||||
|
||||
@@ -26,7 +26,7 @@ module Mtlstats.Menu.EditPlayer
|
||||
) where
|
||||
|
||||
import Control.Monad.Trans.State (modify)
|
||||
import Lens.Micro ((.~))
|
||||
import Lens.Micro ((.~), (%~))
|
||||
|
||||
import Mtlstats.Actions
|
||||
import Mtlstats.Types
|
||||
@@ -35,19 +35,22 @@ import Mtlstats.Types.Menu
|
||||
-- | The 'Player' edit menu
|
||||
editPlayerMenu :: Menu ()
|
||||
editPlayerMenu = Menu "*** EDIT PLAYER ***" () $ map
|
||||
(\(ch, label, mode) -> MenuItem ch label $
|
||||
modify $ case mode of
|
||||
Nothing -> edit
|
||||
Just m -> progMode.editPlayerStateL.epsMode .~ m)
|
||||
(\(ch, label, action) -> MenuItem ch label $ modify action)
|
||||
|
||||
-- key, label, value
|
||||
[ ( '1', "Edit number", Just EPNumber )
|
||||
, ( '2', "Edit name", Just EPName )
|
||||
, ( '3', "Edit position", Just EPPosition )
|
||||
, ( '4', "Edit YTD stats", Just EPYtd )
|
||||
, ( '5', "Edit lifetime stats", Just EPLifetime )
|
||||
, ( 'R', "Return to Edit Menu", Nothing )
|
||||
[ ( '1', "Edit number", set EPNumber )
|
||||
, ( '2', "Edit name", set EPName )
|
||||
, ( '3', "Edit position", set EPPosition )
|
||||
, ( '4', "Toggle rookie flag", toggle )
|
||||
, ( '5', "Edit YTD stats", set EPYtd )
|
||||
, ( '6', "Edit lifetime stats", set EPLifetime )
|
||||
, ( 'R', "Return to Edit Menu", edit )
|
||||
]
|
||||
|
||||
where
|
||||
set mode = progMode.editPlayerStateL.epsMode .~ mode
|
||||
toggle = editSelectedPlayer $ pRookie %~ not
|
||||
|
||||
-- | The 'Player' YTD stats edit menu
|
||||
editPlayerYtdMenu :: Menu ()
|
||||
editPlayerYtdMenu = editMenu
|
||||
|
||||
Reference in New Issue
Block a user