summaryrefslogtreecommitdiff
path: root/vehicle.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2004-12-28 11:51:31 +0000
committertruelight <truelight@openttd.org>2004-12-28 11:51:31 +0000
commit2f9e0b8e0ca58ed9cbb907170631294baa706156 (patch)
tree31c4abf8c556a50cc2cb6846bddb8f40f21986c9 /vehicle.c
parent16cd779efe9afff09afe7ec5a930b50fa8365d3b (diff)
downloadopenttd-2f9e0b8e0ca58ed9cbb907170631294baa706156.tar.xz
(svn r1288) -Codechange: changed _map2 to an uint16. It is still saved and loaded as
an uint8 till the savegame version is bumped to version 5. Then it works automaticly as a fully uint16. So _stations[] can not be increased till after the bump!!
Diffstat (limited to 'vehicle.c')
-rw-r--r--vehicle.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/vehicle.c b/vehicle.c
index 79a3c3d8d..a8ad3160a 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -490,7 +490,7 @@ void DeleteCommandFromVehicleSchedule(Order cmd)
// clear last station visited
if (v->last_station_visited == cmd.station && cmd.type == OT_GOTO_STATION)
- v->last_station_visited = 0xFF;
+ v->last_station_visited = 0xFFFF;
// check the next order
if (v->current_order.type == cmd.type &&
@@ -1655,7 +1655,8 @@ const byte _common_veh_desc[] = {
SLE_VAR(Vehicle,progress, SLE_UINT8),
SLE_VAR(Vehicle,vehstatus, SLE_UINT8),
- SLE_VAR(Vehicle,last_station_visited,SLE_UINT8),
+ SLE_CONDVAR(Vehicle,last_station_visited, SLE_FILE_U8 | SLE_VAR_U16, 0, 4),
+ SLE_CONDVAR(Vehicle,last_station_visited, SLE_UINT16, 5, 255),
SLE_VAR(Vehicle,cargo_type, SLE_UINT8),
SLE_VAR(Vehicle,cargo_days, SLE_UINT8),
@@ -1756,7 +1757,10 @@ static const byte _aircraft_desc[] = {
SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
SLE_VARX(offsetof(Vehicle,u)+offsetof(VehicleAir,crashed_counter), SLE_UINT16),
SLE_VARX(offsetof(Vehicle,u)+offsetof(VehicleAir,pos), SLE_UINT8),
- SLE_VARX(offsetof(Vehicle,u)+offsetof(VehicleAir,targetairport), SLE_UINT8),
+
+ SLE_CONDVARX(offsetof(Vehicle,u)+offsetof(VehicleAir,targetairport), SLE_FILE_U8 | SLE_VAR_U16, 0, 4),
+ SLE_CONDVARX(offsetof(Vehicle,u)+offsetof(VehicleAir,targetairport), SLE_UINT16, 5, 255),
+
SLE_VARX(offsetof(Vehicle,u)+offsetof(VehicleAir,state), SLE_UINT8),
SLE_CONDVARX(offsetof(Vehicle,u)+offsetof(VehicleAir,previous_pos), SLE_UINT8, 2, 255),
@@ -1854,6 +1858,10 @@ static void Save_VEHS()
// Write the vehicles
FOR_ALL_VEHICLES(v) {
if (v->type != 0) {
+ /* XXX - Here for now, because we did not bump the savegame to version 5 yet */
+ if (_sl.version < 5 && v->last_station_visited == 0xFFFF)
+ v->last_station_visited = 0xFF;
+
SlSetArrayIndex(v->index);
v->next_in_chain_old = v->next ? v->next->index : INVALID_VEHICLE;
SlObject(v, _veh_descs[v->type - 0x10]);
@@ -1874,6 +1882,10 @@ static void Load_VEHS()
v->next = v->next_in_chain_old == INVALID_VEHICLE ? NULL : &_vehicles[v->next_in_chain_old];
if (v->type == VEH_Train)
v->u.rail.first_engine = 0xffff;
+
+ /* Old savegames used 'last_station_visited = 0xFF', should be 0xFFFF */
+ if (_sl.version < 5 && v->last_station_visited == 0xFF)
+ v->last_station_visited = 0xFFFF;
}
// Iterate through trains and set first_engine appropriately.