From df49c32fc0792214182d510b4a58c524bf8b59c5 Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 3 Jun 2022 12:02:11 +0200 Subject: feat: add ability to change generation speed --- src/game/game.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'src/game/game.cpp') 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( 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; -- cgit v1.2.3-18-g5258