diff options
author | Hop311 <Hop3114@gmail.com> | 2024-09-06 22:35:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-06 22:35:46 +0200 |
commit | d36045735fc56e8cfe772713c2ef5012dad94ae3 (patch) | |
tree | 479bddfb6a01b2627118ee2b71adea4105fe8718 /src | |
parent | 429765a8cdc93cc8975d2676d04cb628c21064a4 (diff) | |
parent | 34c8b1039a5a7982a84c718ca8625efcd940bbf5 (diff) |
Merge pull request #192 from OpenVicProject/update-clock
Trigger gamestate update in headless mode + add `update_clock` functions
Diffstat (limited to 'src')
-rw-r--r-- | src/headless/main.cpp | 3 | ||||
-rw-r--r-- | src/openvic-simulation/GameManager.cpp | 9 | ||||
-rw-r--r-- | src/openvic-simulation/GameManager.hpp | 2 | ||||
-rw-r--r-- | src/openvic-simulation/InstanceManager.cpp | 10 | ||||
-rw-r--r-- | src/openvic-simulation/InstanceManager.hpp | 1 |
5 files changed, 25 insertions, 0 deletions
diff --git a/src/headless/main.cpp b/src/headless/main.cpp index ecce333..fcb5e8d 100644 --- a/src/headless/main.cpp +++ b/src/headless/main.cpp @@ -49,6 +49,9 @@ static bool run_headless(Dataloader::path_vector_t const& roots, bool run_tests) Logger::info("===== Starting game session... ====="); ret &= game_manager.start_game_session(); + // This triggers a gamestate update + ret &= game_manager.update_clock(); + return ret; } diff --git a/src/openvic-simulation/GameManager.cpp b/src/openvic-simulation/GameManager.cpp index 2577b54..2980dbd 100644 --- a/src/openvic-simulation/GameManager.cpp +++ b/src/openvic-simulation/GameManager.cpp @@ -74,3 +74,12 @@ bool GameManager::start_game_session() { return instance_manager->start_game_session(); } + +bool GameManager::update_clock() { + if (!instance_manager) { + Logger::error("Cannot update clock - instance manager uninitialised!"); + return false; + } + + return instance_manager->update_clock(); +} diff --git a/src/openvic-simulation/GameManager.hpp b/src/openvic-simulation/GameManager.hpp index fdbcb6a..91de279 100644 --- a/src/openvic-simulation/GameManager.hpp +++ b/src/openvic-simulation/GameManager.hpp @@ -38,5 +38,7 @@ namespace OpenVic { bool setup_instance(Bookmark const* bookmark); bool start_game_session(); + + bool update_clock(); }; } diff --git a/src/openvic-simulation/InstanceManager.cpp b/src/openvic-simulation/InstanceManager.cpp index 1df6e90..ea30246 100644 --- a/src/openvic-simulation/InstanceManager.cpp +++ b/src/openvic-simulation/InstanceManager.cpp @@ -148,6 +148,16 @@ bool InstanceManager::start_game_session() { return true; } +bool InstanceManager::update_clock() { + if (!is_game_session_started()) { + Logger::error("Cannot update clock - game session not started!"); + return false; + } + + simulation_clock.conditionally_advance_game(); + return true; +} + bool InstanceManager::expand_selected_province_building(size_t building_index) { set_gamestate_needs_update(); ProvinceInstance* province = map_instance.get_selected_province(); diff --git a/src/openvic-simulation/InstanceManager.hpp b/src/openvic-simulation/InstanceManager.hpp index 9cf346a..cfb5447 100644 --- a/src/openvic-simulation/InstanceManager.hpp +++ b/src/openvic-simulation/InstanceManager.hpp @@ -58,6 +58,7 @@ namespace OpenVic { bool setup(); bool load_bookmark(Bookmark const* new_bookmark); bool start_game_session(); + bool update_clock(); bool expand_selected_province_building(size_t building_index); }; |