gleam-spacetraders-sdk/src/models/waypoint_trait_symbol.gleam
Lily Rose 64f3729d0c
Some checks are pending
test / test (push) Waiting to run
Refactoring and general tidying up
2025-06-17 19:04:29 +10:00

235 lines
6.9 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import gleam/json.{type Json}
pub type WaypointTraitSymbol {
Uncharted
UnderConstruction
Marketplace
Shipyard
Outpost
ScatteredSettlements
SprawlingCities
MegaStructures
PirateBase
Overcrowded
HighTech
Corrupt
Bureaucratic
TradingHub
Industrial
BlackMarket
ResearchFacility
MilitaryBase
SurveillanceOutpost
ExplorationOutpost
MineralDeposits
CommonMetalDeposits
PreciousMetalDeposits
RareMetalDeposits
MethanePools
IceCrystals
ExplosiveGases
StrongMagnetosphere
VibrantAuroras
SaltFlats
Canyons
PerpetualDaylight
PerpetualOvercast
DrySeabeds
MagmaSeas
Supervolcanoes
AshClouds
VastRuins
MutatedFlora
Terraformed
ExtremeTemperatures
ExtremePressure
DiverseLife
ScarceLife
Fossils
WeakGravity
StrongGravity
CrushingGravity
ToxicAtmosphere
CorrosiveAtmosphere
BreathableAtmosphere
ThinAtmosphere
Jovian
Rocky
Volcanic
Frozen
Swamp
Barren
Temperate
Jungle
Ocean
Radioactive
MicroGravityAnomalies
DebrisCluster
DeepCraters
ShallowCraters
UnstableComposition
HollowedInterior
Stripped
}
pub fn parse(value: String) -> Result(WaypointTraitSymbol, Nil) {
case value {
"UNCHARTED" -> Ok(Uncharted)
"UNDER_CONSTRUCTION" -> Ok(UnderConstruction)
"MARKETPLACE" -> Ok(Marketplace)
"SHIPYARD" -> Ok(Shipyard)
"OUTPOST" -> Ok(Outpost)
"SCATTERED_SETTLEMENTS" -> Ok(ScatteredSettlements)
"SPRAWLING_CITIES" -> Ok(SprawlingCities)
"MEGA_STRUCTURES" -> Ok(MegaStructures)
"PIRATE_BASE" -> Ok(PirateBase)
"OVERCROWDED" -> Ok(Overcrowded)
"HIGH_TECH" -> Ok(HighTech)
"CORRUPT" -> Ok(Corrupt)
"BUREAUCRATIC" -> Ok(Bureaucratic)
"TRADING_HUB" -> Ok(TradingHub)
"INDUSTRIAL" -> Ok(Industrial)
"BLACK_MARKET" -> Ok(BlackMarket)
"RESEARCH_FACILITY" -> Ok(ResearchFacility)
"MILITARY_BASE" -> Ok(MilitaryBase)
"SURVEILLANCE_OUTPOST" -> Ok(SurveillanceOutpost)
"EXPLORATION_OUTPOST" -> Ok(ExplorationOutpost)
"MINERAL_DEPOSITS" -> Ok(MineralDeposits)
"COMMON_METAL_DEPOSITS" -> Ok(CommonMetalDeposits)
"PRECIOUS_METAL_DEPOSITS" -> Ok(PreciousMetalDeposits)
"RARE_METAL_DEPOSITS" -> Ok(RareMetalDeposits)
"METHANE_POOLS" -> Ok(MethanePools)
"ICE_CRYSTALS" -> Ok(IceCrystals)
"EXPLOSIVE_GASES" -> Ok(ExplosiveGases)
"STRONG_MAGNETOSPHERE" -> Ok(StrongMagnetosphere)
"VIBRANT_AURORAS" -> Ok(VibrantAuroras)
"SALT_FLATS" -> Ok(SaltFlats)
"CANYONS" -> Ok(Canyons)
"PERPETUAL_DAYLIGHT" -> Ok(PerpetualDaylight)
"PERPETUAL_OVERCAST" -> Ok(PerpetualOvercast)
"DRY_SEABEDS" -> Ok(DrySeabeds)
"MAGMA_SEAS" -> Ok(MagmaSeas)
"SUPERVOLCANOES" -> Ok(Supervolcanoes)
"ASH_CLOUDS" -> Ok(AshClouds)
"VAST_RUINS" -> Ok(VastRuins)
"MUTATED_FLORA" -> Ok(MutatedFlora)
"TERRAFORMED" -> Ok(Terraformed)
"EXTREME_TEMPERATURES" -> Ok(ExtremeTemperatures)
"EXTREME_PRESSURE" -> Ok(ExtremePressure)
"DIVERSE_LIFE" -> Ok(DiverseLife)
"SCARCE_LIFE" -> Ok(ScarceLife)
"FOSSILS" -> Ok(Fossils)
"WEAK_GRAVITY" -> Ok(WeakGravity)
"STRONG_GRAVITY" -> Ok(StrongGravity)
"CRUSHING_GRAVITY" -> Ok(CrushingGravity)
"TOXIC_ATMOSPHERE" -> Ok(ToxicAtmosphere)
"CORROSIVE_ATMOSPHERE" -> Ok(CorrosiveAtmosphere)
"BREATHABLE_ATMOSPHERE" -> Ok(BreathableAtmosphere)
"THIN_ATMOSPHERE" -> Ok(ThinAtmosphere)
"JOVIAN" -> Ok(Jovian)
"ROCKY" -> Ok(Rocky)
"VOLCANIC" -> Ok(Volcanic)
"FROZEN" -> Ok(Frozen)
"SWAMP" -> Ok(Swamp)
"BARREN" -> Ok(Barren)
"TEMPERATE" -> Ok(Temperate)
"JUNGLE" -> Ok(Jungle)
"OCEAN" -> Ok(Ocean)
"RADIOACTIVE" -> Ok(Radioactive)
"MICRO_GRAVITY_ANOMALIES" -> Ok(MicroGravityAnomalies)
"DEBRIS_CLUSTER" -> Ok(DebrisCluster)
"DEEP_CRATERS" -> Ok(DeepCraters)
"SHALLOW_CRATERS" -> Ok(ShallowCraters)
"UNSTABLE_COMPOSITION" -> Ok(UnstableComposition)
"HOLLOWED_INTERIOR" -> Ok(HollowedInterior)
"STRIPPED" -> Ok(Stripped)
_ -> Error(Nil)
}
}
pub fn decoder() -> Decoder(WaypointTraitSymbol) {
use value <- decode.then(decode.string)
case parse(value) {
Ok(waypoint_trait_symbol) -> decode.success(waypoint_trait_symbol)
Error(Nil) -> decode.failure(Uncharted, "WaypointTraitSymbol")
}
}
pub fn to_string(waypoint_trait_symbol: WaypointTraitSymbol) -> String {
case waypoint_trait_symbol {
Uncharted -> "UNCHARTED"
UnderConstruction -> "UNDER_CONSTRUCTION"
Marketplace -> "MARKETPLACE"
Shipyard -> "SHIPYARD"
Outpost -> "OUTPOST"
ScatteredSettlements -> "SCATTERED_SETTLEMENTS"
SprawlingCities -> "SPRAWLING_CITIES"
MegaStructures -> "MEGA_STRUCTURES"
PirateBase -> "PIRATE_BASE"
Overcrowded -> "OVERCROWDED"
HighTech -> "HIGH_TECH"
Corrupt -> "CORRUPT"
Bureaucratic -> "BUREAUCRATIC"
TradingHub -> "TRADING_HUB"
Industrial -> "INDUSTRIAL"
BlackMarket -> "BLACK_MARKET"
ResearchFacility -> "RESEARCH_FACILITY"
MilitaryBase -> "MILITARY_BASE"
SurveillanceOutpost -> "SURVEILLANCE_OUTPOST"
ExplorationOutpost -> "EXPLORATION_OUTPOST"
MineralDeposits -> "MINERAL_DEPOSITS"
CommonMetalDeposits -> "COMMON_METAL_DEPOSITS"
PreciousMetalDeposits -> "PRECIOUS_METAL_DEPOSITS"
RareMetalDeposits -> "RARE_METAL_DEPOSITS"
MethanePools -> "METHANE_POOLS"
IceCrystals -> "ICE_CRYSTALS"
ExplosiveGases -> "EXPLOSIVE_GASES"
StrongMagnetosphere -> "STRONG_MAGNETOSPHERE"
VibrantAuroras -> "VIBRANT_AURORAS"
SaltFlats -> "SALT_FLATS"
Canyons -> "CANYONS"
PerpetualDaylight -> "PERPETUAL_DAYLIGHT"
PerpetualOvercast -> "PERPETUAL_OVERCAST"
DrySeabeds -> "DRY_SEABEDS"
MagmaSeas -> "MAGMA_SEAS"
Supervolcanoes -> "SUPERVOLCANOES"
AshClouds -> "ASH_CLOUDS"
VastRuins -> "VAST_RUINS"
MutatedFlora -> "MUTATED_FLORA"
Terraformed -> "TERRAFORMED"
ExtremeTemperatures -> "EXTREME_TEMPERATURES"
ExtremePressure -> "EXTREME_PRESSURE"
DiverseLife -> "DIVERSE_LIFE"
ScarceLife -> "SCARCE_LIFE"
Fossils -> "FOSSILS"
WeakGravity -> "WEAK_GRAVITY"
StrongGravity -> "STRONG_GRAVITY"
CrushingGravity -> "CRUSHING_GRAVITY"
ToxicAtmosphere -> "TOXIC_ATMOSPHERE"
CorrosiveAtmosphere -> "CORROSIVE_ATMOSPHERE"
BreathableAtmosphere -> "BREATHABLE_ATMOSPHERE"
ThinAtmosphere -> "THIN_ATMOSPHERE"
Jovian -> "JOVIAN"
Rocky -> "ROCKY"
Volcanic -> "VOLCANIC"
Frozen -> "FROZEN"
Swamp -> "SWAMP"
Barren -> "BARREN"
Temperate -> "TEMPERATE"
Jungle -> "JUNGLE"
Ocean -> "OCEAN"
Radioactive -> "RADIOACTIVE"
MicroGravityAnomalies -> "MICRO_GRAVITY_ANOMALIES"
DebrisCluster -> "DEBRIS_CLUSTER"
DeepCraters -> "DEEP_CRATERS"
ShallowCraters -> "SHALLOW_CRATERS"
UnstableComposition -> "UNSTABLE_COMPOSITION"
HollowedInterior -> "HOLLOWED_INTERIOR"
Stripped -> "STRIPPED"
}
}
pub fn encode(waypoint_trait_symbol: WaypointTraitSymbol) -> Json {
json.string(to_string(waypoint_trait_symbol))
}