diff --git a/src/Arrow.hpp b/src/Arrow.hpp index 5b57179..2cd4be7 100644 --- a/src/Arrow.hpp +++ b/src/Arrow.hpp @@ -1,20 +1,18 @@ #ifndef ARROW_HPP #define ARROW_HPP -#include #include "GameRenderer.hpp" #include "Sprite.hpp" class Arrow { -private: +public: double x; double y; double angle; static constexpr int speed = 5; -public: Arrow(double x, double y, double angle) : x(x), y(y), angle(angle) {} void draw(const GameRenderer *renderer, const Sprite &sprite, double player_x, double player_y) const; diff --git a/src/Game.cpp b/src/Game.cpp index 24f2de4..b9716f2 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -25,6 +25,21 @@ void Game::update(std::stop_token stop_token) arrow.update(); } + std::erase_if(arrows, [this](const Arrow &arrow) { + if (arrow.x < map.tile_offset_x * map.tile_size || arrow.y < map.tile_offset_x * map.tile_size) { + return true; + } + + if ( + arrow.x > (double)map.tiles.size() * map.tile_size + map.tile_offset_x || + arrow.y > (double)map.tiles[0].size() * map.tile_size + map.tile_offset_y + ) { + return true; + } + + return false; + }); + for (Zombo &zombo : zombos) { zombo.update(player.x, player.y); } diff --git a/src/Map.hpp b/src/Map.hpp index e143804..a397c38 100644 --- a/src/Map.hpp +++ b/src/Map.hpp @@ -11,7 +11,6 @@ class Map { private: GameRenderer *renderer; - std::vector> tiles; std::unique_ptr grass_sprite, path_sprite; @@ -22,6 +21,8 @@ public: double tile_offset_y; int tile_size; + std::vector> tiles; + Map(GameRenderer *renderer, int tile_size); ~Map() = default;