# HG changeset patch # User michi_cc # Date 2012-01-08 12:47:54 # Node ID fd2dc944ef3a75d0ac199b20555e2ea7f7ae8f6f # Parent e7974922f9348ee2d1e509cbf8172e179221fbf1 (svn r23773) -Change: [NewGRF] Update all cached train properties if a train vehicle enters a new railtype. diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1658,7 +1658,7 @@ CommandCost CmdConvertRail(TileIndex til 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 --- 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 --- a/src/train.h +++ b/src/train.h @@ -116,8 +116,6 @@ struct Train FINAL : public GroundVehicl void ConsistChanged(bool same_length); - void RailtypeChanged(); - int UpdateSpeed(); void UpdateAcceleration(); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -113,20 +113,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. * Note: this needs to be called too for 'wagon chains' (in the depot, without an engine) @@ -1589,9 +1575,6 @@ void ReverseTrainSwapVeh(Train *v, int l 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 * 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;