aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/history
diff options
context:
space:
mode:
author Hop311 <Hop3114@gmail.com>2023-11-17 10:19:53 +0100
committer GitHub <noreply@github.com>2023-11-17 10:19:53 +0100
commite76336cd92639f4ec71088fc4c80aea4c25528cd (patch)
treeeeed419a7d97ecb58adf63a17eb9184db3e5ed7a /src/openvic-simulation/history
parenta00b558a53edb40c9e6789790036f0b618e80ec1 (diff)
parent886b8b8f396438fc2b7da7d2508f2064d14150a8 (diff)
Merge pull request #75 from OpenVicProject/accumulated-changes
Accumulated changes
Diffstat (limited to 'src/openvic-simulation/history')
-rw-r--r--src/openvic-simulation/history/CountryHistory.hpp2
-rw-r--r--src/openvic-simulation/history/HistoryManager.hpp4
-rw-r--r--src/openvic-simulation/history/HistoryMap.hpp15
-rw-r--r--src/openvic-simulation/history/ProvinceHistory.cpp16
-rw-r--r--src/openvic-simulation/history/ProvinceHistory.hpp9
5 files changed, 22 insertions, 24 deletions
diff --git a/src/openvic-simulation/history/CountryHistory.hpp b/src/openvic-simulation/history/CountryHistory.hpp
index ffb44c0..ed200bf 100644
--- a/src/openvic-simulation/history/CountryHistory.hpp
+++ b/src/openvic-simulation/history/CountryHistory.hpp
@@ -31,7 +31,7 @@ namespace OpenVic {
std::optional<Religion const*> PROPERTY(religion);
std::optional<CountryParty const*> PROPERTY(ruling_party);
std::optional<Date> PROPERTY(last_election);
- decimal_map_t<Ideology const*> PROPERTY(upper_house);
+ fixed_point_map_t<Ideology const*> PROPERTY(upper_house);
std::optional<Province const*> PROPERTY(capital);
std::optional<GovernmentType const*> PROPERTY(government_type);
std::optional<fixed_point_t> PROPERTY(plurality);
diff --git a/src/openvic-simulation/history/HistoryManager.hpp b/src/openvic-simulation/history/HistoryManager.hpp
index ec6d1c5..a7fc668 100644
--- a/src/openvic-simulation/history/HistoryManager.hpp
+++ b/src/openvic-simulation/history/HistoryManager.hpp
@@ -19,9 +19,5 @@ namespace OpenVic {
REF_GETTERS(country_manager)
REF_GETTERS(province_manager)
REF_GETTERS(diplomacy_manager)
-
- inline bool load_bookmark_file(ast::NodeCPtr root) {
- return bookmark_manager.load_bookmark_file(root);
- }
};
}
diff --git a/src/openvic-simulation/history/HistoryMap.hpp b/src/openvic-simulation/history/HistoryMap.hpp
index 64d886d..07f54f0 100644
--- a/src/openvic-simulation/history/HistoryMap.hpp
+++ b/src/openvic-simulation/history/HistoryMap.hpp
@@ -30,6 +30,11 @@ namespace OpenVic {
std::map<Date, std::unique_ptr<entry_type>> PROPERTY(entries);
bool _try_load_history_entry(GameManager const& game_manager, Args... args, Date date, ast::NodeCPtr root) {
+ const Date end_date = _get_end_date(game_manager);
+ if (date > end_date) {
+ Logger::error("History entry ", date, " defined after end date ", end_date);
+ return false;
+ }
typename decltype(entries)::iterator it = entries.find(date);
if (it == entries.end()) {
const std::pair<typename decltype(entries)::iterator, bool> result = entries.emplace(date, _make_entry(date));
@@ -64,14 +69,12 @@ namespace OpenVic {
bool is_date = false;
const Date sub_date { Date::from_string(key, &is_date, true) };
if (is_date) {
- if (sub_date <= date) {
+ if (sub_date < date) {
Logger::error("History entry ", sub_date, " defined before parent entry date ", date);
return false;
}
- const Date end_date = _get_end_date(game_manager);
- if (sub_date > end_date) {
- Logger::error("History entry ", sub_date, " defined after end date ", end_date);
- return false;
+ if (sub_date == date) {
+ Logger::warning("History entry ", sub_date, " defined with same date as parent entry");
}
if (_try_load_history_entry(game_manager, args..., sub_date, value)) {
return true;
@@ -94,7 +97,7 @@ namespace OpenVic {
return nullptr;
}
/* Returns history entries up to date as an ordered list of entries. */
- std::vector<entry_type const*> get_entries(Date end) const {
+ std::vector<entry_type const*> get_entries_up_to(Date end) const {
std::vector<entry_type const*> ret;
for (typename decltype(entries)::value_type const& entry : entries) {
if (entry.first <= end) {
diff --git a/src/openvic-simulation/history/ProvinceHistory.cpp b/src/openvic-simulation/history/ProvinceHistory.cpp
index 141d256..991dfee 100644
--- a/src/openvic-simulation/history/ProvinceHistory.cpp
+++ b/src/openvic-simulation/history/ProvinceHistory.cpp
@@ -33,10 +33,10 @@ bool ProvinceHistoryMap::_load_history_entry(
[this, &game_manager, &building_manager, &entry](
std::string_view key, ast::NodeCPtr value) -> bool {
// used for province buildings like forts or railroads
- Building const* building = building_manager.get_building_by_identifier(key);
- if (building != nullptr) {
- return expect_uint<Building::level_t>([&entry, building](Building::level_t level) -> bool {
- entry.buildings[building] = level;
+ BuildingType const* building_type = building_manager.get_building_type_by_identifier(key);
+ if (building_type != nullptr) {
+ return expect_uint<BuildingType::level_t>([&entry, building_type](BuildingType::level_t level) -> bool {
+ entry.province_buildings[building_type] = level;
return true;
})(value);
}
@@ -83,17 +83,17 @@ bool ProvinceHistoryMap::_load_history_entry(
return ret;
},
"state_building", ZERO_OR_MORE, [&building_manager, &entry](ast::NodeCPtr node) -> bool {
- Building const* building = nullptr;
+ BuildingType const* building_type = nullptr;
uint8_t level = 0;
const bool ret = expect_dictionary_keys(
"level", ONE_EXACTLY, expect_uint(assign_variable_callback(level)),
- "building", ONE_EXACTLY, building_manager.expect_building_identifier(
- assign_variable_callback_pointer(building)
+ "building", ONE_EXACTLY, building_manager.expect_building_type_identifier(
+ assign_variable_callback_pointer(building_type)
),
"upgrade", ZERO_OR_ONE, success_callback // doesn't appear to have an effect
)(node);
- entry.buildings[building] = level;
+ entry.state_buildings[building_type] = level;
return ret;
}
)(root);
diff --git a/src/openvic-simulation/history/ProvinceHistory.hpp b/src/openvic-simulation/history/ProvinceHistory.hpp
index 5a18723..e4adc08 100644
--- a/src/openvic-simulation/history/ProvinceHistory.hpp
+++ b/src/openvic-simulation/history/ProvinceHistory.hpp
@@ -5,7 +5,7 @@
#include <vector>
#include "openvic-simulation/country/Country.hpp"
-#include "openvic-simulation/economy/Building.hpp"
+#include "openvic-simulation/economy/BuildingType.hpp"
#include "openvic-simulation/economy/Good.hpp"
#include "openvic-simulation/history/Bookmark.hpp"
#include "openvic-simulation/history/HistoryMap.hpp"
@@ -18,8 +18,6 @@ namespace OpenVic {
struct ProvinceHistoryEntry : HistoryEntry {
friend struct ProvinceHistoryMap;
- using building_level_map_t = std::map<Building const*, Building::level_t>;
-
private:
Province const& PROPERTY(province);
@@ -32,8 +30,9 @@ namespace OpenVic {
std::optional<Good const*> PROPERTY(rgo);
std::optional<Province::life_rating_t> PROPERTY(life_rating);
std::optional<TerrainType const*> PROPERTY(terrain_type);
- building_level_map_t PROPERTY(buildings);
- decimal_map_t<Ideology const*> PROPERTY(party_loyalties);
+ std::map<BuildingType const*, BuildingType::level_t> PROPERTY(province_buildings);
+ std::map<BuildingType const*, BuildingType::level_t> PROPERTY(state_buildings);
+ fixed_point_map_t<Ideology const*> PROPERTY(party_loyalties);
ProvinceHistoryEntry(Province const& new_province, Date new_date);
};