diff --git a/src/economy/economy_government.cpp b/src/economy/economy_government.cpp index 84fc48b20..5f88860e4 100644 --- a/src/economy/economy_government.cpp +++ b/src/economy/economy_government.cpp @@ -39,7 +39,7 @@ inline constexpr float base_population_per_admin = 8000.f; inline constexpr float admin_reform_mult = 100.0f; // Social issues increase the number of bureaucrats the nation needs per population -float get_nation_administrative_multiplier(sys::state& state, dcon::nation_id nation) { +float get_nation_administrative_multiplier(sys::state const& state, dcon::nation_id nation) { float admin_mult_sum = 0.0f; for(auto issue : state.culture_definitions.social_issues) { admin_mult_sum = admin_mult_sum + state.world.issue_option_get_administrative_multiplier(state.world.nation_get_issues(nation, issue)); @@ -48,7 +48,7 @@ float get_nation_administrative_multiplier(sys::state& state, dcon::nation_id na } // How many bureaucrats do we need to get 1 control scale -float population_per_admin(sys::state& state, dcon::nation_id n) { +float population_per_admin(sys::state const& state, dcon::nation_id n) { float admin_mult = get_nation_administrative_multiplier(state, n); float normalized_admin_divisor = admin_mult * admin_reform_mult + 1.0f; return base_population_per_admin * (1.f + state.world.nation_get_administrative_efficiency(n)) / normalized_admin_divisor; @@ -59,7 +59,7 @@ float population_per_admin(sys::state& state, dcon::nation_id n) { // with the central administration inline constexpr float base_admin_employment = 250.f; -float count_active_administrations(sys::state& state, dcon::nation_id n) { +float count_active_administrations(sys::state const& state, dcon::nation_id n) { auto num_of_administrations = 0.f; { auto capital = state.world.nation_get_capital(n); @@ -76,7 +76,7 @@ float count_active_administrations(sys::state& state, dcon::nation_id n) { return num_of_administrations; } -float tax_collection_rate(sys::state& state, dcon::nation_id n, dcon::province_id pid) { +float tax_collection_rate(sys::state const& state, dcon::nation_id n, dcon::province_id pid) { auto from_control = state.world.province_get_control_ratio(pid); auto efficiency = nations::tax_efficiency(state, n); // we can always collect at least some taxes in the capital: @@ -88,7 +88,7 @@ float tax_collection_rate(sys::state& state, dcon::nation_id n, dcon::province_i return std::min(0.5f * from_control * (1.f + efficiency), 1.f); } -float estimate_spendings_administration_capital(sys::state& state, dcon::nation_id n, float budget) { +float estimate_spendings_administration_capital(sys::state const& state, dcon::nation_id n, float budget) { auto capital = state.world.nation_get_capital(n); if(state.world.province_get_nation_from_province_control(capital) != n) { return 0.f; @@ -100,7 +100,7 @@ float estimate_spendings_administration_capital(sys::state& state, dcon::nation_ return demand * wage * state.world.province_get_labor_demand_satisfaction(capital_of_capital_state, economy::labor::high_education_and_accepted); } -float estimate_spendings_administration_local(sys::state& state, dcon::nation_id n, dcon::administration_id admin, float budget) { +float estimate_spendings_administration_local(sys::state const& state, dcon::nation_id n, dcon::administration_id admin, float budget) { auto capital = state.world.administration_get_capital(admin); if(state.world.province_get_nation_from_province_control(capital) != n) { return 0.f; @@ -112,7 +112,7 @@ float estimate_spendings_administration_local(sys::state& state, dcon::nation_id return demand * wage * state.world.province_get_labor_demand_satisfaction(capital_of_capital_state, economy::labor::high_education_and_accepted); } -float estimate_spendings_administration(sys::state& state, dcon::nation_id n, float budget) { +float estimate_spendings_administration(sys::state const& state, dcon::nation_id n, float budget) { float total = 0.f; auto admin_count = count_active_administrations(state, n); if(admin_count == 0.f) { @@ -127,7 +127,7 @@ float estimate_spendings_administration(sys::state& state, dcon::nation_id n, fl return total; } -float full_spendings_administration(sys::state& state, dcon::nation_id n, float budget) { +float full_spendings_administration(sys::state const& state, dcon::nation_id n, float budget) { auto admin_count = count_active_administrations(state, n); if(admin_count == 0.f) { return 0.f; @@ -215,7 +215,7 @@ void refund_demand_administration(sys::state& state, dcon::nation_id n) { }); } -float capital_administration_control_production(sys::state& state, dcon::nation_id n, dcon::province_id capital) { +float capital_administration_control_production(sys::state const& state, dcon::nation_id n, dcon::province_id capital) { if(state.world.province_get_nation_from_province_control(capital) == n) { auto capital_state = state.world.province_get_state_membership(capital); auto capital_of_capital_state = state.world.state_instance_get_capital(capital_state); @@ -227,7 +227,7 @@ float capital_administration_control_production(sys::state& state, dcon::nation_ } return 0.f; } -float local_administration_control_production(sys::state& state, dcon::nation_id n, dcon::province_id p) { +float local_administration_control_production(sys::state const& state, dcon::nation_id n, dcon::province_id p) { if(state.world.province_get_nation_from_province_control(p) != n) { return 0.f; } @@ -359,7 +359,7 @@ void collect_taxes(sys::state& state, ve::vectorizable_buffer explain_local_administration_employment(sys::state& state, dcon::province_id p) { +std::vector explain_local_administration_employment(sys::state const& state, dcon::province_id p) { auto n = state.world.province_get_nation_from_province_ownership(p); auto record = employment_record{ economy::labor::high_education_and_accepted, 0.f, 0.f, 0.f }; @@ -452,7 +452,7 @@ std::vector explain_local_administration_employment(sys::stat } // Calculate employment of the capital administration for the UI -std::vector explain_capital_administration_employment(sys::state& state, dcon::nation_id n) { +std::vector explain_capital_administration_employment(sys::state const& state, dcon::nation_id n) { auto capital = state.world.nation_get_capital(n); auto capital_state = state.world.province_get_state_membership(capital); auto capital_of_capital_state = state.world.state_instance_get_capital(capital_state); diff --git a/src/economy/economy_government.hpp b/src/economy/economy_government.hpp index 95aba94b7..8e944ae1a 100644 --- a/src/economy/economy_government.hpp +++ b/src/economy/economy_government.hpp @@ -12,21 +12,21 @@ inline constexpr float local_administration_efficiency = 0.5f; // see details about internal workings of the system in cpp file // ratio of taxes you can collect in a given province -float tax_collection_rate(sys::state& state, dcon::nation_id n, dcon::province_id); -float count_active_administrations(sys::state& state, dcon::nation_id n); +float tax_collection_rate(sys::state const& state, dcon::nation_id n, dcon::province_id); +float count_active_administrations(sys::state const& state, dcon::nation_id n); // these functions estimate spendings for given budget priority // estimate "imperial administration" spendings which are based on total population of the realm -float estimate_spendings_administration_capital(sys::state& state, dcon::nation_id n, float budget); +float estimate_spendings_administration_capital(sys::state const& state, dcon::nation_id n, float budget); // estimate total spendings for your administration -float estimate_spendings_administration(sys::state& state, dcon::nation_id n, float budget); +float estimate_spendings_administration(sys::state const& state, dcon::nation_id n, float budget); // total current spendings -float full_spendings_administration(sys::state& state, dcon::nation_id n, float budget); +float full_spendings_administration(sys::state const& state, dcon::nation_id n, float budget); // register demand on labor or produce control void update_consumption_administration(sys::state& state, dcon::nation_id n, float total_budget); -float capital_administration_control_production(sys::state& state, dcon::nation_id n, dcon::province_id capital); -float local_administration_control_production(sys::state& state, dcon::nation_id n, dcon::province_id p); +float capital_administration_control_production(sys::state const& state, dcon::nation_id n, dcon::province_id capital); +float local_administration_control_production(sys::state const& state, dcon::nation_id n, dcon::province_id p); void update_production_administration(sys::state& state, dcon::nation_id n); void refund_demand_administration(sys::state& state, dcon::nation_id n); @@ -46,13 +46,13 @@ struct tax_information { }; // sums up all tax income all over the nation -tax_information explain_tax_income(sys::state& state, dcon::nation_id n); -tax_information explain_tax_income_local(sys::state& state, dcon::nation_id n, dcon::province_id sid); +tax_information explain_tax_income(sys::state const& state, dcon::nation_id n); +tax_information explain_tax_income_local(sys::state const& state, dcon::nation_id n, dcon::province_id sid); -bool war_embargo_status(sys::state& state, dcon::nation_id n_a, dcon::nation_id n_b, dcon::nation_id market_leader_a, dcon::nation_id market_leader_b); -bool non_war_embargo_status(sys::state& state, dcon::nation_id n_a, dcon::nation_id n_b, dcon::nation_id market_leader_a, dcon::nation_id market_leader_b); -bool has_active_embargo(sys::state& state, dcon::nation_id from, dcon::nation_id to); +bool war_embargo_status(sys::state const& state, dcon::nation_id n_a, dcon::nation_id n_b, dcon::nation_id market_leader_a, dcon::nation_id market_leader_b); +bool non_war_embargo_status(sys::state const& state, dcon::nation_id n_a, dcon::nation_id n_b, dcon::nation_id market_leader_a, dcon::nation_id market_leader_b); +bool has_active_embargo(sys::state const& state, dcon::nation_id from, dcon::nation_id to); -std::vector explain_local_administration_employment(sys::state& state, dcon::province_id p); -std::vector explain_capital_administration_employment(sys::state& state, dcon::nation_id n); +std::vector explain_local_administration_employment(sys::state const& state, dcon::province_id p); +std::vector explain_capital_administration_employment(sys::state const& state, dcon::nation_id n); } diff --git a/src/economy/economy_pops.cpp b/src/economy/economy_pops.cpp index 1d541b198..7036a9387 100644 --- a/src/economy/economy_pops.cpp +++ b/src/economy/economy_pops.cpp @@ -1786,7 +1786,7 @@ float estimate_pop_demand_internal_luxury( * invention_factor; } -float estimate_pop_spending_life(sys::state& state, dcon::pop_id pop, dcon::commodity_id cid) { +float estimate_pop_spending_life(sys::state const& state, dcon::pop_id pop, dcon::commodity_id cid) { auto pid = state.world.pop_get_province_from_pop_location(pop); auto nation = state.world.province_get_nation_from_province_ownership(pid); auto zone = state.world.province_get_state_membership(pid); @@ -1814,7 +1814,7 @@ float estimate_pop_spending_life(sys::state& state, dcon::pop_id pop, dcon::comm return demand * actually_bought * cost; } -float estimate_pop_spending_everyday(sys::state& state, dcon::pop_id pop, dcon::commodity_id cid) { +float estimate_pop_spending_everyday(sys::state const& state, dcon::pop_id pop, dcon::commodity_id cid) { auto pid = state.world.pop_get_province_from_pop_location(pop); auto nation = state.world.province_get_nation_from_province_ownership(pid); auto zone = state.world.province_get_state_membership(pid); @@ -1842,7 +1842,7 @@ float estimate_pop_spending_everyday(sys::state& state, dcon::pop_id pop, dcon:: return demand * actually_bought * cost; } -float estimate_pop_spending_luxury(sys::state& state, dcon::pop_id pop, dcon::commodity_id cid) { +float estimate_pop_spending_luxury(sys::state const& state, dcon::pop_id pop, dcon::commodity_id cid) { auto pid = state.world.pop_get_province_from_pop_location(pop); auto nation = state.world.province_get_nation_from_province_ownership(pid); auto zone = state.world.province_get_state_membership(pid); @@ -1876,7 +1876,7 @@ vectorized_pops_budget prepare_pop_budget(const sys::state& state, dcon:: } -float estimate_pops_consumption(sys::state& state, dcon::commodity_id c, dcon::province_id p) { +float estimate_pops_consumption(sys::state const& state, dcon::commodity_id c, dcon::province_id p) { auto zone = state.world.province_get_state_membership(p); auto market = state.world.state_instance_get_market_from_local_market(zone); diff --git a/src/economy/economy_pops.hpp b/src/economy/economy_pops.hpp index 0a21c5342..28b4a40cc 100644 --- a/src/economy/economy_pops.hpp +++ b/src/economy/economy_pops.hpp @@ -56,11 +56,11 @@ float estimate_artisan_income(sys::state const& state, dcon::pop_id pop); money_from_nation estimate_income_from_nation(sys::state const& state, dcon::pop_id pop); float estimate_trade_spending(sys::state const& state, dcon::pop_id pop); float estimate_tax_spending(sys::state const& state, dcon::pop_id pop, float tax_rate); -float estimate_pop_spending_life(sys::state& state, dcon::pop_id pop, dcon::commodity_id cid); -float estimate_pop_spending_everyday(sys::state& state, dcon::pop_id pop, dcon::commodity_id cid); -float estimate_pop_spending_luxury(sys::state& state, dcon::pop_id pop, dcon::commodity_id cid); +float estimate_pop_spending_life(sys::state const& state, dcon::pop_id pop, dcon::commodity_id cid); +float estimate_pop_spending_everyday(sys::state const& state, dcon::pop_id pop, dcon::commodity_id cid); +float estimate_pop_spending_luxury(sys::state const& state, dcon::pop_id pop, dcon::commodity_id cid); } -float estimate_pops_consumption(sys::state& state, dcon::commodity_id c, dcon::province_id p); +float estimate_pops_consumption(sys::state const& state, dcon::commodity_id c, dcon::province_id p); } diff --git a/src/economy/economy_stats.cpp b/src/economy/economy_stats.cpp index 8640d279d..19abe903a 100644 --- a/src/economy/economy_stats.cpp +++ b/src/economy/economy_stats.cpp @@ -262,7 +262,7 @@ float price(sys::state const& state, dcon::nation_id s, dcon::commodity_id c) { return total_cost / total_supply; } -float price(sys::state& state, dcon::commodity_id c) { +float price(sys::state const& state, dcon::commodity_id c) { auto total_cost = 0.f; auto total_supply = 0.f; state.world.for_each_market([&](auto m) { @@ -280,7 +280,7 @@ float price(sys::state& state, dcon::commodity_id c) { return total_cost / total_supply; } -float median_price(sys::state& state, dcon::commodity_id c) { +float median_price(sys::state const& state, dcon::commodity_id c) { std::vector prices{}; state.world.for_each_market([&](auto m) { auto local_price = price(state, m, c); @@ -295,7 +295,7 @@ float median_price(sys::state& state, dcon::commodity_id c) { } return (prices[prices.size() / 2]); } -float median_price(sys::state& state, dcon::nation_id s, dcon::commodity_id c) { +float median_price(sys::state const& state, dcon::nation_id s, dcon::commodity_id c) { std::vector prices{}; state.world.nation_for_each_state_ownership(s, [&](auto soid) { auto sid = state.world.state_ownership_get_state(soid); @@ -313,7 +313,7 @@ float median_price(sys::state& state, dcon::nation_id s, dcon::commodity_id c) { return (prices[prices.size() / 2]); } -float stockpile(sys::state& state, dcon::nation_id n, dcon::commodity_id c) { +float stockpile(sys::state const& state, dcon::nation_id n, dcon::commodity_id c) { float total = 0.f; state.world.nation_for_each_state_ownership(n, [&](auto soid) { auto sid = state.world.state_ownership_get_state(soid); @@ -329,14 +329,14 @@ float price(sys::state const& state, dcon::market_id s, dcon::commodity_id c) { } float supply( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ) { return state.world.market_get_supply(s, c); } float supply( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -353,7 +353,7 @@ float supply( } float domestic_trade_volume( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -374,7 +374,7 @@ float domestic_trade_volume( } float supply( - sys::state& state, + sys::state const& state, dcon::commodity_id c ) { auto total_supply = 0.f; @@ -386,14 +386,14 @@ float supply( } float demand( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ) { return state.world.market_get_demand(s, c); } float demand( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -408,7 +408,7 @@ float demand( return total_demand; } float demand( - sys::state& state, + sys::state const& state, dcon::commodity_id c ) { auto total_demand = 0.f; @@ -428,14 +428,14 @@ float demand( } float consumption( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ) { return std::max(0.f, (state.world.market_get_demand(s, c) - trade_demand(state, s, c))) * state.world.market_get_actual_probability_to_buy(s, c); } float consumption( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -451,7 +451,7 @@ float consumption( return total; } float consumption( - sys::state& state, + sys::state const& state, dcon::commodity_id c ) { auto total = 0.f; @@ -463,7 +463,7 @@ float consumption( } float market_pool( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ) { @@ -486,7 +486,7 @@ float market_pool( return total; } float market_pool( - sys::state& state, + sys::state const& state, dcon::commodity_id c ) { auto total = 0.f; @@ -498,19 +498,14 @@ float market_pool( } float demand_satisfaction( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ) { - auto d = demand(state, s, c); - auto con = consumption(state, s, c); - if(d == 0.f) { - return 0.f; - } - return con / d; + return state.world.market_get_actual_probability_to_buy(s, c); } float demand_satisfaction( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -522,7 +517,7 @@ float demand_satisfaction( return con / d; } float demand_satisfaction( - sys::state& state, + sys::state const& state, dcon::commodity_id c ) { auto d = demand(state, c); @@ -533,45 +528,6 @@ float demand_satisfaction( return con / d; } - -float average_capitalists_luxury_cost( - sys::state& state, - dcon::nation_id s -) { - auto total = 0.f; - auto count = 0.f; - auto def = state.culture_definitions.capitalists; - auto key = demographics::to_key(state, def); - - state.world.nation_for_each_state_ownership(s, [&](auto soid) { - auto sid = state.world.state_ownership_get_state(soid); - auto market = state.world.state_instance_get_market_from_local_market(sid); - - auto local_count = state.world.state_instance_get_demographics( - sid, key - ); - - auto luxury = state.world.market_get_luxury_needs_costs( - market, def - ); - auto everyday = state.world.market_get_everyday_needs_costs( - market, def - ); - auto life = state.world.market_get_life_needs_costs( - market, def - ); - - total += (luxury + everyday + life) * local_count / state.defines.alice_needs_scaling_factor; - count += local_count; - }); - - if(count == 0.f) { - return 0.f; - } - - return total / count; -} - float trade_supply(sys::state const& state, dcon::market_id m, dcon::commodity_id c @@ -590,7 +546,7 @@ float trade_supply(sys::state const& state, return merchants_supply; } -float trade_supply(sys::state& state, +float trade_supply(sys::state const& state, dcon::nation_id n, dcon::commodity_id c ) { @@ -603,7 +559,7 @@ float trade_supply(sys::state& state, return total; } -float trade_demand(sys::state& state, +float trade_demand(sys::state const& state, dcon::market_id m, dcon::commodity_id c ) { @@ -630,7 +586,7 @@ float trade_demand(sys::state& state, return result; } -float trade_demand(sys::state& state, +float trade_demand(sys::state const& state, dcon::nation_id n, dcon::commodity_id c ) { @@ -643,7 +599,7 @@ float trade_demand(sys::state& state, return total; } -float trade_influx(sys::state& state, +float trade_influx(sys::state const& state, dcon::market_id m, dcon::commodity_id c ) { @@ -668,7 +624,7 @@ float trade_influx(sys::state& state, return result; } -float trade_outflux(sys::state& state, +float trade_outflux(sys::state const& state, dcon::market_id m, dcon::commodity_id c ) { @@ -692,7 +648,7 @@ float trade_outflux(sys::state& state, } float trade_value_flow( - sys::state& state, + sys::state const& state, dcon::market_id origin, dcon::market_id target ) { @@ -727,7 +683,7 @@ float trade_value_flow( } std::vector trade_value_flow_nation_to_all( - sys::state& state, + sys::state const& state, dcon::nation_id origin ) { std::vector result; @@ -766,7 +722,7 @@ std::vector trade_value_flow_nation_to_all( } std::vector trade_value_flow_all_to_nation( - sys::state& state, + sys::state const& state, dcon::nation_id target ) { std::vector result; @@ -807,7 +763,7 @@ std::vector trade_value_flow_all_to_nation( float trade_value_flow( - sys::state& state, + sys::state const& state, dcon::nation_id origin, dcon::nation_id target ) { @@ -851,7 +807,7 @@ float trade_value_flow( float export_value( - sys::state& state, + sys::state const& state, dcon::market_id s ) { float result = 0.f; @@ -885,7 +841,7 @@ float export_value( return result; } float export_value( - sys::state& state, + sys::state const& state, dcon::nation_id s ) { float result = 0.f; @@ -896,7 +852,7 @@ float export_value( return result; } float import_value( - sys::state& state, + sys::state const& state, dcon::market_id s ) { float result = 0.f; @@ -931,7 +887,7 @@ float import_value( return result; } float import_value( - sys::state& state, + sys::state const& state, dcon::nation_id s ) { float result = 0.f; @@ -943,14 +899,14 @@ float import_value( } float export_volume( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ) { return state.world.market_get_export(s, c); } float export_volume( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -959,7 +915,7 @@ float export_volume( } trade_volume_data_detailed export_volume_detailed( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -1051,7 +1007,7 @@ float import_volume( return state.world.market_get_import(s, c); } float import_volume( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { @@ -1060,18 +1016,11 @@ float import_volume( } trade_volume_data_detailed import_volume_detailed( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ) { - static ve::vectorizable_buffer per_nation_data(uint32_t(1)); - static uint32_t old_count = 1; - - auto new_count = state.world.nation_size(); - if(new_count > old_count) { - per_nation_data = state.world.nation_make_vectorizable_float_buffer(); - old_count = new_count; - } + ve::vectorizable_buffer per_nation_data(uint32_t(1)); state.world.execute_serial_over_nation([&](auto nids) { per_nation_data.set(nids, 0.f); @@ -1145,12 +1094,12 @@ trade_volume_data_detailed import_volume_detailed( return result; } -float get_factory_level(sys::state& state, dcon::factory_id f) { +float get_factory_level(sys::state const& state, dcon::factory_id f) { auto ftid = state.world.factory_get_building_type(f); return state.world.factory_get_size(f) / state.world.factory_type_get_base_workforce(ftid); } -int32_t province_factory_count(sys::state& state, dcon::province_id pid) { +int32_t province_factory_count(sys::state const& state, dcon::province_id pid) { int32_t num_factories = 0; num_factories += int32_t(state.world.province_get_factory_location(pid).end() - state.world.province_get_factory_location(pid).begin()); for(auto p : state.world.province_get_factory_construction(pid)) @@ -1164,7 +1113,7 @@ int32_t province_factory_count(sys::state& state, dcon::province_id pid) { return num_factories; } // Returns sum of all factory levels in a province -float province_factory_level(sys::state& state, dcon::province_id pid) { +float province_factory_level(sys::state const& state, dcon::province_id pid) { float factory_size = 0; for(auto fl : state.world.province_get_factory_location(pid)) { factory_size += get_factory_level(state, fl.get_factory()); @@ -1172,7 +1121,7 @@ float province_factory_level(sys::state& state, dcon::province_id pid) { return factory_size; } -int32_t state_factory_count(sys::state& state, dcon::state_instance_id sid, dcon::nation_id n) { +int32_t state_factory_count(sys::state const& state, dcon::state_instance_id sid, dcon::nation_id n) { int32_t num_factories = 0; auto d = state.world.state_instance_get_definition(sid); for(auto p : state.world.state_definition_get_abstract_state_membership(d)) @@ -1181,7 +1130,7 @@ int32_t state_factory_count(sys::state& state, dcon::state_instance_id sid, dcon return num_factories; } // Returns sum of all factory levels in a state -float state_factory_level(sys::state& state, dcon::state_instance_id sid, dcon::nation_id n) { +float state_factory_level(sys::state const& state, dcon::state_instance_id sid, dcon::nation_id n) { float factory_size = 0; auto d = state.world.state_instance_get_definition(sid); for(auto p : state.world.state_definition_get_abstract_state_membership(d)) @@ -1211,7 +1160,7 @@ bool has_factory(sys::state const& state, dcon::state_instance_id sid) { } -bool has_constructed_factory(sys::state& state, dcon::state_instance_id s, dcon::factory_type_id ft) { +bool has_constructed_factory(sys::state const& state, dcon::state_instance_id s, dcon::factory_type_id ft) { auto d = state.world.state_instance_get_definition(s); for(auto p : state.world.state_definition_get_abstract_state_membership(d)) { if(p.get_province().get_state_membership() == s) { @@ -1224,7 +1173,7 @@ bool has_constructed_factory(sys::state& state, dcon::state_instance_id s, dcon: return false; } -bool has_factory(sys::state& state, dcon::state_instance_id s, dcon::factory_type_id ft) { +bool has_factory(sys::state const& state, dcon::state_instance_id s, dcon::factory_type_id ft) { auto d = state.world.state_instance_get_definition(s); for(auto p : state.world.state_definition_get_abstract_state_membership(d)) { @@ -1246,33 +1195,33 @@ bool has_factory(sys::state& state, dcon::state_instance_id s, dcon::factory_typ return false; } -float effective_tariff_import_rate(sys::state& state, dcon::nation_id n, dcon::market_id m) { +float effective_tariff_import_rate(sys::state const& state, dcon::nation_id n, dcon::market_id m) { auto tariff_efficiency = std::max(0.0f, nations::tariff_efficiency(state, n, m)); auto r = tariff_efficiency * float(state.world.nation_get_tariffs_import(n)) / 100.0f; return std::max(r, 0.0f); } -float effective_tariff_export_rate(sys::state& state, dcon::nation_id n, dcon::market_id m) { +float effective_tariff_export_rate(sys::state const& state, dcon::nation_id n, dcon::market_id m) { auto tariff_efficiency = std::max(0.0f, nations::tariff_efficiency(state, n, m)); auto r = tariff_efficiency * float(state.world.nation_get_tariffs_export(n)) / 100.0f; return std::max(r, 0.0f); } -float estimate_probability_to_buy_after_demand_increase(sys::state& state, dcon::market_id m, dcon::commodity_id c, float additional_demand) { +float estimate_probability_to_buy_after_demand_increase(sys::state const& state, dcon::market_id m, dcon::commodity_id c, float additional_demand) { auto historical_demand = state.world.market_get_aggregated_demand_history(m, c); auto historical_supply = state.world.market_get_aggregated_supply_history(m, c); auto target_demand = historical_demand + additional_demand; return target_demand == 0.f ? 0.f : std::min(1.f, historical_supply / target_demand); } -float estimate_probability_to_buy_after_supply_increase(sys::state& state, dcon::market_id m, dcon::commodity_id c, float additional_supply) { +float estimate_probability_to_buy_after_supply_increase(sys::state const& state, dcon::market_id m, dcon::commodity_id c, float additional_supply) { auto historical_demand = state.world.market_get_aggregated_demand_history(m, c); auto historical_supply = state.world.market_get_aggregated_supply_history(m, c); auto target_supply = historical_supply + additional_supply; return historical_demand == 0.f ? 0.f : std::min(1.f, target_supply / historical_demand); } -float estimate_probability_to_sell_after_supply_increase(sys::state& state, dcon::market_id m, dcon::commodity_id c, float additional_supply) { +float estimate_probability_to_sell_after_supply_increase(sys::state const& state, dcon::market_id m, dcon::commodity_id c, float additional_supply) { auto historical_demand = state.world.market_get_aggregated_demand_history(m, c); auto historical_supply = state.world.market_get_aggregated_supply_history(m, c); auto target_supply = historical_supply + additional_supply; @@ -1280,7 +1229,7 @@ float estimate_probability_to_sell_after_supply_increase(sys::state& state, dcon } -float estimate_next_budget(sys::state& state, dcon::nation_id n) { +float estimate_next_budget(sys::state const& state, dcon::nation_id n) { // treasury is remainder after spending + income // so there is no need to account for income as it's already there auto treasury = state.world.nation_get_stockpiles(n, economy::money); @@ -1299,15 +1248,14 @@ Exports are accounted as part of demand. Imports are going directly into the stockpiles, so they are not a part of local supply. */ -market_budget breakdown_market_budget(sys::state& unsafe_state, dcon::market_id m) { - const sys::state& state = unsafe_state; +market_budget breakdown_market_budget(sys::state const& state, dcon::market_id m) { market_budget result {}; - unsafe_state.world.for_each_commodity([&](auto cid) { + state.world.for_each_commodity([&](auto cid) { auto p = price(state, m, cid); - result.bought += (supply(unsafe_state, m, cid) - trade_supply(state, m, cid)) * p * state.world.market_get_actual_probability_to_sell(m, cid); - result.sold += demand(unsafe_state, m, cid) * p * state.world.market_get_actual_probability_to_buy(m, cid); + result.bought += (supply(state, m, cid) - trade_supply(state, m, cid)) * p * state.world.market_get_actual_probability_to_sell(m, cid); + result.sold += demand(state, m, cid) * p * state.world.market_get_actual_probability_to_buy(m, cid); }); @@ -1316,7 +1264,7 @@ market_budget breakdown_market_budget(sys::state& unsafe_state, dcon::market_id result.dividents = treasury > 0 ? treasury * economy::pops::trade_dividents_rate : 0.f; auto sid = state.world.market_get_zone_from_local_market(m); - province::for_each_province_in_state_instance(unsafe_state, sid, [&](auto pid) { + province::for_each_province_in_state_instance(state, sid, [&](auto pid) { state.world.province_for_each_pop_location(pid, [&](auto poploc){ auto pop = state.world.pop_location_get_pop(poploc); result.investments += economy::pops::estimate_trade_spending(state, pop); @@ -1338,9 +1286,9 @@ market_budget breakdown_market_budget(sys::state& unsafe_state, dcon::market_id } }); - unsafe_state.world.for_each_commodity([&](auto cid) { + state.world.for_each_commodity([&](auto cid) { state.world.market_for_each_trade_route(m, [&](auto route){ - trade_and_tariff details = explain_trade_route_commodity(unsafe_state, route, cid); + trade_and_tariff details = explain_trade_route_commodity(state, route, cid); if(m == details.origin) { result.exports += details.payment_received_per_unit * details.amount_origin; } else { diff --git a/src/economy/economy_stats.hpp b/src/economy/economy_stats.hpp index 6b4ca836f..6fb03c788 100644 --- a/src/economy/economy_stats.hpp +++ b/src/economy/economy_stats.hpp @@ -167,11 +167,11 @@ void ve_register_domestic_supply( economy_reason reason ); -float trade_influx(sys::state& state, +float trade_influx(sys::state const& state, dcon::market_id m, dcon::commodity_id c ); -float trade_outflux(sys::state& state, +float trade_outflux(sys::state const& state, dcon::market_id m, dcon::commodity_id c ); @@ -181,18 +181,18 @@ float trade_supply(sys::state const& state, dcon::commodity_id c ); -float trade_demand(sys::state& state, +float trade_demand(sys::state const& state, dcon::market_id m, dcon::commodity_id c ); -float stockpile(sys::state& state, dcon::nation_id n, dcon::commodity_id c); +float stockpile(sys::state const& state, dcon::nation_id n, dcon::commodity_id c); -float trade_supply(sys::state& state, +float trade_supply(sys::state const& state, dcon::nation_id n, dcon::commodity_id c ); -float trade_demand(sys::state& state, +float trade_demand(sys::state const& state, dcon::nation_id n, dcon::commodity_id c ); @@ -209,14 +209,14 @@ float price( dcon::commodity_id c ); float price( - sys::state& state, + sys::state const& state, dcon::commodity_id c ); float median_price( - sys::state& state, + sys::state const& state, dcon::commodity_id c ); -float median_price(sys::state& state, dcon::nation_id s, dcon::commodity_id c); +float median_price(sys::state const& state, dcon::nation_id s, dcon::commodity_id c); float price( sys::state const& state, @@ -225,128 +225,128 @@ float price( ); float supply( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ); float supply( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); float supply( - sys::state& state, + sys::state const& state, dcon::commodity_id c ); float demand( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ); float demand( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); float demand( - sys::state& state, + sys::state const& state, dcon::commodity_id c ); float consumption( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ); float consumption( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); float consumption( - sys::state& state, + sys::state const& state, dcon::commodity_id c ); float demand_satisfaction( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ); float demand_satisfaction( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); float demand_satisfaction( - sys::state& state, + sys::state const& state, dcon::commodity_id c ); float market_pool( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ); float market_pool( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); float market_pool( - sys::state& state, + sys::state const& state, dcon::commodity_id c ); std::vector trade_value_flow_all_to_nation( - sys::state& state, + sys::state const& state, dcon::nation_id ); std::vector trade_value_flow_nation_to_all( - sys::state& state, + sys::state const& state, dcon::nation_id ); float trade_value_flow( - sys::state& state, + sys::state const& state, dcon::market_id origin, dcon::market_id target ); float trade_value_flow( - sys::state& state, + sys::state const& state, dcon::nation_id origin, dcon::nation_id target ); float export_value( - sys::state& state, + sys::state const& state, dcon::market_id s ); float export_value( - sys::state& state, + sys::state const& state, dcon::nation_id s ); float import_value( - sys::state& state, + sys::state const& state, dcon::market_id s ); float import_value( - sys::state& state, + sys::state const& state, dcon::nation_id s ); float export_volume( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ); float export_volume( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); float domestic_trade_volume( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); @@ -364,56 +364,51 @@ struct trade_volume_data_detailed { }; trade_volume_data_detailed export_volume_detailed( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); float import_volume( - sys::state& state, + sys::state const& state, dcon::market_id s, dcon::commodity_id c ); float import_volume( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); trade_volume_data_detailed import_volume_detailed( - sys::state& state, + sys::state const& state, dcon::nation_id s, dcon::commodity_id c ); -float average_capitalists_luxury_cost( - sys::state& state, - dcon::nation_id s -); - -int32_t state_factory_count(sys::state& state, dcon::state_instance_id sid, dcon::nation_id n); -float state_factory_level(sys::state& state, dcon::state_instance_id sid, dcon::nation_id n); -int32_t province_factory_count(sys::state& state, dcon::province_id sid); -float province_factory_level(sys::state& state, dcon::province_id sid); +int32_t state_factory_count(sys::state const& state, dcon::state_instance_id sid, dcon::nation_id n); +float state_factory_level(sys::state const& state, dcon::state_instance_id sid, dcon::nation_id n); +int32_t province_factory_count(sys::state const& state, dcon::province_id sid); +float province_factory_level(sys::state const& state, dcon::province_id sid); -float get_factory_level(sys::state& state, dcon::factory_id f); +float get_factory_level(sys::state const& state, dcon::factory_id f); // checks existence of factory in province (could be under construction) bool has_factory(sys::state const&, dcon::province_id); // checks existence of factory in state (could be under construction) bool has_factory(sys::state const&, dcon::state_instance_id); // checks existence of factory in province (only constructed factories count) -bool has_constructed_factory(sys::state& state, dcon::state_instance_id si, dcon::factory_type_id ft); +bool has_constructed_factory(sys::state const& state, dcon::state_instance_id si, dcon::factory_type_id ft); // checks existence of factory of given type in state (could be under construction) -bool has_factory(sys::state& state, dcon::state_instance_id s, dcon::factory_type_id ft); +bool has_factory(sys::state const& state, dcon::state_instance_id s, dcon::factory_type_id ft); -float effective_tariff_import_rate(sys::state& state, dcon::nation_id n, dcon::market_id m); -float effective_tariff_export_rate(sys::state& state, dcon::nation_id n, dcon::market_id m); +float effective_tariff_import_rate(sys::state const& state, dcon::nation_id n, dcon::market_id m); +float effective_tariff_export_rate(sys::state const& state, dcon::nation_id n, dcon::market_id m); -float estimate_probability_to_buy_after_demand_increase(sys::state& state, dcon::market_id, dcon::commodity_id, float additional_demand); -float estimate_probability_to_sell_after_supply_increase(sys::state& state, dcon::market_id m, dcon::commodity_id c, float additional_supply); -float estimate_probability_to_buy_after_supply_increase(sys::state& state, dcon::market_id m, dcon::commodity_id c, float additional_supply); -float estimate_next_budget(sys::state& state, dcon::nation_id n); +float estimate_probability_to_buy_after_demand_increase(sys::state const& state, dcon::market_id, dcon::commodity_id, float additional_demand); +float estimate_probability_to_sell_after_supply_increase(sys::state const& state, dcon::market_id m, dcon::commodity_id c, float additional_supply); +float estimate_probability_to_buy_after_supply_increase(sys::state const& state, dcon::market_id m, dcon::commodity_id c, float additional_supply); +float estimate_next_budget(sys::state const& state, dcon::nation_id n); struct market_budget { float sold; @@ -428,7 +423,7 @@ struct market_budget { float estimated_change; }; -market_budget breakdown_market_budget(sys::state& state, dcon::market_id m); +market_budget breakdown_market_budget(sys::state const& state, dcon::market_id m); struct nation_monetary_breakdown { float total = 0.f; diff --git a/src/economy/economy_trade_routes.cpp b/src/economy/economy_trade_routes.cpp index b34b11a1b..b120f183f 100644 --- a/src/economy/economy_trade_routes.cpp +++ b/src/economy/economy_trade_routes.cpp @@ -233,7 +233,7 @@ embargo_explanation embargo_exists( } trade_route_volume_change_reasons predict_trade_route_volume_change( - sys::state& state, dcon::trade_route_id route, dcon::commodity_id cid + sys::state const& state, dcon::trade_route_id route, dcon::commodity_id cid ) { trade_route_volume_change_reasons result{ .export_price = { 0.f, 0.f }, @@ -1049,7 +1049,7 @@ bool is_trade_route_relevant(sys::state& state, dcon::trade_route_id trade_route return false; } -float estimate_port_service_price(sys::state& state, dcon::state_instance_id s) { +float estimate_port_service_price(sys::state const& state, dcon::state_instance_id s) { auto port_weight_target_total = 0.f; auto price_port_target = 0.f; province::for_each_province_in_state_instance(state, s, [&](dcon::province_id pid) { @@ -1067,7 +1067,7 @@ float estimate_port_service_price(sys::state& state, dcon::state_instance_id s) return price_port_target; } -trade_and_tariff explain_trade_route_commodity(sys::state& state, dcon::trade_route_id trade_route, dcon::commodity_id cid) { +trade_and_tariff explain_trade_route_commodity(sys::state const& state, dcon::trade_route_id trade_route, dcon::commodity_id cid) { auto current_volume = state.world.trade_route_get_volume(trade_route, cid); auto origin = current_volume > 0.f diff --git a/src/economy/economy_trade_routes.hpp b/src/economy/economy_trade_routes.hpp index 871693a42..ee4b5bf3e 100644 --- a/src/economy/economy_trade_routes.hpp +++ b/src/economy/economy_trade_routes.hpp @@ -11,7 +11,7 @@ struct state; } namespace economy { -float estimate_port_service_price(sys::state& state, dcon::state_instance_id s); +float estimate_port_service_price(sys::state const& state, dcon::state_instance_id s); void update_trade_routes_volume( sys::state& state, @@ -55,7 +55,7 @@ bool is_trade_route_relevant(sys::state& state, dcon::trade_route_id trade_route trade_route_volume_change_reasons predict_trade_route_volume_change( - sys::state& state, dcon::trade_route_id route, dcon::commodity_id cid + sys::state const& state, dcon::trade_route_id route, dcon::commodity_id cid ); struct embargo_explanation { @@ -80,7 +80,7 @@ struct trade_breakdown_item { std::vector explain_national_tariff(sys::state& state, dcon::nation_id n, bool import_flag, bool export_flag); -trade_and_tariff explain_trade_route_commodity(sys::state& state, dcon::trade_route_id trade_route, dcon::commodity_id cid); +trade_and_tariff explain_trade_route_commodity(sys::state const& state, dcon::trade_route_id trade_route, dcon::commodity_id cid); trade_and_tariff> explain_trade_route_commodity( sys::state const& state, ve::contiguous_tags trade_route, diff --git a/src/nations/nations.cpp b/src/nations/nations.cpp index 8d62bf104..82ca4bbb3 100644 --- a/src/nations/nations.cpp +++ b/src/nations/nations.cpp @@ -2052,7 +2052,7 @@ float get_debt(sys::state& state, dcon::nation_id n) { } // estimates rate of tariffs collected in a market -float tariff_efficiency(sys::state& state, dcon::nation_id n, dcon::market_id m) { +float tariff_efficiency(sys::state const& state, dcon::nation_id n, dcon::market_id m) { auto sid = state.world.market_get_zone_from_local_market(m); auto pid = state.world.state_instance_get_capital(sid); auto eff_mod = state.world.nation_get_modifier_values(n, sys::national_mod_offsets::tariff_efficiency_modifier); diff --git a/src/nations/nations.hpp b/src/nations/nations.hpp index 906d4ca72..071f4bcee 100644 --- a/src/nations/nations.hpp +++ b/src/nations/nations.hpp @@ -206,7 +206,7 @@ float leadership_points(sys::state const& state, dcon::nation_id n); float get_treasury(sys::state& state, dcon::nation_id n); float get_bank_funds(sys::state& state, dcon::nation_id n); float get_debt(sys::state& state, dcon::nation_id n); -float tariff_efficiency(sys::state& state, dcon::nation_id n, dcon::market_id m); +float tariff_efficiency(sys::state const& state, dcon::nation_id n, dcon::market_id m); float tax_efficiency(sys::state const& state, dcon::nation_id n); float tribute_efficiency(sys::state const& state, dcon::nation_id n); float colonial_points_from_naval_bases(sys::state& state, dcon::nation_id n); diff --git a/src/provinces/province.cpp b/src/provinces/province.cpp index e7af08be3..f895e2605 100644 --- a/src/provinces/province.cpp +++ b/src/provinces/province.cpp @@ -16,7 +16,7 @@ namespace province { template auto is_overseas>(sys::state const&, ve::tagged_vector); -template void for_each_province_in_state_instance>(sys::state&, dcon::state_instance_id, std::function const&); +template void for_each_province_in_state_instance>(sys::state const &, dcon::state_instance_id, std::function const&); bool is_overseas(sys::state const& state, dcon::province_id ids) { auto owners = state.world.province_get_nation_from_province_ownership(ids); @@ -2166,7 +2166,7 @@ void update_colonization(sys::state& state) { } } -dcon::province_id state_get_coastal_capital(sys::state& state, dcon::state_instance_id s) { +dcon::province_id state_get_coastal_capital(sys::state const& state, dcon::state_instance_id s) { auto d = state.world.state_instance_get_definition(s); auto o = state.world.state_instance_get_nation_from_state_ownership(s); auto max_pop = -100.0f; // start as negative number so that states w/ only 0 pops can pick a coastal capital diff --git a/src/provinces/province.hpp b/src/provinces/province.hpp index 20574eb4d..af26d597d 100644 --- a/src/provinces/province.hpp +++ b/src/provinces/province.hpp @@ -57,7 +57,7 @@ bool has_province_building_being_built(sys::state& state, dcon::province_id id, bool can_build_province_building(sys::state& state, dcon::province_id id, dcon::nation_id n, economy::province_building_type t); bool has_an_owner(sys::state& state, dcon::province_id id); float effective_life_rating_growth(sys::state& state, dcon::province_id prov); // returns the effective life rating for popgrowth for a province -dcon::province_id state_get_coastal_capital(sys::state& state, dcon::state_instance_id s); +dcon::province_id state_get_coastal_capital(sys::state const& state, dcon::state_instance_id s); bool state_is_coastal(sys::state& state, dcon::state_instance_id s); bool state_is_coastal_non_core_nb(sys::state& state, dcon::state_instance_id s); bool state_borders_nation(sys::state& state, dcon::nation_id n, dcon::state_instance_id si); diff --git a/src/provinces/province_templates.hpp b/src/provinces/province_templates.hpp index 8b47f9706..ec175321c 100644 --- a/src/provinces/province_templates.hpp +++ b/src/provinces/province_templates.hpp @@ -34,7 +34,7 @@ void ve_parallel_for_each_land_province(sys::state& state, F const& func) { } template -void for_each_sea_province(sys::state& state, F const& func) { +void for_each_sea_province(sys::state const& state, F const& func) { int32_t first = state.province_definitions.first_sea_province.index(); for(int32_t i = first; i < int32_t(state.world.province_size()); ++i) { dcon::province_id pid{dcon::province_id::value_base_t(i)}; @@ -43,7 +43,7 @@ void for_each_sea_province(sys::state& state, F const& func) { } template -void for_each_province_in_state_instance(sys::state& state, dcon::state_instance_id s, F const& func) { +void for_each_province_in_state_instance(sys::state const& state, dcon::state_instance_id s, F const& func) { auto d = state.world.state_instance_get_definition(s); auto o = state.world.state_instance_get_nation_from_state_ownership(s); for(auto p : state.world.state_definition_get_abstract_state_membership(d)) { @@ -61,7 +61,7 @@ void for_each_province_building(sys::state& state, F const& function) { } template -void for_each_market_province_parallel_over_market(sys::state& state, F const& func) { +void for_each_market_province_parallel_over_market(sys::state const& state, F const& func) { concurrency::parallel_for((size_t)(0), (size_t)(state.world.market_size()), [&](auto raw_mid) { dcon::market_id mid{ (dcon::market_id::value_base_t) (raw_mid) }; auto sid = state.world.market_get_zone_from_local_market(mid);