Project Alice
Loading...
Searching...
No Matches
demographics.hpp
Go to the documentation of this file.
1#pragma once
2#include "dcon_generated.hpp"
3#include "container_types.hpp"
4#include "system_state.hpp"
5
6namespace pop_demographics {
7
8constexpr inline uint32_t count_special_keys = 0;
9
10dcon::pop_demographics_key to_key(sys::state const& state, dcon::ideology_id v);
11dcon::pop_demographics_key to_key(sys::state const& state, dcon::issue_option_id v);
12uint32_t size(sys::state const& state);
13
15
16} // namespace pop_demographics
17namespace demographics {
18
19constexpr inline dcon::demographics_key total(0);
20constexpr inline dcon::demographics_key employable(1);
21constexpr inline dcon::demographics_key employed(2);
22constexpr inline dcon::demographics_key consciousness(3);
23constexpr inline dcon::demographics_key militancy(4);
24constexpr inline dcon::demographics_key literacy(5);
25constexpr inline dcon::demographics_key political_reform_desire(6);
26constexpr inline dcon::demographics_key social_reform_desire(7);
27constexpr inline dcon::demographics_key poor_militancy(8);
28constexpr inline dcon::demographics_key middle_militancy(9);
29constexpr inline dcon::demographics_key rich_militancy(10);
30constexpr inline dcon::demographics_key poor_life_needs(11);
31constexpr inline dcon::demographics_key middle_life_needs(12);
32constexpr inline dcon::demographics_key rich_life_needs(13);
33constexpr inline dcon::demographics_key poor_everyday_needs(14);
34constexpr inline dcon::demographics_key middle_everyday_needs(15);
35constexpr inline dcon::demographics_key rich_everyday_needs(16);
36constexpr inline dcon::demographics_key poor_luxury_needs(17);
37constexpr inline dcon::demographics_key middle_luxury_needs(18);
38constexpr inline dcon::demographics_key rich_luxury_needs(19);
39constexpr inline dcon::demographics_key poor_total(20);
40constexpr inline dcon::demographics_key middle_total(21);
41constexpr inline dcon::demographics_key rich_total(22);
42
43constexpr inline uint32_t count_special_keys = 23;
44
45dcon::demographics_key to_key(sys::state const& state, dcon::ideology_id v);
46dcon::demographics_key to_key(sys::state const& state, dcon::issue_option_id v);
47dcon::demographics_key to_key(sys::state const& state, dcon::pop_type_id v);
48dcon::demographics_key to_key(sys::state const& state, dcon::culture_id v);
49dcon::demographics_key to_key(sys::state const& state, dcon::religion_id v);
50dcon::demographics_key to_employment_key(sys::state const& state, dcon::pop_type_id v);
51
52uint32_t size(sys::state const& state);
53
54void regenerate_jingoism_support(sys::state& state, dcon::nation_id n);
57
60 ve::vectorizable_buffer<float, dcon::pop_id> totals;
62
64 for(uint32_t i = 0; i < state.world.ideology_size(); ++i) {
66 }
67 }
68
69 void update(sys::state& state, uint32_t s) {
70 if(size < s) {
71 size = s;
72 state.world.for_each_ideology(
73 [&](dcon::ideology_id i) { temp_buffers[i] = state.world.pop_make_vectorizable_float_buffer(); });
74 totals = ve::vectorizable_buffer<float, dcon::pop_id>(s);
75 }
76 }
77};
78
81 ve::vectorizable_buffer<float, dcon::pop_id> totals;
83
85 for(uint32_t i = 0; i < state.world.issue_option_size(); ++i) {
87 }
88 }
89
90 void update(sys::state& state, uint32_t s) {
91 if(size < s) {
92 size = s;
93 state.world.for_each_issue_option(
94 [&](dcon::issue_option_id i) { temp_buffers[i] = state.world.pop_make_vectorizable_float_buffer(); });
95 totals = ve::vectorizable_buffer<float, dcon::pop_id>(s);
96 }
97 }
98};
99
101 ve::vectorizable_buffer<float, dcon::pop_id> amounts;
102 ve::vectorizable_buffer<dcon::pop_type_id, dcon::pop_id> types;
105
107 void update(uint32_t s) {
108 size = s;
109 if(reserved < s) {
110 reserved = s;
111 amounts = ve::vectorizable_buffer<float, dcon::pop_id>(s);
112 types = ve::vectorizable_buffer<dcon::pop_type_id, dcon::pop_id>(s);
113 }
114 }
115};
116
118 ve::vectorizable_buffer<float, dcon::pop_id> amounts;
121
123 void update(uint32_t s) {
124 size = s;
125 if(reserved < s) {
126 reserved = s;
127 amounts = ve::vectorizable_buffer<float, dcon::pop_id>(s);
128 }
129 }
130};
131
133 ve::vectorizable_buffer<float, dcon::pop_id> amounts;
136
138 void update(uint32_t s) {
139 size = s;
140 if(reserved < s) {
141 reserved = s;
142 amounts = ve::vectorizable_buffer<float, dcon::pop_id>(s);
143 }
144 }
145};
146
148 ve::vectorizable_buffer<float, dcon::pop_id> amounts;
149 ve::vectorizable_buffer<dcon::province_id, dcon::pop_id> destinations;
152
154 void update(uint32_t s) {
155 size = s;
156 if(reserved < s) {
157 reserved = s;
158 amounts = ve::vectorizable_buffer<float, dcon::pop_id>(s);
159 destinations = ve::vectorizable_buffer<dcon::province_id, dcon::pop_id>(s);
160 }
161 }
162};
163
164void update_literacy(sys::state& state, uint32_t offset, uint32_t divisions);
165void update_consciousness(sys::state& state, uint32_t offset, uint32_t divisions);
166void update_militancy(sys::state& state, uint32_t offset, uint32_t divisions);
167void update_ideologies(sys::state& state, uint32_t offset, uint32_t divisions, ideology_buffer& ibuf);
168void update_issues(sys::state& state, uint32_t offset, uint32_t divisions, issues_buffer& ibuf);
169void update_growth(sys::state& state, uint32_t offset, uint32_t divisions);
170void update_type_changes(sys::state& state, uint32_t offset, uint32_t divisions, promotion_buffer& pbuf);
171void update_assimilation(sys::state& state, uint32_t offset, uint32_t divisions, assimilation_buffer& pbuf);
172void update_internal_migration(sys::state& state, uint32_t offset, uint32_t divisions, migration_buffer& pbuf);
173void update_colonial_migration(sys::state& state, uint32_t offset, uint32_t divisions, migration_buffer& pbuf);
174void update_immigration(sys::state& state, uint32_t offset, uint32_t divisions, migration_buffer& pbuf);
175void update_conversion(sys::state& state, uint32_t offset, uint32_t divisions, conversion_buffer& pbuf);
176
177float get_estimated_literacy_change(sys::state& state, dcon::nation_id n);
178float get_estimated_mil_change(sys::state& state, dcon::nation_id n);
179float get_estimated_con_change(sys::state& state, dcon::nation_id n);
180float get_estimated_promotion(sys::state& state, dcon::nation_id n);
181
182void apply_ideologies(sys::state& state, uint32_t offset, uint32_t divisions, ideology_buffer& pbuf);
183void apply_issues(sys::state& state, uint32_t offset, uint32_t divisions, issues_buffer& pbuf);
184void apply_type_changes(sys::state& state, uint32_t offset, uint32_t divisions, promotion_buffer& pbuf);
185void apply_assimilation(sys::state& state, uint32_t offset, uint32_t divisions, assimilation_buffer& pbuf);
186void apply_internal_migration(sys::state& state, uint32_t offset, uint32_t divisions, migration_buffer& pbuf);
187void apply_colonial_migration(sys::state& state, uint32_t offset, uint32_t divisions, migration_buffer& pbuf);
188void apply_immigration(sys::state& state, uint32_t offset, uint32_t divisions, migration_buffer& pbuf);
189void apply_conversion(sys::state& state, uint32_t offset, uint32_t divisions, conversion_buffer& pbuf);
190
192void remove_small_pops(sys::state& state);
193
194float get_monthly_pop_increase(sys::state& state, dcon::pop_id);
195int64_t get_monthly_pop_increase(sys::state& state, dcon::nation_id n);
196int64_t get_monthly_pop_increase(sys::state& state, dcon::state_instance_id n);
197int64_t get_monthly_pop_increase(sys::state& state, dcon::province_id n);
198
199float get_estimated_literacy_change(sys::state& state, dcon::pop_id n);
200float get_estimated_mil_change(sys::state& state, dcon::pop_id n);
201float get_estimated_con_change(sys::state& state, dcon::pop_id n);
202float get_estimated_type_change(sys::state& state, dcon::pop_id n);
203float get_effective_estimation_type_change(sys::state& state, dcon::nation_id nation, dcon::pop_type_id target_type);
204float get_estimated_promotion(sys::state& state, dcon::pop_id n);
205float get_estimated_demotion(sys::state& state, dcon::pop_id n);
206float get_estimated_assimilation(sys::state& state, dcon::pop_id n);
207float get_estimated_internal_migration(sys::state& state, dcon::pop_id n);
208float get_estimated_colonial_migration(sys::state& state, dcon::pop_id n);
209float get_estimated_emigration(sys::state& state, dcon::pop_id n);
210void estimate_directed_immigration(sys::state& state, dcon::nation_id n, std::vector<float>& national_amounts);
211float get_estimated_conversion(sys::state& state, dcon::pop_id n);
212
213float calculate_nation_sol(sys::state& state, dcon::nation_id nation_id);
214void reduce_pop_size_safe(sys::state& state, dcon::pop_id pop_id, int32_t amount);
215
216} // namespace demographics
tag_type emplace_back(T &&... ts)
float get_effective_estimation_type_change(sys::state &state, dcon::nation_id nation, dcon::pop_type_id target_type)
constexpr dcon::demographics_key rich_life_needs(13)
constexpr dcon::demographics_key poor_luxury_needs(17)
constexpr dcon::demographics_key middle_life_needs(12)
float get_estimated_colonial_migration(sys::state &state, dcon::pop_id ids)
void estimate_directed_immigration(sys::state &state, dcon::nation_id n, std::vector< float > &national_amounts)
constexpr dcon::demographics_key rich_militancy(10)
float get_estimated_literacy_change(sys::state &state, dcon::pop_id ids)
constexpr dcon::demographics_key middle_total(21)
constexpr dcon::demographics_key middle_luxury_needs(18)
float get_estimated_type_change(sys::state &state, dcon::pop_id ids)
constexpr dcon::demographics_key political_reform_desire(6)
float calculate_nation_sol(sys::state &state, dcon::nation_id nation_id)
void remove_small_pops(sys::state &state)
void regenerate_jingoism_support(sys::state &state, dcon::nation_id n)
void update_immigration(sys::state &state, uint32_t offset, uint32_t divisions, migration_buffer &pbuf)
constexpr dcon::demographics_key total(0)
constexpr dcon::demographics_key rich_everyday_needs(16)
constexpr dcon::demographics_key poor_militancy(8)
constexpr dcon::demographics_key rich_luxury_needs(19)
void apply_assimilation(sys::state &state, uint32_t offset, uint32_t divisions, assimilation_buffer &pbuf)
constexpr dcon::demographics_key poor_everyday_needs(14)
constexpr dcon::demographics_key middle_militancy(9)
void update_internal_migration(sys::state &state, uint32_t offset, uint32_t divisions, migration_buffer &pbuf)
void apply_type_changes(sys::state &state, uint32_t offset, uint32_t divisions, promotion_buffer &pbuf)
dcon::demographics_key to_key(sys::state const &state, dcon::pop_type_id v)
float get_estimated_mil_change(sys::state &state, dcon::pop_id ids)
constexpr uint32_t count_special_keys
constexpr dcon::demographics_key employable(1)
void update_growth(sys::state &state, uint32_t offset, uint32_t divisions)
constexpr dcon::demographics_key consciousness(3)
void update_issues(sys::state &state, uint32_t offset, uint32_t divisions, issues_buffer &ibuf)
void apply_internal_migration(sys::state &state, uint32_t offset, uint32_t divisions, migration_buffer &pbuf)
float get_estimated_conversion(sys::state &state, dcon::pop_id ids)
constexpr dcon::demographics_key rich_total(22)
constexpr dcon::demographics_key poor_total(20)
void update_type_changes(sys::state &state, uint32_t offset, uint32_t divisions, promotion_buffer &pbuf)
void regenerate_from_pop_data_full(sys::state &state)
void reduce_pop_size_safe(sys::state &state, dcon::pop_id pop_id, int32_t amount)
float get_estimated_internal_migration(sys::state &state, dcon::pop_id ids)
float get_estimated_demotion(sys::state &state, dcon::pop_id ids)
constexpr dcon::demographics_key poor_life_needs(11)
constexpr dcon::demographics_key employed(2)
uint32_t size(sys::state const &state)
float get_monthly_pop_increase(sys::state &state, dcon::pop_id ids)
float get_estimated_con_change(sys::state &state, dcon::pop_id ids)
dcon::demographics_key to_employment_key(sys::state const &state, dcon::pop_type_id v)
constexpr dcon::demographics_key social_reform_desire(7)
void update_assimilation(sys::state &state, uint32_t offset, uint32_t divisions, assimilation_buffer &pbuf)
void remove_size_zero_pops(sys::state &state)
constexpr dcon::demographics_key literacy(5)
void update_colonial_migration(sys::state &state, uint32_t offset, uint32_t divisions, migration_buffer &pbuf)
void apply_conversion(sys::state &state, uint32_t offset, uint32_t divisions, conversion_buffer &pbuf)
void apply_ideologies(sys::state &state, uint32_t offset, uint32_t divisions, ideology_buffer &pbuf)
void update_ideologies(sys::state &state, uint32_t offset, uint32_t divisions, ideology_buffer &ibuf)
void update_consciousness(sys::state &state, uint32_t offset, uint32_t divisions)
constexpr dcon::demographics_key middle_everyday_needs(15)
float get_estimated_assimilation(sys::state &state, dcon::pop_id ids)
void update_literacy(sys::state &state, uint32_t offset, uint32_t divisions)
void update_militancy(sys::state &state, uint32_t offset, uint32_t divisions)
void apply_colonial_migration(sys::state &state, uint32_t offset, uint32_t divisions, migration_buffer &pbuf)
float get_estimated_emigration(sys::state &state, dcon::pop_id ids)
void regenerate_from_pop_data_daily(sys::state &state)
constexpr dcon::demographics_key militancy(4)
void update_conversion(sys::state &state, uint32_t offset, uint32_t divisions, conversion_buffer &pbuf)
void apply_immigration(sys::state &state, uint32_t offset, uint32_t divisions, migration_buffer &pbuf)
float get_estimated_promotion(sys::state &state, dcon::pop_id ids)
void apply_issues(sys::state &state, uint32_t offset, uint32_t divisions, issues_buffer &pbuf)
uint32_t size(sys::state const &state)
void regenerate_is_primary_or_accepted(sys::state &state)
dcon::pop_demographics_key to_key(sys::state const &state, dcon::ideology_id v)
constexpr uint32_t count_special_keys
Definition: demographics.hpp:8
uint uint32_t
ve::vectorizable_buffer< float, dcon::pop_id > amounts
ve::vectorizable_buffer< float, dcon::pop_id > amounts
tagged_vector< ve::vectorizable_buffer< float, dcon::pop_id >, dcon::ideology_id > temp_buffers
ve::vectorizable_buffer< float, dcon::pop_id > totals
ideology_buffer(sys::state &state)
void update(sys::state &state, uint32_t s)
tagged_vector< ve::vectorizable_buffer< float, dcon::pop_id >, dcon::issue_option_id > temp_buffers
void update(sys::state &state, uint32_t s)
issues_buffer(sys::state &state)
ve::vectorizable_buffer< float, dcon::pop_id > totals
ve::vectorizable_buffer< dcon::province_id, dcon::pop_id > destinations
ve::vectorizable_buffer< float, dcon::pop_id > amounts
ve::vectorizable_buffer< float, dcon::pop_id > amounts
ve::vectorizable_buffer< dcon::pop_type_id, dcon::pop_id > types