swarm-0.7.0.0: 2D resource gathering game with programmable robots
LicenseBSD-3-Clause
Safe HaskellNone
LanguageHaskell2010

Swarm.Game.Scenario.Status

Description

High-level status of scenario play. Representation of progress, logic for updating.

Synopsis

Documentation

data ParameterizableLaunchParams code (f :: Type -> Type) Source #

These launch parameters are used in a number of ways:

  • Serializing the seed/script path for saves
  • Holding parse status from form fields, including error info
  • Carrying fully-validated launch parameters.

Type parameters are utilized to support all of these use cases.

Constructors

LaunchParams 

Fields

Instances

Instances details
FromJSON SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

ToJSON SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Generic SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Associated Types

type Rep (ParameterizableLaunchParams FilePath Identity) 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ParameterizableLaunchParams FilePath Identity) = D1 ('MetaData "ParameterizableLaunchParams" "Swarm.Game.Scenario.Status" "swarm-0.7.0.0-IuFfgHrMoE7JrptOBRVOwx-swarm-engine" 'False) (C1 ('MetaCons "LaunchParams" 'PrefixI 'True) (S1 ('MetaSel ('Just "seedVal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Identity (Maybe Seed))) :*: S1 ('MetaSel ('Just "initialCode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Identity (Maybe FilePath)))))
Read SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Show SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Eq SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Ord SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ParameterizableLaunchParams FilePath Identity) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ParameterizableLaunchParams FilePath Identity) = D1 ('MetaData "ParameterizableLaunchParams" "Swarm.Game.Scenario.Status" "swarm-0.7.0.0-IuFfgHrMoE7JrptOBRVOwx-swarm-engine" 'False) (C1 ('MetaCons "LaunchParams" 'PrefixI 'True) (S1 ('MetaSel ('Just "seedVal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Identity (Maybe Seed))) :*: S1 ('MetaSel ('Just "initialCode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Identity (Maybe FilePath)))))

data ScenarioStatus Source #

A ScenarioStatus stores the status of a scenario along with appropriate metadata: NotStarted, or Played. The Played status has two sub-states: Attempted or Completed.

Instances

Instances details
FromJSON ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

ToJSON ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Generic ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Associated Types

type Rep ScenarioStatus 
Instance details

Defined in Swarm.Game.Scenario.Status

Read ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Show ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Eq ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Ord ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep ScenarioStatus Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

newtype ScenarioPath Source #

The normalized path to a scenario, amenable to lookup

Constructors

ScenarioPath 

Instances

Instances details
IsString ScenarioPath Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Show ScenarioPath Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Eq ScenarioPath Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

data ScenarioWith a Source #

Constructors

ScenarioWith 

Instances

Instances details
Functor ScenarioWith Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Methods

fmap :: (a -> b) -> ScenarioWith a -> ScenarioWith b #

(<$) :: a -> ScenarioWith b -> ScenarioWith a #

Generic (ScenarioWith a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Associated Types

type Rep (ScenarioWith a) 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ScenarioWith a) = D1 ('MetaData "ScenarioWith" "Swarm.Game.Scenario.Status" "swarm-0.7.0.0-IuFfgHrMoE7JrptOBRVOwx-swarm-engine" 'False) (C1 ('MetaCons "ScenarioWith" 'PrefixI 'True) (S1 ('MetaSel ('Just "_getScenario") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scenario) :*: S1 ('MetaSel ('Just "_getScenarioInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))

Methods

from :: ScenarioWith a -> Rep (ScenarioWith a) x #

to :: Rep (ScenarioWith a) x -> ScenarioWith a #

type Rep (ScenarioWith a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ScenarioWith a) = D1 ('MetaData "ScenarioWith" "Swarm.Game.Scenario.Status" "swarm-0.7.0.0-IuFfgHrMoE7JrptOBRVOwx-swarm-engine" 'False) (C1 ('MetaCons "ScenarioWith" 'PrefixI 'True) (S1 ('MetaSel ('Just "_getScenario") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scenario) :*: S1 ('MetaSel ('Just "_getScenarioInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))

getScenario :: forall a f. Functor f => (Scenario -> f Scenario) -> ScenarioWith a -> f (ScenarioWith a) Source #

getScenarioInfo :: forall a1 a2 f. Functor f => (a1 -> f a2) -> ScenarioWith a1 -> f (ScenarioWith a2) Source #

data ScenarioInfoT a Source #

A ScenarioInfo record stores metadata about a scenario: its canonical path and status. By way of the ScenarioStatus record, it stores the most recent status and best-ever status.

Instances

Instances details
Functor ScenarioInfoT Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Methods

fmap :: (a -> b) -> ScenarioInfoT a -> ScenarioInfoT b #

(<$) :: a -> ScenarioInfoT b -> ScenarioInfoT a #

FromJSON a => FromJSON (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

ToJSON a => ToJSON (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Generic (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Associated Types

type Rep (ScenarioInfoT a) 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ScenarioInfoT a) = D1 ('MetaData "ScenarioInfoT" "Swarm.Game.Scenario.Status" "swarm-0.7.0.0-IuFfgHrMoE7JrptOBRVOwx-swarm-engine" 'False) (C1 ('MetaCons "ScenarioInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "_scenarioPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Just "_scenarioStatus") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ScenarioStatus)))
Read a => Read (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Show a => Show (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Eq a => Eq (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Ord a => Ord (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ScenarioInfoT a) Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep (ScenarioInfoT a) = D1 ('MetaData "ScenarioInfoT" "Swarm.Game.Scenario.Status" "swarm-0.7.0.0-IuFfgHrMoE7JrptOBRVOwx-swarm-engine" 'False) (C1 ('MetaCons "ScenarioInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "_scenarioPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Just "_scenarioStatus") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ScenarioStatus)))

scenarioPath :: Lens' ScenarioInfo FilePath Source #

The path of the scenario, relative to data/scenarios.

scenarioStatus :: Lens' ScenarioInfo ScenarioStatus Source #

The status of the scenario.

scenarioIsCompleted :: ScenarioInfo -> Bool Source #

Check if a given scenario has been completed.

updateScenarioInfoOnFinish :: CodeSizeDeterminators -> ZonedTime -> TickNumber -> Bool -> ScenarioInfo -> ScenarioInfo Source #

Update the current ScenarioInfo record when quitting a game.

Note that when comparing "best" times, shorter is not always better! As long as the scenario is not completed (e.g. some do not have win condition) we consider having fun longer to be better.