aboutsummaryrefslogtreecommitdiff
path: root/extension/src/Simulation.cpp
diff options
context:
space:
mode:
author ClarkeCode <33846391+ClarkeCode@users.noreply.github.com>2023-04-14 22:16:23 +0200
committer GitHub <noreply@github.com>2023-04-14 22:16:23 +0200
commitf168c91ff266beda8066014257a30d93704882ee (patch)
tree2c49198c3cbbbb575dc14795132a20c7b9267a2c /extension/src/Simulation.cpp
parent436b038c1806e326ff6458f1692e9009d3a54346 (diff)
parent48558fdfec509942515b0e2d92e3f1357b201400 (diff)
Merge pull request #73 from OpenVic2Project/in-game-date
Added in-game date
Diffstat (limited to 'extension/src/Simulation.cpp')
-rw-r--r--extension/src/Simulation.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/extension/src/Simulation.cpp b/extension/src/Simulation.cpp
new file mode 100644
index 0000000..5ea99c5
--- /dev/null
+++ b/extension/src/Simulation.cpp
@@ -0,0 +1,64 @@
+#include "Simulation.hpp"
+
+namespace OpenVic2 {
+ void Simulation::togglePauseState() {
+ this->isPaused = !isPaused;
+ }
+
+ bool Simulation::getPauseState() {
+ return this->isPaused;
+ }
+
+ void Simulation::increaseSimulationSpeed() {
+ switch (this->currentSpeed) {
+ case(Speed::Speed1):
+ this->currentSpeed = Speed::Speed2;
+ break;
+ case(Speed::Speed2):
+ this->currentSpeed = Speed::Speed3;
+ break;
+ case(Speed::Speed3):
+ this->currentSpeed = Speed::Speed4;
+ break;
+ case(Speed::Speed4):
+ this->currentSpeed = Speed::Speed5;
+ break;
+ }
+ }
+
+ void Simulation::decreaseSimulationSpeed() {
+ switch (this->currentSpeed) {
+ case(Speed::Speed2):
+ this->currentSpeed = Speed::Speed1;
+ break;
+ case(Speed::Speed3):
+ this->currentSpeed = Speed::Speed2;
+ break;
+ case(Speed::Speed4):
+ this->currentSpeed = Speed::Speed3;
+ break;
+ case(Speed::Speed5):
+ this->currentSpeed = Speed::Speed4;
+ break;
+ }
+ }
+
+ void Simulation::setSimulationSpeed(Speed speed) {
+ this->currentSpeed = speed;
+ }
+
+ int Simulation::getSimulationSpeed() {
+ return static_cast<int>(this->currentSpeed);
+ }
+
+ void Simulation::conditionallyAdvanceSimulation() {
+ if (!(this->isPaused)) {
+ std::chrono::time_point<std::chrono::high_resolution_clock> previousTime = this->lastPolledTime;
+ std::chrono::time_point<std::chrono::high_resolution_clock> currentTime = std::chrono::high_resolution_clock::now();
+ if (std::chrono::duration_cast<std::chrono::milliseconds>(currentTime - previousTime).count() >= this->getSimulationSpeed()) {
+ this->lastPolledTime = currentTime;
+ this->inGameDate++;
+ }
+ }
+ }
+}