Changeset - r18913:fd2dc944ef3a
[Not reviewed]
master
0 4 0
michi_cc - 12 years ago 2012-01-08 12:47:54
michi_cc@openttd.org
(svn r23773) -Change: [NewGRF] Update all cached train properties if a train vehicle enters a new railtype.
4 files changed with 5 insertions and 21 deletions:
0 comments (0 inline, 0 general)
src/rail_cmd.cpp
Show inline comments
 
@@ -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);
 
		}
 
	}
 

	
src/saveload/vehicle_sl.cpp
Show inline comments
 
@@ -530,6 +530,9 @@ void FixupTrainLengths()
 
					}
 
				}
 
			}
 

	
 
			/* Update all cached properties after moving the vehicle chain around. */
 
			Train::From(v)->ConsistChanged(true);
 
		}
 
	}
 
}
src/train.h
Show inline comments
 
@@ -116,8 +116,6 @@ struct Train FINAL : public GroundVehicl
 

	
 
	void ConsistChanged(bool same_length);
 

	
 
	void RailtypeChanged();
 

	
 
	int UpdateSpeed();
 

	
 
	void UpdateAcceleration();
src/train_cmd.cpp
Show inline comments
 
@@ -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;
0 comments (0 inline, 0 general)