Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions src/openvic-simulation/country/CountryInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include "openvic-simulation/politics/NationalValue.hpp"
#include "openvic-simulation/politics/PartyPolicy.hpp"
#include "openvic-simulation/politics/Reform.hpp"
#include "openvic-simulation/politics/RuleSet.hpp"
#include "openvic-simulation/population/Culture.hpp"
#include "openvic-simulation/population/Pop.hpp"
#include "openvic-simulation/population/PopType.hpp"
Expand Down Expand Up @@ -1681,23 +1682,23 @@ void CountryInstance::_update_military() {
}

bool CountryInstance::update_rule_set() {
rule_set.clear();
rule_set = {};
CountryParty const* ruling_party_copy = ruling_party.get_untracked();
if (ruling_party_copy != nullptr) {
for (PartyPolicy const* party_policy : ruling_party_copy->get_policies().get_values()) {
if (party_policy != nullptr) {
rule_set |= party_policy->get_rules();
rule_set.add_ruleset(party_policy->get_rules());
}
}
}

for (Reform const* reform : reforms.get_values()) {
if (reform != nullptr) {
rule_set |= reform->get_rules();
rule_set.add_ruleset(reform->get_rules());
}
}

return rule_set.trim_and_resolve_conflicts(true);
return true;
}

static constexpr Modifier const& get_country_status_static_effect(
Expand Down
2 changes: 1 addition & 1 deletion src/openvic-simulation/country/CountryInstance.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "openvic-simulation/military/CombatWidth.hpp"
#include "openvic-simulation/military/UnitBranchedGetterMacro.hpp"
#include "openvic-simulation/modifier/ModifierSum.hpp"
#include "openvic-simulation/politics/Rule.hpp"
#include "openvic-simulation/politics/RuleSet.hpp"
#include "openvic-simulation/population/PopsAggregate.hpp"
#include "openvic-simulation/types/ClampedValue.hpp"
#include "openvic-simulation/types/Date.hpp"
Expand Down
6 changes: 0 additions & 6 deletions src/openvic-simulation/dataloader/Dataloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1054,12 +1054,6 @@ bool Dataloader::load_defines(
ret = false;
}
definition_manager.get_modifier_manager().lock_base_country_modifier_effects();
if (!definition_manager.get_politics_manager().get_rule_manager().setup_rules(
definition_manager.get_economy_manager().get_building_type_manager()
)) {
spdlog::critical_s("Failed to set up rules!");
ret = false;
}
if (!definition_manager.get_politics_manager().load_issues_file(
definition_manager.get_modifier_manager(),
parse_defines_cached(lookup_file(issues_file)).get_file_node()
Expand Down
2 changes: 1 addition & 1 deletion src/openvic-simulation/politics/BaseIssue.hpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once

#include "openvic-simulation/modifier/Modifier.hpp"
#include "openvic-simulation/politics/Rule.hpp"
#include "openvic-simulation/politics/RuleSet.hpp"
#include "openvic-simulation/types/HasIdentifier.hpp"

namespace OpenVic {
Expand Down
24 changes: 12 additions & 12 deletions src/openvic-simulation/politics/IssueManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ static constexpr colour_t create_issue_reform_colour(size_t index) {
}

bool IssueManager::_load_party_policy(
ModifierManager const& modifier_manager, RuleManager const& rule_manager, std::string_view identifier,
ModifierManager const& modifier_manager, std::string_view identifier,
PartyPolicyGroup& party_policy_group, ast::NodeCPtr node
) {
spdlog::scope scope { fmt::format("party policy {}", identifier) };
Expand All @@ -176,7 +176,7 @@ bool IssueManager::_load_party_policy(
bool ret = NodeTools::expect_dictionary_keys_and_default(
modifier_manager.expect_base_country_modifier(values),
"is_jingoism", ZERO_OR_ONE, expect_bool(assign_variable_callback(is_jingoism)),
"rules", ZERO_OR_ONE, rule_manager.expect_rule_set(move_variable_callback(rules)),
"rules", ZERO_OR_ONE, RuleSet::expect_rule_set(move_variable_callback(rules)),
"war_exhaustion_effect", ZERO_OR_ONE, [](const ast::NodeCPtr _) -> bool {
spdlog::warn_s("war_exhaustion_effect does nothing (vanilla issues have it).");
return true;
Expand Down Expand Up @@ -209,7 +209,7 @@ bool IssueManager::_load_reform_group(
}

bool IssueManager::_load_reform(
ModifierManager const& modifier_manager, RuleManager const& rule_manager, size_t ordinal, std::string_view identifier,
ModifierManager const& modifier_manager, size_t ordinal, std::string_view identifier,
ReformGroup& reform_group, ast::NodeCPtr node
) {
spdlog::scope scope { fmt::format("reform {}", identifier) };
Expand All @@ -228,7 +228,7 @@ bool IssueManager::_load_reform(
"administrative_multiplier", ZERO_OR_ONE, expect_fixed_point(assign_variable_callback(administrative_multiplier)),
"technology_cost", ZERO_OR_ONE, expect_uint(assign_variable_callback(technology_cost)),
"allow", ZERO_OR_MORE, allow.expect_script(),
"rules", ZERO_OR_ONE, rule_manager.expect_rule_set(move_variable_callback(rules)),
"rules", ZERO_OR_ONE, RuleSet::expect_rule_set(move_variable_callback(rules)),
"on_execute", ZERO_OR_ONE, expect_dictionary_keys(
"trigger", ZERO_OR_ONE, on_execute_trigger.expect_script(),
"effect", ONE_EXACTLY, on_execute_effect.expect_script()
Expand All @@ -254,7 +254,7 @@ bool IssueManager::_load_reform(
* POL-113, POL-114, POL-115, POL-116
*/
bool IssueManager::load_issues_file(
ModifierManager const& modifier_manager, RuleManager const& rule_manager, ast::NodeCPtr root
ModifierManager const& modifier_manager, ast::NodeCPtr root
) {
spdlog::scope scope { "common/issues.txt" };
bool party_issues_found = false;
Expand Down Expand Up @@ -337,7 +337,7 @@ bool IssueManager::load_issues_file(

/* Load issues and reforms. */
ret &= expect_dictionary(
[this, &party_issues_found, &modifier_manager, &rule_manager](
[this, &party_issues_found, &modifier_manager](
std::string_view type_key, ast::NodeCPtr type_value
) -> bool {
if (type_key == "party_issues") {
Expand All @@ -346,7 +346,7 @@ bool IssueManager::load_issues_file(
}
party_issues_found = true;

return expect_dictionary([this, &modifier_manager, &rule_manager](
return expect_dictionary([this, &modifier_manager](
std::string_view group_key, ast::NodeCPtr group_value
) -> bool {
PartyPolicyGroup* party_policy_group = party_policy_groups.get_item_by_identifier(group_key);
Expand All @@ -356,14 +356,14 @@ bool IssueManager::load_issues_file(
return false;
}

return expect_dictionary([this, &modifier_manager, &rule_manager, party_policy_group](
return expect_dictionary([this, &modifier_manager, party_policy_group](
std::string_view key, ast::NodeCPtr value
) -> bool {
return _load_party_policy(modifier_manager, rule_manager, key, *party_policy_group, value);
return _load_party_policy(modifier_manager, key, *party_policy_group, value);
})(group_value);
})(type_value);
} else {
return expect_dictionary([this, &party_issues_found, &modifier_manager, &rule_manager](
return expect_dictionary([this, &party_issues_found, &modifier_manager](
std::string_view group_key, ast::NodeCPtr group_value
) -> bool {
ReformGroup* reform_group = reform_groups.get_item_by_identifier(group_key);
Expand All @@ -375,14 +375,14 @@ bool IssueManager::load_issues_file(

size_t ordinal = 0;

return expect_dictionary([this, &modifier_manager, &rule_manager, reform_group, &ordinal](
return expect_dictionary([this, &modifier_manager, reform_group, &ordinal](
std::string_view key, ast::NodeCPtr value
) -> bool {
if (key == "next_step_only" || key == "administrative") {
return true;
}

return _load_reform(modifier_manager, rule_manager, ordinal++, key, *reform_group, value);
return _load_reform(modifier_manager, ordinal++, key, *reform_group, value);
})(group_value);
})(type_value);
}
Expand Down
9 changes: 4 additions & 5 deletions src/openvic-simulation/politics/IssueManager.hpp
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
#pragma once

#include "openvic-simulation/politics/BaseIssue.hpp"
#include "openvic-simulation/politics/PartyPolicy.hpp"
#include "openvic-simulation/politics/Reform.hpp"
#include "openvic-simulation/types/IdentifierRegistry.hpp"
#include "BaseIssue.hpp"

namespace OpenVic {
struct ConditionScript;
struct EffectScript;
struct ModifierManager;
struct RuleManager;

struct IssueManager {
private:
Expand All @@ -21,14 +20,14 @@ namespace OpenVic {

bool _load_party_policy_group(size_t& expected_party_policies, std::string_view identifier, ast::NodeCPtr node);
bool _load_party_policy(
ModifierManager const& modifier_manager, RuleManager const& rule_manager, std::string_view identifier,
ModifierManager const& modifier_manager, std::string_view identifier,
PartyPolicyGroup& party_policy_group, ast::NodeCPtr node
);
bool _load_reform_group(
size_t& expected_reforms, std::string_view identifier, ReformType& reform_type, ast::NodeCPtr node
);
bool _load_reform(
ModifierManager const& modifier_manager, RuleManager const& rule_manager, size_t ordinal,
ModifierManager const& modifier_manager, size_t ordinal,
std::string_view identifier, ReformGroup& reform_group, ast::NodeCPtr node
);

Expand Down Expand Up @@ -84,7 +83,7 @@ namespace OpenVic {
size_t ordinal, fixed_point_t administrative_multiplier, RuleSet&& rules, Reform::tech_cost_t technology_cost,
ConditionScript&& allow, ConditionScript&& on_execute_trigger, EffectScript&& on_execute_effect
);
bool load_issues_file(ModifierManager const& modifier_manager, RuleManager const& rule_manager, ast::NodeCPtr root);
bool load_issues_file(ModifierManager const& modifier_manager, ast::NodeCPtr root);

bool parse_scripts(DefinitionManager const& definition_manager);
};
Expand Down
4 changes: 1 addition & 3 deletions src/openvic-simulation/politics/PoliticsManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@
#include "openvic-simulation/politics/NationalFocus.hpp"
#include "openvic-simulation/politics/NationalValue.hpp"
#include "openvic-simulation/politics/Rebel.hpp"
#include "openvic-simulation/politics/Rule.hpp"

namespace OpenVic {
struct PoliticsManager {
private:
GovernmentTypeManager PROPERTY_REF(government_type_manager);
IdeologyManager PROPERTY_REF(ideology_manager);
RuleManager PROPERTY_REF(rule_manager);
IssueManager PROPERTY_REF(issue_manager);
NationalValueManager PROPERTY_REF(national_value_manager);
NationalFocusManager PROPERTY_REF(national_focus_manager);
Expand All @@ -35,7 +33,7 @@ namespace OpenVic {
return rebel_manager.load_rebels_file(ideology_manager, government_type_manager, root);
}
inline bool load_issues_file(ModifierManager const& modifier_manager, ast::NodeCPtr root) {
return issue_manager.load_issues_file(modifier_manager, rule_manager, root);
return issue_manager.load_issues_file(modifier_manager, root);
}
};
}
Loading