From b1183c712d94d38f75068bd62df006f73bd3550f Mon Sep 17 00:00:00 2001 From: HampusM Date: Sun, 22 May 2022 21:32:16 +0200 Subject: feat: add update speed monitoring --- src/game/game.cpp | 18 +++++++++++++++++- src/game/game.hpp | 3 +++ src/game/status_manager.cpp | 4 ++-- 3 files changed, 22 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/game/game.cpp b/src/game/game.cpp index 18db133..b9f5e3a 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -7,6 +7,7 @@ #include +#include #include #include @@ -35,6 +36,7 @@ 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: "); std::shared_ptr> vector2_statusline_subscriber_adapter = _vector2_statusline_subscriber_adapter_factory( @@ -66,9 +68,23 @@ void Game::on_start() noexcept _generation_tracker->get_is_paused() ? "yes" : "no"); _status_manager->set_section_body(StatusLineSection::E, "0"); + + _status_manager->set_section_body(StatusLineSection::F, "0"); + + _last_update_time = std::chrono::system_clock::now(); } -void Game::on_update() noexcept {} +void Game::on_update() noexcept +{ + const auto time_since_last_update = + std::chrono::system_clock::now() - _last_update_time; + + _status_manager->set_section_body( + StatusLineSection::F, + fmt::format("{} nanoseconds", time_since_last_update.count())); + + _last_update_time = std::chrono::system_clock::now(); +} void Game::on_exit() const noexcept { diff --git a/src/game/game.hpp b/src/game/game.hpp index 1546a9c..fb2ad63 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -7,6 +7,7 @@ #include "interfaces/status_manager.hpp" #include "interfaces/statusline_subscriber_adapter.hpp" +#include #include class Game : public IGame @@ -36,4 +37,6 @@ private: std::shared_ptr _status_manager; IStatusLineSubscriberAdapterFactory _vector2_statusline_subscriber_adapter_factory; + + std::chrono::system_clock::time_point _last_update_time; }; diff --git a/src/game/status_manager.cpp b/src/game/status_manager.cpp index 1a709d3..33174d1 100644 --- a/src/game/status_manager.cpp +++ b/src/game/status_manager.cpp @@ -16,8 +16,8 @@ void StatusManager::initialize() noexcept _statusline->set_section_length(StatusLineSection::B, 15U); _statusline->set_section_length(StatusLineSection::C, 15U); _statusline->set_section_length(StatusLineSection::D, 20U); - _statusline->set_section_length(StatusLineSection::E, 15U); - _statusline->set_section_length(StatusLineSection::F, 15U); + _statusline->set_section_length(StatusLineSection::E, 25U); + _statusline->set_section_length(StatusLineSection::F, 50U); _statusline->initialize_background(); } -- cgit v1.2.3-18-g5258