UNPKG

@fboes/aerofly-custom-missions

Version:

Builder for Aerofly FS4 Custom Missions Files

80 lines (67 loc) 2.61 kB
import { AeroflyConfigurationNode } from "../node/AeroflyConfigurationNode.js"; import { Convert } from "../node/Convert.js"; export type AeroflySettingsFuelLoadConfiguration = "Keep" | "Invalid"; export class AeroflySettingsFuelLoad { /** * @property {string} aircraft aerofly aircraft name (e.g. "c172") */ aircraft: string; /** * @property {number} fuelMass in kg */ fuelMass: number; /** * @property {number} payloadMass in kg */ payloadMass: number; /** * @property {AeroflySettingsFuelLoadConfiguration} configuration "Keep" * to keep the current fuel load configuration, "Invalid" to set an invalid * fuel load configuration (e.g. fuel mass exceeds maximum takeoff weight) */ configuration: AeroflySettingsFuelLoadConfiguration; /** * @param {string} aircraft aerofly aircraft name (e.g. "c172") * @param {number} fuelMass in kg * @param {number} payloadMass in kg * @param {AeroflySettingsFuelLoadConfiguration} configuration "Keep" * to keep the current fuel load configuration, "Invalid" to set an invalid * fuel load configuration (e.g. fuel mass exceeds maximum takeoff weight) */ constructor( aircraft: string = "", fuelMass: number = 0, payloadMass: number = 0, configuration: AeroflySettingsFuelLoadConfiguration = "Invalid", ) { this.aircraft = aircraft; this.fuelMass = fuelMass; this.payloadMass = payloadMass; this.configuration = configuration; } get fuelMass_lb(): number { return Convert.convertKgToLb(this.fuelMass); } set fuelMass_lb(fuelMass_lb: number) { this.fuelMass = Convert.convertLbToKg(fuelMass_lb); } get payloadMass_lb(): number { return Convert.convertKgToLb(this.payloadMass); } set payloadMass_lb(payloadMass_lb: number) { this.payloadMass = Convert.convertLbToKg(payloadMass_lb); } getElement(): AeroflyConfigurationNode { return new AeroflyConfigurationNode("tmsettings_fuel_load", "fuel_load_setting") .appendChild("fuel_load_configuration", "configuration", this.fuelMass > 0 ? "Keep" : this.configuration) .appendChild("string8u", "aircraft", this.aircraft) .appendChild("float64", "fuel_mass", this.fuelMass) .appendChild("float64", "payload_mass", this.payloadMass); } /** * @returns {string} to use in Aerofly FS4's `main.mcf` */ toString(): string { return this.getElement().toString(); } }