summaryrefslogtreecommitdiff
path: root/src/saveload
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-06-06 16:54:22 +0000
committersmatz <smatz@openttd.org>2009-06-06 16:54:22 +0000
commit0c10006907b7d149f91d277a0c28a79b40eaa4c0 (patch)
treedc8cb6a7a9315a10688af00187db94be8911acef /src/saveload
parentc90819ff6d8d49ac25aa9194bdf04e8dfd7149ea (diff)
downloadopenttd-0c10006907b7d149f91d277a0c28a79b40eaa4c0.tar.xz
(svn r16527) -Codechange: use static member functions instead of simple casts when converting Vehicle to specialised vehicle types. Includes safety check
Diffstat (limited to 'src/saveload')
-rw-r--r--src/saveload/afterload.cpp4
-rw-r--r--src/saveload/oldloader_sl.cpp4
-rw-r--r--src/saveload/vehicle_sl.cpp16
3 files changed, 12 insertions, 12 deletions
diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp
index 911e687dd..9ec6b231a 100644
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -912,9 +912,9 @@ bool AfterLoadGame()
continue;
}
if (v->type == VEH_TRAIN) {
- ((Train *)v)->track = TRACK_BIT_WORMHOLE;
+ Train::From(v)->track = TRACK_BIT_WORMHOLE;
} else {
- ((RoadVehicle *)v)->state = RVSB_WORMHOLE;
+ RoadVehicle::From(v)->state = RVSB_WORMHOLE;
}
}
}
diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp
index 18815c737..b3358813c 100644
--- a/src/saveload/oldloader_sl.cpp
+++ b/src/saveload/oldloader_sl.cpp
@@ -177,7 +177,7 @@ void FixOldVehicles()
/* We haven't used this bit for stations for ages */
if (v->type == VEH_ROAD) {
- RoadVehicle *rv = (RoadVehicle *)v;
+ RoadVehicle *rv = RoadVehicle::From(v);
if (rv->state != RVSB_IN_DEPOT && rv->state != RVSB_WORMHOLE) {
ClrBit(rv->state, RVS_IS_STOPPING);
}
@@ -1316,7 +1316,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num)
};
if (v->spritenum / 2 >= lengthof(spriteset_rail)) return false;
v->spritenum = spriteset_rail[v->spritenum / 2]; // adjust railway sprite set offset
- ((Train *)v)->railtype = type == 0x25 ? 1 : 0; // monorail / rail
+ Train::From(v)->railtype = type == 0x25 ? 1 : 0; // monorail / rail
break;
}
diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp
index 9c2610384..415ba76b9 100644
--- a/src/saveload/vehicle_sl.cpp
+++ b/src/saveload/vehicle_sl.cpp
@@ -242,8 +242,8 @@ void AfterLoadVehicles(bool part_of_load)
if (part_of_load) v->fill_percent_te_id = INVALID_TE_ID;
v->first = NULL;
- if (v->type == VEH_TRAIN) ((Train *)v)->tcache.first_engine = INVALID_ENGINE;
- if (v->type == VEH_ROAD) ((RoadVehicle *)v)->rcache.first_engine = INVALID_ENGINE;
+ if (v->type == VEH_TRAIN) Train::From(v)->tcache.first_engine = INVALID_ENGINE;
+ if (v->type == VEH_ROAD) RoadVehicle::From(v)->rcache.first_engine = INVALID_ENGINE;
v->cargo.InvalidateCache();
}
@@ -308,10 +308,10 @@ void AfterLoadVehicles(bool part_of_load)
assert(v->first != NULL);
if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
- if (IsFrontEngine(v)) ((Train *)v)->tcache.last_speed = v->cur_speed; // update displayed train speed
- TrainConsistChanged((Train *)v, false);
+ if (IsFrontEngine(v)) Train::From(v)->tcache.last_speed = v->cur_speed; // update displayed train speed
+ TrainConsistChanged(Train::From(v), false);
} else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
- RoadVehUpdateCache((RoadVehicle *)v);
+ RoadVehUpdateCache(RoadVehicle::From(v));
}
}
@@ -335,7 +335,7 @@ void AfterLoadVehicles(bool part_of_load)
FOR_ALL_VEHICLES(v) {
switch (v->type) {
case VEH_ROAD: {
- RoadVehicle *rv = (RoadVehicle *)v;
+ RoadVehicle *rv = RoadVehicle::From(v);
rv->roadtype = HasBit(EngInfo(v->First()->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD;
rv->compatible_roadtypes = RoadTypeToRoadTypes(rv->roadtype);
}
@@ -356,10 +356,10 @@ void AfterLoadVehicles(bool part_of_load)
/* In the case of a helicopter we will update the rotor sprites */
if (v->subtype == AIR_HELICOPTER) {
Vehicle *rotor = shadow->Next();
- rotor->cur_image = GetRotorImage((Aircraft *)v);
+ rotor->cur_image = GetRotorImage(Aircraft::From(v));
}
- UpdateAircraftCache((Aircraft *)v);
+ UpdateAircraftCache(Aircraft::From(v));
}
break;
default: break;