novetat: canvi de color de les bales quan queda poc powerUp
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
#include "background.h" // Para Background
|
||||
#include "balloon.h" // Para Balloon
|
||||
#include "balloon_manager.h" // Para BalloonManager
|
||||
#include "bullet.h" // Para Bullet, BulletType, BulletMoveStatus
|
||||
#include "bullet.h" // Para Bullet, Bullet::Type, BulletMoveStatus
|
||||
#include "color.h" // Para Color, Colors::FLASH
|
||||
#include "difficulty.h" // Para Code
|
||||
#include "fade.h" // Para Fade, FadeType, FadeMode
|
||||
@@ -564,7 +564,7 @@ auto Game::checkBulletBalloonCollision(const std::shared_ptr<Bullet> &bullet) ->
|
||||
|
||||
// Procesa el impacto en un globo
|
||||
void Game::processBalloonHit(const std::shared_ptr<Bullet> &bullet, const std::shared_ptr<Balloon> &balloon) {
|
||||
auto player = getPlayer(bullet->getOwner());
|
||||
auto player = getPlayer(static_cast<Player::Id>(bullet->getOwner()));
|
||||
|
||||
handleItemDrop(balloon, player);
|
||||
handleBalloonDestruction(balloon, player);
|
||||
@@ -602,8 +602,8 @@ void Game::handleBalloonDestruction(std::shared_ptr<Balloon> balloon, const std:
|
||||
// Mueve las balas activas
|
||||
void Game::updateBullets(float deltaTime) {
|
||||
for (auto &bullet : bullets_) {
|
||||
if (bullet->update(deltaTime) == BulletMoveStatus::OUT) {
|
||||
getPlayer(bullet->getOwner())->decScoreMultiplier();
|
||||
if (bullet->update(deltaTime) == Bullet::MoveStatus::OUT) {
|
||||
getPlayer(static_cast<Player::Id>(bullet->getOwner()))->decScoreMultiplier();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -616,8 +616,8 @@ void Game::renderBullets() {
|
||||
}
|
||||
|
||||
// Crea un objeto bala
|
||||
void Game::createBullet(int x, int y, BulletType kind, bool powered_up, Player::Id owner) {
|
||||
bullets_.emplace_back(std::make_shared<Bullet>(x, y, kind, powered_up, owner));
|
||||
void Game::createBullet(int x, int y, Bullet::Type type, Bullet::Color color, int owner) {
|
||||
bullets_.emplace_back(std::make_shared<Bullet>(x, y, type, color, owner));
|
||||
}
|
||||
|
||||
// Vacia el vector de balas
|
||||
@@ -1305,30 +1305,30 @@ void Game::demoHandlePlayerInput(const std::shared_ptr<Player> &player, int inde
|
||||
}
|
||||
|
||||
if (demo_data.fire == 1) {
|
||||
handleFireInput(player, BulletType::UP);
|
||||
handleFireInput(player, Bullet::Type::UP);
|
||||
} else if (demo_data.fire_left == 1) {
|
||||
handleFireInput(player, BulletType::LEFT);
|
||||
handleFireInput(player, Bullet::Type::LEFT);
|
||||
} else if (demo_data.fire_right == 1) {
|
||||
handleFireInput(player, BulletType::RIGHT);
|
||||
handleFireInput(player, Bullet::Type::RIGHT);
|
||||
}
|
||||
}
|
||||
|
||||
// Maneja el disparo de un jugador, incluyendo la creación de balas y la gestión del tiempo de espera entre disparos.
|
||||
void Game::handleFireInput(const std::shared_ptr<Player> &player, BulletType bullet_type) {
|
||||
void Game::handleFireInput(const std::shared_ptr<Player> &player, Bullet::Type type) {
|
||||
if (player->canFire()) {
|
||||
SDL_Point bullet = {0, 0};
|
||||
switch (bullet_type) {
|
||||
case BulletType::UP:
|
||||
switch (type) {
|
||||
case Bullet::Type::UP:
|
||||
player->setInput(Input::Action::FIRE_CENTER);
|
||||
bullet.x = 2 + player->getPosX() + (Player::WIDTH - Bullet::WIDTH) / 2;
|
||||
bullet.y = player->getPosY() - (Bullet::HEIGHT / 2);
|
||||
break;
|
||||
case BulletType::LEFT:
|
||||
case Bullet::Type::LEFT:
|
||||
player->setInput(Input::Action::FIRE_LEFT);
|
||||
bullet.x = player->getPosX() - (Bullet::WIDTH / 2);
|
||||
bullet.y = player->getPosY();
|
||||
break;
|
||||
case BulletType::RIGHT:
|
||||
case Bullet::Type::RIGHT:
|
||||
player->setInput(Input::Action::FIRE_RIGHT);
|
||||
bullet.x = player->getPosX() + Player::WIDTH - (Bullet::WIDTH / 2);
|
||||
bullet.y = player->getPosY();
|
||||
@@ -1336,7 +1336,7 @@ void Game::handleFireInput(const std::shared_ptr<Player> &player, BulletType bul
|
||||
default:
|
||||
break;
|
||||
}
|
||||
createBullet(bullet.x, bullet.y, bullet_type, player->isPowerUp(), player->getId());
|
||||
createBullet(bullet.x, bullet.y, type, player->getNextBulletColor(), static_cast<int>(player->getId()));
|
||||
playSound("bullet.wav");
|
||||
|
||||
// Establece un tiempo de espera para el próximo disparo.
|
||||
@@ -1402,7 +1402,7 @@ void Game::handleFireInputs(const std::shared_ptr<Player> &player, bool autofire
|
||||
}
|
||||
|
||||
if (input_->checkAction(Input::Action::FIRE_CENTER, autofire, player->getUsesKeyboard(), player->getGamepad())) {
|
||||
handleFireInput(player, BulletType::UP);
|
||||
handleFireInput(player, Bullet::Type::UP);
|
||||
#ifdef RECORDING
|
||||
demo_.keys.fire = 1;
|
||||
#endif
|
||||
@@ -1410,7 +1410,7 @@ void Game::handleFireInputs(const std::shared_ptr<Player> &player, bool autofire
|
||||
}
|
||||
|
||||
if (input_->checkAction(Input::Action::FIRE_LEFT, autofire, player->getUsesKeyboard(), player->getGamepad())) {
|
||||
handleFireInput(player, BulletType::LEFT);
|
||||
handleFireInput(player, Bullet::Type::LEFT);
|
||||
#ifdef RECORDING
|
||||
demo_.keys.fire_left = 1;
|
||||
#endif
|
||||
@@ -1418,7 +1418,7 @@ void Game::handleFireInputs(const std::shared_ptr<Player> &player, bool autofire
|
||||
}
|
||||
|
||||
if (input_->checkAction(Input::Action::FIRE_RIGHT, autofire, player->getUsesKeyboard(), player->getGamepad())) {
|
||||
handleFireInput(player, BulletType::RIGHT);
|
||||
handleFireInput(player, Bullet::Type::RIGHT);
|
||||
#ifdef RECORDING
|
||||
demo_.keys.fire_right = 1;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user