Skip to content

Commit a52f6fa

Browse files
committed
Remove fixed_point_t::parse(int64_t)
1 parent 86c8236 commit a52f6fa

File tree

12 files changed

+126
-40
lines changed

12 files changed

+126
-40
lines changed

src/openvic-simulation/country/CountryInstance.cpp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,7 +1367,7 @@ void CountryInstance::_update_budget() {
13671367
administrative_efficiency_from_administrators.set(fixed_point_t::_1);
13681368
administrator_percentage.set(fixed_point_t::_0);
13691369
} else {
1370-
administrator_percentage.set(fixed_point_t::parse(administrators) / total_non_colonial_population);
1370+
administrator_percentage.set(fixed_point_t(administrators) / total_non_colonial_population);
13711371

13721372
const fixed_point_t desired_administrators = desired_administrator_percentage.get_untracked() * total_non_colonial_population;
13731373
const fixed_point_t administrative_efficiency_from_administrators_unclamped = std::min(
@@ -1563,8 +1563,11 @@ void CountryInstance::_update_military() {
15631563
}
15641564

15651565
military_power_from_land.set(
1566-
supply_consumption * fixed_point_t::parse(regular_army_size) * sum_of_regiment_type_stats
1567-
/ fixed_point_t::parse(7 * (1 + unit_type_manager.get_regiment_type_count()))
1566+
supply_consumption * fixed_point_t::mul_div(
1567+
sum_of_regiment_type_stats,
1568+
fixed_point_t::parse_raw(regular_army_size),
1569+
fixed_point_t::parse_raw(7 * (1 + unit_type_manager.get_regiment_type_count()))
1570+
)
15681571
);
15691572

15701573
if (disarmed) {
@@ -1588,7 +1591,12 @@ void CountryInstance::_update_military() {
15881591
military_power_from_sea.set(military_power_from_sea_running_total / 250);
15891592

15901593
military_power_from_leaders.set(
1591-
fixed_point_t::parse(std::min(get_leader_count(), deployed_non_mobilised_regiments))
1594+
fixed_point_t::parse_capped(
1595+
std::min(
1596+
get_leader_count(),
1597+
deployed_non_mobilised_regiments
1598+
)
1599+
)
15921600
);
15931601

15941602
// Mobilisation calculations
@@ -1598,8 +1606,8 @@ void CountryInstance::_update_military() {
15981606

15991607
// TODO - use country_defines.get_min_mobilize_limit(); (wiki: "lowest maximum of brigades you can mobilize. (by default 3)")
16001608

1601-
mobilisation_max_regiment_count =
1602-
((fixed_point_t::_1 + mobilisation_impact) * fixed_point_t::parse(regiment_count)).floor<size_t>();
1609+
mobilisation_max_regiment_count = regiment_count
1610+
+ fixed_point_t::multiply_truncate(regiment_count, mobilisation_impact);
16031611

16041612
mobilisation_potential_regiment_count = 0; // TODO - calculate max regiments from poor citizens
16051613
if (mobilisation_potential_regiment_count > mobilisation_max_regiment_count) {
@@ -1626,10 +1634,12 @@ void CountryInstance::_update_military() {
16261634
naval_unit_start_experience += get_modifier_effect_value(*modifier_effect_cache.get_naval_unit_start_experience());
16271635

16281636
recruit_time = fixed_point_t::_1 + get_modifier_effect_value(*modifier_effect_cache.get_unit_recruitment_time());
1629-
combat_width = ( //
1630-
fixed_point_t::parse(military_defines.get_base_combat_width()) +
1631-
get_modifier_effect_value(*modifier_effect_cache.get_combat_width_additive())
1632-
).floor<int32_t>();
1637+
combat_width = combat_width_t(
1638+
(
1639+
type_safe::get(military_defines.get_base_combat_width())
1640+
+ get_modifier_effect_value(*modifier_effect_cache.get_combat_width_additive())
1641+
).floor<type_safe::underlying_type<combat_width_t>>()
1642+
);
16331643
dig_in_cap = get_modifier_effect_value(*modifier_effect_cache.get_dig_in_cap()).floor<int32_t>();
16341644
military_tactics = military_defines.get_base_military_tactics() +
16351645
get_modifier_effect_value(*modifier_effect_cache.get_military_tactics());

src/openvic-simulation/country/CountryInstance.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <fmt/base.h>
66

77
#include "openvic-simulation/diplomacy/CountryRelation.hpp"
8+
#include "openvic-simulation/military/CombatWidth.hpp"
89
#include "openvic-simulation/military/UnitBranchedGetterMacro.hpp"
910
#include "openvic-simulation/modifier/ModifierSum.hpp"
1011
#include "openvic-simulation/politics/Rule.hpp"
@@ -100,7 +101,7 @@ namespace OpenVic {
100101
};
101102

102103
// Thresholds for different uncivilised country statuses
103-
static constexpr fixed_point_t PRIMITIVE_CIVILISATION_PROGRESS = fixed_point_t::parse(15) / 100;
104+
static constexpr fixed_point_t PRIMITIVE_CIVILISATION_PROGRESS = fixed_point_t(15) / 100;
104105
static constexpr fixed_point_t UNCIVILISED_CIVILISATION_PROGRESS = fixed_point_t::_0_50;
105106

106107
private:
@@ -382,7 +383,7 @@ namespace OpenVic {
382383
fixed_point_t PROPERTY(land_unit_start_experience);
383384
fixed_point_t PROPERTY(naval_unit_start_experience);
384385
fixed_point_t PROPERTY(recruit_time);
385-
int32_t PROPERTY(combat_width, 1);
386+
combat_width_t PROPERTY(combat_width, combat_width_t(1));
386387
int32_t PROPERTY(dig_in_cap, 0);
387388
fixed_point_t PROPERTY(military_tactics);
388389
OV_IFLATMAP_PROPERTY(RegimentType, technology_unlock_level_t, regiment_type_unlock_levels);

src/openvic-simulation/defines/MilitaryDefines.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#include "MilitaryDefines.hpp"
22

3+
#include <cstdint>
4+
5+
#include "openvic-simulation/military/CombatWidth.hpp"
6+
7+
#include <type_safe/strong_typedef.hpp>
8+
39
using namespace OpenVic;
410
using namespace OpenVic::NodeTools;
511

@@ -14,7 +20,10 @@ node_callback_t MilitaryDefines::expect_defines() {
1420
"DIG_IN_INCREASE_EACH_DAYS", ONE_EXACTLY, expect_days(assign_variable_callback(dig_in_increase_each_days)),
1521
"REINFORCE_SPEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(reinforce_speed)),
1622
"COMBAT_DIFFICULTY_IMPACT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(combat_difficulty_impact)),
17-
"BASE_COMBAT_WIDTH", ONE_EXACTLY, expect_uint(assign_variable_callback(base_combat_width)),
23+
"BASE_COMBAT_WIDTH", ONE_EXACTLY, expect_int<int8_t>([this](int8_t val)->bool{
24+
base_combat_width = combat_width_t(static_cast<type_safe::underlying_type<combat_width_t>>(val));
25+
return true;
26+
}),
1827
"POP_MIN_SIZE_FOR_REGIMENT", ONE_EXACTLY, expect_uint(assign_variable_callback(min_pop_size_for_regiment)),
1928
"POP_SIZE_PER_REGIMENT", ONE_EXACTLY, expect_uint(assign_variable_callback(pop_size_per_regiment)),
2029
"SOLDIER_TO_POP_DAMAGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(soldier_to_pop_damage)),

src/openvic-simulation/defines/MilitaryDefines.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22

33
#include "openvic-simulation/dataloader/NodeTools.hpp"
4+
#include "openvic-simulation/military/CombatWidth.hpp"
45
#include "openvic-simulation/types/Date.hpp"
56
#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
67
#include "openvic-simulation/types/PopSize.hpp"
@@ -16,7 +17,7 @@ namespace OpenVic {
1617
Timespan PROPERTY(dig_in_increase_each_days);
1718
fixed_point_t PROPERTY(reinforce_speed);
1819
fixed_point_t PROPERTY(combat_difficulty_impact);
19-
size_t PROPERTY(base_combat_width, 0);
20+
combat_width_t PROPERTY(base_combat_width, combat_width_t(0));
2021
pop_size_t PROPERTY(min_pop_size_for_regiment, 0);
2122
pop_size_t PROPERTY(pop_size_per_regiment, 0);
2223
fixed_point_t PROPERTY(soldier_to_pop_damage);

src/openvic-simulation/economy/production/ArtisanalProducer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ ProductionType const* ArtisanalProducer::pick_production_type(
541541
}
542542

543543
if (current_score == score_estimate) {
544-
relative_score = fixed_point_t::parse(ranked_artisanal_production_types.size() - i)
544+
relative_score = fixed_point_t(static_cast<int32_t>(ranked_artisanal_production_types.size() - i))
545545
/ static_cast<int32_t>(1 + ranked_artisanal_production_types.size());
546546
}
547547
}

src/openvic-simulation/economy/production/ResourceGatheringOperation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ fixed_point_t ResourceGatheringOperation::produce() {
306306

307307
const fixed_point_t effect_multiplier = job.get_effect_multiplier();
308308
fixed_point_t relative_to_workforce =
309-
fixed_point_t::parse(employees_of_type) / fixed_point_t::parse(max_employee_count_cache);
309+
fixed_point_t(employees_of_type) / fixed_point_t(max_employee_count_cache);
310310
const fixed_point_t amount = job.get_amount();
311311
if (effect_multiplier != fixed_point_t::_1 && relative_to_workforce > amount) {
312312
relative_to_workforce = amount;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#pragma once
2+
3+
#include <cstdint>
4+
5+
#include <fmt/base.h>
6+
#include <fmt/format.h>
7+
8+
#include <type_safe/strong_typedef.hpp>
9+
10+
namespace OpenVic {
11+
struct combat_width_t : type_safe::strong_typedef<combat_width_t, std::int8_t>,
12+
type_safe::strong_typedef_op::equality_comparison<combat_width_t>,
13+
type_safe::strong_typedef_op::relational_comparison<combat_width_t>,
14+
type_safe::strong_typedef_op::integer_arithmetic<combat_width_t>,
15+
type_safe::strong_typedef_op::mixed_addition<combat_width_t, std::uint8_t>,
16+
type_safe::strong_typedef_op::mixed_subtraction<combat_width_t, std::uint8_t> {
17+
using strong_typedef::strong_typedef;
18+
};
19+
}
20+
21+
template<>
22+
struct fmt::formatter<OpenVic::combat_width_t> : fmt::formatter<std::int32_t> {
23+
fmt::format_context::iterator format(OpenVic::combat_width_t const& value, fmt::format_context& ctx) const {
24+
return fmt::formatter<std::int32_t>::format(type_safe::get(value), ctx);
25+
}
26+
};

src/openvic-simulation/population/Pop.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ fixed_point_t Pop::get_unemployment_fraction() const {
7373
if (!type->can_be_unemployed) {
7474
return 0;
7575
}
76-
return fixed_point_t::parse(get_unemployed()) / size;
76+
return fixed_point_t(get_unemployed()) / size;
7777
}
7878

7979
void Pop::setup_pop_test_values(IssueManager const& issue_manager) {
@@ -255,8 +255,8 @@ void Pop::update_gamestate(
255255
) {
256256
max_supported_regiments = 0;
257257
} else {
258-
max_supported_regiments = (fixed_point_t::parse(size) / (
259-
fixed_point_t::parse(military_defines.get_pop_size_per_regiment()) * pop_size_per_regiment_multiplier
258+
max_supported_regiments = (fixed_point_t(size) / (
259+
fixed_point_t(military_defines.get_pop_size_per_regiment()) * pop_size_per_regiment_multiplier
260260
)).floor<size_t>() + 1;
261261
}
262262
}

src/openvic-simulation/population/PopsAggregate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void PopsAggregate::add_pops_aggregate(PopsAggregate& part) {
111111
_yesterdays_import_value_running_total += part.get_yesterdays_import_value_untracked();
112112

113113
// TODO - change casting if pop_size_t changes type
114-
const fixed_point_t part_population = fixed_point_t::parse(part.get_total_population());
114+
const fixed_point_t part_population = fixed_point_t(part.get_total_population());
115115
average_literacy += part.get_average_literacy() * part_population;
116116
average_consciousness += part.get_average_consciousness() * part_population;
117117
average_militancy += part.get_average_militancy() * part_population;

src/openvic-simulation/scripts/ConditionalWeight.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ node_callback_t ConditionalWeight<TYPE>::expect_conditional_weight() {
5151
const auto time_callback = [this](std::string_view key, Timespan (*to_timespan)(Timespan::day_t)) -> auto {
5252
return [this, key, to_timespan](uint32_t value) -> bool {
5353
if (base == 0) {
54-
base = fixed_point_t::parse((*to_timespan)(value).to_int());
54+
base = fixed_point_t::parse_capped((*to_timespan)(value).to_int());
5555
return true;
5656
} else {
5757
spdlog::error_s(

0 commit comments

Comments
 (0)