Remove arrows when out of bounds
This commit is contained in:
parent
c5ea2d8993
commit
d2718ca045
@ -1,20 +1,18 @@
|
|||||||
#ifndef ARROW_HPP
|
#ifndef ARROW_HPP
|
||||||
#define ARROW_HPP
|
#define ARROW_HPP
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include "GameRenderer.hpp"
|
#include "GameRenderer.hpp"
|
||||||
#include "Sprite.hpp"
|
#include "Sprite.hpp"
|
||||||
|
|
||||||
class Arrow
|
class Arrow
|
||||||
{
|
{
|
||||||
private:
|
public:
|
||||||
double x;
|
double x;
|
||||||
double y;
|
double y;
|
||||||
double angle;
|
double angle;
|
||||||
|
|
||||||
static constexpr int speed = 5;
|
static constexpr int speed = 5;
|
||||||
|
|
||||||
public:
|
|
||||||
Arrow(double x, double y, double angle) : x(x), y(y), angle(angle) {}
|
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;
|
void draw(const GameRenderer *renderer, const Sprite &sprite, double player_x, double player_y) const;
|
||||||
|
|||||||
15
src/Game.cpp
15
src/Game.cpp
@ -25,6 +25,21 @@ void Game::update(std::stop_token stop_token)
|
|||||||
arrow.update();
|
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) {
|
for (Zombo &zombo : zombos) {
|
||||||
zombo.update(player.x, player.y);
|
zombo.update(player.x, player.y);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,6 @@ class Map
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
GameRenderer *renderer;
|
GameRenderer *renderer;
|
||||||
std::vector<std::vector<Tile>> tiles;
|
|
||||||
|
|
||||||
std::unique_ptr<Sprite> grass_sprite, path_sprite;
|
std::unique_ptr<Sprite> grass_sprite, path_sprite;
|
||||||
|
|
||||||
@ -22,6 +21,8 @@ public:
|
|||||||
double tile_offset_y;
|
double tile_offset_y;
|
||||||
int tile_size;
|
int tile_size;
|
||||||
|
|
||||||
|
std::vector<std::vector<Tile>> tiles;
|
||||||
|
|
||||||
Map(GameRenderer *renderer, int tile_size);
|
Map(GameRenderer *renderer, int tile_size);
|
||||||
|
|
||||||
~Map() = default;
|
~Map() = default;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user