diff --git a/PackageSources/js-bundle/src/components/pax/Pax.tsx b/PackageSources/js-bundle/src/components/pax/Pax.tsx index d7cccaa..bff3c43 100644 --- a/PackageSources/js-bundle/src/components/pax/Pax.tsx +++ b/PackageSources/js-bundle/src/components/pax/Pax.tsx @@ -1,6 +1,7 @@ import { FC, useState } from 'react'; import { WASMDataPax } from '../../types/WASMData'; import Profile from '../profile/Profile'; +import StationEntryPax from '../stationEntry/StationEntryPax'; import Tabbar from '../tabbar/Tabbar'; import ZFWEntryPax from '../zfwEntry/ZFWEntryPax'; @@ -128,30 +129,20 @@ const Pax: FC = ({ WASMData, username }) => { loadingState={loadingState} setLoadingState={setLoadingState} loadAircraft={() => { - console.log('SET WEIGHT'); + console.log('SET WEIGHT ZFW'); }} /> )} - {/* {((username && selectedTab === 2) || (!username && selectedTab === 1)) && ( { - setPayload(_payload); - }} loadAircraft={() => { - PaxConfig.setBaseWeight(unit, isER); - PaxConfig.setWeights(payload, unit); + console.log('SET WEIGHT STATIONS'); }} /> )} - */} ); }; diff --git a/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx b/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx index 6d2ce39..815430b 100644 --- a/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx +++ b/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx @@ -1,117 +1,39 @@ import { FC, useEffect, useState } from 'react'; -import { PaxConfig, PayloadPax } from '../../configs/pax'; -import { Fuel, SharedConfig } from '../../configs/shared'; +import { emptyAircraft } from '../../configs/shared'; +import { COHERENT_COMBUS_WASM_CALL, COMM_BUS_UPDATE_TARGET_EVENT } from '../../constants'; +import { WASMDataPax } from '../../types/WASMData'; import ActionBar from '../actionbar/ActionBar'; interface StationEntryProps { - unit: 'kg' | 'lbs'; - isER: boolean; - initialPayload: PayloadPax; - fuelLive: Fuel; - payloadLive: PayloadPax; + WASMData: WASMDataPax; loadingState: 'preview' | 'accepted' | 'loaded'; setLoadingState: (newState: StationEntryProps['loadingState']) => void; - updateView: (payload: PayloadPax) => void; loadAircraft: () => void; } -const StationEntryPax: FC = ({ - unit, - isER, - initialPayload, - fuelLive, - payloadLive, - loadingState, - setLoadingState, - updateView, - loadAircraft, -}) => { - const [business1, setBusiness1] = useState( - PaxConfig.weightToPax( - initialPayload.business1Left + initialPayload.business1Center + initialPayload.business1Right, - unit - ) - ); - const [business2, setBusiness2] = useState( - PaxConfig.weightToPax( - initialPayload.business2Left + initialPayload.business2Center + initialPayload.business2Right, - unit - ) - ); - const [economy1, setEconomy1] = useState( - PaxConfig.weightToPax( - initialPayload.economy1Left + initialPayload.economy1Center + initialPayload.economy1Right, - unit - ) - ); - const [economy2, setEconomy2] = useState( - PaxConfig.weightToPax( - initialPayload.economy2Left + initialPayload.economy2Center + initialPayload.economy2Right, - unit - ) - ); - const [forwardCargo, setForwardCargo] = useState(initialPayload.forwardCargo); - const [rearCargo, setRearCargo] = useState(initialPayload.rearCargo); - const [fuel, setFuel] = useState( - Math.round( - fuelLive.main1 + - fuelLive.main1Tip + - fuelLive.main2 + - fuelLive.main3 + - fuelLive.main3Tip + - fuelLive.upperAux + - fuelLive.lowerAux + - fuelLive.tail + - fuelLive.forwardAux1 + - fuelLive.forwardAux2 - ) - ); +const StationEntryPax: FC = ({ WASMData, loadingState, setLoadingState, loadAircraft }) => { + const [business1, setBusiness1] = useState(WASMData.targetPayload.business1); + const [business2, setBusiness2] = useState(WASMData.targetPayload.business2); + const [economy1, setEconomy1] = useState(WASMData.targetPayload.economy1); + const [economy2, setEconomy2] = useState(WASMData.targetPayload.economy2); + const [forwardCargo, setForwardCargo] = useState(WASMData.targetPayload.forwardCargo); + const [rearCargo, setRearCargo] = useState(WASMData.targetPayload.rearCargo); + const [fuel, setFuel] = useState(Math.round(WASMData.livePayload.fuel)); + const [fuelEnabled, setFuelEnabled] = useState(true); const ZFW = () => { - if (loadingState !== 'loaded') - return Math.round( - (business1 + business2 + economy1 + economy2) * PaxConfig.weights.pax[unit] + - forwardCargo + - rearCargo + - PaxConfig.weights.base[unit].total + - (isER ? SharedConfig.erExtraWeight[unit] * 2 : 0) + - payloadLive.empty - ); + if (loadingState !== 'loaded') return Math.round(WASMData.targetPayload.total); - return Math.round( - payloadLive.empty + - payloadLive.pilot + - payloadLive.firstOfficer + - payloadLive.engineer + - payloadLive.cabinCrewFront + - payloadLive.business1Left + - payloadLive.business1Center + - payloadLive.business1Right + - payloadLive.business2Left + - payloadLive.business2Center + - payloadLive.business2Right + - payloadLive.economy1Left + - payloadLive.economy1Center + - payloadLive.economy1Right + - payloadLive.economy2Left + - payloadLive.economy2Center + - payloadLive.economy2Right + - payloadLive.cabinCrewRear + - payloadLive.forwardCargo + - payloadLive.rearCargo + - payloadLive.leftAuxPax + - payloadLive.rightAuxPax - ); + return Math.round(WASMData.livePayload.total); }; const ZFWValid = () => { - return ZFW() <= PaxConfig.maxZWF[unit]; + return ZFW() <= WASMData.limits.maxZFW; }; - const GW = () => { return fuel + ZFW(); }; const GWValid = () => { - return GW() <= (isER ? SharedConfig.maxTOW.er[unit] : SharedConfig.maxTOW.norm[unit]); + return GW() <= WASMData.limits.maxTOW; }; const handleInput = (input: string, maxValue: number, setter: (value: number) => void) => { @@ -128,37 +50,67 @@ const StationEntryPax: FC = ({ } }; - useEffect(() => _updateView(), [business1, business2, economy1, economy2, forwardCargo, rearCargo]); + useEffect(() => updateData(), [business1, business2, economy1, economy2, forwardCargo, rearCargo]); useEffect( () => - setFuel((prev) => - prev > (isER ? SharedConfig.maxFuel.er[unit] : SharedConfig.maxFuel.norm[unit]) - ? isER - ? SharedConfig.maxFuel.er[unit] - : SharedConfig.maxFuel.norm[unit] - : prev - ), - [isER] + setFuel((prev) => { + if (prev > WASMData.limits.maxFuel) return WASMData.limits.maxFuel; + return prev; + }), + [WASMData.userData.isER] ); + useEffect(() => { + setFuelEnabled(Math.round(WASMData.livePayload.fuel) === fuel); + }, [WASMData.livePayload.fuel]); - const _updateView = () => { - const payload = PaxConfig.generateDistribution( - payloadLive.empty, - business1, - business2, - economy1, - economy2, - forwardCargo, - rearCargo, - unit, - isER + const updateData = () => { + Coherent.call( + COHERENT_COMBUS_WASM_CALL, + COMM_BUS_UPDATE_TARGET_EVENT, + JSON.stringify({ + mode: 2, + business1, + business2, + economy1, + economy2, + forwardCargo, + rearCargo, + }) ); - - updateView(payload); }; return ( <> +
+
+ + handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} + disabled={loadingState !== 'preview'} + /> + +
+
+
@@ -167,7 +119,7 @@ const StationEntryPax: FC = ({ placeholder="" className="w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right focus:border-blue-600 focus:ring-blue-600" value={business1} - onChange={(e) => handleInput(e.target.value, PaxConfig.stationMax.business1, setBusiness1)} + onChange={(e) => handleInput(e.target.value, WASMData.limits.business1, setBusiness1)} disabled={loadingState !== 'preview'} />
@@ -178,7 +130,7 @@ const StationEntryPax: FC = ({ placeholder="" className="w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right focus:border-blue-600 focus:ring-blue-600" value={business2} - onChange={(e) => handleInput(e.target.value, PaxConfig.stationMax.business2, setBusiness2)} + onChange={(e) => handleInput(e.target.value, WASMData.limits.business2, setBusiness2)} disabled={loadingState !== 'preview'} />
@@ -189,7 +141,7 @@ const StationEntryPax: FC = ({ placeholder="" className="w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right focus:border-blue-600 focus:ring-blue-600" value={economy1} - onChange={(e) => handleInput(e.target.value, PaxConfig.stationMax.economy1, setEconomy1)} + onChange={(e) => handleInput(e.target.value, WASMData.limits.economy1, setEconomy1)} disabled={loadingState !== 'preview'} /> @@ -200,69 +152,38 @@ const StationEntryPax: FC = ({ placeholder="" className="w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right focus:border-blue-600 focus:ring-blue-600" value={economy2} - onChange={(e) => handleInput(e.target.value, PaxConfig.stationMax.economy2, setEconomy2)} + onChange={(e) => handleInput(e.target.value, WASMData.limits.economy2, setEconomy2)} disabled={loadingState !== 'preview'} />
- + handleInput(e.target.value, SharedConfig.stationMax.forward[unit], setForwardCargo)} + onChange={(e) => handleInput(e.target.value, WASMData.limits.forwardCargo, setForwardCargo)} disabled={loadingState !== 'preview'} />
- + handleInput(e.target.value, SharedConfig.stationMax.rear[unit], setRearCargo)} + onChange={(e) => handleInput(e.target.value, WASMData.limits.rearCargo, setRearCargo)} disabled={loadingState !== 'preview'} />
-
-
- - - handleInput( - e.target.value, - isER ? SharedConfig.maxFuel.er[unit] : SharedConfig.maxFuel.norm[unit], - setFuel - ) - } - disabled={loadingState !== 'preview'} - /> - -
-
-
= ({
= ({ unload={() => { setLoadingState('preview'); - PaxConfig.unload(unit, isER); + emptyAircraft(); }} /> diff --git a/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx b/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx index f24a1cc..5970f2c 100644 --- a/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx +++ b/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx @@ -13,21 +13,23 @@ interface StationEntryProps { } const ZFWEntryPax: FC = ({ WASMData, loadingState, setLoadingState, loadAircraft }) => { - const [targetZFWCG, setTargetZFWCG] = useState(WASMData.targetPayload.ZFWCG); + const [CGTarget, setCGTarget] = useState(WASMData.targetPayload.CGTarget); const [fuel, setFuel] = useState(Math.round(WASMData.livePayload.fuel)); - const [ZFW, setZFW] = useState(Math.round(Math.max(WASMData.limits.minZFW, WASMData.targetPayload.total))); + const [ZFWTarget, setZFWTarget] = useState( + Math.round(Math.max(WASMData.limits.minZFW, WASMData.targetPayload.total)) + ); + const [fuelEnabled, setFuelEnabled] = useState(true); - const _ZFW = () => { - if (loadingState !== 'loaded') return ZFW; + const ZFW = () => { + if (loadingState !== 'loaded') return ZFWTarget; return Math.round(WASMData.livePayload.total); }; const ZFWValid = () => { - return _ZFW() <= WASMData.limits.maxZFW; + return ZFW() <= WASMData.limits.maxZFW; }; - const GW = () => { - return fuel + _ZFW(); + return fuel + ZFW(); }; const GWValid = () => { return GW() <= WASMData.limits.maxTOW; @@ -51,24 +53,24 @@ const ZFWEntryPax: FC = ({ WASMData, loadingState, setLoading const converted = parseInt(input); if (converted) { - if (converted < 0) setZFW(Math.round(WASMData.targetPayload.empty + WASMData.targetPayload.crew)); - else if (converted > WASMData.limits.maxZFW) setZFW(WASMData.limits.maxZFW); - else setZFW(converted); + if (converted < 0) setZFWTarget(Math.round(WASMData.targetPayload.empty + WASMData.targetPayload.crew)); + else if (converted > WASMData.limits.maxZFW) setZFWTarget(WASMData.limits.maxZFW); + else setZFWTarget(converted); } }; const handleBlur = (input: string) => { const minZFW = Math.round(WASMData.targetPayload.empty + WASMData.targetPayload.crew); if (!input) { - setZFW(minZFW); + setZFWTarget(minZFW); return; } const converted = parseInt(input); if (converted) { - if (converted < minZFW) setZFW(minZFW); - else if (converted > WASMData.limits.maxZFW) setZFW(WASMData.limits.maxZFW); - else setZFW(converted); + if (converted < minZFW) setZFWTarget(minZFW); + else if (converted > WASMData.limits.maxZFW) setZFWTarget(WASMData.limits.maxZFW); + else setZFWTarget(converted); } updateData(converted); @@ -82,61 +84,24 @@ const ZFWEntryPax: FC = ({ WASMData, loadingState, setLoading }), [WASMData.userData.isER] ); + useEffect(() => { + setFuelEnabled(Math.round(WASMData.livePayload.fuel) === fuel); + }, [WASMData.livePayload.fuel]); - const updateData = (ZFWTarget?: number, CGTarget?: number) => { + const updateData = (_ZFWTarget?: number, _CGTarget?: number) => { Coherent.call( COHERENT_COMBUS_WASM_CALL, COMM_BUS_UPDATE_TARGET_EVENT, JSON.stringify({ mode: 1, - ZFWTarget: ZFWTarget ?? ZFW, - CGTarget: CGTarget ?? targetZFWCG, + ZFWTarget: _ZFWTarget ?? ZFWTarget, + CGTarget: _CGTarget ?? CGTarget, }) ); }; return ( <> -
-
- - handleInputZFW(e.target.value)} - onBlur={(e) => handleBlur(e.target.value)} - disabled={loadingState !== 'preview'} - /> -
-
- - - setTargetZFWCG((prev) => { - const _new = prev + 0.1; - updateData(undefined, _new); - return _new; - }) - } - decrease={() => - setTargetZFWCG((prev) => { - const _new = prev - 0.1; - updateData(undefined, _new); - return _new; - }) - } - /> -
-
-
@@ -158,14 +123,55 @@ const ZFWEntryPax: FC = ({ WASMData, loadingState, setLoading WASMData.userData.isImperial ? fuel : fuel * 2.20462262185 ); SimVar.SetSimVarValue('L:MD11_EFB_READ_READY', 'bool', true); + setFuelEnabled(false); }} - disabled={loadingState !== 'preview' || fuel === Math.round(WASMData.livePayload.fuel)} + disabled={loadingState !== 'preview' || !fuelEnabled} > Load Fuel
+
+
+ + handleInputZFW(e.target.value)} + onBlur={(e) => handleBlur(e.target.value)} + disabled={loadingState !== 'preview'} + /> +
+
+ + + setCGTarget((prev) => { + const _new = prev + 0.1; + updateData(undefined, _new); + return _new; + }) + } + decrease={() => + setCGTarget((prev) => { + const _new = prev - 0.1; + updateData(undefined, _new); + return _new; + }) + } + /> +
+
+
diff --git a/PackageSources/js-bundle/src/types/WASMData.d.ts b/PackageSources/js-bundle/src/types/WASMData.d.ts index 293fd27..8c8ac27 100644 --- a/PackageSources/js-bundle/src/types/WASMData.d.ts +++ b/PackageSources/js-bundle/src/types/WASMData.d.ts @@ -6,7 +6,14 @@ export interface WASMDataPax { limits: LimitsPax; } -interface TargetPayloadPax { +interface TargetPayload { + CGTarget: number; + ZFWCG: number; + TOCG: number; + total: number; +} + +interface TargetPayloadPax extends TargetPayload { empty: number; crew: number; business1: number; @@ -15,16 +22,13 @@ interface TargetPayloadPax { economy2: number; forwardCargo: number; rearCargo: number; - ZFWCG: number; - TOCG: number; - total: number; } interface LivePayloadPax extends TargetPayloadPax { fuel: number; } -interface TargetPayloadF { +interface TargetPayloadF extends TargetPayload { empty: number; crew: number; upper1: number; @@ -33,9 +37,6 @@ interface TargetPayloadF { upper4: number; lowerForward: number; lowerRear: number; - ZFWCG: number; - TOCG: number; - total: number; } interface LivePayloadF extends TargetPayloadF { diff --git a/PackageSources/wasm-module/load-manager.cpp b/PackageSources/wasm-module/load-manager.cpp index 3c377b1..34087b2 100644 --- a/PackageSources/wasm-module/load-manager.cpp +++ b/PackageSources/wasm-module/load-manager.cpp @@ -35,7 +35,7 @@ extern "C" MSFS_CALLBACK void module_init(void) { targetFPayloadData = new fPayloadData_t(); liveFuelData = new FuelData_t(); - targetFPayloadData->ZFWCG = targetPaxPayloadData->ZFWCG = 21; + targetFPayloadData->CGTarget = targetPaxPayloadData->CGTarget = 21; #pragma region SimConnect @@ -454,13 +454,14 @@ int receiveData(const char* buf) { double CGTarget = document["CGTarget"].GetDouble(); if (UserData->isCargo) { - + targetPaxPayloadData->CGTarget = CGTarget; } else { if (!document.HasMember("numPax")) return -1; unsigned short numPax = document["numPax"].GetInt(); - distribute(targetPaxPayloadData, liveFuelData, numPax, cargo, CGTarget, UserData->isImperial); + targetPaxPayloadData->CGTarget = CGTarget; + distribute(targetPaxPayloadData, liveFuelData, numPax, cargo, UserData->isImperial); } break; } @@ -471,10 +472,11 @@ int receiveData(const char* buf) { double CGTarget = document["CGTarget"].GetDouble(); if (UserData->isCargo) { - + targetPaxPayloadData->CGTarget = CGTarget; } else { - distribute(targetPaxPayloadData, liveFuelData, ZFWTarget, CGTarget, UserData->isImperial); + targetPaxPayloadData->CGTarget = CGTarget; + distribute(targetPaxPayloadData, liveFuelData, ZFWTarget, UserData->isImperial); } break; } @@ -495,7 +497,6 @@ int receiveData(const char* buf) { targetPaxPayloadData->rearCargo = document["rearCargo"].GetDouble(); generatePayload(targetPaxPayloadData, UserData->isImperial); - normalisePayload(targetPaxPayloadData, UserData->isImperial); } break; } @@ -557,8 +558,8 @@ void sendData () { // CGs //TODO: Enable for F //calculateCGs(liveFPayloadData, liveFuelData, &liveFPayloadData->ZFWCG, &liveFPayloadData->TOCG, true); - targetPayload.AddMember("ZFWCG", liveFPayloadData->ZFWCG, allocator); - targetPayload.AddMember("TOCG", liveFPayloadData->TOCG, allocator); + livePayload.AddMember("ZFWCG", liveFPayloadData->ZFWCG, allocator); + livePayload.AddMember("TOCG", liveFPayloadData->TOCG, allocator); } // Pax only (converted to passengers) else { @@ -613,6 +614,7 @@ void sendData () { targetPayload.AddMember("lowerForward", targetFPayloadData->lowerForward, allocator); targetPayload.AddMember("lowerRear", targetFPayloadData->lowerRear, allocator); targetPayload.AddMember("total", targetFPayloadData->total, allocator); + targetPayload.AddMember("CGTarget", targetFPayloadData->CGTarget, allocator); // CGs //TODO: Enable for F //calculateCGs(targetFPayloadData, liveFuelData, &targetFPayloadData->ZFWCG, &targetFPayloadData->TOCG, UserData->isImperial); @@ -632,6 +634,7 @@ void sendData () { targetPayload.AddMember("forwardCargo", targetPaxPayloadData->forwardCargo, allocator); targetPayload.AddMember("rearCargo", targetPaxPayloadData->rearCargo, allocator); targetPayload.AddMember("total", targetPaxPayloadData->total, allocator); + targetPayload.AddMember("CGTarget", targetPaxPayloadData->CGTarget, allocator); // CGs calculateCGs(targetPaxPayloadData, liveFuelData, &targetPaxPayloadData->ZFWCG, &targetPaxPayloadData->TOCG, UserData->isImperial); targetPayload.AddMember("ZFWCG", targetPaxPayloadData->ZFWCG, allocator); diff --git a/PackageSources/wasm-module/pax.cpp b/PackageSources/wasm-module/pax.cpp index 7119a0a..a6add30 100644 --- a/PackageSources/wasm-module/pax.cpp +++ b/PackageSources/wasm-module/pax.cpp @@ -1,18 +1,18 @@ #include "pax.h" //ZFW Entry, fill pax first (pax+bag), rest is cargo -void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, const double ZFWTarget, const double CGTarget, const bool isImperial) { +void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, const double ZFWTarget, const bool isImperial) { // Find payload, num pax and extra cargo double payload = ZFWTarget - targetPayload->empty - targetPayload->pilot - targetPayload->firstOfficer - targetPayload->engineer - targetPayload->cabinCrewFront - targetPayload->cabinCrewRear - targetPayload->leftAux - targetPayload->rightAux; unsigned short numPax = std::max(0.0, std::min((double)MAX_PAX, floor(payload / (PAX_WEIGHT(isImperial) + BAG_WEIGHT(isImperial))))); unsigned int cargo = round(payload - numPax * PAX_WEIGHT(isImperial) - numPax * BAG_WEIGHT(isImperial)); - distribute(targetPayload, fuel, numPax, cargo, CGTarget, isImperial); + distribute(targetPayload, fuel, numPax, cargo, isImperial); } //SimBrief Entry, SB pax count and total cargo -void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, unsigned short numPax, unsigned int cargo, const double CGTarget, const bool isImperial) { +void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, unsigned short numPax, unsigned int cargo, const bool isImperial) { // Clear targetPayload->paxCount.business1 = targetPayload->paxCount.business2 = targetPayload->paxCount.economy1 = targetPayload->paxCount.economy2 = targetPayload->paxCount.total = 0; @@ -108,7 +108,7 @@ void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const f calculateCGs(targetPayload, fuel, &targetPayload->ZFWCG, &targetPayload->TOCG, isImperial); // in front of target - if (targetPayload->ZFWCG < CGTarget - CG_TOLERANCE) { + if (targetPayload->ZFWCG < targetPayload->CGTarget - CG_TOLERANCE) { if (targetPayload->paxCount.business1 > 0) { targetPayload->paxCount.business1--; } @@ -136,7 +136,7 @@ void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const f } } // behind target - else if (targetPayload->ZFWCG > CGTarget + CG_TOLERANCE) { + else if (targetPayload->ZFWCG > targetPayload->CGTarget + CG_TOLERANCE) { if (targetPayload->paxCount.economy2 > 0) { targetPayload->paxCount.economy2--; } @@ -176,7 +176,7 @@ void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const f calculateCGs(targetPayload, fuel, &targetPayload->ZFWCG, &targetPayload->TOCG, isImperial); // in front of target - if (targetPayload->ZFWCG < CGTarget - CG_TOLERANCE) { + if (targetPayload->ZFWCG < targetPayload->CGTarget - CG_TOLERANCE) { if (targetPayload->forwardCargo > 0 && targetPayload->rearCargo < MAX_REAR_CARGO(isImperial)) { if (targetPayload->forwardCargo > BAG_WEIGHT(isImperial) && targetPayload->rearCargo < MAX_FRONT_CARGO(isImperial) - BAG_WEIGHT(isImperial)) { @@ -193,7 +193,7 @@ void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const f } } // behind target - else if (targetPayload->ZFWCG > CGTarget + CG_TOLERANCE) { + else if (targetPayload->ZFWCG > targetPayload->CGTarget + CG_TOLERANCE) { if (targetPayload->rearCargo > 0 && targetPayload->forwardCargo < MAX_FRONT_CARGO(isImperial)) { if (targetPayload->rearCargo > BAG_WEIGHT(isImperial) && targetPayload->forwardCargo < MAX_REAR_CARGO(isImperial) - BAG_WEIGHT(isImperial)) { @@ -233,7 +233,7 @@ void generatePayload(paxPayloadData_t* const targetPayload, const bool isImperia // Normalise to Pounds // MANDATORY BEFORE SETTING WEIGHTS -// ENSURE ONLY EVER CALLED ONCE PER SET CYCLE +// USE ON COPY OF GLOBAL STATE ONLY void normalisePayload(paxPayloadData_t* const targetPayload, const bool isImperial) { targetPayload->empty = TO_POUNDS(isImperial, targetPayload->empty); targetPayload->pilot = TO_POUNDS(isImperial, targetPayload->pilot); diff --git a/PackageSources/wasm-module/pax.h b/PackageSources/wasm-module/pax.h index ad04a46..5c96023 100644 --- a/PackageSources/wasm-module/pax.h +++ b/PackageSources/wasm-module/pax.h @@ -17,9 +17,9 @@ #include "types.h" //ZFW Entry, fill pax first (pax+bag), rest is cargo -void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, const double ZFWTarget, const double CGTarget, bool isImperial); +void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, const double ZFWTarget, bool isImperial); //SimBrief Entry, SB pax count and total cargo -void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, unsigned short numPax, unsigned int cargo, const double CGTarget, bool isImperial); +void distribute(paxPayloadData_t* const targetPayload, const FuelData_t* const fuel, unsigned short numPax, unsigned int cargo, bool isImperial); // Updates pax stations with their respective weights // Used internally and used for Station Entry (pax only, cargo is ste directly) // STATION WEIGHTS ARE NOT NORMALISED TO POUNDS diff --git a/PackageSources/wasm-module/types.h b/PackageSources/wasm-module/types.h index ea8a2ba..9cda9bd 100644 --- a/PackageSources/wasm-module/types.h +++ b/PackageSources/wasm-module/types.h @@ -144,6 +144,7 @@ typedef struct { // Additional properties double empty; double total; + double CGTarget; double ZFWCG; double TOCG; struct paxCount { @@ -176,6 +177,7 @@ typedef struct { // Additional properties double empty; double total; + double CGTarget; double ZFWCG; double TOCG; } fPayloadData_t;