Skip to content

Commit f2fff29

Browse files
committed
Add extra fuel types to activity initialisation
1 parent d73de81 commit f2fff29

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

Source/Orts.Formats.Msts/ActivityFile.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,8 @@ public class Tr_Activity_Header {
400400
public int FuelWater = 100; // percent
401401
public int FuelCoal = 100; // percent
402402
public int FuelDiesel = 100; // percent
403+
public int FuelWood = 100; // percent
404+
public int FuelSand = 100; // percent
403405
public string LoadStationsPopulationFile;
404406

405407
public Tr_Activity_Header(STFReader stf) {
@@ -423,7 +425,9 @@ public Tr_Activity_Header(STFReader stf) {
423425
new STFReader.TokenProcessor("workers", ()=>{ Workers = stf.ReadIntBlock(Workers); }),
424426
new STFReader.TokenProcessor("fuelwater", ()=>{ FuelWater = stf.ReadIntBlock(FuelWater); }),
425427
new STFReader.TokenProcessor("fuelcoal", ()=>{ FuelCoal = stf.ReadIntBlock(FuelCoal); }),
428+
new STFReader.TokenProcessor("fuelwood", ()=>{ FuelWood = stf.ReadIntBlock(FuelWood); }),
426429
new STFReader.TokenProcessor("fueldiesel", ()=>{ FuelDiesel = stf.ReadIntBlock(FuelDiesel); }),
430+
new STFReader.TokenProcessor("fuelsand", ()=>{ FuelSand = stf.ReadIntBlock(FuelSand); }),
427431
new STFReader.TokenProcessor("ortsloadstationspopulation", ()=>{ LoadStationsPopulationFile = stf.ReadStringBlock(null); }),
428432
});
429433
}

Source/Orts.Simulation/Simulation/AIs/AI.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -922,8 +922,22 @@ public AITrain CreateAITrainDetail(Service_Definition sd, Traffic_Service_Defini
922922

923923
if (Simulator.Activity != null && car is MSTSSteamLocomotive mstsSteamLocomotive)
924924
{
925+
925926
mstsSteamLocomotive.CombinedTenderWaterVolumeUKG = ORTS.Common.Kg.ToLb(mstsSteamLocomotive.MaxLocoTenderWaterMassKG) / 10.0f * Simulator.Activity.Tr_Activity.Tr_Activity_Header.FuelWater / 100.0f;
926-
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Simulator.Activity.Tr_Activity.Tr_Activity_Header.FuelCoal / 100.0f;
927+
928+
// Adjust fuel stocks depending upon fuel used - in Activity mode
929+
if (mstsSteamLocomotive.SteamLocomotiveFuelType == MSTSLocomotive.SteamLocomotiveFuelTypes.Wood)
930+
{
931+
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Simulator.Activity.Tr_Activity.Tr_Activity_Header.FuelWood / 100.0f;
932+
}
933+
else if (mstsSteamLocomotive.SteamLocomotiveFuelType == MSTSLocomotive.SteamLocomotiveFuelTypes.Oil)
934+
{
935+
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Simulator.Activity.Tr_Activity.Tr_Activity_Header.FuelDiesel / 100.0f;
936+
}
937+
else // defaults to coal fired
938+
{
939+
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Simulator.Activity.Tr_Activity.Tr_Activity_Header.FuelCoal / 100.0f;
940+
}
927941
}
928942

929943
if (train.InitialSpeed != 0 && car is MSTSLocomotive loco)

Source/Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public enum SoundState
186186
bool WaterScoopSoundOn = false;
187187
public float MaxTotalCombinedWaterVolumeUKG;
188188
public MSTSNotchController WaterController = new MSTSNotchController(0, 1, 0.01f);
189-
public float CombinedTenderWaterVolumeUKG // Decreased by running injectors and increased by refilling
189+
public float CombinedTenderWaterVolumeUKG // Decreased by running injectors or pumps and increased by refilling
190190
{
191191
get { return WaterController.CurrentValue * MaxTotalCombinedWaterVolumeUKG; }
192192
set { WaterController.CurrentValue = value / MaxTotalCombinedWaterVolumeUKG; }

Source/Orts.Simulation/Simulation/Simulator.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1309,11 +1309,26 @@ private Train InitializePlayerTrain()
13091309
if (Activity != null && mstsDieselLocomotive != null)
13101310
mstsDieselLocomotive.DieselLevelL = mstsDieselLocomotive.MaxDieselLevelL * Activity.Tr_Activity.Tr_Activity_Header.FuelDiesel / 100.0f;
13111311

1312+
1313+
13121314
var mstsSteamLocomotive = car as MSTSSteamLocomotive;
13131315
if (Activity != null && mstsSteamLocomotive != null)
13141316
{
13151317
mstsSteamLocomotive.CombinedTenderWaterVolumeUKG = (Kg.ToLb(mstsSteamLocomotive.MaxLocoTenderWaterMassKG) / 10.0f) * Activity.Tr_Activity.Tr_Activity_Header.FuelWater / 100.0f;
1316-
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Activity.Tr_Activity.Tr_Activity_Header.FuelCoal / 100.0f;
1318+
1319+
// Adjust fuel stocks depending upon fuel used - in Explore mode
1320+
if (mstsSteamLocomotive.SteamLocomotiveFuelType == MSTSLocomotive.SteamLocomotiveFuelTypes.Wood)
1321+
{
1322+
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Activity.Tr_Activity.Tr_Activity_Header.FuelWood / 100.0f;
1323+
}
1324+
else if (mstsSteamLocomotive.SteamLocomotiveFuelType == MSTSLocomotive.SteamLocomotiveFuelTypes.Oil)
1325+
{
1326+
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Activity.Tr_Activity.Tr_Activity_Header.FuelDiesel / 100.0f;
1327+
}
1328+
else // defaults to coal fired
1329+
{
1330+
mstsSteamLocomotive.TenderFuelMassKG = mstsSteamLocomotive.MaxTenderFuelMassKG * Activity.Tr_Activity.Tr_Activity_Header.FuelCoal / 100.0f;
1331+
}
13171332
}
13181333
}
13191334
catch (Exception error)

0 commit comments

Comments
 (0)