halma-gui/src/Game/Halma/GUI/State.hs

Summary

Maintainability
Test Coverage
module Game.Halma.GUI.State
  ( HalmaState (..)
  , initialHalmaState
  ) where

import Game.Halma.Board
import Game.Halma.Configuration
import Game.Halma.Rules
import Game.TurnCounter

import Data.Default (def)

data HalmaState a
  = HalmaState
  { hsRuleOptions :: RuleOptions
  , hsBoard :: HalmaBoard
  , hsTurnCounter :: TurnCounter (Team, a)
  , hsLastMoved :: Maybe (Int, Int)
  } deriving (Eq, Show)

initialHalmaState :: Configuration a -> HalmaState a
initialHalmaState config =
  let
    (board, turnCounter) = newGame config
  in
    HalmaState
      { hsRuleOptions = def
      , hsBoard = board
      , hsTurnCounter = turnCounter
      , hsLastMoved = Nothing
      }