Mercurial > hg > openttd
diff src/economy.cpp @ 9413:512ea64da840 draft
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Thu, 29 May 2008 15:13:28 +0000 |
parents | c3a0ec3104c9 |
children | ba7cdcf21f4c |
line wrap: on
line diff
--- a/src/economy.cpp +++ b/src/economy.cpp @@ -654,7 +654,7 @@ * inflation doesn't add anything after that either; it even makes playing * it impossible due to the diverging cost and income rates. */ - if ((_cur_year - _settings.game_creation.starting_year) >= (ORIGINAL_MAX_YEAR - ORIGINAL_BASE_YEAR)) return; + if ((_cur_year - _settings_game.game_creation.starting_year) >= (ORIGINAL_MAX_YEAR - ORIGINAL_BASE_YEAR)) return; /* Approximation for (100 + infl_amount)% ** (1 / 12) - 100% * scaled by 65536 @@ -704,7 +704,7 @@ static void HandleEconomyFluctuations() { - if (_settings.difficulty.economy == 0) return; + if (_settings_game.difficulty.economy == 0) return; if (--_economy.fluct == 0) { _economy.fluct = -(int)GB(Random(), 0, 2); @@ -813,7 +813,7 @@ for (i = 0; i != NUM_PRICES; i++) { Money price = _price_base[i]; if (_price_category[i] != 0) { - uint mod = _price_category[i] == 1 ? _settings.difficulty.vehicle_costs : _settings.difficulty.construction_cost; + uint mod = _price_category[i] == 1 ? _settings_game.difficulty.vehicle_costs : _settings_game.difficulty.construction_cost; if (mod < 1) { price = price * 3 >> 2; } else if (mod > 1) { @@ -829,10 +829,10 @@ _price_frac[i] = 0; } - _economy.interest_rate = _settings.difficulty.initial_interest; - _economy.infl_amount = _settings.difficulty.initial_interest; - _economy.infl_amount_pr = max(0, _settings.difficulty.initial_interest - 1); - _economy.max_loan_unround = _economy.max_loan = _settings.difficulty.max_loan; + _economy.interest_rate = _settings_game.difficulty.initial_interest; + _economy.infl_amount = _settings_game.difficulty.initial_interest; + _economy.infl_amount_pr = max(0, _settings_game.difficulty.initial_interest - 1); + _economy.max_loan_unround = _economy.max_loan = _settings_game.difficulty.max_loan; _economy.fluct = GB(Random(), 0, 8) + 168; } @@ -1162,7 +1162,7 @@ } /* zero the distance (thus income) if it's the bank and very short transport. */ - if (_settings.game_creation.landscape == LT_TEMPERATE && cs->label == 'VALU' && dist < 10) return 0; + if (_settings_game.game_creation.landscape == LT_TEMPERATE && cs->label == 'VALU' && dist < 10) return 0; static const int MIN_TIME_FACTOR = 31; @@ -1208,7 +1208,7 @@ * XXX - Think of something better to * 1) Only deliver to industries which are withing the catchment radius * 2) Distribute between industries if more then one is present */ - best_dist = (_settings.station.station_spread + 8) * 2; + best_dist = (_settings_game.station.station_spread + 8) * 2; FOR_ALL_INDUSTRIES(ind) { indspec = GetIndustrySpec(ind->type); uint i; @@ -1313,7 +1313,7 @@ SetDParam(0, _current_player); AddNewsItem( - STR_2031_SERVICE_SUBSIDY_AWARDED + _settings.difficulty.subsidy_multiplier, + STR_2031_SERVICE_SUBSIDY_AWARDED + _settings_game.difficulty.subsidy_multiplier, NS_SUBSIDIES, pair.a, pair.b ); @@ -1360,7 +1360,7 @@ /* Modify profit if a subsidy is in effect */ if (subsidised) { - switch (_settings.difficulty.subsidy_multiplier) { + switch (_settings_game.difficulty.subsidy_multiplier) { case 0: profit += profit >> 1; break; case 1: profit *= 2; break; case 2: profit *= 3; break; @@ -1481,7 +1481,7 @@ /* We have not waited enough time till the next round of loading/unloading */ if (--v->load_unload_time_rem != 0) { - if (_settings.order.improved_load && (v->current_order.GetLoadType() & OLFB_FULL_LOAD)) { + if (_settings_game.order.improved_load && (v->current_order.GetLoadType() & OLFB_FULL_LOAD)) { /* 'Reserve' this cargo for this vehicle, because we were first. */ for (; v != NULL; v = v->Next()) { if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count(); @@ -1517,7 +1517,7 @@ if (v->cargo_cap == 0) continue; byte load_amount = EngInfo(v->engine_type)->load_amount; - if (_settings.order.gradual_loading && HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_LOAD_AMOUNT)) { + if (_settings_game.order.gradual_loading && HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_LOAD_AMOUNT)) { uint16 cb_load_amount = GetVehicleCallback(CBID_VEHICLE_LOAD_AMOUNT, 0, 0, v->engine_type, v); if (cb_load_amount != CALLBACK_FAILED && GB(cb_load_amount, 0, 8) != 0) load_amount = GB(cb_load_amount, 0, 8); } @@ -1526,7 +1526,7 @@ if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (u->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { uint cargo_count = v->cargo.Count(); - uint amount_unloaded = _settings.order.gradual_loading ? min(cargo_count, load_amount) : cargo_count; + uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, load_amount) : cargo_count; bool remaining; // Are there cargo entities in this vehicle that can still be unloaded here? if (HasBit(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE) && !(u->current_order.GetUnloadType() & OUFB_TRANSFER)) { @@ -1552,7 +1552,7 @@ unloading_time += amount_unloaded; anything_unloaded = true; - if (_settings.order.gradual_loading && remaining) { + if (_settings_game.order.gradual_loading && remaining) { completely_emptied = false; } else { /* We have finished unloading (cargo count == 0) */ @@ -1586,14 +1586,14 @@ /* Skip loading this vehicle if another train/vehicle is already handling * the same cargo type at this station */ - if (_settings.order.improved_load && cargo_left[v->cargo_type] <= 0) { + if (_settings_game.order.improved_load && cargo_left[v->cargo_type] <= 0) { SetBit(cargo_not_full, v->cargo_type); continue; } if (cap > count) cap = count; - if (_settings.order.gradual_loading) cap = min(cap, load_amount); - if (_settings.order.improved_load) { + if (_settings_game.order.gradual_loading) cap = min(cap, load_amount); + if (_settings_game.order.improved_load) { /* Don't load stuff that is already 'reserved' for other vehicles */ cap = min((uint)cargo_left[v->cargo_type], cap); cargo_left[v->cargo_type] -= cap; @@ -1637,7 +1637,7 @@ * all wagons at the same time instead of using the same 'improved' * loading algorithm for the wagons (only fill wagon when there is * enough to fill the previous wagons) */ - if (_settings.order.improved_load && (u->current_order.GetLoadType() & OLFB_FULL_LOAD)) { + if (_settings_game.order.improved_load && (u->current_order.GetLoadType() & OLFB_FULL_LOAD)) { /* Update left cargo */ for (v = u; v != NULL; v = v->Next()) { if (v->cargo_cap != 0) cargo_left[v->cargo_type] -= v->cargo_cap - v->cargo.Count(); @@ -1647,7 +1647,7 @@ v = u; if (anything_loaded || anything_unloaded) { - if (_settings.order.gradual_loading) { + if (_settings_game.order.gradual_loading) { /* The time it takes to load one 'slice' of cargo or passengers depends * on the vehicle type - the values here are those found in TTDPatch */ const uint gradual_loading_wait_time[] = { 40, 20, 10, 20 }; @@ -1684,11 +1684,11 @@ /* Calculate the loading indicator fill percent and display * In the Game Menu do not display indicators - * If _settings.gui.loading_indicators == 2, show indicators (bool can be promoted to int as 0 or 1 - results in 2 > 0,1 ) - * if _settings.gui.loading_indicators == 1, _local_player must be the owner or must be a spectator to show ind., so 1 > 0 - * if _settings.gui.loading_indicators == 0, do not display indicators ... 0 is never greater than anything + * If _settings_client.gui.loading_indicators == 2, show indicators (bool can be promoted to int as 0 or 1 - results in 2 > 0,1 ) + * if _settings_client.gui.loading_indicators == 1, _local_player must be the owner or must be a spectator to show ind., so 1 > 0 + * if _settings_client.gui.loading_indicators == 0, do not display indicators ... 0 is never greater than anything */ - if (_game_mode != GM_MENU && (_settings.gui.loading_indicators > (uint)(v->owner != _local_player && _local_player != PLAYER_SPECTATOR))) { + if (_game_mode != GM_MENU && (_settings_client.gui.loading_indicators > (uint)(v->owner != _local_player && _local_player != PLAYER_SPECTATOR))) { StringID percent_up_down = STR_NULL; int percent = CalcPercentVehicleFilled(v, &percent_up_down); if (v->fill_percent_te_id == INVALID_TE_ID) { @@ -1736,7 +1736,7 @@ void PlayersMonthlyLoop() { PlayersGenStatistics(); - if (_settings.economy.inflation && _cur_year < MAX_YEAR) + if (_settings_game.economy.inflation && _cur_year < MAX_YEAR) AddInflation(); PlayersPayInterest(); /* Reset the _current_player flag */ @@ -1802,7 +1802,7 @@ /* Check if buying shares is allowed (protection against modified clients) */ /* Cannot buy own shares */ - if (!IsValidPlayer((PlayerID)p1) || !_settings.economy.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR; + if (!IsValidPlayer((PlayerID)p1) || !_settings_game.economy.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR; p = GetPlayer((PlayerID)p1); @@ -1851,7 +1851,7 @@ /* Check if selling shares is allowed (protection against modified clients) */ /* Cannot sell own shares */ - if (!IsValidPlayer((PlayerID)p1) || !_settings.economy.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR; + if (!IsValidPlayer((PlayerID)p1) || !_settings_game.economy.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR; p = GetPlayer((PlayerID)p1);