summaryrefslogtreecommitdiff
path: root/src/saveload
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-05-22 20:22:20 +0000
committerrubidium <rubidium@openttd.org>2009-05-22 20:22:20 +0000
commit7a37220881c995f317bf5bd0f3077fa6c9e9d098 (patch)
tree347d24d175af30acacfedfb4ddf5c9e98d876036 /src/saveload
parentd37b840cf30ea987ab676f1a3631e112cac06244 (diff)
downloadopenttd-7a37220881c995f317bf5bd0f3077fa6c9e9d098.tar.xz
(svn r16390) -Codechange: move u.road to RoadVehicle.
Diffstat (limited to 'src/saveload')
-rw-r--r--src/saveload/afterload.cpp19
-rw-r--r--src/saveload/oldloader_sl.cpp25
-rw-r--r--src/saveload/vehicle_sl.cpp34
3 files changed, 43 insertions, 35 deletions
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()
};