229 lines
6.7 KiB
Gleam
229 lines
6.7 KiB
Gleam
import gleam/dynamic/decode.{type Decoder}
|
|
import utils/decode as decode_utils
|
|
|
|
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 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 parse(
|
|
waypoint_trait_symbol_str: String,
|
|
) -> Result(WaypointTraitSymbol, WaypointTraitSymbol) {
|
|
case waypoint_trait_symbol_str {
|
|
"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(Uncharted)
|
|
}
|
|
}
|
|
|
|
pub fn decoder() -> Decoder(WaypointTraitSymbol) {
|
|
decode_utils.enum_decoder(parse, "WaypointTraitSymbol")
|
|
}
|