aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/history/ProvinceHistory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/history/ProvinceHistory.hpp')
-rw-r--r--src/openvic-simulation/history/ProvinceHistory.hpp139
1 files changed, 64 insertions, 75 deletions
diff --git a/src/openvic-simulation/history/ProvinceHistory.hpp b/src/openvic-simulation/history/ProvinceHistory.hpp
index 0304b2a..00ce212 100644
--- a/src/openvic-simulation/history/ProvinceHistory.hpp
+++ b/src/openvic-simulation/history/ProvinceHistory.hpp
@@ -1,96 +1,85 @@
#pragma once
+#include <bitset>
#include <map>
#include <vector>
-#include <bitset>
-#include "openvic-simulation/map/Province.hpp"
-#include "openvic-simulation/map/TerrainType.hpp"
#include "openvic-simulation/country/Country.hpp"
-#include "openvic-simulation/economy/Good.hpp"
#include "openvic-simulation/economy/Building.hpp"
+#include "openvic-simulation/economy/Good.hpp"
#include "openvic-simulation/history/Bookmark.hpp"
+#include "openvic-simulation/map/Province.hpp"
+#include "openvic-simulation/map/TerrainType.hpp"
namespace OpenVic {
- struct ProvinceHistoryManager;
+ struct ProvinceHistoryManager;
+
+ struct ProvinceHistory {
+ friend struct ProvinceHistoryManager;
- struct ProvinceHistory {
- friend struct ProvinceHistoryManager;
+ private:
+ Country const* owner;
+ Country const* controller;
+ uint8_t colonial;
+ bool slave;
+ std::vector<Country const*> cores; // non-standard, maintains cores between entries
+ Good const* rgo;
+ uint8_t life_rating;
+ TerrainType const* terrain_type;
+ std::map<Building const*, uint8_t> buildings;
+ std::map<Ideology const*, uint8_t> party_loyalties;
- private:
- Country const* owner;
- Country const* controller;
- uint8_t colonial;
- bool slave;
- std::vector<Country const*> cores; // non-standard, maintains cores between entries
- Good const* rgo;
- uint8_t life_rating;
- TerrainType const* terrain_type;
- std::map<Building const*, uint8_t> buildings;
- std::map<Ideology const*, uint8_t> party_loyalties;
+ ProvinceHistory(
+ Country const* new_owner, Country const* new_controller, uint8_t new_colonial, bool new_slave,
+ std::vector<Country const*>&& new_cores, Good const* new_rgo, uint8_t new_life_rating,
+ TerrainType const* new_terrain_type, std::map<Building const*, uint8_t>&& new_buildings,
+ std::map<Ideology const*, uint8_t>&& new_party_loyalties
+ );
- ProvinceHistory(
- Country const* new_owner,
- Country const* new_controller,
- uint8_t new_colonial,
- bool new_slave,
- std::vector<Country const*>&& new_cores,
- Good const* new_rgo,
- uint8_t new_life_rating,
- TerrainType const* new_terrain_type,
- std::map<Building const*, uint8_t>&& new_buildings,
- std::map<Ideology const*, uint8_t>&& new_party_loyalties
- );
+ public:
+ Country const* get_owner() const;
+ Country const* get_controller() const;
+ uint8_t get_colony_status() const; // 0 = state, 1 = protectorate, 2 = colony
+ bool is_slave() const;
+ std::vector<Country const*> const& get_cores() const;
+ bool is_core_of(Country const* country) const;
+ Good const* get_rgo() const;
+ uint8_t get_life_rating() const;
+ TerrainType const* get_terrain_type() const;
+ std::map<Building const*, uint8_t> const& get_buildings() const;
+ std::map<Ideology const*, uint8_t> const& get_party_loyalties() const;
+ };
- public:
- Country const* get_owner() const;
- Country const* get_controller() const;
- uint8_t get_colony_status() const; // 0 = state, 1 = protectorate, 2 = colony
- bool is_slave() const;
- const std::vector<Country const*>& get_cores() const;
- bool is_core_of(Country const* country) const;
- Good const* get_rgo() const;
- uint8_t get_life_rating() const;
- TerrainType const* get_terrain_type() const;
- const std::map<Building const*, uint8_t>& get_buildings() const;
- const std::map<Ideology const*, uint8_t>& get_party_loyalties() const;
- };
+ struct ProvinceHistoryManager {
+ private:
+ std::map<Province const*, std::map<Date, ProvinceHistory>> province_histories;
+ bool locked = false;
- struct ProvinceHistoryManager {
- private:
- std::map<Province const*, std::map<Date, ProvinceHistory>> province_histories;
- bool locked = false;
+ inline bool _load_province_history_entry(
+ GameManager& game_manager, std::string_view province, Date const& date, ast::NodeCPtr root
+ );
- inline bool _load_province_history_entry(GameManager& game_manager, std::string_view province, Date const& date, ast::NodeCPtr root);
-
- public:
- ProvinceHistoryManager() {}
+ public:
+ ProvinceHistoryManager() {}
- bool add_province_history_entry(
- Province const* province,
- Date date,
- Country const* owner,
- Country const* controller,
- uint8_t colonial,
- bool slave,
- std::vector<Country const*>&& cores, // additive to existing entries
- std::vector<Country const*>&& remove_cores, // existing cores that need to be removed
- Good const* rgo,
- uint8_t life_rating,
- TerrainType const* terrain_type,
- std::map<Building const*, uint8_t>&& buildings,
- std::map<Ideology const*, uint8_t>&& party_loyalties,
- std::bitset<5> updates // bitmap of updated non-pointer values, top to bottom
- );
+ bool add_province_history_entry(
+ Province const* province, Date date, Country const* owner, Country const* controller, uint8_t colonial, bool slave,
+ std::vector<Country const*>&& cores, // additive to existing entries
+ std::vector<Country const*>&& remove_cores, // existing cores that need to be removed
+ Good const* rgo, uint8_t life_rating, TerrainType const* terrain_type,
+ std::map<Building const*, uint8_t>&& buildings, std::map<Ideology const*, uint8_t>&& party_loyalties,
+ std::bitset<5> updates // bitmap of updated non-pointer values, top to bottom
+ );
- void lock_province_histories();
- bool is_locked() const;
+ void lock_province_histories();
+ bool is_locked() const;
- /* Returns history of province at date, if date doesn't have an entry returns closest entry before date. Return can be nullptr if an error occurs. */
- ProvinceHistory const* get_province_history(Province const* province, Date entry) const;
- /* Returns history of province at bookmark date. Return can be nullptr if an error occurs. */
- inline ProvinceHistory const* get_province_history(Province const* province, Bookmark const* bookmark) const;
+ /* Returns history of province at date, if date doesn't have an entry returns closest entry before date.
+ * Return can be nullptr if an error occurs. */
+ ProvinceHistory const* get_province_history(Province const* province, Date entry) const;
+ /* Returns history of province at bookmark date. Return can be nullptr if an error occurs. */
+ inline ProvinceHistory const* get_province_history(Province const* province, Bookmark const* bookmark) const;
- bool load_province_history_file(GameManager& game_manager, std::string_view name, ast::NodeCPtr root);
- };
+ bool load_province_history_file(GameManager& game_manager, std::string_view name, ast::NodeCPtr root);
+ };
} // namespace OpenVic