From c988905add09cf8baf46dc61279528f6f39f7a1a Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 10 Mar 2022 20:16:14 +0100 Subject: feat: add status bar --- src/engine/graphics/scene.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'src/engine/graphics/scene.cpp') diff --git a/src/engine/graphics/scene.cpp b/src/engine/graphics/scene.cpp index a8e7b88..c4a398c 100644 --- a/src/engine/graphics/scene.cpp +++ b/src/engine/graphics/scene.cpp @@ -4,13 +4,19 @@ #include #include - -Scene::Scene(IMatrixFactory matrix_factory) - : _is_shown(false), _matrix_factory(matrix_factory) +#include + +Scene::Scene(IMatrixFactory matrix_factory, + std::shared_ptr cursor_controller, + std::shared_ptr window) noexcept + : _is_shown(false), + _matrix_factory(matrix_factory), + _cursor_controller(std::move(cursor_controller)), + _window(std::move(window)) { } -void Scene::enter() +void Scene::enter() noexcept { if (_is_shown) { @@ -23,7 +29,7 @@ void Scene::enter() _is_shown = true; } -void Scene::leave() +void Scene::leave() noexcept { if (!_is_shown) { @@ -35,3 +41,18 @@ void Scene::leave() _is_shown = false; } + +void Scene::write_status(const std::string_view &str) noexcept +{ + const auto previous_position = _cursor_controller->where(); + + const auto window_size = _window->size(); + + _cursor_controller->move_to( + Vector2({.x = 1, .y = static_cast(window_size.get_height())})); + + fmt::print(ERASE_ENTIRE_LINE, fmt::arg("esc", ESC)); + fmt::print(fmt::runtime(str.data())); + + _cursor_controller->move_to(previous_position); +} -- cgit v1.2.3-18-g5258