Skip to content
Draft
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
15 changes: 11 additions & 4 deletions src/openvic-simulation/InstanceManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "openvic-simulation/console/ConsoleInstance.hpp"
#include "openvic-simulation/core/stl/containers/TypedSpan.hpp"
#include "openvic-simulation/misc/GameAction.hpp"
#include "openvic-simulation/types/registries/OwningRegistry_Search.hpp"
#include "openvic-simulation/utility/Logger.hpp"
#include "openvic-simulation/utility/ThreadDeps.hpp"

Expand Down Expand Up @@ -67,8 +68,12 @@ InstanceManager::InstanceManager(
},
new_definition_manager.get_pop_manager().get_pop_types(),
new_definition_manager.get_politics_manager().get_issue_manager().get_reform_groups(),
new_definition_manager.get_military_manager().get_unit_type_manager().get_regiment_types(),
new_definition_manager.get_military_manager().get_unit_type_manager().get_ship_types(),
get_values(
new_definition_manager.get_military_manager().get_unit_type_manager().get_regiment_types()
),
get_values(
new_definition_manager.get_military_manager().get_unit_type_manager().get_ship_types()
),
new_definition_manager.get_pop_manager().get_stratas(),
new_definition_manager.get_research_manager().get_technology_manager().get_technologies(),
new_definition_manager.get_military_manager().get_unit_type_manager()
Expand Down Expand Up @@ -115,7 +120,9 @@ InstanceManager::InstanceManager(
good_instance_manager,
new_definition_manager.get_define_manager().get_pops_defines(),
new_definition_manager.get_pop_manager().get_pop_types(),
new_definition_manager.get_military_manager().get_unit_type_manager().get_regiment_types(),
get_values(
new_definition_manager.get_military_manager().get_unit_type_manager().get_regiment_types()
),
thread_pool
},
unit_instance_manager {
Expand Down Expand Up @@ -244,7 +251,7 @@ bool InstanceManager::setup() {
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()),
country_index_t(definition_manager.get_country_definition_manager().get_country_definitions().size()),
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())
},
Expand Down
32 changes: 8 additions & 24 deletions src/openvic-simulation/console/ConsoleInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
#include "openvic-simulation/DefinitionManager.hpp"
#include "openvic-simulation/InstanceManager.hpp"
#include "openvic-simulation/map/ProvinceInstance.hpp"
#include "openvic-simulation/military/UnitType.hpp"
#include "openvic-simulation/military/Wargoal.hpp"
#include "openvic-simulation/misc/Event.hpp"
#include "openvic-simulation/research/Invention.hpp"
#include "openvic-simulation/research/Technology.hpp"
#include "openvic-simulation/types/Colour.hpp"
#include "openvic-simulation/types/Date.hpp"
#include "openvic-simulation/types/registries/OwningRegistry_Search.hpp"

using namespace OpenVic;
using namespace std::string_view_literals;
Expand Down Expand Up @@ -223,12 +223,16 @@ CountryInstance* ConsoleInstance::validate_country_tag(std::string_view value_st
return nullptr;
}

CountryInstance* country = instance_manager.get_country_instance_manager().get_country_instance_by_identifier(value_string);
CountryDefinition const* const country_definition_ptr = find(
instance_manager.definition_manager.get_country_definition_manager().get_country_definitions(),
value_string
);

if (country == nullptr) {
if (country_definition_ptr == nullptr) {
write_error("Unknown country");
return nullptr;
}
return country;
return &instance_manager.get_country_instance_manager().get_country_instance_by_index(country_definition_ptr->index);
}

Event const* ConsoleInstance::validate_event_id(std::string_view value_string) {
Expand All @@ -249,26 +253,6 @@ Event const* ConsoleInstance::validate_event_id(std::string_view value_string) {
return event;
}

UnitType const* ConsoleInstance::validate_unit(std::string_view value_string) {
if (value_string.empty()) {
write_error("Please specify unit type");
return nullptr;
}

UnitType const* unit_type = //
instance_manager
.definition_manager //
.get_military_manager()
.get_unit_type_manager()
.get_unit_type_by_identifier(value_string);

if (unit_type == nullptr) {
write_error("Unknown unit type");
}

return unit_type;
}

std::string_view ConsoleInstance::validate_filename(std::string_view value_string) {
// TODO: validate filename
return value_string;
Expand Down
1 change: 0 additions & 1 deletion src/openvic-simulation/console/ConsoleInstance.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ namespace OpenVic {
ProvinceInstance* validate_province_number(std::string_view value_string);
CountryInstance* validate_country_tag(std::string_view value_string);
Event const* validate_event_id(std::string_view value_string);
UnitType const* validate_unit(std::string_view value_string);
std::string_view validate_filename(std::string_view value_string);
std::string_view validate_shader_effect(std::string_view value_string);
std::string_view validate_texture_name(std::string_view value_string);
Expand Down
10 changes: 10 additions & 0 deletions src/openvic-simulation/core/template/RangeConcepts.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#pragma once

#include <concepts>
#include <ranges>

namespace OpenVic {
template<typename ValueType, typename RangeType>
concept RangeOfType = std::ranges::input_range<RangeType>
&& std::convertible_to<std::ranges::range_reference_t<RangeType>, ValueType>;
}
9 changes: 4 additions & 5 deletions src/openvic-simulation/country/CountryDefinition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

#include "openvic-simulation/population/Culture.hpp"
#include "openvic-simulation/types/Colour.hpp"
#include "openvic-simulation/types/IdentifierRegistry.hpp"

using namespace OpenVic;

Expand All @@ -13,18 +12,18 @@ CountryDefinition::CountryDefinition(
colour_t new_colour,
index_t new_index,
GraphicalCultureType const& new_graphical_culture,
IdentifierRegistry<CountryParty>&& new_parties,
unit_names_map_t&& new_unit_names,
std::remove_const_t<decltype(parties)>&& new_parties,
decltype(ship_names)&& new_ship_names,
bool new_is_dynamic_tag,
government_colour_map_t&& new_alternative_colours,
decltype(alternative_colours)&& new_alternative_colours,
colour_t new_primary_unit_colour,
colour_t new_secondary_unit_colour,
colour_t new_tertiary_unit_colour
) : HasIdentifierAndColour { new_identifier, new_colour, false },
HasIndex { new_index },
graphical_culture { new_graphical_culture },
parties { std::move(new_parties) },
unit_names { std::move(new_unit_names) },
ship_names { std::move(new_ship_names) },
is_dynamic_tag { new_is_dynamic_tag },
alternative_colours { std::move(new_alternative_colours) },
primary_unit_colour { new_primary_unit_colour },
Expand Down
32 changes: 19 additions & 13 deletions src/openvic-simulation/country/CountryDefinition.hpp
Original file line number Diff line number Diff line change
@@ -1,34 +1,37 @@
#pragma once

#include <cstddef>
#include <string_view>
#include <type_traits>

#include "openvic-simulation/core/memory/FixedVector.hpp"
#include "openvic-simulation/core/memory/String.hpp"
#include "openvic-simulation/core/Typedefs.hpp"
#include "openvic-simulation/country/CountryParty.hpp"
#include "openvic-simulation/types/Colour.hpp"
#include "openvic-simulation/types/HasIdentifier.hpp"
#include "openvic-simulation/types/HasIndex.hpp"
#include "openvic-simulation/types/IdentifierRegistry.hpp"
#include "openvic-simulation/types/OrderedContainers.hpp"
#include "openvic-simulation/types/registries/OwningRegistry.hpp"
#include "openvic-simulation/types/TypedIndices.hpp"

namespace OpenVic {
struct CountryDefinitionManager;
struct GraphicalCultureType;
struct GovernmentType;
struct UnitType;

/* Generic information about a TAG */
struct CountryDefinition : HasIdentifierAndColour, HasIndex<CountryDefinition, country_index_t> {
friend struct CountryDefinitionManager;

using unit_names_map_t = ordered_map<UnitType const*, memory::vector<memory::string>>;
using government_colour_map_t = ordered_map<GovernmentType const*, colour_t>;

private:
/* Not const to allow elements to be moved, otherwise a copy is forced
* which causes a compile error as the copy constructor has been deleted. */
IdentifierRegistry<CountryParty> IDENTIFIER_REGISTRY_CUSTOM_PLURAL(party, parties);
unit_names_map_t PROPERTY(unit_names);
government_colour_map_t PROPERTY(alternative_colours);
memory::FixedVector< // for each ship type
memory::FixedVector< // collection of names
memory::string
>,
ship_type_index_t
> PROPERTY(ship_names);
ordered_map<GovernmentType const*, colour_t> PROPERTY(alternative_colours);
colour_t PROPERTY(primary_unit_colour);
colour_t PROPERTY(secondary_unit_colour);
colour_t PROPERTY(tertiary_unit_colour);
Expand All @@ -37,6 +40,7 @@ namespace OpenVic {

public:
const bool is_dynamic_tag;
const OwningRegistry<CountryParty, std::size_t> parties;
GraphicalCultureType const& graphical_culture;

OV_ALWAYS_INLINE bool is_rebel_country() const {
Expand All @@ -45,11 +49,13 @@ namespace OpenVic {

CountryDefinition(
std::string_view new_identifier, colour_t new_colour, index_t new_index,
GraphicalCultureType const& new_graphical_culture, IdentifierRegistry<CountryParty>&& new_parties,
unit_names_map_t&& new_unit_names, bool new_is_dynamic_tag, government_colour_map_t&& new_alternative_colours,
GraphicalCultureType const& new_graphical_culture,
std::remove_const_t<decltype(parties)>&& new_parties,
decltype(ship_names)&& new_ship_names,
bool new_is_dynamic_tag,
decltype(alternative_colours)&& new_alternative_colours,
colour_t new_primary_unit_colour, colour_t new_secondary_unit_colour, colour_t new_tertiary_unit_colour
);
CountryDefinition(CountryDefinition&&) = default;

// TODO - get_colour including alternative colours
};
Expand Down
Loading
Loading