Skip to content

Commit e0efe12

Browse files
committed
Add base track sounds to route
1 parent da4b28b commit e0efe12

File tree

6 files changed

+305
-49
lines changed

6 files changed

+305
-49
lines changed

Source/Orts.Formats.Msts/RouteFile.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ public Tr_RouteFile(STFReader stf)
126126
new STFReader.TokenProcessor("ortscurvesmsnumber", ()=>{ CurveSMSNumber = stf.ReadIntBlock(null); }),
127127
new STFReader.TokenProcessor("ortscurveswitchsmsnumber", ()=>{ CurveSwitchSMSNumber = stf.ReadIntBlock(null); }),
128128
new STFReader.TokenProcessor("ortsopendoorsinaitrains", ()=>{ OpenDoorsInAITrains = stf.ReadBoolBlock(false); }),
129-
129+
new STFReader.TokenProcessor("ortsplaytracksoundsbasecontinuous", ()=>{ TrackSoundDefaultContinuousPlay = stf.ReadBoolBlock(false); }),
130+
new STFReader.TokenProcessor("ortsdistancebetweentrackjoints", ()=>{ DistanceBetweenTrackJointsM = stf.ReadFloatBlock(STFReader.UNITS.Distance, null); }),
131+
new STFReader.TokenProcessor("ortsconcretesleepers", ()=>{ ConcreteSleepers = stf.ReadFloatBlock(STFReader.UNITS.None, null); }),
130132
});
131133
//TODO This should be changed to STFException.TraceError() with defaults values created
132134
if (RouteID == null) throw new STFException(stf, "Missing RouteID");
@@ -175,6 +177,11 @@ public Tr_RouteFile(STFReader stf)
175177
public float ForestClearDistance = 0;
176178
public bool RemoveForestTreesFromRoads = false;
177179

180+
// Track based sounds
181+
public bool TrackSoundDefaultContinuousPlay = false;
182+
public float DistanceBetweenTrackJointsM;
183+
public float ConcreteSleepers;
184+
178185
// images
179186
public string Thumbnail;
180187
public string LoadingScreen;

Source/Orts.Formats.Msts/SoundManagmentFile.cs

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ public class SharedSMSFileManager
3838
public static int CurveSwitchSMSNumber;
3939
public static bool AutoTrackSound = false;
4040

41+
public static bool PlayDefaultTrackSoundsContinuous = false;
42+
public static float ConcreteSleepers;
43+
4144
public static SoundManagmentFile Get(string path)
4245
{
4346
if (!SharedSMSFiles.ContainsKey(path))
@@ -240,7 +243,7 @@ public struct CurvePoint
240243

241244
public class VolumeCurve
242245
{
243-
public enum Controls { None, DistanceControlled, SpeedControlled, Variable1Controlled, Variable1_2Controlled, Variable1_3Controlled, Variable1_4Controlled, Variable2Controlled, Variable2BoosterControlled, Variable3Controlled, BrakeCylControlled, CurveForceControlled };
246+
public enum Controls { None, DistanceControlled, SpeedControlled, Variable1Controlled, Variable1_2Controlled, Variable1_3Controlled, Variable1_4Controlled, Variable2Controlled, Variable2BoosterControlled, Variable3Controlled, BrakeCylControlled, CurveForceControlled, AngleofAttackControlled, CarFrictionControlled, WheelRpMControlled };
244247

245248
public Controls Control = Controls.None;
246249
public float Granularity = 1.0f;
@@ -264,6 +267,9 @@ public VolumeCurve(STFReader stf)
264267
case "variable3controlled": Control = Controls.Variable3Controlled; break;
265268
case "brakecylcontrolled": Control = Controls.BrakeCylControlled; break;
266269
case "curveforcecontrolled": Control = Controls.CurveForceControlled; break;
270+
case "angleofattackcontrolled": Control = Controls.AngleofAttackControlled; break;
271+
case "carfrictioncontrolled": Control = Controls.CarFrictionControlled; break;
272+
case "wheelrpmcontrolled": Control = Controls.WheelRpMControlled; break;
267273
default: STFException.TraceWarning(stf, "Crash expected: Skipped unknown VolumeCurve/Frequencycurve type " + type); stf.SkipRestOfBlock(); return;
268274
}
269275
stf.ParseBlock(new STFReader.TokenProcessor[] {
@@ -385,7 +391,8 @@ public Discrete_Trigger(STFReader f)
385391
public class Variable_Trigger : Trigger
386392
{
387393
public enum Events { Speed_Inc_Past, Speed_Dec_Past, Distance_Inc_Past, Distance_Dec_Past,
388-
Variable1_Inc_Past, Variable1_2_Inc_Past, Variable1_3_Inc_Past, Variable1_4_Inc_Past, Variable1_Dec_Past, Variable1_2_Dec_Past, Variable1_3_Dec_Past, Variable1_4_Dec_Past, Variable2_Inc_Past, Variable2_Dec_Past, Variable3_Inc_Past, Variable3_Dec_Past, BrakeCyl_Inc_Past, BrakeCyl_Dec_Past, CurveForce_Inc_Past, CurveForce_Dec_Past
394+
Variable1_Inc_Past, Variable1_2_Inc_Past, Variable1_3_Inc_Past, Variable1_4_Inc_Past, Variable1_Dec_Past, Variable1_2_Dec_Past, Variable1_3_Dec_Past, Variable1_4_Dec_Past, Variable2_Inc_Past, Variable2_Dec_Past, Variable3_Inc_Past, Variable3_Dec_Past, BrakeCyl_Inc_Past, BrakeCyl_Dec_Past, CurveForce_Inc_Past, CurveForce_Dec_Past, AngleofAttack_Inc_Past, AngleofAttack_Dec_Past, WheelRpM_Dec_Past, WheelRPM_Inc_Past, TrackJoints_Inc_Past, TrackJoints_Dec_Past, CarOnSwitch_Inc_Past, CarOnSwitch_Dec_Past, CarOnXover_Inc_Past, CarOnXover_Dec_Past, WagonAxles_Inc_Past, WagonAxles_Dec_Past,
395+
ConcreteSleepers_Inc_Past, ConcreteSleepers_Dec_Past, CarInTunnel_Inc_Past, CarInTunnel_Dec_Past
389396
};
390397

391398
public Events Event;
@@ -431,6 +438,23 @@ public Variable_Trigger(STFReader f)
431438
case "brakecyl_dec_past": Event = Events.BrakeCyl_Dec_Past; break;
432439
case "curveforce_inc_past": Event = Events.CurveForce_Inc_Past; break;
433440
case "curveforce_dec_past": Event = Events.CurveForce_Dec_Past; break;
441+
442+
case "angleofattack_inc_past": Event = Events.AngleofAttack_Inc_Past; break;
443+
case "angleofattack_dec_past": Event = Events.AngleofAttack_Dec_Past; break;
444+
case "wheelrpm_inc_past": Event = Events.WheelRPM_Inc_Past; break;
445+
case "wheelrpm_dec_past": Event = Events.WheelRpM_Dec_Past; break;
446+
case "trackjoints_inc_past": Event = Events.TrackJoints_Inc_Past; break;
447+
case "trackjoints_dec_past": Event = Events.TrackJoints_Dec_Past; break;
448+
case "wagonaxles_inc_past": Event = Events.WagonAxles_Inc_Past; break;
449+
case "wagonaxles_dec_past": Event = Events.WagonAxles_Dec_Past; break;
450+
case "caronswitch_inc_past": Event = Events.CarOnSwitch_Inc_Past; break;
451+
case "caronswitch_dec_past": Event = Events.CarOnSwitch_Dec_Past; break;
452+
case "caronxover_inc_past": Event = Events.CarOnXover_Inc_Past; break;
453+
case "caronxover_dec_past": Event = Events.CarOnXover_Dec_Past; break;
454+
case "concretesleepers_inc_past": Event = Events.ConcreteSleepers_Inc_Past; break;
455+
case "concretesleepers_dec_past": Event = Events.ConcreteSleepers_Dec_Past; break;
456+
case "carintunnel_inc_past": Event = Events.CarInTunnel_Inc_Past; break;
457+
case "carintunnel_dec_past": Event = Events.CarInTunnel_Dec_Past; break;
434458
}
435459

436460

Source/Orts.Simulation/Simulation/RollingStocks/MSTSWagon.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1956,7 +1956,7 @@ public override void Save(BinaryWriter outf)
19561956

19571957
outf.Write(WheelBrakeSlideProtectionActive);
19581958
outf.Write(WheelBrakeSlideProtectionTimerS);
1959-
outf.Write(AngleOfAttackRad);
1959+
outf.Write(AngleOfAttackmRad);
19601960
outf.Write(DerailClimbDistanceM);
19611961
outf.Write(DerailPossible);
19621962
outf.Write(DerailExpected);
@@ -2013,7 +2013,7 @@ public override void Restore(BinaryReader inf)
20132013

20142014
WheelBrakeSlideProtectionActive = inf.ReadBoolean();
20152015
WheelBrakeSlideProtectionTimerS = inf.ReadInt32();
2016-
AngleOfAttackRad = inf.ReadSingle();
2016+
AngleOfAttackmRad = inf.ReadSingle();
20172017
DerailClimbDistanceM = inf.ReadSingle();
20182018
DerailPossible = inf.ReadBoolean();
20192019
DerailExpected = inf.ReadBoolean();

0 commit comments

Comments
 (0)