00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #include "../stdafx.h"
00013 #include "../economy_func.h"
00014 #include "../economy_base.h"
00015
00016 #include "saveload.h"
00017
00019 static void Load_PRIC()
00020 {
00021
00022 int vt = IsSavegameVersionBefore(65) ? SLE_FILE_I32 : SLE_FILE_I64;
00023 SlArray(NULL, 49, vt | SLE_VAR_NULL);
00024 SlArray(NULL, 49, SLE_FILE_U16 | SLE_VAR_NULL);
00025 }
00026
00028 static void Load_CAPR()
00029 {
00030 uint num_cargo = IsSavegameVersionBefore(55) ? 12 : NUM_CARGO;
00031 int vt = IsSavegameVersionBefore(65) ? SLE_FILE_I32 : SLE_FILE_I64;
00032 SlArray(NULL, num_cargo, vt | SLE_VAR_NULL);
00033 SlArray(NULL, num_cargo, SLE_FILE_U16 | SLE_VAR_NULL);
00034 }
00035
00036 static const SaveLoad _economy_desc[] = {
00037 SLE_CONDNULL(4, 0, 64),
00038 SLE_CONDNULL(8, 65, 143),
00039 SLE_CONDVAR(Economy, old_max_loan_unround, SLE_FILE_I32 | SLE_VAR_I64, 0, 64),
00040 SLE_CONDVAR(Economy, old_max_loan_unround, SLE_INT64, 65, 125),
00041 SLE_CONDVAR(Economy, old_max_loan_unround_fract, SLE_UINT16, 70, 125),
00042 SLE_CONDVAR(Economy, inflation_prices, SLE_UINT64, 126, SL_MAX_VERSION),
00043 SLE_CONDVAR(Economy, inflation_payment, SLE_UINT64, 126, SL_MAX_VERSION),
00044 SLE_VAR(Economy, fluct, SLE_INT16),
00045 SLE_VAR(Economy, interest_rate, SLE_UINT8),
00046 SLE_VAR(Economy, infl_amount, SLE_UINT8),
00047 SLE_VAR(Economy, infl_amount_pr, SLE_UINT8),
00048 SLE_CONDVAR(Economy, industry_daily_change_counter, SLE_UINT32, 102, SL_MAX_VERSION),
00049 SLE_END()
00050 };
00051
00053 static void Save_ECMY()
00054 {
00055 SlObject(&_economy, _economy_desc);
00056 }
00057
00059 static void Load_ECMY()
00060 {
00061 SlObject(&_economy, _economy_desc);
00062 StartupIndustryDailyChanges(IsSavegameVersionBefore(102));
00063 }
00064
00065 static const SaveLoad _cargopayment_desc[] = {
00066 SLE_REF(CargoPayment, front, REF_VEHICLE),
00067 SLE_VAR(CargoPayment, route_profit, SLE_INT64),
00068 SLE_VAR(CargoPayment, visual_profit, SLE_INT64),
00069 SLE_CONDVAR(CargoPayment, visual_transfer, SLE_INT64, 181, SL_MAX_VERSION),
00070 SLE_END()
00071 };
00072
00073 static void Save_CAPY()
00074 {
00075 CargoPayment *cp;
00076 FOR_ALL_CARGO_PAYMENTS(cp) {
00077 SlSetArrayIndex(cp->index);
00078 SlObject(cp, _cargopayment_desc);
00079 }
00080 }
00081
00082 static void Load_CAPY()
00083 {
00084 int index;
00085
00086 while ((index = SlIterateArray()) != -1) {
00087 CargoPayment *cp = new (index) CargoPayment();
00088 SlObject(cp, _cargopayment_desc);
00089 }
00090 }
00091
00092 static void Ptrs_CAPY()
00093 {
00094 CargoPayment *cp;
00095 FOR_ALL_CARGO_PAYMENTS(cp) {
00096 SlObject(cp, _cargopayment_desc);
00097 }
00098 }
00099
00100
00101 extern const ChunkHandler _economy_chunk_handlers[] = {
00102 { 'CAPY', Save_CAPY, Load_CAPY, Ptrs_CAPY, NULL, CH_ARRAY},
00103 { 'PRIC', NULL, Load_PRIC, NULL, NULL, CH_RIFF | CH_AUTO_LENGTH},
00104 { 'CAPR', NULL, Load_CAPR, NULL, NULL, CH_RIFF | CH_AUTO_LENGTH},
00105 { 'ECMY', Save_ECMY, Load_ECMY, NULL, NULL, CH_RIFF | CH_LAST},
00106 };