Skip to content

Commit 4bf28ff

Browse files
Added handbrake control
1 parent 436d2cb commit 4bf28ff

File tree

4 files changed

+63
-1
lines changed

4 files changed

+63
-1
lines changed

Source/ORTS.Common/Input/UserCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public enum UserCommand
136136
[GetString("Control Brake Quick Release")] [GetParticularString("SwitchPanel", "")] ControlBrakeQuickRelease,
137137
[GetString("Control Brake Overcharge")] [GetParticularString("SwitchPanel", "")] ControlBrakeOvercharge,
138138
[GetString("Control Initialize Brakes")] [GetParticularString("SwitchPanel", "")] ControlInitializeBrakes,
139-
[GetString("Control Handbrake Full")] [GetParticularString("SwitchPanel", "")] ControlHandbrakeFull,
139+
[GetString("Control Handbrake Full")] [GetParticularString("SwitchPanel", "Handbrake")] ControlHandbrakeFull,
140140
[GetString("Control Handbrake None")] [GetParticularString("SwitchPanel", "")] ControlHandbrakeNone,
141141
[GetString("Control Odometer Show/Hide")] [GetParticularString("SwitchPanel", "")] ControlOdoMeterShowHide,
142142
[GetString("Control Odometer Reset")] [GetParticularString("SwitchPanel", "")] ControlOdoMeterReset,

Source/RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelDefinition.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using Orts.Simulation.RollingStocks;
2121
using ORTS.Common.Input;
2222
using ORTS.Common;
23+
using Orts.Simulation.Physics;
2324

2425
namespace Orts.Viewer3D.WebServices.SwitchPanel
2526
{
@@ -101,6 +102,23 @@ public void init(UserCommand userCommand)
101102
init2(ORTS.Common.Input.UserCommand.ControlForwards, ORTS.Common.Input.UserCommand.ControlBackwards);
102103
break;
103104

105+
case ORTS.Common.Input.UserCommand.ControlHandbrakeFull:
106+
Train train = Viewer.PlayerLocomotive.Train;
107+
108+
int handBrakeCount = 0;
109+
110+
for (int i = 0; i < train.Cars.Count; i++)
111+
{
112+
if ((train.Cars[i] as MSTSWagon).HandBrakePresent)
113+
handBrakeCount++;
114+
}
115+
116+
if (handBrakeCount > 0)
117+
init2(ORTS.Common.Input.UserCommand.ControlHandbrakeFull, ORTS.Common.Input.UserCommand.ControlHandbrakeNone);
118+
else
119+
init0(ORTS.Common.Input.UserCommand.ControlHandbrakeFull);
120+
break;
121+
104122
default:
105123
init1(userCommand);
106124
break;

Source/RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchOnPanelStatus.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,45 @@ private static void getStatusDieselEngine(UserCommand userCommand, ref SwitchOnP
366366
}
367367
}
368368

369+
private static void getStatusHandbrake(ref SwitchOnPanelStatus switchOnPanelStatus)
370+
{
371+
Train train = Viewer.PlayerLocomotive.Train;
372+
373+
int handBrakeCount = 0;
374+
int handBrakeOn = 0;
375+
376+
for (int i = 0; i < train.Cars.Count; i++)
377+
{
378+
if ((train.Cars[i] as MSTSWagon).HandBrakePresent)
379+
{
380+
handBrakeCount++;
381+
if ((train.Cars[i] as MSTSWagon).GetTrainHandbrakeStatus())
382+
handBrakeOn++;
383+
}
384+
}
385+
386+
switchOnPanelStatus.Color = "";
387+
if ((handBrakeOn > 0) && (handBrakeCount != handBrakeOn))
388+
{
389+
switchOnPanelStatus.Status = Viewer.Catalog.GetString("On") + "/" + Viewer.Catalog.GetString("Off");
390+
switchOnPanelStatus.Color = "orange";
391+
} else
392+
{
393+
if (handBrakeOn > 0)
394+
{
395+
switchOnPanelStatus.Status = Viewer.Catalog.GetString("Full");
396+
switchOnPanelStatus.Color = "orange";
397+
}
398+
else
399+
{
400+
if (handBrakeCount > 0)
401+
{
402+
switchOnPanelStatus.Status = Viewer.Catalog.GetString("Off");
403+
}
404+
}
405+
}
406+
}
407+
369408
public static void getStatus(UserCommand userCommand, ref SwitchOnPanelStatus switchOnPanelStatus)
370409
{
371410
switchOnPanelStatus.Status = "";
@@ -428,6 +467,9 @@ public static void getStatus(UserCommand userCommand, ref SwitchOnPanelStatus sw
428467
case UserCommand.ControlTractionCutOffRelayClosingOrder:
429468
getStatusTractionCutOffRelay(ref switchOnPanelStatus);
430469
break;
470+
case UserCommand.ControlHandbrakeFull:
471+
getStatusHandbrake(ref switchOnPanelStatus);
472+
break;
431473
}
432474
}
433475

Source/RunActivity/Viewer3D/WebServices/SwitchPanel/SwitchesOnPanel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public void setDefinitions(SwitchOnPanel[,] SwitchesOnPanelArray)
7575
SwitchesOnPanelArray[1, 3].initDefinition(UserCommand.ControlPantograph2);
7676
SwitchesOnPanelArray[1, 4].initDefinition(UserCommand.ControlCircuitBreakerClosingOrder);
7777
SwitchesOnPanelArray[1, 5].initDefinition(UserCommand.ControlHeadlightIncrease);
78+
SwitchesOnPanelArray[1, 6].initDefinition(UserCommand.ControlHandbrakeFull);
7879
break;
7980

8081
case TrainCar.EngineTypes.Diesel:
@@ -94,6 +95,7 @@ public void setDefinitions(SwitchOnPanel[,] SwitchesOnPanelArray)
9495
SwitchesOnPanelArray[1, 3].initDefinition(UserCommand.ControlDieselHelper);
9596
SwitchesOnPanelArray[1, 4].initDefinition(UserCommand.ControlTractionCutOffRelayClosingOrder);
9697
SwitchesOnPanelArray[1, 5].initDefinition(UserCommand.ControlHeadlightIncrease);
98+
SwitchesOnPanelArray[1, 6].initDefinition(UserCommand.ControlHandbrakeFull);
9799
break;
98100

99101
case TrainCar.EngineTypes.Steam:

0 commit comments

Comments
 (0)