--- a/src/vehicle.cpp Fri Jul 04 21:43:17 2008 +0000
+++ b/src/vehicle.cpp Sun Jul 06 11:08:40 2008 +0000
@@ -275,17 +275,8 @@
}
FOR_ALL_VEHICLES(v) {
- assert(v->first != NULL);
-
- if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
- if (IsFrontEngine(v)) v->u.rail.last_speed = v->cur_speed; // update displayed train speed
- TrainConsistChanged(v);
- } else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
- RoadVehUpdateCache(v);
- }
- }
-
- FOR_ALL_VEHICLES(v) {
+ assert(v->First() != NULL);
+
switch (v->type) {
case VEH_ROAD:
v->u.road.roadtype = HasBit(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD;
@@ -321,6 +312,19 @@
}
}
+void InitializeVehicleCaches()
+{
+ Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
+ if (IsFrontEngine(v)) v->u.rail.last_speed = v->cur_speed; // update displayed train speed
+ TrainConsistChanged(v);
+ } else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
+ RoadVehUpdateCache(v);
+ }
+ }
+}
+
Vehicle::Vehicle()
{
this->type = VEH_INVALID;