diff options
Diffstat (limited to 'src/engine/graphics/scene.cpp')
-rw-r--r-- | src/engine/graphics/scene.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/engine/graphics/scene.cpp b/src/engine/graphics/scene.cpp index 73c1292..52613d8 100644 --- a/src/engine/graphics/scene.cpp +++ b/src/engine/graphics/scene.cpp @@ -5,17 +5,17 @@ #include <fmt/color.h> #include <fmt/core.h> + #include <iostream> +#include <sys/ioctl.h> #include <utility> Scene::Scene( IMatrixFactory<std::string_view> matrix_factory, - std::shared_ptr<ICursorController> cursor_controller, - std::shared_ptr<IWindow> window) noexcept + std::shared_ptr<ICursorController> cursor_controller) noexcept : _is_shown(false), - _matrix(matrix_factory(window->size() - Bounds({.width = 0U, .height = 1U}))), - _cursor_controller(std::move(cursor_controller)), - _window(std::move(window)) + _matrix(matrix_factory(size() - Bounds({.width = 0U, .height = 1U}))), + _cursor_controller(std::move(cursor_controller)) { _matrix->fill(" "); } @@ -46,6 +46,16 @@ void Scene::leave() noexcept _is_shown = false; } +auto Scene::size() const noexcept -> Bounds +{ + winsize window_size = {}; + + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg) + ioctl(0, TIOCGWINSZ, &window_size); + + return Bounds({window_size.ws_col, window_size.ws_row}); +} + auto Scene::get_matrix() const noexcept -> const std::shared_ptr<IMatrix<std::string_view>> & { |