diff options
author | HampusM <hampus@hampusmat.com> | 2022-06-07 14:18:20 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-06-13 17:57:00 +0200 |
commit | 9629a8d61e43ba15e87834801f581778625b7a14 (patch) | |
tree | 40c9bc5bd8395ad6f803f5609f6b3d051bc8d441 /src | |
parent | df49c32fc0792214182d510b4a58c524bf8b59c5 (diff) |
fix: prevent update position in statusline on cursor move fail
Diffstat (limited to 'src')
-rw-r--r-- | src/game/game.cpp | 30 | ||||
-rw-r--r-- | 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<Vector2> _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<IMatrix<IScene::MatrixElement>> &matrix, |