aboutsummaryrefslogtreecommitdiff
path: root/extension/src/Simulation.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'extension/src/Simulation.hpp')
-rw-r--r--extension/src/Simulation.hpp30
1 files changed, 25 insertions, 5 deletions
diff --git a/extension/src/Simulation.hpp b/extension/src/Simulation.hpp
index b84016b..58ba7c7 100644
--- a/extension/src/Simulation.hpp
+++ b/extension/src/Simulation.hpp
@@ -2,28 +2,39 @@
#include <godot_cpp/core/class_db.hpp>
#include <vector>
+#include <chrono>
+#include "openvic2/Date.hpp"
namespace OpenVic2 {
class Simulation : public godot::Object {
GDCLASS(Simulation, godot::Object)
std::vector<uint64_t> exampleProvinces;
+ enum class Speed { Speed1 = 4000, Speed2 = 3000, Speed3 = 2000, Speed4 = 1000, Speed5 = 100, Speed6 = 1 };
+
+ std::chrono::time_point<std::chrono::high_resolution_clock> lastPolledTime;
+ bool isPaused;
+ Speed currentSpeed;
+ Date inGameDate;
+
//BEGIN BOILERPLATE
inline static Simulation* _simulation = nullptr;
- protected:
+ protected:
static void _bind_methods() {
godot::ClassDB::bind_method(godot::D_METHOD("conductSimulationStep"), &Simulation::conductSimulationStep);
godot::ClassDB::bind_method(godot::D_METHOD("queryProvinceSize"), &Simulation::queryProvinceSize);
}
- public:
+ public:
inline static Simulation* get_singleton() { return _simulation; }
- inline Simulation() {
+ inline Simulation() : inGameDate(1836, 1, 1) {
ERR_FAIL_COND(_simulation != nullptr);
_simulation = this;
-
+ this->lastPolledTime = std::chrono::high_resolution_clock::now();
+ this->isPaused = false;
+ this->currentSpeed = Speed::Speed1;
exampleProvinces.resize(10, 1);
}
inline ~Simulation() {
@@ -32,6 +43,13 @@ namespace OpenVic2 {
}
//END BOILERPLATE
+ void togglePauseState();
+ bool getPauseState();
+ void increaseSimulationSpeed();
+ void decreaseSimulationSpeed();
+ void setSimulationSpeed(Speed speed);
+ int getSimulationSpeed();
+
inline void conductSimulationStep() {
for (uint64_t x = 0; x < exampleProvinces.size(); x++) {
exampleProvinces[x] += (x + 1);
@@ -44,5 +62,7 @@ namespace OpenVic2 {
}
return exampleProvinces[provinceID];
}
+
+ void conditionallyAdvanceSimulation();
};
-}
+} \ No newline at end of file