diff options
author | Hop311 <Hop3114@gmail.com> | 2023-12-28 17:43:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-28 17:43:43 +0100 |
commit | 0a425fbe05d6138b753c0e4a7c06f06695bde8af (patch) | |
tree | 8f67577b0101c06e2a7cc4d4c277d686d16d3d75 /src/openvic-simulation/misc/GameAdvancementHook.cpp | |
parent | 56a865d7d0868b785eb6b9b723f0e52f65e6457d (diff) | |
parent | 12a47833bbe72d50271bde15c7579c1e801863c2 (diff) |
Merge pull request #110 from OpenVicProject/clock-refactor
Clock refactor + misc small fixes
Diffstat (limited to 'src/openvic-simulation/misc/GameAdvancementHook.cpp')
-rw-r--r-- | src/openvic-simulation/misc/GameAdvancementHook.cpp | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/src/openvic-simulation/misc/GameAdvancementHook.cpp b/src/openvic-simulation/misc/GameAdvancementHook.cpp deleted file mode 100644 index f4c0adc..0000000 --- a/src/openvic-simulation/misc/GameAdvancementHook.cpp +++ /dev/null @@ -1,72 +0,0 @@ -#include "GameAdvancementHook.hpp" - -using namespace OpenVic; - -const std::vector<std::chrono::milliseconds> GameAdvancementHook::GAME_SPEEDS = { - std::chrono::milliseconds { 3000 }, std::chrono::milliseconds { 2000 }, std::chrono::milliseconds { 1000 }, - std::chrono::milliseconds { 100 }, std::chrono::milliseconds { 1 } -}; - -GameAdvancementHook::GameAdvancementHook( - AdvancementFunction tick_function, RefreshFunction update_function, bool start_paused, speed_t starting_speed -) - : trigger_function { tick_function }, refresh_function { update_function }, is_paused { start_paused } { - last_polled_time = std::chrono::high_resolution_clock::now(); - set_simulation_speed(starting_speed); -} - -void GameAdvancementHook::set_simulation_speed(speed_t speed) { - if (speed < 0) { - current_speed = 0; - } else if (speed >= GAME_SPEEDS.size()) { - current_speed = GAME_SPEEDS.size() - 1; - } else { - current_speed = speed; - } -} - -void GameAdvancementHook::increase_simulation_speed() { - set_simulation_speed(current_speed + 1); -} - -void GameAdvancementHook::decrease_simulation_speed() { - set_simulation_speed(current_speed - 1); -} - -bool GameAdvancementHook::can_increase_simulation_speed() const { - return current_speed + 1 < GAME_SPEEDS.size(); -} - -bool GameAdvancementHook::can_decrease_simulation_speed() const { - return current_speed > 0; -} - -GameAdvancementHook& GameAdvancementHook::operator++() { - increase_simulation_speed(); - return *this; -}; - -GameAdvancementHook& GameAdvancementHook::operator--() { - decrease_simulation_speed(); - return *this; -}; - -void GameAdvancementHook::conditionally_advance_game() { - if (!is_paused) { - time_point_t currentTime = std::chrono::high_resolution_clock::now(); - if (std::chrono::duration_cast<std::chrono::milliseconds>(currentTime - last_polled_time) >= GAME_SPEEDS[current_speed]) { - last_polled_time = currentTime; - if (trigger_function) { - trigger_function(); - } - } - } - if (refresh_function) { - refresh_function(); - } -} - -void GameAdvancementHook::reset() { - is_paused = true; - current_speed = 0; -} |