gleam-spacetraders-sdk/src/models/ship_frame.gleam
Lily Rose cc8edbed02
Some checks are pending
test / test (push) Waiting to run
Add functioning sdk
2025-06-17 01:43:06 +10:00

46 lines
1.6 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import models/frame_symbol.{type FrameSymbol}
import models/ship_component_condition.{type ShipComponentCondition}
import models/ship_component_integrity.{type ShipComponentIntegrity}
import models/ship_component_quality.{type ShipComponentQuality}
import models/ship_requirements.{type ShipRequirements}
pub type ShipFrame {
ShipFrame(
symbol: FrameSymbol,
name: String,
condition: ShipComponentCondition,
integrity: ShipComponentIntegrity,
description: String,
module_slots: Int,
mounting_points: Int,
fuel_capacity: Int,
requirements: ShipRequirements,
quality: ShipComponentQuality,
)
}
pub fn decoder() -> Decoder(ShipFrame) {
use symbol <- decode.field("symbol", frame_symbol.decoder())
use name <- decode.field("name", decode.string)
use condition <- decode.field("condition", ship_component_condition.decoder())
use integrity <- decode.field("integrity", ship_component_integrity.decoder())
use description <- decode.field("description", decode.string)
use module_slots <- decode.field("moduleSlots", decode.int)
use mounting_points <- decode.field("mountingPoints", decode.int)
use fuel_capacity <- decode.field("fuelCapacity", decode.int)
use requirements <- decode.field("requirements", ship_requirements.decoder())
use quality <- decode.field("quality", ship_component_quality.decoder())
decode.success(ShipFrame(
symbol:,
name:,
condition:,
integrity:,
description:,
module_slots:,
mounting_points:,
fuel_capacity:,
requirements:,
quality:,
))
}