@@ -56,6 +56,7 @@ CountryInstance::CountryInstance(
5656 building_type_unlock_levels { &building_type_keys },
5757
5858 /* Budget */
59+ taxable_income_mutex { std::make_unique<std::mutex>() },
5960 taxable_income_by_pop_type { &pop_type_keys },
6061 effective_tax_rate_by_strata { &strata_keys },
6162 tax_rate_slider_value_by_strata { &strata_keys },
@@ -1485,6 +1486,8 @@ void CountryInstance::country_reset_before_tick() {
14851486 for (auto pair : goods_data) {
14861487 pair.second .clear_daily_recorded_data ();
14871488 }
1489+
1490+ taxable_income_by_pop_type.fill (fixed_point_t::_0 ());
14881491}
14891492
14901493void CountryInstance::country_tick (InstanceManager& instance_manager) {
@@ -1547,16 +1550,17 @@ void CountryInstance::country_tick(InstanceManager& instance_manager) {
15471550 total_gold_production += produced_quantity;
15481551 }
15491552 }
1553+
15501554 gold_income = country_defines.get_gold_to_cash_rate () * total_gold_production;
15511555 cash_stockpile += gold_income;
15521556}
15531557
15541558CountryInstance::good_data_t::good_data_t ()
1555- : lock { std::make_unique<std::mutex>() }
1559+ : mutex { std::make_unique<std::mutex>() }
15561560 { }
15571561
15581562void CountryInstance::good_data_t::clear_daily_recorded_data () {
1559- const std::lock_guard<std::mutex> lock_guard { *lock };
1563+ const std::lock_guard<std::mutex> lock_guard { *mutex };
15601564 stockpile_change_yesterday
15611565 = exported_amount
15621566 = government_needs
@@ -1572,19 +1576,25 @@ void CountryInstance::good_data_t::clear_daily_recorded_data() {
15721576 production_per_production_type.clear ();
15731577}
15741578
1579+ void CountryInstance::report_pop_income_tax (PopType const & pop_type, const fixed_point_t gross_income, const fixed_point_t paid_as_tax) {
1580+ const std::lock_guard<std::mutex> lock_guard { *taxable_income_mutex };
1581+ taxable_income_by_pop_type[pop_type] += gross_income;
1582+ cash_stockpile += paid_as_tax;
1583+ }
1584+
15751585void CountryInstance::report_pop_need_consumption (PopType const & pop_type, GoodDefinition const & good, const fixed_point_t quantity) {
15761586 good_data_t & good_data = get_good_data (good);
1577- const std::lock_guard<std::mutex> lock_guard { *good_data.lock };
1587+ const std::lock_guard<std::mutex> lock_guard { *good_data.mutex };
15781588 good_data.need_consumption_per_pop_type [&pop_type] += quantity;
15791589}
15801590void CountryInstance::report_pop_need_demand (PopType const & pop_type, GoodDefinition const & good, const fixed_point_t quantity) {
15811591 good_data_t & good_data = get_good_data (good);
1582- const std::lock_guard<std::mutex> lock_guard { *good_data.lock };
1592+ const std::lock_guard<std::mutex> lock_guard { *good_data.mutex };
15831593 good_data.pop_demand += quantity;
15841594}
15851595void CountryInstance::report_input_consumption (ProductionType const & production_type, GoodDefinition const & good, const fixed_point_t quantity) {
15861596 good_data_t & good_data = get_good_data (good);
1587- const std::lock_guard<std::mutex> lock_guard { *good_data.lock };
1597+ const std::lock_guard<std::mutex> lock_guard { *good_data.mutex };
15881598 good_data.input_consumption_per_production_type [&production_type] += quantity;
15891599}
15901600void CountryInstance::report_input_demand (ProductionType const & production_type, GoodDefinition const & good, const fixed_point_t quantity) {
@@ -1593,7 +1603,7 @@ void CountryInstance::report_input_demand(ProductionType const& production_type,
15931603 case demand_category::FactoryNeeds: break ;
15941604 case demand_category::PopNeeds: {
15951605 good_data_t & good_data = get_good_data (good);
1596- const std::lock_guard<std::mutex> lock_guard { *good_data.lock };
1606+ const std::lock_guard<std::mutex> lock_guard { *good_data.mutex };
15971607 good_data.pop_demand += quantity;
15981608 return ;
15991609 }
@@ -1602,12 +1612,12 @@ void CountryInstance::report_input_demand(ProductionType const& production_type,
16021612 }
16031613
16041614 good_data_t & good_data = get_good_data (good);
1605- const std::lock_guard<std::mutex> lock_guard { *good_data.lock };
1615+ const std::lock_guard<std::mutex> lock_guard { *good_data.mutex };
16061616 good_data.factory_demand += quantity;
16071617}
16081618void CountryInstance::report_output (ProductionType const & production_type, const fixed_point_t quantity) {
16091619 good_data_t & good_data = get_good_data (production_type.get_output_good ());
1610- const std::lock_guard<std::mutex> lock_guard { *good_data.lock };
1620+ const std::lock_guard<std::mutex> lock_guard { *good_data.mutex };
16111621 good_data.production_per_production_type [&production_type] += quantity;
16121622}
16131623
0 commit comments