equal
deleted
inserted
replaced
6 #include "player.h" |
6 #include "player.h" |
7 #include "saveload.h" |
7 #include "saveload.h" |
8 |
8 |
9 enum { |
9 enum { |
10 SAVEGAME_MAJOR_VERSION = 5, |
10 SAVEGAME_MAJOR_VERSION = 5, |
11 SAVEGAME_MINOR_VERSION = 1, |
11 SAVEGAME_MINOR_VERSION = 2, |
12 |
12 |
13 SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION |
13 SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION |
14 }; |
14 }; |
15 |
15 |
16 /******************************************************/ |
16 /******************************************************/ |
867 |
867 |
868 // these define the chunks |
868 // these define the chunks |
869 extern const ChunkHandler _misc_chunk_handlers[]; |
869 extern const ChunkHandler _misc_chunk_handlers[]; |
870 extern const ChunkHandler _player_chunk_handlers[]; |
870 extern const ChunkHandler _player_chunk_handlers[]; |
871 extern const ChunkHandler _veh_chunk_handlers[]; |
871 extern const ChunkHandler _veh_chunk_handlers[]; |
|
872 extern const ChunkHandler _order_chunk_handlers[]; |
872 extern const ChunkHandler _town_chunk_handlers[]; |
873 extern const ChunkHandler _town_chunk_handlers[]; |
873 extern const ChunkHandler _sign_chunk_handlers[]; |
874 extern const ChunkHandler _sign_chunk_handlers[]; |
874 extern const ChunkHandler _station_chunk_handlers[]; |
875 extern const ChunkHandler _station_chunk_handlers[]; |
875 extern const ChunkHandler _industry_chunk_handlers[]; |
876 extern const ChunkHandler _industry_chunk_handlers[]; |
876 extern const ChunkHandler _engine_chunk_handlers[]; |
877 extern const ChunkHandler _engine_chunk_handlers[]; |
878 extern const ChunkHandler _animated_tile_chunk_handlers[]; |
879 extern const ChunkHandler _animated_tile_chunk_handlers[]; |
879 |
880 |
880 static const ChunkHandler * const _chunk_handlers[] = { |
881 static const ChunkHandler * const _chunk_handlers[] = { |
881 _misc_chunk_handlers, |
882 _misc_chunk_handlers, |
882 _veh_chunk_handlers, |
883 _veh_chunk_handlers, |
|
884 _order_chunk_handlers, |
883 _industry_chunk_handlers, |
885 _industry_chunk_handlers, |
884 _economy_chunk_handlers, |
886 _economy_chunk_handlers, |
885 _engine_chunk_handlers, |
887 _engine_chunk_handlers, |
886 _town_chunk_handlers, |
888 _town_chunk_handlers, |
887 _sign_chunk_handlers, |
889 _sign_chunk_handlers, |
910 switch (t) { |
912 switch (t) { |
911 case REF_VEHICLE_OLD: // Old vehicles we save as new onces |
913 case REF_VEHICLE_OLD: // Old vehicles we save as new onces |
912 case REF_VEHICLE: return ((Vehicle *)v)->index + 1; |
914 case REF_VEHICLE: return ((Vehicle *)v)->index + 1; |
913 case REF_STATION: return ((Station *)v)->index + 1; |
915 case REF_STATION: return ((Station *)v)->index + 1; |
914 case REF_TOWN: return ((Town *)v)->index + 1; |
916 case REF_TOWN: return ((Town *)v)->index + 1; |
915 |
917 case REF_ORDER: return ((Order *)v)->index + 1; |
916 case REF_SCHEDULE: |
|
917 return ((byte*)v - (byte*)_order_array) / sizeof(_order_array[0]) + 1; |
|
918 |
918 |
919 default: |
919 default: |
920 NOT_REACHED(); |
920 NOT_REACHED(); |
921 } |
921 } |
922 |
922 |
933 |
933 |
934 if (t != REF_VEHICLE_OLD && r == 0) |
934 if (t != REF_VEHICLE_OLD && r == 0) |
935 return NULL; |
935 return NULL; |
936 |
936 |
937 switch (t) { |
937 switch (t) { |
|
938 case REF_ORDER: return GetOrder(r - 1); |
938 case REF_VEHICLE: return GetVehicle(r - 1); |
939 case REF_VEHICLE: return GetVehicle(r - 1); |
939 case REF_STATION: return GetStation(r - 1); |
940 case REF_STATION: return GetStation(r - 1); |
940 case REF_TOWN: return GetTown(r - 1); |
941 case REF_TOWN: return GetTown(r - 1); |
941 |
|
942 case REF_SCHEDULE: |
|
943 return (byte*)_order_array + (r - 1) * sizeof(_order_array[0]); |
|
944 |
942 |
945 case REF_VEHICLE_OLD: { |
943 case REF_VEHICLE_OLD: { |
946 /* Old vehicles were saved differently: invalid vehicle was 0xFFFF, |
944 /* Old vehicles were saved differently: invalid vehicle was 0xFFFF, |
947 and the index was not - 1.. correct for this */ |
945 and the index was not - 1.. correct for this */ |
948 if (r == INVALID_VEHICLE) |
946 if (r == INVALID_VEHICLE) |