Skip to content
Open
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
72 changes: 35 additions & 37 deletions src/headless/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -261,44 +261,42 @@ static bool run_headless(fs::path const& root, memory::vector<memory::string>& m
print_memory_usage("Game Session Post-Start");

// TODO - REMOVE TEST CODE
InstanceManager& instance_manager = *game_manager.get_instance_manager();
SPDLOG_INFO("===== Ranking system test... =====");
if (game_manager.get_instance_manager()) {
const auto print_ranking_list = [ //
](std::string_view title, OpenVic::forwardable_span<const std::reference_wrapper<CountryInstance>> countries) -> void {
memory::string countries_str;
for (CountryInstance& country : countries) {
countries_str += fmt::format(
"\n\t{} - Total #{} ({:.1}), Prestige #{} ({:.1}), Industry #{} ({:.1}), Military #{} ({:.1})", //
country, //
country.get_total_rank(), country.total_score.get_untracked(), //
country.get_prestige_rank(), country.get_prestige_untracked(),
country.get_industrial_rank(), country.get_industrial_power_untracked(),
country.get_military_rank(), country.military_power.get_untracked()
);
}
SPDLOG_INFO("{}:{}", title, countries_str);
};

CountryInstanceManager const& country_instance_manager = game_manager.get_instance_manager()->get_country_instance_manager();

OpenVic::forwardable_span<const std::reference_wrapper<CountryInstance>> great_powers = country_instance_manager.get_great_powers();
print_ranking_list("Great Powers", great_powers);
print_ranking_list("Secondary Powers", country_instance_manager.get_secondary_powers());
print_ranking_list("All countries", country_instance_manager.get_total_ranking());

SPDLOG_INFO("===== RGO test... =====");
for (size_t i = 0; i < std::min<size_t>(3, great_powers.size()); ++i) {
CountryInstance const& great_power = great_powers[i];
ProvinceInstance const* const capital_province = great_power.get_capital();
if (capital_province == nullptr) {
spdlog::warn_s("{} has no capital ProvinceInstance set.", great_power);
} else {
print_rgo(*capital_province);
}
const auto print_ranking_list = [](
std::string_view title,
OpenVic::forwardable_span<const std::reference_wrapper<CountryInstance>> countries
) -> void {
memory::string countries_str;
for (CountryInstance& country : countries) {
countries_str += fmt::format(
"\n\t{} - Total #{} ({:.1}), Prestige #{} ({:.1}), Industry #{} ({:.1}), Military #{} ({:.1})", //
country, //
country.get_total_rank(), country.total_score.get_untracked(), //
country.get_prestige_rank(), country.get_prestige_untracked(),
country.get_industrial_rank(), country.get_industrial_power_untracked(),
country.get_military_rank(), country.military_power.get_untracked()
);
}
SPDLOG_INFO("{}:{}", title, countries_str);
};

CountryInstanceManager const& country_instance_manager = game_manager.get_instance_manager()->get_country_instance_manager();

OpenVic::forwardable_span<const std::reference_wrapper<CountryInstance>> great_powers = country_instance_manager.get_great_powers();
print_ranking_list("Great Powers", great_powers);
print_ranking_list("Secondary Powers", country_instance_manager.get_secondary_powers());
print_ranking_list("All countries", country_instance_manager.get_total_ranking());

SPDLOG_INFO("===== RGO test... =====");
for (size_t i = 0; i < std::min<size_t>(3, great_powers.size()); ++i) {
CountryInstance const& great_power = great_powers[i];
ProvinceInstance const* const capital_province = great_power.get_capital();
if (capital_province == nullptr) {
spdlog::warn_s("{} has no capital ProvinceInstance set.", great_power);
} else {
print_rgo(*capital_province);
}
} else {
spdlog::error_s("Instance manager not available!");
ret = false;
}

if (ret) {
Expand All @@ -308,7 +306,7 @@ static bool run_headless(fs::path const& root, memory::vector<memory::string>& m

using test_time_units_t = std::chrono::milliseconds;

MapInstance& map_instance = game_manager.get_instance_manager()->get_map_instance();
MapInstance& map_instance = instance_manager.get_map_instance();

SPDLOG_INFO("===== Land Pathfinding test... =====");
test_duration_t duration = std::chrono::duration_cast<test_time_units_t>( //
Expand Down
17 changes: 8 additions & 9 deletions src/openvic-simulation/DefinitionManager.hpp
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
#pragma once

#include "openvic-simulation/country/CountryDefinition.hpp"
#include "openvic-simulation/country/CountryDefinitionManager.hpp"
#include "openvic-simulation/defines/Define.hpp"
#include "openvic-simulation/diplomacy/DiplomaticAction.hpp"
#include "openvic-simulation/diplomacy/DiplomaticActionManager.hpp"
#include "openvic-simulation/economy/EconomyManager.hpp"
#include "openvic-simulation/history/HistoryManager.hpp"
#include "openvic-simulation/interface/UI.hpp"
#include "openvic-simulation/map/Crime.hpp"
#include "openvic-simulation/map/CrimeManager.hpp"
#include "openvic-simulation/map/MapDefinition.hpp"
#include "openvic-simulation/map/Mapmode.hpp"
#include "openvic-simulation/map/MapmodeManager.hpp"
#include "openvic-simulation/military/MilitaryManager.hpp"
#include "openvic-simulation/misc/Decision.hpp"
#include "openvic-simulation/misc/Event.hpp"
#include "openvic-simulation/misc/SongChance.hpp"
#include "openvic-simulation/misc/SoundEffect.hpp"
#include "openvic-simulation/misc/DecisionManager.hpp"
#include "openvic-simulation/misc/EventManager.hpp"
#include "openvic-simulation/misc/SongChanceManager.hpp"
#include "openvic-simulation/misc/SoundEffectManager.hpp"
#include "openvic-simulation/modifier/ModifierManager.hpp"
#include "openvic-simulation/politics/PoliticsManager.hpp"
#include "openvic-simulation/population/PopManager.hpp"
#include "openvic-simulation/research/ResearchManager.hpp"
#include "openvic-simulation/scripts/ScriptManager.hpp"
#include "openvic-simulation/interface/UI.hpp"

namespace OpenVic {
struct DefinitionManager {
Expand Down
37 changes: 21 additions & 16 deletions src/openvic-simulation/InstanceManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "openvic-simulation/misc/GameAction.hpp"
#include "openvic-simulation/types/TypedSpan.hpp"
#include "openvic-simulation/utility/Logger.hpp"
#include "openvic-simulation/utility/ThreadDeps.hpp"

using namespace OpenVic;

Expand Down Expand Up @@ -168,8 +169,8 @@ void InstanceManager::update_gamestate() {
update_modifier_sums();

// Update gamestate...
map_instance.update_gamestate(*this);
country_instance_manager.update_gamestate(today, map_instance);
map_instance.update_gamestate();
country_instance_manager.update_gamestate_after_map(today);
unit_instance_manager.update_gamestate();

gamestate_updated();
Expand Down Expand Up @@ -234,12 +235,19 @@ bool InstanceManager::setup() {
}

thread_pool.initialise_threadpool(
game_rules_manager,
good_instance_manager,
definition_manager.get_modifier_manager().get_modifier_effect_cache(),
definition_manager.get_define_manager().get_pops_defines(),
definition_manager.get_economy_manager().get_production_type_manager(),
strata_index_t(definition_manager.get_pop_manager().get_strata_count()),
ThreadDeps{
game_rules_manager,
good_instance_manager,
map_instance,
definition_manager.get_define_manager().get_military_defines(),
definition_manager.get_modifier_manager().get_modifier_effect_cache(),
definition_manager.get_define_manager().get_pops_defines(),
definition_manager.get_economy_manager().get_production_type_manager(),
definition_manager.get_modifier_manager().get_static_modifier_cache(),
country_index_t(definition_manager.get_country_definition_manager().get_country_definition_count()),
good_index_t(definition_manager.get_economy_manager().get_good_definition_manager().get_good_definition_count()),
strata_index_t(definition_manager.get_pop_manager().get_strata_count())
},
good_instance_manager.get_good_instances(),
country_instance_manager.get_country_instances(),
map_instance.get_province_instances()
Expand Down Expand Up @@ -305,8 +313,8 @@ bool InstanceManager::load_bookmark(Bookmark const& new_bookmark) {
OV_ERR_FAIL_COND_V_MSG(!all_has_state, false, "At least one land province has no state");

update_modifier_sums();
map_instance.initialise_for_new_game(*this);
country_instance_manager.update_gamestate(today, map_instance);
map_instance.initialise_for_new_game();
country_instance_manager.update_gamestate_after_map(today);
market_instance.execute_orders();

return ret;
Expand Down Expand Up @@ -359,12 +367,9 @@ void InstanceManager::update_modifier_sums() {
// full copy of all the modifiers affecting them in their modifier sum, but provinces only having their directly/locally
// applied modifiers in their modifier sum, hence requiring owner country modifier effect values to be looked up when
// determining the value of a global effect on the province.
country_instance_manager.update_modifier_sums(
today, definition_manager.get_modifier_manager().get_static_modifier_cache()
);
map_instance.update_modifier_sums(
today, definition_manager.get_modifier_manager().get_static_modifier_cache()
);
country_instance_manager.update_modifier_sums_before_map();
map_instance.update_modifier_sums(today);
country_instance_manager.update_modifier_sums_after_map();
}

bool InstanceManager::queue_game_action(game_action_t&& game_action) {
Expand Down
4 changes: 2 additions & 2 deletions src/openvic-simulation/InstanceManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@
#include "openvic-simulation/country/CountryInstanceDeps.hpp"
#include "openvic-simulation/country/CountryInstanceManager.hpp"
#include "openvic-simulation/diplomacy/CountryRelation.hpp"
#include "openvic-simulation/economy/GoodInstance.hpp"
#include "openvic-simulation/economy/GoodInstanceManager.hpp"
#include "openvic-simulation/economy/production/ArtisanalProducerDeps.hpp"
#include "openvic-simulation/economy/production/ResourceGatheringOperationDeps.hpp"
#include "openvic-simulation/economy/trading/MarketInstance.hpp"
#include "openvic-simulation/map/MapInstance.hpp"
#include "openvic-simulation/map/Mapmode.hpp"
#include "openvic-simulation/map/ProvinceInstanceDeps.hpp"
#include "openvic-simulation/military/UnitInstanceGroup.hpp"
#include "openvic-simulation/military/UnitInstanceManager.hpp"
#include "openvic-simulation/misc/GameAction.hpp"
#include "openvic-simulation/misc/SimulationClock.hpp"
#include "openvic-simulation/politics/PoliticsInstanceManager.hpp"
Expand Down
Loading
Loading