Skip to content

Commit 030dfdd

Browse files
wvpmSpartan322
authored andcommitted
Remove colonies from admin efficiency
1 parent d71de07 commit 030dfdd

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/openvic-simulation/country/CountryInstance.cpp

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "openvic-simulation/research/Invention.hpp"
2222
#include "openvic-simulation/research/Technology.hpp"
2323
#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
24+
#include "openvic-simulation/types/IndexedMap.hpp"
2425
#include "openvic-simulation/types/PopSize.hpp"
2526
#include "openvic-simulation/types/SliderValue.hpp"
2627

@@ -1171,19 +1172,34 @@ void CountryInstance::_update_budget() {
11711172
OpenVic immediately updates both.
11721173
*/
11731174

1174-
if (total_population == 0) {
1175-
administrative_efficiency = 1;
1176-
} else {
1177-
pop_size_t administrators = 0;
1178-
for (auto const& [pop_type, size] : pop_type_distribution) {
1175+
pop_size_t total_non_colonial_population = 0;
1176+
pop_size_t administrators = 0;
1177+
for (State const* const state_ptr : states) {
1178+
if (state_ptr == nullptr) {
1179+
continue;
1180+
}
1181+
1182+
State const& state = *state_ptr;
1183+
if (state.is_colonial_state()) {
1184+
continue;
1185+
}
1186+
1187+
IndexedMap<PopType, pop_size_t> const& state_pop_type_distribution = state.get_pop_type_distribution();
1188+
1189+
for (auto const& [pop_type, size] : state_pop_type_distribution) {
11791190
if (pop_type.get_is_administrator()) {
11801191
administrators += size;
11811192
}
11821193
}
1194+
total_non_colonial_population += state.get_total_population();
1195+
}
11831196

1197+
if (total_non_colonial_population == 0) {
1198+
administrative_efficiency = fixed_point_t::_1;
1199+
} else {
11841200
const fixed_point_t desired_administrator_percentage = country_defines.get_max_bureaucracy_percentage()
11851201
+ total_administrative_multiplier * country_defines.get_bureaucracy_percentage_increment();
1186-
const fixed_point_t desired_administrators = desired_administrator_percentage * total_population;
1202+
const fixed_point_t desired_administrators = desired_administrator_percentage * total_non_colonial_population;
11871203

11881204
administrative_efficiency = std::min(
11891205
fixed_point_t::mul_div(

0 commit comments

Comments
 (0)