aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/map
diff options
context:
space:
mode:
author hop311 <hop3114@gmail.com>2024-06-08 01:17:25 +0200
committer hop311 <hop3114@gmail.com>2024-06-08 01:17:25 +0200
commitc0ba822ee46551a40ad6b43e8f56b80e27ae35b5 (patch)
treeebc9c03b5bd0a6b11068ac37aca302f6ceb24a18 /src/openvic-simulation/map
parent1198a780916e65cae048dd3478f614c1d18db846 (diff)
Add GoodInstancegood-instance
Diffstat (limited to 'src/openvic-simulation/map')
-rw-r--r--src/openvic-simulation/map/Mapmode.cpp10
-rw-r--r--src/openvic-simulation/map/ProvinceInstance.cpp26
-rw-r--r--src/openvic-simulation/map/ProvinceInstance.hpp6
3 files changed, 31 insertions, 11 deletions
diff --git a/src/openvic-simulation/map/Mapmode.cpp b/src/openvic-simulation/map/Mapmode.cpp
index 6f8e606..410ea2b 100644
--- a/src/openvic-simulation/map/Mapmode.cpp
+++ b/src/openvic-simulation/map/Mapmode.cpp
@@ -142,8 +142,8 @@ static constexpr auto shaded_mapmode(fixed_point_map_t<T const*> const&(Province
bool MapmodeManager::setup_mapmodes() {
bool ret = true;
- using mapmode_t = std::pair<std::string, Mapmode::colour_func_t>;
- const std::vector<mapmode_t> mapmodes {
+ using mapmode_definition_t = std::pair<std::string, Mapmode::colour_func_t>;
+ const std::vector<mapmode_definition_t> mapmode_definitions {
{
"mapmode_terrain",
[](MapInstance const&, ProvinceInstance const& province) -> Mapmode::base_stripe_t {
@@ -284,9 +284,13 @@ bool MapmodeManager::setup_mapmodes() {
}
};
- for (mapmode_t const& mapmode : mapmodes) {
+ mapmodes.reset();
+ reserve_mapmodes(mapmode_definitions.size());
+
+ for (mapmode_definition_t const& mapmode : mapmode_definitions) {
ret &= add_mapmode(mapmode.first, mapmode.second);
}
+
lock_mapmodes();
return ret;
diff --git a/src/openvic-simulation/map/ProvinceInstance.cpp b/src/openvic-simulation/map/ProvinceInstance.cpp
index ba52280..be77d6e 100644
--- a/src/openvic-simulation/map/ProvinceInstance.cpp
+++ b/src/openvic-simulation/map/ProvinceInstance.cpp
@@ -8,11 +8,27 @@
using namespace OpenVic;
ProvinceInstance::ProvinceInstance(ProvinceDefinition const& new_province_definition)
- : HasIdentifier { new_province_definition.get_identifier() }, province_definition { new_province_definition },
- terrain_type { nullptr }, life_rating { 0 }, colony_status { colony_status_t::STATE }, state { nullptr },
- owner { nullptr }, controller { nullptr }, cores {}, slave { false }, crime { nullptr }, rgo { nullptr },
- buildings { "buildings", false }, armies {}, navies {}, pops {}, total_population { 0 }, pop_type_distribution {},
- ideology_distribution {}, culture_distribution {}, religion_distribution {} {}
+ : HasIdentifierAndColour { new_province_definition },
+ province_definition { new_province_definition },
+ terrain_type { nullptr },
+ life_rating { 0 },
+ colony_status { colony_status_t::STATE },
+ state { nullptr },
+ owner { nullptr },
+ controller { nullptr },
+ cores {},
+ slave { false },
+ crime { nullptr },
+ rgo { nullptr },
+ buildings { "buildings", false },
+ armies {},
+ navies {},
+ pops {},
+ total_population { 0 },
+ pop_type_distribution {},
+ ideology_distribution {},
+ culture_distribution {},
+ religion_distribution {} {}
bool ProvinceInstance::expand_building(size_t building_index) {
BuildingInstance* building = buildings.get_item_by_index(building_index);
diff --git a/src/openvic-simulation/map/ProvinceInstance.hpp b/src/openvic-simulation/map/ProvinceInstance.hpp
index 3292575..beae0eb 100644
--- a/src/openvic-simulation/map/ProvinceInstance.hpp
+++ b/src/openvic-simulation/map/ProvinceInstance.hpp
@@ -13,7 +13,7 @@ namespace OpenVic {
struct State;
struct Country;
struct Crime;
- struct Good;
+ struct GoodDefinition;
struct ArmyInstance;
struct NavyInstance;
struct Ideology;
@@ -24,7 +24,7 @@ namespace OpenVic {
struct IdeologyManager;
struct IssueManager;
- struct ProvinceInstance : HasIdentifier {
+ struct ProvinceInstance : HasIdentifierAndColour {
friend struct MapInstance;
using life_rating_t = int8_t;
@@ -44,7 +44,7 @@ namespace OpenVic {
bool PROPERTY(slave);
Crime const* PROPERTY_RW(crime);
// TODO - change this into a factory-like structure
- Good const* PROPERTY(rgo);
+ GoodDefinition const* PROPERTY(rgo);
IdentifierRegistry<BuildingInstance> IDENTIFIER_REGISTRY(building);
ordered_set<ArmyInstance*> PROPERTY(armies);
ordered_set<NavyInstance*> PROPERTY(navies);