88 lines
2.6 KiB
C
88 lines
2.6 KiB
C
#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 <MSFS/MSFS_WindowsTypes.h>
|
|
#include <SimConnect.h>
|
|
// C headers
|
|
#include <math.h>
|
|
// C++ headers
|
|
#include <algorithm>
|
|
// Own headers
|
|
#include "shared.h"
|
|
|
|
/******************************** Constants ********************************/
|
|
#define LBS_PER_GAL 6.699999809
|
|
#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
|
|
#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 UserData_t *const userData);
|
|
void fuel(const FuelData_t *const targetFuel, const HANDLE simConnect); |