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

Swarm.Game.ScenarioInfo

Description

Saving and loading info about scenarios (status, path, etc.) as well as loading recursive scenario collections.

Synopsis

Scenario info

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

scenarioPath :: Lens' ScenarioInfo FilePath Source #

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

scenarioStatus :: Lens' ScenarioInfo ScenarioStatus Source #

The status of the scenario.

data ScenarioWith a Source #

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)))

Scenario collection

newtype ScenarioCollection a Source #

A scenario collection is a tree of scenarios, keyed by name, together with an optional order.

Invariant: every item in the scOrder exists as a key in the scMap.

Constructors

SC 

Instances

Instances details
Functor ScenarioCollection Source # 
Instance details

Defined in Swarm.Game.ScenarioInfo

scenarioCollectionToList :: ScenarioCollection a -> [ScenarioItem a] Source #

Convert a scenario collection to a list of scenario items.

scenarioItemByPath :: FilePath -> Traversal' (ScenarioCollection a) (ScenarioItem a) Source #

Access and modify ScenarioItems in collection based on their path.

normalizeScenarioPath :: MonadIO m => ScenarioCollection a -> FilePath -> m FilePath Source #

Canonicalize a scenario path, making it usable as a unique key.

data ScenarioItem a Source #

A scenario item is either a specific scenario, or a collection of scenarios (e.g. the scenarios contained in a subdirectory).

Instances

Instances details
Functor ScenarioItem Source # 
Instance details

Defined in Swarm.Game.ScenarioInfo

Methods

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

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

scenarioItemName :: ScenarioItem a -> Text Source #

Retrieve the name of a scenario item.

_SISingle :: forall a p f. (Choice p, Applicative f) => p (ScenarioWith a) (f (ScenarioWith a)) -> p (ScenarioItem a) (f (ScenarioItem a)) Source #

Tutorials

tutorialsDirname :: FilePath Source #

Subdirectory of the scenarios directory where tutorials are stored.

getTutorials :: ScenarioCollection a -> ScenarioCollection a Source #

Extract just the collection of tutorial scenarios from the entire scenario collection.

Loading and saving scenarios

loadScenarios :: forall (sig :: (Type -> Type) -> Type -> Type) m. (Has (Accum (Seq SystemFailure)) sig m, Has (Lift IO) sig m) => ScenarioInputs -> Bool -> m (ScenarioCollection ScenarioInfo) Source #

Load all the scenarios from the scenarios data directory.

loadScenarioInfo :: forall (sig :: (Type -> Type) -> Type -> Type) m. (Has (Throw SystemFailure) sig m, Has (Lift IO) sig m) => FilePath -> m ScenarioInfo Source #

Load saved info about played scenario from XDG data directory.

saveScenarioInfo :: FilePath -> ScenarioInfo -> IO () Source #

Save info about played scenario to XDG data directory.

Orphan instances