main
Marc Riera 2024-11-03 22:47:50 +01:00
parent bcc0f1d4b9
commit 06bb2e2ee0
3 changed files with 11 additions and 7 deletions

View File

@ -76,6 +76,9 @@ namespace OpenbveFcmbTrainPlugin
/// <param name="train">The current train.</param>
internal override void KeyChange(VirtualKeys key, bool pressed, Train train)
{
double speed = train.State.Speed.KilometersPerHour;
bool stopped = speed < 0.05;
if (pressed)
{
switch (key)
@ -87,7 +90,7 @@ namespace OpenbveFcmbTrainPlugin
Counter = 0;
DeviceState = DeviceStates.Active;
}
else if (DeviceState == DeviceStates.Emergency & Math.Abs(train.State.Speed.KilometersPerHour) < 0.01)
else if (DeviceState == DeviceStates.Emergency && stopped)
{
// Reset the counter after the train has stopped
Counter = 0;

View File

@ -94,12 +94,9 @@ namespace OpenbveFcmbTrainPlugin
// Accidental departure beacon/transponder
case 2:
// Check if there is a potential SPAD and change to emergency mode
if (beacon.Signal.Aspect == 0)
if (beacon.Signal.Aspect == 0 && DeviceState == DeviceStates.Active)
{
if (DeviceState == DeviceStates.Active)
{
DeviceState = DeviceStates.Emergency;
}
DeviceState = DeviceStates.Emergency;
}
break;
}
@ -112,8 +109,11 @@ namespace OpenbveFcmbTrainPlugin
/// <param name="route">The current route.</param>
internal override void PerformAI(AIData data, Train train, Route route)
{
double speed = train.State.Speed.KilometersPerHour;
bool stopped = speed < 0.05;
// Reset device in case of emergency, once the train has stopped
if (DeviceState == DeviceStates.Emergency && train.State.Speed.KilometersPerHour < 0.05)
if (DeviceState == DeviceStates.Emergency && stopped)
{
data.Handles.BrakeNotch = train.Specs.BrakeNotches;
KeyChange(VirtualKeys.C2, true, train);

View File

@ -124,6 +124,7 @@ namespace OpenbveFcmbTrainPlugin
/// <param name="beacon">The beacon data.</param>
public void SetBeacon(BeaconData beacon)
{
Train.SetBeacon(beacon);
}
/// <summary>Is called when the plugin should perform the AI.</summary>