swarm-0.4: 2D resource gathering game with programmable robots
Safe HaskellSafe-Inferred
LanguageHaskell2010

Swarm.Game.Scenario.Status

Description

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

Synopsis

Documentation

data ParameterizableLaunchParams code f 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 SerializableLaunchParams :: Type -> Type #

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 SerializableLaunchParams Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep SerializableLaunchParams = D1 ('MetaData "ParameterizableLaunchParams" "Swarm.Game.Scenario.Status" "swarm-0.4-ISnx5FXhZ2Y66vKOx5hQmE" '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 :: Type -> Type #

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

data ScenarioInfo 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
FromJSON ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

ToJSON ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Generic ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Associated Types

type Rep ScenarioInfo :: Type -> Type #

Read ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Show ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Eq ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

Ord ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep ScenarioInfo Source # 
Instance details

Defined in Swarm.Game.Scenario.Status

type Rep ScenarioInfo = D1 ('MetaData "ScenarioInfo" "Swarm.Game.Scenario.Status" "swarm-0.4-ISnx5FXhZ2Y66vKOx5hQmE" 'False) (C1 ('MetaCons "ScenarioInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "_scenarioPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 FilePath) :*: 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.

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.