aboutsummaryrefslogtreecommitdiff
path: root/src/openvic/GameManager.hpp
diff options
context:
space:
mode:
author Hop311 <hop3114@gmail.com>2023-05-16 20:59:39 +0200
committer Hop311 <hop3114@gmail.com>2023-05-16 20:59:39 +0200
commit42d9d1d5417deb5979a9d5775cfe97dcff4b77ba (patch)
tree440634772615531e704a5554aa59c9890cd9cd85 /src/openvic/GameManager.hpp
parent339e0278a2064f7eeb152fe8c5778840b609e9f3 (diff)
Changed from OpenVic2 to OpenVic
Diffstat (limited to 'src/openvic/GameManager.hpp')
-rw-r--r--src/openvic/GameManager.hpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/openvic/GameManager.hpp b/src/openvic/GameManager.hpp
new file mode 100644
index 0000000..e1a9e9b
--- /dev/null
+++ b/src/openvic/GameManager.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include "GameAdvancementHook.hpp"
+#include "map/Map.hpp"
+#include "economy/Good.hpp"
+
+namespace OpenVic {
+ struct GameManager {
+ using state_updated_func_t = std::function<void()>;
+
+ Map map;
+ BuildingManager building_manager;
+ GoodManager good_manager;
+ GameAdvancementHook clock;
+ private:
+ time_t session_start; /* SS-54, as well as allowing time-tracking */
+ Date today;
+ state_updated_func_t state_updated;
+ bool needs_update;
+
+ void set_needs_update();
+ void update_state();
+ void tick();
+ public:
+ GameManager(state_updated_func_t state_updated_callback);
+
+ return_t setup();
+
+ Date const& get_today() const;
+ return_t expand_building(index_t province_index, std::string const& building_type_identifier);
+ };
+}