-- |
-- SPDX-License-Identifier: BSD-3-Clause
--
-- Config data required by initializers of the
-- 'Swarm.Game.State.GameState' record and its subrecords.
module Swarm.Game.State.Config where

import Data.Map (Map)
import Data.Text (Text)
import Swarm.Game.Scenario (GameStateInputs)
import Swarm.ResourceLoading (NameGenerator)

-- | Record to pass information needed to create an initial
--   'GameState' record when starting a scenario.
data GameStateConfig = GameStateConfig
  { GameStateConfig -> Map Text Text
initAppDataMap :: Map Text Text
  , GameStateConfig -> NameGenerator
nameParts :: NameGenerator
  -- ^ Lists of words/adjectives for use in building random robot names.
  , GameStateConfig -> Bool
startPaused :: Bool
  -- ^ Start the game paused - useful for debugging or competitive play.
  , GameStateConfig -> Bool
pauseOnObjectiveCompletion :: Bool
  -- ^ Pause the game when any objective is completed.
  , GameStateConfig -> GameStateInputs
initState :: GameStateInputs
  }