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 #