implemented selectGameGoalieC
This commit is contained in:
parent
d708bed77d
commit
4910200c96
|
@ -22,6 +22,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
module Mtlstats.Actions.GoalieInput
|
module Mtlstats.Actions.GoalieInput
|
||||||
( finishGoalieEntry
|
( finishGoalieEntry
|
||||||
, recordGoalieStats
|
, recordGoalieStats
|
||||||
|
, setGameGoalie
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
|
@ -72,3 +73,11 @@ recordGoalieStats s = fromMaybe s $ do
|
||||||
& gYtd %~ bumpStats
|
& gYtd %~ bumpStats
|
||||||
& gLifetime %~ bumpStats)
|
& gLifetime %~ bumpStats)
|
||||||
& tryFinish
|
& tryFinish
|
||||||
|
|
||||||
|
-- | Records the win, loss, or tie to a specific 'Goalie'
|
||||||
|
setGameGoalie
|
||||||
|
:: Int
|
||||||
|
-- ^ The goalie's index
|
||||||
|
-> ProgState
|
||||||
|
-> ProgState
|
||||||
|
setGameGoalie = undefined
|
||||||
|
|
|
@ -60,7 +60,7 @@ dispatch s = case s^.progMode of
|
||||||
| fromJust (unaccountedPoints gs) -> goalInput gs
|
| fromJust (unaccountedPoints gs) -> goalInput gs
|
||||||
| isJust $ gs^.gameSelectedPlayer -> getPMinsC
|
| isJust $ gs^.gameSelectedPlayer -> getPMinsC
|
||||||
| not $ gs^.gamePMinsRecorded -> pMinPlayerC
|
| not $ gs^.gamePMinsRecorded -> pMinPlayerC
|
||||||
| not $ gs^.gameGoalieAssigned -> goalieInput gs
|
| not $ gs^.gameGoalieAssigned -> goalieInput s
|
||||||
| otherwise -> reportC
|
| otherwise -> reportC
|
||||||
CreatePlayer cps
|
CreatePlayer cps
|
||||||
| null $ cps^.cpsNumber -> getPlayerNumC
|
| null $ cps^.cpsNumber -> getPlayerNumC
|
||||||
|
|
|
@ -26,18 +26,23 @@ import Lens.Micro ((^.))
|
||||||
import qualified UI.NCurses as C
|
import qualified UI.NCurses as C
|
||||||
|
|
||||||
import Mtlstats.Format
|
import Mtlstats.Format
|
||||||
|
import Mtlstats.Menu
|
||||||
import Mtlstats.Prompt
|
import Mtlstats.Prompt
|
||||||
import Mtlstats.Prompt.GoalieInput
|
import Mtlstats.Prompt.GoalieInput
|
||||||
import Mtlstats.Types
|
import Mtlstats.Types
|
||||||
import Mtlstats.Util
|
import Mtlstats.Util
|
||||||
|
|
||||||
-- | The dispatcher for handling goalie input
|
-- | The dispatcher for handling goalie input
|
||||||
goalieInput :: GameState -> Controller
|
goalieInput :: ProgState -> Controller
|
||||||
goalieInput gs
|
goalieInput s = let
|
||||||
| gs^.gameGoaliesRecorded = selectGameGoalieC
|
gs = s^.progMode.gameStateL
|
||||||
| null $ gs^.gameSelectedGoalie = selectGoalieC
|
in if gs^.gameGoaliesRecorded
|
||||||
| null $ gs^.gameGoalieMinsPlayed = minsPlayedC
|
then selectGameGoalieC s
|
||||||
| otherwise = goalsAllowedC
|
else if null $ gs^.gameSelectedGoalie
|
||||||
|
then selectGoalieC
|
||||||
|
else if null $ gs^.gameGoalieMinsPlayed
|
||||||
|
then minsPlayedC
|
||||||
|
else goalsAllowedC
|
||||||
|
|
||||||
selectGoalieC :: Controller
|
selectGoalieC :: Controller
|
||||||
selectGoalieC = promptController selectGameGoaliePrompt
|
selectGoalieC = promptController selectGameGoaliePrompt
|
||||||
|
@ -48,8 +53,8 @@ minsPlayedC = promptControllerWith header goalieMinsPlayedPrompt
|
||||||
goalsAllowedC :: Controller
|
goalsAllowedC :: Controller
|
||||||
goalsAllowedC = promptControllerWith header goalsAllowedPrompt
|
goalsAllowedC = promptControllerWith header goalsAllowedPrompt
|
||||||
|
|
||||||
selectGameGoalieC :: Controller
|
selectGameGoalieC :: ProgState -> Controller
|
||||||
selectGameGoalieC = undefined
|
selectGameGoalieC = menuController . gameGoalieMenu
|
||||||
|
|
||||||
header :: ProgState -> C.Update ()
|
header :: ProgState -> C.Update ()
|
||||||
header s = C.drawString $ unlines
|
header s = C.drawString $ unlines
|
||||||
|
|
|
@ -21,6 +21,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
module Mtlstats.Menu (
|
module Mtlstats.Menu (
|
||||||
-- * Menu Functions
|
-- * Menu Functions
|
||||||
|
menuController,
|
||||||
drawMenu,
|
drawMenu,
|
||||||
menuHandler,
|
menuHandler,
|
||||||
-- * Menus
|
-- * Menus
|
||||||
|
@ -28,13 +29,16 @@ module Mtlstats.Menu (
|
||||||
newSeasonMenu,
|
newSeasonMenu,
|
||||||
gameMonthMenu,
|
gameMonthMenu,
|
||||||
gameTypeMenu,
|
gameTypeMenu,
|
||||||
editPlayerMenu
|
editPlayerMenu,
|
||||||
|
gameGoalieMenu
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Monad.IO.Class (liftIO)
|
import Control.Monad.IO.Class (liftIO)
|
||||||
import Control.Monad.Trans.State (gets, modify)
|
import Control.Monad.Trans.State (gets, modify)
|
||||||
import Data.Aeson (encodeFile)
|
import Data.Aeson (encodeFile)
|
||||||
import Data.Char (toUpper)
|
import Data.Char (toUpper)
|
||||||
|
import qualified Data.Map as M
|
||||||
|
import Data.Maybe (mapMaybe)
|
||||||
import Lens.Micro ((^.), (.~), (?~))
|
import Lens.Micro ((^.), (.~), (?~))
|
||||||
import Lens.Micro.Extras (view)
|
import Lens.Micro.Extras (view)
|
||||||
import System.EasyFile
|
import System.EasyFile
|
||||||
|
@ -45,9 +49,20 @@ import System.EasyFile
|
||||||
import qualified UI.NCurses as C
|
import qualified UI.NCurses as C
|
||||||
|
|
||||||
import Mtlstats.Actions
|
import Mtlstats.Actions
|
||||||
|
import qualified Mtlstats.Actions.GoalieInput as GI
|
||||||
import Mtlstats.Config
|
import Mtlstats.Config
|
||||||
import Mtlstats.Types
|
import Mtlstats.Types
|
||||||
import Mtlstats.Types.Menu
|
import Mtlstats.Types.Menu
|
||||||
|
import Mtlstats.Util
|
||||||
|
|
||||||
|
-- | Generates a simple 'Controller' for a Menu
|
||||||
|
menuController :: Menu () -> Controller
|
||||||
|
menuController menu = Controller
|
||||||
|
{ drawController = const $ drawMenu menu
|
||||||
|
, handleController = \e -> do
|
||||||
|
menuHandler menu e
|
||||||
|
return True
|
||||||
|
}
|
||||||
|
|
||||||
-- | The draw function for a 'Menu'
|
-- | The draw function for a 'Menu'
|
||||||
drawMenu :: Menu a -> C.Update C.CursorMode
|
drawMenu :: Menu a -> C.Update C.CursorMode
|
||||||
|
@ -142,3 +157,18 @@ editPlayerMenu = Menu "*** EDIT PLAYER ***" () $ map
|
||||||
, ( '9', "Lifetime penalty mins", Just EPLtPMin )
|
, ( '9', "Lifetime penalty mins", Just EPLtPMin )
|
||||||
, ( '0', "Finished editing", Nothing )
|
, ( '0', "Finished editing", Nothing )
|
||||||
]
|
]
|
||||||
|
|
||||||
|
-- | Game goalie selection menu
|
||||||
|
gameGoalieMenu :: ProgState -> Menu ()
|
||||||
|
gameGoalieMenu s = let
|
||||||
|
title = "Which goalie should get credit for the game?"
|
||||||
|
gids = map fst $ M.toList $ s^.progMode.gameStateL.gameGoalieStats
|
||||||
|
goalies = mapMaybe
|
||||||
|
(\n -> do
|
||||||
|
goalie <- nth n $ s^.database.dbGoalies
|
||||||
|
Just (n, goalie))
|
||||||
|
gids
|
||||||
|
in Menu title () $ map
|
||||||
|
(\(ch, (gid, goalie)) -> MenuItem ch (goalieSummary goalie) $
|
||||||
|
modify $ GI.setGameGoalie gid) $
|
||||||
|
zip ['1'..] goalies
|
||||||
|
|
Loading…
Reference in New Issue
Block a user