Add zombo hp bar
This commit is contained in:
parent
7cc2b4c64f
commit
9b15ebc1a5
@ -55,9 +55,12 @@ void Game::update(std::stop_token stop_token)
|
||||
arrow.x > zombo.x && arrow.x < zombo.x + zombo_sprite->width &&
|
||||
arrow.y > zombo.y && arrow.y < zombo.y + zombo_sprite->height
|
||||
) {
|
||||
zombo.hp--;
|
||||
zombo.x += std::cos(arrow.angle) * 8;
|
||||
zombo.y += std::sin(arrow.angle) * 8;
|
||||
|
||||
std::erase(arrows, arrow);
|
||||
|
||||
zombo.hp--;
|
||||
if (zombo.hp == 0) {
|
||||
std::erase(zombos, zombo);
|
||||
player.gold += 10;
|
||||
@ -159,7 +162,7 @@ void Game::run()
|
||||
|
||||
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;
|
||||
player.shooting_cooldown = 20;
|
||||
}
|
||||
|
||||
int mouse_x, mouse_y;
|
||||
|
||||
@ -89,6 +89,14 @@ void GameRenderer::draw_sprite_rotated(const Sprite &sprite, const int x, const
|
||||
SDL_RenderCopyEx(renderer, sprite.texture, nullptr, &rect, angle, nullptr, SDL_FLIP_NONE);
|
||||
}
|
||||
|
||||
void GameRenderer::draw_rect(int x, int y, int width, int height, Color color) const
|
||||
{
|
||||
SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.a);
|
||||
|
||||
const SDL_Rect rect = { .x = x, .y = y, .w = width, .h = height };
|
||||
SDL_RenderFillRect(renderer, &rect);
|
||||
}
|
||||
|
||||
void GameRenderer::clear_screen(Color color) const
|
||||
{
|
||||
SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.a);
|
||||
|
||||
@ -40,6 +40,8 @@ public:
|
||||
|
||||
void draw_sprite_rotated(const Sprite &sprite, int x, int y, double angle) const;
|
||||
|
||||
void draw_rect(int x, int y, int width, int height, Color color) const;
|
||||
|
||||
void clear_screen(Color color) const;
|
||||
|
||||
void flush() const;
|
||||
|
||||
@ -33,4 +33,9 @@ void Zombo::draw(const GameRenderer *renderer, const Sprite &sprite, double play
|
||||
renderer->draw_sprite(sprite, draw_x, draw_y);
|
||||
else
|
||||
renderer->draw_sprite_flipped(sprite, draw_x, draw_y);
|
||||
|
||||
if (hp < max_hp) {
|
||||
renderer->draw_rect(draw_x, draw_y - 10, sprite.width, 5, rgb(0, 0, 0));
|
||||
renderer->draw_rect(draw_x, draw_y - 10, hp * sprite.width / max_hp, 5, rgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,8 +9,9 @@ class Zombo
|
||||
public:
|
||||
double x;
|
||||
double y;
|
||||
int hp = 3;
|
||||
int hp = max_hp;
|
||||
|
||||
static constexpr int max_hp = 3;
|
||||
static constexpr double speed = 0.5;
|
||||
|
||||
Zombo(const GameRenderer *renderer, const Sprite &sprite, double player_x, double player_y);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user