From 7a37220881c995f317bf5bd0f3077fa6c9e9d098 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 22 May 2009 20:22:20 +0000 Subject: (svn r16390) -Codechange: move u.road to RoadVehicle. --- src/saveload/afterload.cpp | 19 ++++++++++++------- src/saveload/oldloader_sl.cpp | 25 +++++++++++++------------ src/saveload/vehicle_sl.cpp | 34 ++++++++++++++++++---------------- 3 files changed, 43 insertions(+), 35 deletions(-) (limited to 'src/saveload') diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index f32af8537..088aef84f 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -914,7 +914,7 @@ bool AfterLoadGame() if (v->type == VEH_TRAIN) { v->u.rail.track = TRACK_BIT_WORMHOLE; } else { - v->u.road.state = RVSB_WORMHOLE; + ((RoadVehicle *)v)->state = RVSB_WORMHOLE; } } } @@ -1049,15 +1049,18 @@ bool AfterLoadGame() Vehicle *v; FOR_ALL_VEHICLES(v) { if (v->type == VEH_ROAD) { - v->vehstatus &= ~0x40; - v->u.road.slot = NULL; - v->u.road.slot_age = 0; + RoadVehicle *rv = (RoadVehicle *)v; + rv->vehstatus &= ~0x40; + rv->slot = NULL; + rv->slot_age = 0; } } } else { Vehicle *v; FOR_ALL_VEHICLES(v) { - if (v->type == VEH_ROAD && v->u.road.slot != NULL) v->u.road.slot->num_vehicles++; + if (v->type != VEH_ROAD) continue; + RoadVehicle *rv = (RoadVehicle *)v; + if (rv->slot != NULL) rv->slot->num_vehicles++; } } @@ -1373,8 +1376,10 @@ bool AfterLoadGame() /* In some old savegames a bit was cleared when it should not be cleared */ Vehicle *v; FOR_ALL_VEHICLES(v) { - if (v->type == VEH_ROAD && (v->u.road.state == 250 || v->u.road.state == 251)) { - SetBit(v->u.road.state, RVS_IS_STOPPING); + if (v->type != VEH_ROAD) continue; + RoadVehicle *rv = (RoadVehicle *)v; + if (rv->state == 250 || rv->state == 251) { + SetBit(rv->state, RVS_IS_STOPPING); } } } diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index d1186559c..842db05df 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -175,10 +175,11 @@ void FixOldVehicles() v->name = CopyFromOldName(_old_vehicle_names[v->index]); /* We haven't used this bit for stations for ages */ - if (v->type == VEH_ROAD && - v->u.road.state != RVSB_IN_DEPOT && - v->u.road.state != RVSB_WORMHOLE) { - ClrBit(v->u.road.state, RVS_IS_STOPPING); + if (v->type == VEH_ROAD) { + RoadVehicle *rv = (RoadVehicle *)v; + if (rv->state != RVSB_IN_DEPOT && rv->state != RVSB_WORMHOLE) { + ClrBit(rv->state, RVS_IS_STOPPING); + } } /* The subtype should be 0, but it sometimes isn't :( */ @@ -1089,13 +1090,13 @@ static const OldChunks vehicle_train_chunk[] = { }; static const OldChunks vehicle_road_chunk[] = { - OCL_SVAR( OC_UINT8, VehicleRoad, state ), - OCL_SVAR( OC_UINT8, VehicleRoad, frame ), - OCL_SVAR( OC_UINT16, VehicleRoad, blocked_ctr ), - OCL_SVAR( OC_UINT8, VehicleRoad, overtaking ), - OCL_SVAR( OC_UINT8, VehicleRoad, overtaking_ctr ), - OCL_SVAR( OC_UINT16, VehicleRoad, crashed_ctr ), - OCL_SVAR( OC_UINT8, VehicleRoad, reverse_ctr ), + OCL_SVAR( OC_UINT8, RoadVehicle, state ), + OCL_SVAR( OC_UINT8, RoadVehicle, frame ), + OCL_SVAR( OC_UINT16, RoadVehicle, blocked_ctr ), + OCL_SVAR( OC_UINT8, RoadVehicle, overtaking ), + OCL_SVAR( OC_UINT8, RoadVehicle, overtaking_ctr ), + OCL_SVAR( OC_UINT16, RoadVehicle, crashed_ctr ), + OCL_SVAR( OC_UINT8, RoadVehicle, reverse_ctr ), OCL_NULL( 1 ), ///< Junk @@ -1157,7 +1158,7 @@ static bool LoadOldVehicleUnion(LoadgameState *ls, int num) switch (v->type) { default: NOT_REACHED(); case VEH_TRAIN : res = LoadChunk(ls, &v->u.rail, vehicle_train_chunk); break; - case VEH_ROAD : res = LoadChunk(ls, &v->u.road, vehicle_road_chunk); break; + case VEH_ROAD : res = LoadChunk(ls, v, vehicle_road_chunk); break; case VEH_SHIP : res = LoadChunk(ls, v, vehicle_ship_chunk); break; case VEH_AIRCRAFT: res = LoadChunk(ls, v, vehicle_air_chunk); break; case VEH_EFFECT : res = LoadChunk(ls, v, vehicle_effect_chunk); break; diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index fdfb94666..10b7f3614 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -253,7 +253,7 @@ 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) v->u.rail.first_engine = INVALID_ENGINE; - if (v->type == VEH_ROAD) v->u.road.first_engine = INVALID_ENGINE; + if (v->type == VEH_ROAD) ((RoadVehicle *)v)->first_engine = INVALID_ENGINE; v->cargo.InvalidateCache(); } @@ -344,9 +344,11 @@ void AfterLoadVehicles(bool part_of_load) FOR_ALL_VEHICLES(v) { switch (v->type) { - case VEH_ROAD: - v->u.road.roadtype = HasBit(EngInfo(v->First()->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD; - v->u.road.compatible_roadtypes = RoadTypeToRoadTypes(v->u.road.roadtype); + case VEH_ROAD: { + RoadVehicle *rv = (RoadVehicle *)v; + rv->roadtype = HasBit(EngInfo(v->First()->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD; + rv->compatible_roadtypes = RoadTypeToRoadTypes(rv->roadtype); + } /* FALL THROUGH */ case VEH_TRAIN: case VEH_SHIP: @@ -542,19 +544,19 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) static const SaveLoad _roadveh_desc[] = { SLE_WRITEBYTE(Vehicle, type, VEH_ROAD), SLE_VEH_INCLUDEX(), - SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, state), SLE_UINT8), - SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, frame), SLE_UINT8), - SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, blocked_ctr), SLE_UINT16), - SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, overtaking), SLE_UINT8), - SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, overtaking_ctr), SLE_UINT8), - SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, crashed_ctr), SLE_UINT16), - SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, reverse_ctr), SLE_UINT8), - - SLE_CONDREFX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, slot), REF_ROADSTOPS, 6, SL_MAX_VERSION), - SLE_CONDNULL(1, 6, SL_MAX_VERSION), - SLE_CONDVARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, slot_age), SLE_UINT8, 6, SL_MAX_VERSION), + SLE_VAR(RoadVehicle, state, SLE_UINT8), + SLE_VAR(RoadVehicle, frame, SLE_UINT8), + SLE_VAR(RoadVehicle, blocked_ctr, SLE_UINT16), + SLE_VAR(RoadVehicle, overtaking, SLE_UINT8), + SLE_VAR(RoadVehicle, overtaking_ctr, SLE_UINT8), + SLE_VAR(RoadVehicle, crashed_ctr, SLE_UINT16), + SLE_VAR(RoadVehicle, reverse_ctr, SLE_UINT8), + + SLE_CONDREF(RoadVehicle, slot, REF_ROADSTOPS, 6, SL_MAX_VERSION), + SLE_CONDNULL(1, 6, SL_MAX_VERSION), + SLE_CONDVAR(RoadVehicle, slot_age, SLE_UINT8, 6, SL_MAX_VERSION), /* reserve extra space in savegame here. (currently 16 bytes) */ - SLE_CONDNULL(16, 2, SL_MAX_VERSION), + SLE_CONDNULL(16, 2, SL_MAX_VERSION), SLE_END() }; -- cgit v1.2.3-54-g00ecf