msfs-simconnect-api-wrapper
Version:
A convenient SimConnect API for playing with Microsoft Flight Simulator 2020
54 lines (47 loc) • 2.33 kB
JavaScript
// See https://docs.flightsimulator.com/html/Programming_Tools/SimVars/Simulation_Variables.htm
import { AircraftAutopilotAssistantVariables } from "./aircraft-autopilot-assistant-variables.js";
import { AircraftBakeLandingGearVariables } from "./aircraft-brake-landing-gear-variables.js";
import { AircraftControlVariables } from "./aircraft-control-variables.js";
import { AircraftElectricsVariables } from "./aircraft-electrics-variables.js";
import { AircraftEngineVariables } from "./aircraft-engine-variables.js";
import { AircraftFlightModelVariables } from "./aircraft-flight-model-variables.js";
import { AircraftFuelVariables } from "./aircraft-fuel-variables.js";
import { AircraftMiscVariables } from "./aircraft-misc-variables.js";
import { AircraftRadioNavigationVariables } from "./aircraft-radio-navigation-variables.js";
import { AircraftSystemVariables } from "./aircraft-system-variables.js";
import { CameraVariables } from "./camera-variables.js";
import { MiscellaneousVariables } from "./miscellaneous-variables.js";
import { HelicopterVariables } from "./helicopter-variables.js";
import { ServiceVariables } from "./services-variables.js";
import { WASMGaugeAPITokenVariables } from "./wasm-gauge-api-token-variables.js";
import { EnvironmentVariables } from "./environment-variables.js";
const SimVars = {
...AircraftAutopilotAssistantVariables,
...AircraftBakeLandingGearVariables,
...AircraftControlVariables,
...AircraftElectricsVariables,
...AircraftEngineVariables,
...AircraftFlightModelVariables,
...AircraftFuelVariables,
...AircraftMiscVariables,
...AircraftRadioNavigationVariables,
...AircraftSystemVariables,
...CameraVariables,
...MiscellaneousVariables,
...HelicopterVariables,
...ServiceVariables,
...WASMGaugeAPITokenVariables,
...EnvironmentVariables,
};
Object.entries(SimVars).forEach(([key, value]) => (value.name = key));
// Make sure that variables that use a :number suffix resolve
// to the ":index" definition for that variable, and to make
// sure that underscores in varnames get replaced spaces, we
// use a Proxy to intercept all property access.
const proxy = new Proxy(SimVars, {
get(target, prop) {
if (prop.includes(`:`)) prop = prop.replace(/:.*/, `:index`);
return target[prop];
},
});
export { proxy as SimVars };