From 0c10006907b7d149f91d277a0c28a79b40eaa4c0 Mon Sep 17 00:00:00 2001 From: smatz Date: Sat, 6 Jun 2009 16:54:22 +0000 Subject: (svn r16527) -Codechange: use static member functions instead of simple casts when converting Vehicle to specialised vehicle types. Includes safety check --- src/saveload/afterload.cpp | 4 ++-- src/saveload/oldloader_sl.cpp | 4 ++-- src/saveload/vehicle_sl.cpp | 16 ++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src/saveload') 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; -- cgit v1.2.3-54-g00ecf