aboutsummaryrefslogtreecommitdiff
path: root/src/game/game.cpp
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-06-08 16:06:03 +0200
committerHampusM <hampus@hampusmat.com>2022-06-13 17:57:01 +0200
commit3f9004b598fc8006576db9b8d2ae4e080101101b (patch)
tree97108db2a08253417139bd76741add2dd126f58d /src/game/game.cpp
parent2d9661790db30eb169d07d36b485943c598253b9 (diff)
refactor: give game responsibility of statusline
Diffstat (limited to 'src/game/game.cpp')
-rw-r--r--src/game/game.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/game/game.cpp b/src/game/game.cpp
index 8d72324..3127d40 100644
--- a/src/game/game.cpp
+++ b/src/game/game.cpp
@@ -1,5 +1,6 @@
#include "game.hpp"
+#include "engine/data/bounds.hpp"
#include "util/algorithm.hpp"
#include <fmt/core.h>
@@ -10,13 +11,15 @@
#include <utility>
Game::Game(
+ IStatusLineFactory statusline_factory,
std::shared_ptr<IScene> scene,
std::shared_ptr<ICursorController> cursor_controller,
std::shared_ptr<IGenerationTracker> generation_tracker,
std::shared_ptr<IStatusManager> status_manager,
std::shared_ptr<IUserInputObserver> user_input_observer,
std::shared_ptr<ICellHelper> cell_helper) noexcept
- : _scene(std::move(scene)),
+ : _statusline_factory(std::move(statusline_factory)),
+ _scene(std::move(scene)),
_cursor_controller(std::move(cursor_controller)),
_generation_tracker(std::move(generation_tracker)),
_status_manager(std::move(status_manager)),
@@ -27,9 +30,14 @@ Game::Game(
void Game::on_start() noexcept
{
- _scene->register_component(_status_manager->get_statusline(), Vector2({0, 0}));
+ const auto scene_size = _scene->size();
+
+ std::shared_ptr<IStatusLine> statusline =
+ _statusline_factory(Bounds({.width = scene_size.get_width(), .height = 1}));
+
+ _scene->register_component(statusline, Vector2({0, 0}));
- _status_manager->initialize();
+ _status_manager->bind(statusline);
_status_manager->set_section_title(StatusLineSection::A, "");
_status_manager->set_section_title(StatusLineSection::B, "X: ");
@@ -42,8 +50,6 @@ void Game::on_start() noexcept
_status_manager->set_section_title(StatusLineSection::G, "Living cells: ");
_status_manager->set_section_title(StatusLineSection::H, "Window size: ");
- const auto scene_size = _scene->size();
-
const auto center_position = Vector2(
{.x = static_cast<Vector2::Value>(scene_size.get_width()) / 2,
.y = static_cast<Vector2::Value>(scene_size.get_height()) / 2});