aboutsummaryrefslogtreecommitdiff
path: root/src/game/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/game.cpp')
-rw-r--r--src/game/game.cpp27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/game/game.cpp b/src/game/game.cpp
index 8ea6571..9d8c246 100644
--- a/src/game/game.cpp
+++ b/src/game/game.cpp
@@ -34,7 +34,9 @@ void Game::on_start() noexcept
_status_manager->set_section_title(StatusLineSection::C, "Y: ");
_status_manager->set_section_title(StatusLineSection::D, "Paused: ");
_status_manager->set_section_title(StatusLineSection::E, "Generation: ");
- _status_manager->set_section_title(StatusLineSection::F, "Time since last frame: ");
+ _status_manager->set_section_title(
+ StatusLineSection::F,
+ "Minimum time since last generation: ");
_status_manager->set_section_title(StatusLineSection::G, "Living cells: ");
_status_manager->set_section_title(StatusLineSection::H, "Window size: ");
@@ -150,6 +152,17 @@ void Game::on_update() noexcept
is_generation_stepping = true;
break;
+ case '+':
+ if (_min_time_since_last_gen_millis > 0)
+ {
+ _min_time_since_last_gen_millis -= MIN_TIME_SINCE_LAST_GEN_INCREMENT;
+ }
+ break;
+
+ case '-':
+ _min_time_since_last_gen_millis += MIN_TIME_SINCE_LAST_GEN_DECREMENT;
+ break;
+
default:
break;
}
@@ -167,29 +180,27 @@ void Game::on_update() noexcept
fmt::format("{}", current_pos.get_y()));
}
- const auto time_now = std::chrono::system_clock::now();
-
- const auto time_since_last_update = time_now - _last_update_time;
-
_status_manager->set_section_body(
StatusLineSection::F,
- fmt::format("{} nanoseconds", time_since_last_update.count()));
+ fmt::format("{} milliseconds", _min_time_since_last_gen_millis));
_status_manager->set_section_body(
StatusLineSection::G,
fmt::format("{}", _living_cell_positions.size()));
+ const auto time_now = std::chrono::system_clock::now();
+
if (_generation_tracker->get_is_paused() && !is_generation_stepping)
{
_last_update_time = time_now;
return;
}
- const auto time_since_last_gen_update =
+ const auto time_since_last_gen =
std::chrono::duration_cast<std::chrono::milliseconds>(
time_now - _last_gen_update_time);
- if (time_since_last_gen_update.count() <= GENERATION_UPDATE_SPEED_MILLIS)
+ if (time_since_last_gen.count() <= _min_time_since_last_gen_millis)
{
_last_update_time = time_now;
return;