Skip to content

Commit d387fb3

Browse files
committed
Gsx Audio Control only when FCU powered / Deboarding FINALLY?!
1 parent 2458c45 commit d387fb3

File tree

2 files changed

+56
-22
lines changed

2 files changed

+56
-22
lines changed

Fenix2GSX/FenixController.cs

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public void BoardingStart()
162162

163163
public bool Boarding(int paxCurrent, int cargoCurrent)
164164
{
165-
ChangePassengers(paxCurrent - paxLast, true);
165+
BoardPassengers(paxCurrent - paxLast);
166166
paxLast = paxCurrent;
167167

168168
ChangeCargo(cargoCurrent);
@@ -171,31 +171,34 @@ public bool Boarding(int paxCurrent, int cargoCurrent)
171171
return paxCurrent == GetPaxPlanned() && cargoCurrent == 100;
172172
}
173173

174-
private void ChangePassengers(int num, bool onboard)
174+
private void BoardPassengers(int num)
175175
{
176176
if (num <= 0)
177+
{
178+
Logger.Log(LogLevel.Warning, "FenixContoller:BoardPassengers", $"Passenger Num was below 0!");
177179
return;
180+
}
178181

179-
if (onboard)
180-
{
182+
//if (onboard)
183+
//{
181184
for (int i = paxLast; i < paxLast + num && i < GetPaxPlanned(); i++)
182185
{
183-
paxCurrent[paxSeats[i]] = onboard;
186+
paxCurrent[paxSeats[i]] = true;
184187
}
185-
}
186-
else
187-
{
188-
int n = GetPaxPlanned() - paxLast;
189-
Logger.Log(LogLevel.Debug, "FenixContoller:ChangePassengers", $"(n {n})");
190-
for (int i = n; i < n + num; i++)
191-
{
192-
Logger.Log(LogLevel.Debug, "FenixContoller:ChangePassengers", $"(i {i}) (seatslen {paxSeats.Length}) (curlen {paxCurrent.Length}) (num {num}) (paxlast {paxLast}) (planned {GetPaxPlanned()})");
193-
if (i < paxSeats.Length && paxSeats[i] < paxCurrent.Length)
194-
paxCurrent[paxSeats[i]] = onboard;
195-
else
196-
Logger.Log(LogLevel.Debug, "FenixContoller:ChangePassengers", $"invalid index (i {i}) (seatslen {paxSeats.Length}) (curlen {paxCurrent.Length}) (num {num}) (paxlast {paxLast}) (planned {GetPaxPlanned()})");
197-
}
198-
}
188+
//}
189+
//else
190+
//{
191+
// int n = GetPaxPlanned() - paxLast;
192+
// Logger.Log(LogLevel.Debug, "FenixContoller:ChangePassengers", $"(n {n})");
193+
// for (int i = n; i < n + num; i++)
194+
// {
195+
// Logger.Log(LogLevel.Debug, "FenixContoller:ChangePassengers", $"(i {i}) (seatslen {paxSeats.Length}) (curlen {paxCurrent.Length}) (num {num}) (paxlast {paxLast}) (planned {GetPaxPlanned()})");
196+
// if (i < paxSeats.Length && paxSeats[i] < paxCurrent.Length)
197+
// paxCurrent[paxSeats[i]] = onboard;
198+
// else
199+
// Logger.Log(LogLevel.Debug, "FenixContoller:ChangePassengers", $"invalid index (i {i}) (seatslen {paxSeats.Length}) (curlen {paxCurrent.Length}) (num {num}) (paxlast {paxLast}) (planned {GetPaxPlanned()})");
200+
// }
201+
//}
199202

200203
SendSeatString();
201204
}
@@ -259,9 +262,34 @@ public void DeboardingStart()
259262
}
260263
}
261264

265+
private void DeboardPassengers(int num)
266+
{
267+
if (num <= 0)
268+
{
269+
Logger.Log(LogLevel.Warning, "FenixContoller:DeboardPassengers", $"Passenger Num was below 0!");
270+
return;
271+
}
272+
273+
int n = 0;
274+
while (n < num)
275+
{
276+
for (int i = 0; i < paxCurrent.Length; i++)
277+
{
278+
if (paxCurrent[i])
279+
{
280+
paxCurrent[i] = false;
281+
break;
282+
}
283+
}
284+
n++;
285+
}
286+
287+
SendSeatString();
288+
}
289+
262290
public bool Deboarding(int paxCurrent, int cargoCurrent)
263291
{
264-
ChangePassengers(paxLast - paxCurrent, false);
292+
DeboardPassengers(paxLast - paxCurrent);
265293
paxLast = paxCurrent;
266294

267295
cargoCurrent = 100 - cargoCurrent;

Fenix2GSX/GsxController.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ public GsxController(ServiceModel model)
9494
{
9595
SimConnect.SubscribeLvar("I_ASP_INT_REC");
9696
SimConnect.SubscribeLvar("A_ASP_INT_VOLUME");
97+
SimConnect.SubscribeLvar("I_FCU_TRACK_FPA_MODE");
98+
SimConnect.SubscribeLvar("I_FCU_HEADING_VS_MODE");
9799

98100
MMDeviceEnumerator deviceEnumerator = new(Guid.NewGuid());
99101
var devices = deviceEnumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active);
@@ -137,9 +139,14 @@ public void ControlAudio()
137139
if (!Model.GsxVolumeControl || gsxAudioSession == null)
138140
return;
139141

142+
if (!(SimConnect.ReadLvar("I_FCU_TRACK_FPA_MODE") == 1 || SimConnect.ReadLvar("I_FCU_HEADING_VS_MODE") == 1))
143+
{
144+
ResetAudio();
145+
return;
146+
}
147+
140148
float volume = SimConnect.ReadLvar("A_ASP_INT_VOLUME");
141149
int muted = (int)SimConnect.ReadLvar("I_ASP_INT_REC");
142-
143150
if (volume >= 0 && volume != gsxAudioVolume)
144151
{
145152
gsxAudioSession.SimpleAudioVolume.MasterVolume = volume;
@@ -521,7 +528,6 @@ public void RunServices()
521528
}
522529

523530
int paxCurrent = (int)SimConnect.ReadLvar("FSDT_GSX_NUMPASSENGERS") - (int)SimConnect.ReadLvar("FSDT_GSX_NUMPASSENGERS_DEBOARDING_TOTAL");
524-
Logger.Log(LogLevel.Debug, "FenixContoller:ChangePassengers", $"(paxCurrent {paxCurrent})");
525531
if (FenixController.Deboarding(paxCurrent, (int)SimConnect.ReadLvar("FSDT_GSX_DEBOARDING_CARGO_PERCENT")) || deboard_state == 6 || deboard_state == 1)
526532
{
527533
deboarding = false;

0 commit comments

Comments
 (0)