27 #include "saveload.h" |
27 #include "saveload.h" |
28 #include "variables.h" |
28 #include "variables.h" |
29 #include <setjmp.h> |
29 #include <setjmp.h> |
30 |
30 |
31 enum { |
31 enum { |
32 SAVEGAME_VERSION = 18, |
32 SAVEGAME_VERSION = 19, |
33 |
33 |
34 }; |
34 }; |
35 |
35 |
36 uint16 _sl_version; /// the major savegame version identifier |
36 uint16 _sl_version; /// the major savegame version identifier |
37 byte _sl_minor_version; /// the minor savegame version, DO NOT USE! |
37 byte _sl_minor_version; /// the minor savegame version, DO NOT USE! |
1049 //******************************************* |
1049 //******************************************* |
1050 |
1050 |
1051 // these define the chunks |
1051 // these define the chunks |
1052 extern const ChunkHandler _misc_chunk_handlers[]; |
1052 extern const ChunkHandler _misc_chunk_handlers[]; |
1053 extern const ChunkHandler _player_chunk_handlers[]; |
1053 extern const ChunkHandler _player_chunk_handlers[]; |
|
1054 extern const ChunkHandler _engine_chunk_handlers[]; |
1054 extern const ChunkHandler _veh_chunk_handlers[]; |
1055 extern const ChunkHandler _veh_chunk_handlers[]; |
1055 extern const ChunkHandler _waypoint_chunk_handlers[]; |
1056 extern const ChunkHandler _waypoint_chunk_handlers[]; |
1056 extern const ChunkHandler _depot_chunk_handlers[]; |
1057 extern const ChunkHandler _depot_chunk_handlers[]; |
1057 extern const ChunkHandler _order_chunk_handlers[]; |
1058 extern const ChunkHandler _order_chunk_handlers[]; |
1058 extern const ChunkHandler _town_chunk_handlers[]; |
1059 extern const ChunkHandler _town_chunk_handlers[]; |
1059 extern const ChunkHandler _sign_chunk_handlers[]; |
1060 extern const ChunkHandler _sign_chunk_handlers[]; |
1060 extern const ChunkHandler _station_chunk_handlers[]; |
1061 extern const ChunkHandler _station_chunk_handlers[]; |
1061 extern const ChunkHandler _industry_chunk_handlers[]; |
1062 extern const ChunkHandler _industry_chunk_handlers[]; |
1062 extern const ChunkHandler _engine_chunk_handlers[]; |
|
1063 extern const ChunkHandler _economy_chunk_handlers[]; |
1063 extern const ChunkHandler _economy_chunk_handlers[]; |
1064 extern const ChunkHandler _animated_tile_chunk_handlers[]; |
1064 extern const ChunkHandler _animated_tile_chunk_handlers[]; |
1065 |
1065 |
1066 static const ChunkHandler * const _chunk_handlers[] = { |
1066 static const ChunkHandler * const _chunk_handlers[] = { |
1067 _misc_chunk_handlers, |
1067 _misc_chunk_handlers, |
1105 case REF_VEHICLE: return ((const Vehicle*)obj)->index + 1; |
1105 case REF_VEHICLE: return ((const Vehicle*)obj)->index + 1; |
1106 case REF_STATION: return ((const Station*)obj)->index + 1; |
1106 case REF_STATION: return ((const Station*)obj)->index + 1; |
1107 case REF_TOWN: return ((const Town*)obj)->index + 1; |
1107 case REF_TOWN: return ((const Town*)obj)->index + 1; |
1108 case REF_ORDER: return ((const Order*)obj)->index + 1; |
1108 case REF_ORDER: return ((const Order*)obj)->index + 1; |
1109 case REF_ROADSTOPS: return ((const RoadStop*)obj)->index + 1; |
1109 case REF_ROADSTOPS: return ((const RoadStop*)obj)->index + 1; |
|
1110 case REF_ENGINE_RENEWS: return ((const EngineRenew*)obj)->index + 1; |
1110 default: NOT_REACHED(); |
1111 default: NOT_REACHED(); |
1111 } |
1112 } |
1112 |
1113 |
1113 return 0; // avoid compiler warning |
1114 return 0; // avoid compiler warning |
1114 } |
1115 } |
1159 } |
1160 } |
1160 case REF_ROADSTOPS: { |
1161 case REF_ROADSTOPS: { |
1161 if (!AddBlockIfNeeded(&_roadstop_pool, index)) |
1162 if (!AddBlockIfNeeded(&_roadstop_pool, index)) |
1162 error("RoadStops: failed loading savegame: too many RoadStops"); |
1163 error("RoadStops: failed loading savegame: too many RoadStops"); |
1163 return GetRoadStop(index); |
1164 return GetRoadStop(index); |
|
1165 } |
|
1166 case REF_ENGINE_RENEWS: { |
|
1167 if (!AddBlockIfNeeded(&_engine_renew_pool, index)) |
|
1168 error("EngineRenews: failed loading savegame: too many EngineRenews"); |
|
1169 return GetEngineRenew(index); |
1164 } |
1170 } |
1165 |
1171 |
1166 case REF_VEHICLE_OLD: { |
1172 case REF_VEHICLE_OLD: { |
1167 /* Old vehicles were saved differently: |
1173 /* Old vehicles were saved differently: |
1168 * invalid vehicle was 0xFFFF, |
1174 * invalid vehicle was 0xFFFF, |