From eecf4b1e666211a13afa56f93477c55e8fd01621 Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 2 Jun 2022 19:51:54 +0200 Subject: feat: implement game of life --- src/game/game.hpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/game/game.hpp') diff --git a/src/game/game.hpp b/src/game/game.hpp index 0ffa1d6..d29f4b6 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -1,15 +1,23 @@ #pragma once +#include "interfaces/cell_helper.hpp" #include "interfaces/cursor.hpp" #include "interfaces/game.hpp" #include "interfaces/generation_tracker.hpp" #include "interfaces/input.hpp" +#include "interfaces/matrix.hpp" #include "interfaces/scene.hpp" #include "interfaces/status_manager.hpp" +#include "engine/data/vector2.hpp" + #include +#include +#include #include +constexpr auto GENERATION_UPDATE_SPEED_MILLIS = 1000; + class Game : public IGame { public: @@ -18,7 +26,8 @@ public: std::shared_ptr cursor_controller, std::shared_ptr generation_tracker, std::shared_ptr status_manager, - std::shared_ptr user_input_observer) noexcept; + std::shared_ptr user_input_observer, + std::shared_ptr cell_helper) noexcept; void on_start() noexcept override; @@ -32,15 +41,19 @@ private: std::shared_ptr _generation_tracker; std::shared_ptr _status_manager; std::shared_ptr _user_input_observer; + std::shared_ptr _cell_helper; using TimePoint = std::chrono::system_clock::time_point; TimePoint _last_update_time; TimePoint _last_gen_update_time; - int _gen_update_speed_millis; + std::list _living_cell_positions; void _move_cursor(const Vector2 &direction) noexcept; - void _insert_cell(const Vector2 &position, char cell) noexcept; + void _set_space( + const std::shared_ptr> &matrix, + const Vector2 &position, + char character) noexcept; }; -- cgit v1.2.3-18-g5258