gleam-spacetraders-sdk/src/spacetraders_models/ship_reactor.gleam

40 lines
1.4 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import spacetraders_models/reactor_symbol.{type ReactorSymbol}
import spacetraders_models/ship_component_condition.{type ShipComponentCondition}
import spacetraders_models/ship_component_integrity.{type ShipComponentIntegrity}
import spacetraders_models/ship_component_quality.{type ShipComponentQuality}
import spacetraders_models/ship_requirements.{type ShipRequirements}
pub type ShipReactor {
ShipReactor(
symbol: ReactorSymbol,
name: String,
condition: ShipComponentCondition,
integrity: ShipComponentIntegrity,
description: String,
power_output: Int,
requirements: ShipRequirements,
quality: ShipComponentQuality,
)
}
pub fn decoder() -> Decoder(ShipReactor) {
use symbol <- decode.field("symbol", reactor_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 power_output <- decode.field("powerOutput", decode.int)
use requirements <- decode.field("requirements", ship_requirements.decoder())
use quality <- decode.field("quality", ship_component_quality.decoder())
decode.success(ShipReactor(
symbol:,
name:,
condition:,
integrity:,
description:,
power_output:,
requirements:,
quality:,
))
}