@fboes/aerofly-custom-missions
Version:
Builder for Aerofly FS4 Custom Missions Files
80 lines (67 loc) • 2.61 kB
text/typescript
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();
}
}