From 9232a2ef0c12efc6cd10f03487096c6dbf8727d3 Mon Sep 17 00:00:00 2001 From: michi_cc Date: Sun, 8 Jan 2012 12:47:54 +0000 Subject: [PATCH] (svn r23773) -Change: [NewGRF] Update all cached train properties if a train vehicle enters a new railtype. --- src/rail_cmd.cpp | 2 +- src/saveload/vehicle_sl.cpp | 3 +++ src/train.h | 2 -- src/train_cmd.cpp | 19 +------------------ 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 49a58fe6d0..1b60bfc6ef 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1658,7 +1658,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 if (flags & DC_EXEC) { /* Railtype changed, update trains as when entering different track */ for (Train **v = affected_trains.Begin(); v != affected_trains.End(); v++) { - (*v)->RailtypeChanged(); + (*v)->ConsistChanged(true); } } diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 7c04448db8..6087c347fe 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -530,6 +530,9 @@ void FixupTrainLengths() } } } + + /* Update all cached properties after moving the vehicle chain around. */ + Train::From(v)->ConsistChanged(true); } } } diff --git a/src/train.h b/src/train.h index 6571544b0c..80e8b34944 100644 --- a/src/train.h +++ b/src/train.h @@ -116,8 +116,6 @@ struct Train FINAL : public GroundVehicle { void ConsistChanged(bool same_length); - void RailtypeChanged(); - int UpdateSpeed(); void UpdateAcceleration(); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index e17521ad6b..f2ea701535 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -112,20 +112,6 @@ void CheckTrainsLengths() } } -/** - * Update visual effect, power and acceleration caches. - * Called when a vehicle in the consist enters a different railtype. - */ -void Train::RailtypeChanged() -{ - for (Train *u = this; u != NULL; u = u->Next()) { - /* The wagon-is-powered-state should not change, so the weight does not change. */ - u->UpdateVisualEffect(false); - } - this->PowerChanged(); - if (this->IsFrontEngine()) this->UpdateAcceleration(); -} - /** * Recalculates the cached stuff of a train. Should be called each time a vehicle is added * to/removed from the chain, and when the game is loaded. @@ -1589,9 +1575,6 @@ void ReverseTrainSwapVeh(Train *v, int l, int r) SwapTrainFlags(&a->gv_flags, &a->gv_flags); UpdateStatusAfterSwap(a); } - - /* Update power of the train in case tiles were different rail type. */ - v->RailtypeChanged(); } @@ -3246,7 +3229,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) v->tile = gp.new_tile; if (GetTileRailType(gp.new_tile) != GetTileRailType(gp.old_tile)) { - v->First()->RailtypeChanged(); + v->First()->ConsistChanged(true); } v->track = chosen_track;