#pragma once #ifndef __INTELLISENSE__ #define MODULE_EXPORT __attribute__((visibility("default"))) #define MODULE_WASM_MODNAME(mod) __attribute__((import_module(mod))) #else #define MODULE_EXPORT #define MODULE_WASM_MODNAME(mod) #define __attribute__(x) #define __restrict__ #endif /********************************* Headers *********************************/ // MSFS headers #include #include // C headers #include // C++ headers #include // Own headers #include "shared.h" /******************************** Constants ********************************/ // Pounds to gallons conversion #define LBS_PER_GAL 6.699999809 // Fueling rate #define FUELING_RATE ((LBS_PER_GAL * 1000) / 60) // Max tank capacity gallons #define MAX_TANK_1_3_MAIN_GAL 5167.907 #define MAX_TANK_1_3_TIP_GAL 874.5 #define MAX_TANK_1_3_GAL (5167.907 + 874.5) #define MAX_TANK_2_GAL 9556.95 #define MAX_UPR_AUX_GAL 12998.58 #define MAX_LWR_AUX_GAL 1641.82 #define MAX_TAIL_GAL 1957.779 #define MAX_FWD_AUX_GAL 1970.8 // Max tank capacity pounds #define MAX_TANK_1_3_MAIN_LBS (LBS_PER_GAL * MAX_TANK_1_3_MAIN_GAL) #define MAX_TANK_1_3_TIP_LBS (LBS_PER_GAL * MAX_TANK_1_3_TIP_GAL) #define MAX_TANK_1_3_LBS (LBS_PER_GAL * MAX_TANK_1_3_GAL) #define MAX_TANK_2_LBS (LBS_PER_GAL * MAX_TANK_2_GAL) #define MAX_UPR_AUX_LBS (LBS_PER_GAL * MAX_UPR_AUX_GAL) #define MAX_LWR_AUX_LBS (LBS_PER_GAL * MAX_LWR_AUX_GAL) #define MAX_TAIL_LBS (LBS_PER_GAL * MAX_TAIL_GAL) #define MAX_FWD_AUX_LBS (LBS_PER_GAL * MAX_FWD_AUX_GAL) // Max Fuel #define MAX_FUEL(IS_IMPERIAL) ((IS_IMPERIAL) ? (256207) : (116213)) #define MAX_FUEL_ER(IS_IMPERIAL) ((IS_IMPERIAL) ? (282619) : (128193)) // Arms Fuel #define ARM_MAIN1 -240.0 #define ARM_MAIN3 -240.0 #define ARM_MAIN2 120.0 #define ARM_UPPER_AUX 0.0 #define ARM_LOWER_AUX 0.0 #define ARM_MAIN1_TIP -468.0 #define ARM_MAIN3_TIP -468.0 #define ARM_TAIL -840.0 #define ARM_FORWARD_AUX1 60.0 #define ARM_FORWARD_AUX2 60.0 /***************************** Data structures *****************************/ typedef struct { // SimConnect mapped double main1; double main3; double main2; double upperAux; double lowerAux; double main1Tip; double main3Tip; double tail; double forwardAux1; double forwardAux2; // Additional properties double total; } FuelData_t; typedef struct { double main1; double main3; double main2; double upperAux; double lowerAux; double tail; double forwardAux1; double forwardAux2; } FuelDataSet_t; /******************************** Functions ********************************/ void distribute(FuelData_t *const targetFuel, const double fuelTarget, const bool isImperial, const bool isER); void distribute(FuelData_t *const targetFuel, const double fuelTarget, const UserData_t *const userData); void fuel(const FuelData_t *const targetFuel, const HANDLE simConnect);