Add shooting cooldown
This commit is contained in:
parent
4d3300e111
commit
c5ea2d8993
@ -114,8 +114,9 @@ void Game::run()
|
||||
}
|
||||
}
|
||||
|
||||
if (e.type == SDL_MOUSEBUTTONDOWN && e.button.button == 1) {
|
||||
if (e.type == SDL_MOUSEBUTTONDOWN && e.button.button == 1 && player.shooting_cooldown == 0) {
|
||||
arrows.emplace_back(player.x, player.y, player.angle);
|
||||
player.shooting_cooldown = 40;
|
||||
}
|
||||
|
||||
int mouse_x, mouse_y;
|
||||
|
||||
@ -5,7 +5,8 @@
|
||||
Player::Player(GameRenderer *renderer) : renderer(renderer)
|
||||
{
|
||||
hero_sprite = renderer->load_sprite("./assets/hero_front.png", 40, 40);
|
||||
bow_sprite = renderer->load_sprite("./assets/bow_arrow.png", 22, 32);
|
||||
bow_arrow_sprite = renderer->load_sprite("./assets/bow_arrow.png", 22, 32);
|
||||
bow_sprite = renderer->load_sprite("./assets/bow.png", 22, 32);
|
||||
}
|
||||
|
||||
void Player::draw() const
|
||||
@ -17,7 +18,7 @@ void Player::draw() const
|
||||
);
|
||||
|
||||
renderer->draw_sprite_rotated(
|
||||
*bow_sprite,
|
||||
shooting_cooldown > 0 ? *bow_sprite : *bow_arrow_sprite,
|
||||
(int)(renderer->screen_width / 2 - bow_sprite->width / 2 + std::cos(angle) * 30),
|
||||
(int)(renderer->screen_height / 2 - bow_sprite->height / 2 + std::sin(angle) * 30),
|
||||
angle * 180 / std::numbers::pi
|
||||
@ -28,4 +29,6 @@ void Player::update()
|
||||
{
|
||||
x += x_vel;
|
||||
y += y_vel;
|
||||
|
||||
if (shooting_cooldown > 0) shooting_cooldown--;
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ class Player
|
||||
{
|
||||
private:
|
||||
GameRenderer *renderer;
|
||||
std::unique_ptr<Sprite> hero_sprite, bow_sprite;
|
||||
std::unique_ptr<Sprite> hero_sprite, bow_sprite, bow_arrow_sprite;
|
||||
|
||||
public:
|
||||
double x = 0;
|
||||
@ -19,6 +19,8 @@ public:
|
||||
|
||||
double angle = 0.0;
|
||||
|
||||
int shooting_cooldown = 0;
|
||||
|
||||
static constexpr double speed = 1.5;
|
||||
|
||||
Player(GameRenderer *renderer);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user