| License | BSD-3-Clause |
|---|---|
| Safe Haskell | None |
| Language | Haskell2010 |
Swarm.Game.Universe
Description
Types and utilities for working with "universal locations"; locations that encompass different 2-D subworlds.
Synopsis
- data SubworldName
- renderWorldName :: SubworldName -> Text
- renderQuotedWorldName :: SubworldName -> Text
- data Cosmic a = Cosmic {
- _subworld :: SubworldName
- _planar :: a
- planar :: forall a1 a2 f. Functor f => (a1 -> f a2) -> Cosmic a1 -> f (Cosmic a2)
- subworld :: forall a f. Functor f => (SubworldName -> f SubworldName) -> Cosmic a -> f (Cosmic a)
- data DistanceMeasure b
- = Measurable b
- | InfinitelyFar
- getFiniteDistance :: DistanceMeasure b -> Maybe b
- cosmoMeasure :: (a -> a -> b) -> Cosmic a -> Cosmic a -> DistanceMeasure b
- defaultCosmicLocation :: Cosmic Location
- offsetBy :: Cosmic Location -> V2 Int32 -> Cosmic Location
- locationToString :: Location -> String
- renderCoordsString :: Cosmic Location -> String
Referring to subworlds
data SubworldName Source #
Constructors
| DefaultRootSubworld | |
| SubworldName Text |
Instances
renderWorldName :: SubworldName -> Text Source #
Universal location
The swarm universe consists of locations indexed by subworld. Not only is this parameterized datatype useful for planar (2D) coordinates, but is also used for named waypoints.
Constructors
| Cosmic | |
Fields
| |
Instances
| Functor Cosmic Source # | |||||
| FromJSON a => FromJSON (Cosmic a) Source # | |||||
Defined in Swarm.Game.Universe | |||||
| ToJSON a => ToJSON (Cosmic a) Source # | |||||
| ToJSON a => ToJSONKey (Cosmic a) Source # | |||||
Defined in Swarm.Game.Universe | |||||
| Generic (Cosmic a) Source # | |||||
Defined in Swarm.Game.Universe Associated Types
| |||||
| Show a => Show (Cosmic a) Source # | |||||
| Eq a => Eq (Cosmic a) Source # | |||||
| Ord a => Ord (Cosmic a) Source # | |||||
Defined in Swarm.Game.Universe | |||||
| type Rep (Cosmic a) Source # | |||||
Defined in Swarm.Game.Universe type Rep (Cosmic a) = D1 ('MetaData "Cosmic" "Swarm.Game.Universe" "swarm-0.7.0.0-IuFfgHrMoE7JrptOBRVOwx-swarm-topography" 'False) (C1 ('MetaCons "Cosmic" 'PrefixI 'True) (S1 ('MetaSel ('Just "_subworld") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 SubworldName) :*: S1 ('MetaSel ('Just "_planar") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) | |||||
subworld :: forall a f. Functor f => (SubworldName -> f SubworldName) -> Cosmic a -> f (Cosmic a) Source #
Measurement
data DistanceMeasure b Source #
Constructors
| Measurable b | |
| InfinitelyFar |
Instances
| Eq b => Eq (DistanceMeasure b) Source # | |
Defined in Swarm.Game.Universe Methods (==) :: DistanceMeasure b -> DistanceMeasure b -> Bool # (/=) :: DistanceMeasure b -> DistanceMeasure b -> Bool # | |
| Ord b => Ord (DistanceMeasure b) Source # | |
Defined in Swarm.Game.Universe Methods compare :: DistanceMeasure b -> DistanceMeasure b -> Ordering # (<) :: DistanceMeasure b -> DistanceMeasure b -> Bool # (<=) :: DistanceMeasure b -> DistanceMeasure b -> Bool # (>) :: DistanceMeasure b -> DistanceMeasure b -> Bool # (>=) :: DistanceMeasure b -> DistanceMeasure b -> Bool # max :: DistanceMeasure b -> DistanceMeasure b -> DistanceMeasure b # min :: DistanceMeasure b -> DistanceMeasure b -> DistanceMeasure b # | |
getFiniteDistance :: DistanceMeasure b -> Maybe b Source #
cosmoMeasure :: (a -> a -> b) -> Cosmic a -> Cosmic a -> DistanceMeasure b Source #
Returns InfinitelyFar if not within the same subworld.
Utilities
Rendering
locationToString :: Location -> String Source #