From 9629a8d61e43ba15e87834801f581778625b7a14 Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 7 Jun 2022 14:18:20 +0200 Subject: fix: prevent update position in statusline on cursor move fail --- src/game/game.cpp | 30 ++++++++++++++++++++---------- src/game/game.hpp | 2 +- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/game/game.cpp b/src/game/game.cpp index 9d8c246..2eef4cf 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -86,23 +86,31 @@ void Game::on_update() noexcept switch (pressed_key) { case 'h': - _move_cursor(Vector2::left()); - cursor_has_moved = true; + if (_move_cursor(Vector2::left())) + { + cursor_has_moved = true; + } break; case 'j': - _move_cursor(Vector2::down()); - cursor_has_moved = true; + if (_move_cursor(Vector2::down())) + { + cursor_has_moved = true; + } break; case 'k': - _move_cursor(Vector2::up()); - cursor_has_moved = true; + if (_move_cursor(Vector2::up())) + { + cursor_has_moved = true; + } break; case 'l': - _move_cursor(Vector2::right()); - cursor_has_moved = true; + if (_move_cursor(Vector2::right())) + { + cursor_has_moved = true; + } break; case 'q': @@ -264,7 +272,7 @@ void Game::on_exit() const noexcept std::cout.flush(); } -void Game::_move_cursor(const Vector2 &direction) noexcept +auto Game::_move_cursor(const Vector2 &direction) noexcept -> bool { const auto current_position = _cursor_controller->where(); @@ -274,10 +282,12 @@ void Game::_move_cursor(const Vector2 &direction) noexcept if (scene_size.validate_coords(dest_position) != CoordsValidation::VALID) { - return; + return false; } _cursor_controller->move_to(dest_position); + + return true; } void Game::_set_space( diff --git a/src/game/game.hpp b/src/game/game.hpp index b5b69cf..d629400 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -55,7 +55,7 @@ private: std::list _living_cell_positions; - void _move_cursor(const Vector2 &direction) noexcept; + auto _move_cursor(const Vector2 &direction) noexcept -> bool; void _set_space( const std::shared_ptr> &matrix, -- cgit v1.2.3-18-g5258