Skip to content

Commit

Permalink
Automatic merge of T1.5-rc1-36-g95c8cb157 and 10 pull requests
Browse files Browse the repository at this point in the history
- Pull request #570 at 824f96f: Experimental glTF 2.0 support with PBR lighting
- Pull request #630 at 704731a: Sky Color Fix (Addresses Trello Roadmap Card #367 for More accurate sunrise and sunset)
- Pull request #650 at 0106424: Renewed Russian translation up to 1.5-rc1 version
- Pull request #652 at 918fdb1: Add button functions to Raildriver
- Pull request #667 at aa5c629: Fix typo in Czech translation of menu
- Pull request #677 at e610841: Correct double heading bug
- Pull request #688 at e44897d: adds Help Icons to Video tab
- Pull request #690 at 3399d4b: Sync turntables and transfertables in multiplayer mode
- Pull request #691 at b2223e4: Removed lines in the RunActivity project file that are no longer used
- Pull request #692 at c82a76d: Italian translation for OR 1.5
  • Loading branch information
openrails-bot committed Aug 23, 2022
12 parents be8c1d7 + 95c8cb1 + 824f96f + 704731a + 0106424 + 918fdb1 + aa5c629 + e610841 + e44897d + 3399d4b + b2223e4 + c82a76d commit 2bd8d9a
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 10 deletions.
@@ -1,4 +1,4 @@
// COPYRIGHT 2009, 2010, 2011, 2012, 2013 by the Open Rails project.
// COPYRIGHT 2009, 2010, 2011, 2012, 2013 by the Open Rails project.
//
// This file is part of Open Rails.
//
Expand Down Expand Up @@ -189,6 +189,7 @@ public override void Parse(string lowercasetoken, STFReader stf)
break;
case "engine(ortsdieselengines":
case "engine(gearboxnumberofgears":
case "engine(ortsreversegearboxindication":
case "engine(gearboxdirectdrivegear":
case "engine(ortsmainclutchtype":
case "engine(ortsgearboxtype":
Expand Down Expand Up @@ -851,7 +852,7 @@ public override float GetDataOf(CabViewControl cvc)
{
case CABViewControlTypes.GEARS:
if (DieselEngines.HasGearBox)
data = DieselEngines[0].GearBox.CurrentGearIndex + 1;
data = DieselEngines[0].GearBox.GearIndication;
break;

case CABViewControlTypes.FUEL_GAUGE:
Expand Down Expand Up @@ -937,7 +938,7 @@ public override string GetStatus()
Simulator.Catalog.GetParticularString("Engine", GetStringAttribute.GetPrettyName(DieselEngines[0].State)));
if (DieselEngines.HasGearBox)
status.AppendFormat("{0} = {1}\n", Simulator.Catalog.GetString("Gear"),
DieselEngines[0].GearBox.CurrentGearIndex < 0 ? Simulator.Catalog.GetParticularString("Gear", "N") : (DieselEngines[0].GearBox.CurrentGearIndex + 1).ToString());
DieselEngines[0].GearBox.CurrentGearIndex < 0 ? Simulator.Catalog.GetParticularString("Gear", "N") : (DieselEngines[0].GearBox.GearIndication).ToString());
status.AppendLine();
status.AppendFormat("{0} = {1}\n",
Simulator.Catalog.GetString("Battery switch"),
Expand All @@ -964,7 +965,7 @@ public override string GetDebugStatus()

if (DieselEngines.HasGearBox && DieselTransmissionType == DieselTransmissionTypes.Mechanic)
{
status.AppendFormat("\t{0} {1}-{2}", Simulator.Catalog.GetString("Gear"), DieselEngines[0].GearBox.CurrentGearIndex < 0 ? Simulator.Catalog.GetString("N") : (DieselEngines[0].GearBox.CurrentGearIndex + 1).ToString(), DieselEngines[0].GearBox.GearBoxType);
status.AppendFormat("\t{0} {1}-{2}", Simulator.Catalog.GetString("Gear"), DieselEngines[0].GearBox.CurrentGearIndex < 0 ? Simulator.Catalog.GetString("N") : (DieselEngines[0].GearBox.GearIndication).ToString(), DieselEngines[0].GearBox.GearBoxType);
}
status.AppendFormat("\t{0} {1}\t\t{2}\n",
Simulator.Catalog.GetString("Fuel"),
Expand Down
62 changes: 56 additions & 6 deletions Source/Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs
Expand Up @@ -433,6 +433,7 @@ public float OdometerM
public MSTSNotchController DPDynamicBrakeController;

private int PreviousGearBoxNotch;
private int previousChangedGearBoxNotch;

public float EngineBrakeIntervention = -1;
public float TrainBrakeIntervention = -1;
Expand Down Expand Up @@ -1821,6 +1822,32 @@ public override void Update(float elapsedClockSeconds)
}


// pass gearbox command to other locomotives in train
foreach (TrainCar car in Train.Cars)
{
var locog = car as MSTSDieselLocomotive;
var dieselloco = this as MSTSDieselLocomotive;

if (locog != null && dieselloco != null && car != this && locog.DieselTransmissionType == MSTSDieselLocomotive.DieselTransmissionTypes.Mechanic)
{
if (GearBoxController.CurrentNotch != previousChangedGearBoxNotch)
{
locog.DieselEngines[0].GearBox.currentGearIndex = dieselloco.DieselEngines[0].GearBox.CurrentGearIndex;
locog.GearBoxController.CurrentNotch = dieselloco.DieselEngines[0].GearBox.CurrentGearIndex + 1;
locog.GearboxGearIndex = dieselloco.DieselEngines[0].GearBox.CurrentGearIndex + 1;
locog.GearBoxController.SetValue((float)dieselloco.GearBoxController.CurrentNotch);

locog.Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Increase, locog.GearBoxController.CurrentNotch);
locog.AlerterReset(TCSEvent.GearBoxChanged);
locog.SignalGearBoxChangeEvents();

previousChangedGearBoxNotch = GearBoxController.CurrentNotch; // reset loop until next gear change

}
}
}


TrainControlSystem.Update(elapsedClockSeconds);

LocomotivePowerSupply?.Update(elapsedClockSeconds);
Expand Down Expand Up @@ -3579,8 +3606,10 @@ public virtual void StartGearBoxIncrease()
{
if (GearBoxController != null)
{

if (this is MSTSDieselLocomotive)
{

var dieselloco = this as MSTSDieselLocomotive;

if (dieselloco.DieselTransmissionType == MSTSDieselLocomotive.DieselTransmissionTypes.Mechanic)
Expand All @@ -3589,7 +3618,7 @@ public virtual void StartGearBoxIncrease()
if (dieselloco.DieselEngines[0].GearBox.GearBoxType != TypesGearBox.C)
{
GearBoxController.StartIncrease();
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Increase, GearBoxController.CurrentNotch);
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Increase, dieselloco.DieselEngines[0].GearBox.GearIndication);
AlerterReset(TCSEvent.GearBoxChanged);
SignalGearBoxChangeEvents();
dieselloco.DieselEngines[0].GearBox.clutchOn = false;
Expand All @@ -3602,7 +3631,8 @@ public virtual void StartGearBoxIncrease()
if (ThrottlePercent == 0)
{
GearBoxController.StartIncrease();
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Increase, GearBoxController.CurrentNotch);
Trace.TraceInformation("Controller Increase - Current Notch {0} Indication {1} GearIndex {2}", GearBoxController.CurrentNotch, dieselloco.DieselEngines[0].GearBox.GearIndication, dieselloco.DieselEngines[0].GearBox.CurrentGearIndex);
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Increase, dieselloco.DieselEngines[0].GearBox.GearIndication );
AlerterReset(TCSEvent.GearBoxChanged);
SignalGearBoxChangeEvents();
dieselloco.DieselEngines[0].GearBox.clutchOn = false;
Expand All @@ -3620,6 +3650,10 @@ public virtual void StartGearBoxIncrease()
AlerterReset(TCSEvent.GearBoxChanged);
SignalGearBoxChangeEvents();
}

// ChangeGearUp();


}
}

Expand Down Expand Up @@ -3652,7 +3686,7 @@ public virtual void StartGearBoxDecrease()
if (dieselloco.DieselEngines[0].GearBox.GearBoxType != TypesGearBox.C)
{
GearBoxController.StartDecrease();
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Decrease, GearBoxController.CurrentNotch);
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Decrease, dieselloco.DieselEngines[0].GearBox.GearIndication);
AlerterReset(TCSEvent.GearBoxChanged);
SignalGearBoxChangeEvents();
dieselloco.DieselEngines[0].GearBox.clutchOn = false;
Expand All @@ -3663,7 +3697,8 @@ public virtual void StartGearBoxDecrease()
if (ThrottlePercent == 0)
{
GearBoxController.StartDecrease();
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Decrease, GearBoxController.CurrentNotch);
Trace.TraceInformation("Controller Decrease - Current Notch {0} Indication {1} GearIndex {2}", GearBoxController.CurrentNotch, dieselloco.DieselEngines[0].GearBox.GearIndication, dieselloco.DieselEngines[0].GearBox.CurrentGearIndex);
Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Decrease, dieselloco.DieselEngines[0].GearBox.GearIndication);
AlerterReset(TCSEvent.GearBoxChanged);
SignalGearBoxChangeEvents();
dieselloco.DieselEngines[0].GearBox.clutchOn = false;
Expand All @@ -3682,6 +3717,21 @@ public virtual void StartGearBoxDecrease()
SignalGearBoxChangeEvents();

}

// pass gearbox command to other locomotives
foreach (TrainCar car in Train.Cars)
{
var locog = car as MSTSDieselLocomotive;

if (locog != null && car != this && locog.DieselTransmissionType == MSTSDieselLocomotive.DieselTransmissionTypes.Mechanic)
{
locog.GearBoxController.StartDecrease();
locog.Simulator.Confirmer.ConfirmWithPerCent(CabControl.GearBox, CabSetting.Decrease, GearBoxController.CurrentNotch);
locog.AlerterReset(TCSEvent.GearBoxChanged);
locog.SignalGearBoxChangeEvents();
}

}
}
}

Expand Down Expand Up @@ -3746,7 +3796,7 @@ private void SignalGearBoxChangeEvents()
var dieselloco = this as MSTSDieselLocomotive;
if (change != 0)
{
//new GarBoxCommand(Simulator.Log, change > 0, controller.CurrentValue, Simulator.ClockTime);
//new GearBoxCommand(Simulator.Log, change > 0, controller.CurrentValue, Simulator.ClockTime);
SignalEvent(change > 0 ? Event.GearUp : Event.GearDown);
AlerterReset(TCSEvent.GearBoxChanged);
}
Expand Down Expand Up @@ -5229,7 +5279,7 @@ public virtual float GetDataOf(CabViewControl cvc)
{
var dieselLoco = this as MSTSDieselLocomotive;
if (dieselLoco.DieselEngines.HasGearBox)
data = dieselLoco.DieselEngines[0].GearBox.CurrentGearIndex + 1;
data = dieselLoco.DieselEngines[0].GearBox.GearIndication;
}
break;
}
Expand Down
Expand Up @@ -124,6 +124,7 @@ public void Parse(string lowercasetoken, STFReader stf)
}
break;
case "engine(gearboxnumberofgears":
case "engine(ortsreversegearboxindication":
case "engine(gearboxdirectdrivegear":
case "engine(ortsmainclutchtype":
case "engine(ortsgearboxtype":
Expand Down
Expand Up @@ -32,6 +32,7 @@ namespace Orts.Simulation.RollingStocks.SubSystems.PowerTransmissions
public class MSTSGearBoxParams
{
public int GearBoxNumberOfGears = 1;
public bool ReverseGearBoxIndication;
public int GearBoxDirectDriveGear = 1;
public bool FreeWheelFitted = false;
public TypesGearBox GearBoxType = TypesGearBox.Unknown;
Expand Down Expand Up @@ -69,6 +70,7 @@ public void Parse(string lowercasetoken, STFReader stf)
switch (lowercasetoken)
{
case "engine(gearboxnumberofgears": GearBoxNumberOfGears = stf.ReadIntBlock(1); initLevel++; break;
case "engine(ortsreversegearboxindication": int tempIndication = stf.ReadIntBlock(1); if (tempIndication == 1) { ReverseGearBoxIndication = true; } Trace.TraceInformation("Read Indication {0}",ReverseGearBoxIndication); break;
case "engine(gearboxdirectdrivegear": GearBoxDirectDriveGear = stf.ReadIntBlock(1); break;
case "engine(ortsgearboxfreewheel":
var freeWheel = stf.ReadIntBlock(null);
Expand Down Expand Up @@ -189,6 +191,7 @@ public void Parse(string lowercasetoken, STFReader stf)
public void Copy(MSTSGearBoxParams copy)
{
GearBoxNumberOfGears = copy.GearBoxNumberOfGears;
ReverseGearBoxIndication = copy.ReverseGearBoxIndication;
GearBoxDirectDriveGear = copy.GearBoxDirectDriveGear;
GearBoxType = copy.GearBoxType;
MaxTEFound = copy.MaxTEFound;
Expand Down Expand Up @@ -251,6 +254,10 @@ public int CurrentGearIndex
{
return currentGearIndex;
}
set
{
currentGearIndex = value;
}
}

public Gear NextGear
Expand Down Expand Up @@ -431,6 +438,25 @@ public bool IsClutchOn

public int NumOfGears { get { return Gears.Count; } }

// The default gear configuration is N-1-2-3-4, etc. However some locomotives have a N-4-3-2-1 configuration. So the display indication is reversed to
// give the impression that this gear system is set.
public int GearIndication
{
get
{
if (ReverseGearBoxIndication )
{
int tempgear = NumOfGears - CurrentGearIndex;
tempgear = MathHelper.Clamp(tempgear, 0, NumOfGears);
return tempgear;
}
else
{
return CurrentGearIndex + 1;
}
}
}

public float CurrentSpeedMpS
{
get
Expand Down Expand Up @@ -533,6 +559,7 @@ public bool IsOverspeedWarning

public bool AutoClutch = true;

public bool ReverseGearBoxIndication = false;
public TypesClutch ClutchType = TypesClutch.Unknown;
public TypesGearBox GearBoxType = TypesGearBox.Unknown;
public GearBoxOperation GearBoxOperation = GearBoxOperation.Manual;
Expand Down Expand Up @@ -757,6 +784,7 @@ public void Initialize()
if ((!GearBoxParams.IsInitialized) && (GearBoxParams.AtLeastOneParamFound))
Trace.TraceWarning("Some of the gearbox parameters are missing! Default physics will be used.");

ReverseGearBoxIndication = GearBoxParams.ReverseGearBoxIndication;
GearBoxType = GearBoxParams.GearBoxType;
ClutchType = GearBoxParams.ClutchType;
GearBoxFreeWheelFitted = GearBoxParams.FreeWheelFitted;
Expand Down

0 comments on commit 2bd8d9a

Please sign in to comment.