|
|
|
|
@@ -75,9 +75,11 @@ Game::Game(int player_id, int current_stage, bool demo, JA_Music_t *music)
|
|
|
|
|
|
|
|
|
|
background_->setPos(param.game.play_area.rect);
|
|
|
|
|
|
|
|
|
|
p1000_sprite_ = std::make_shared<SmartSprite>(game_text_texture_);
|
|
|
|
|
p2500_sprite_ = std::make_shared<SmartSprite>(game_text_texture_);
|
|
|
|
|
p5000_sprite_ = std::make_shared<SmartSprite>(game_text_texture_);
|
|
|
|
|
game_text_sprites_.emplace_back(std::make_shared<SmartSprite>(game_text_textures_.at(0)));
|
|
|
|
|
game_text_sprites_.emplace_back(std::make_shared<SmartSprite>(game_text_textures_.at(1)));
|
|
|
|
|
game_text_sprites_.emplace_back(std::make_shared<SmartSprite>(game_text_textures_.at(2)));
|
|
|
|
|
game_text_sprites_.emplace_back(std::make_shared<SmartSprite>(game_text_textures_.at(3)));
|
|
|
|
|
game_text_sprites_.emplace_back(std::make_shared<SmartSprite>(game_text_textures_.at(4)));
|
|
|
|
|
|
|
|
|
|
explosions_->addTexture(1, explosions_textures_[0], explosions_animations_[0]);
|
|
|
|
|
explosions_->addTexture(2, explosions_textures_[1], explosions_animations_[1]);
|
|
|
|
|
@@ -295,54 +297,12 @@ void Game::init(int player_id)
|
|
|
|
|
// Con los globos creados, calcula el nivel de amenaza
|
|
|
|
|
evaluateAndSetMenace();
|
|
|
|
|
|
|
|
|
|
// Inicializa el bitmap de 1000 puntos
|
|
|
|
|
constexpr auto height = 15;
|
|
|
|
|
constexpr auto sprite1_width = 35;
|
|
|
|
|
constexpr auto sprite2_width = 38;
|
|
|
|
|
constexpr auto sprite3_width = 39;
|
|
|
|
|
p1000_sprite_->setPosX(0);
|
|
|
|
|
p1000_sprite_->setPosY(0);
|
|
|
|
|
p1000_sprite_->setWidth(sprite1_width);
|
|
|
|
|
p1000_sprite_->setHeight(height);
|
|
|
|
|
p1000_sprite_->setVelX(0.0f);
|
|
|
|
|
p1000_sprite_->setVelY(-0.5f);
|
|
|
|
|
p1000_sprite_->setAccelX(0.0f);
|
|
|
|
|
p1000_sprite_->setAccelY(-0.1f);
|
|
|
|
|
p1000_sprite_->setSpriteClip(0, 0, sprite1_width, height);
|
|
|
|
|
p1000_sprite_->setEnabled(false);
|
|
|
|
|
p1000_sprite_->setFinishedCounter(0);
|
|
|
|
|
p1000_sprite_->setDestX(0);
|
|
|
|
|
p1000_sprite_->setDestY(0);
|
|
|
|
|
|
|
|
|
|
// Inicializa el bitmap de 2500 puntos
|
|
|
|
|
p2500_sprite_->setPosX(0);
|
|
|
|
|
p2500_sprite_->setPosY(0);
|
|
|
|
|
p2500_sprite_->setWidth(sprite2_width);
|
|
|
|
|
p2500_sprite_->setHeight(height);
|
|
|
|
|
p2500_sprite_->setVelX(0.0f);
|
|
|
|
|
p2500_sprite_->setVelY(-0.5f);
|
|
|
|
|
p2500_sprite_->setAccelX(0.0f);
|
|
|
|
|
p2500_sprite_->setAccelY(-0.1f);
|
|
|
|
|
p2500_sprite_->setSpriteClip(sprite1_width, 0, sprite2_width, height);
|
|
|
|
|
p2500_sprite_->setEnabled(false);
|
|
|
|
|
p2500_sprite_->setFinishedCounter(0);
|
|
|
|
|
p2500_sprite_->setDestX(0);
|
|
|
|
|
p2500_sprite_->setDestY(0);
|
|
|
|
|
|
|
|
|
|
// Inicializa el bitmap de 5000 puntos
|
|
|
|
|
p5000_sprite_->setPosX(0);
|
|
|
|
|
p5000_sprite_->setPosY(0);
|
|
|
|
|
p5000_sprite_->setWidth(sprite3_width);
|
|
|
|
|
p5000_sprite_->setHeight(height);
|
|
|
|
|
p5000_sprite_->setVelX(0.0f);
|
|
|
|
|
p5000_sprite_->setVelY(-0.5f);
|
|
|
|
|
p5000_sprite_->setAccelX(0.0f);
|
|
|
|
|
p5000_sprite_->setAccelY(-0.1f);
|
|
|
|
|
p5000_sprite_->setSpriteClip(sprite1_width + sprite2_width, 0, sprite3_width, height);
|
|
|
|
|
p5000_sprite_->setEnabled(false);
|
|
|
|
|
p5000_sprite_->setFinishedCounter(0);
|
|
|
|
|
p5000_sprite_->setDestX(0);
|
|
|
|
|
p5000_sprite_->setDestY(0);
|
|
|
|
|
// Inicializa los sprites con los textos que aparecen al coger items
|
|
|
|
|
for (auto &sprite : game_text_sprites_)
|
|
|
|
|
{
|
|
|
|
|
sprite->setVelY(-0.5f);
|
|
|
|
|
sprite->setAccelY(-0.1f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Carga los recursos necesarios para la sección 'Game'
|
|
|
|
|
@@ -362,12 +322,21 @@ void Game::loadMedia()
|
|
|
|
|
item_textures_.clear();
|
|
|
|
|
balloon_textures_.clear();
|
|
|
|
|
explosions_textures_.clear();
|
|
|
|
|
game_text_textures_.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Texturas
|
|
|
|
|
{
|
|
|
|
|
bullet_texture_ = std::make_shared<Texture>(renderer_, asset_->get("bullet.png"));
|
|
|
|
|
game_text_texture_ = std::make_shared<Texture>(renderer_, asset_->get("game_text.png"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Texturas - Game_text
|
|
|
|
|
{
|
|
|
|
|
game_text_textures_.emplace_back(std::make_shared<Texture>(renderer_, asset_->get("game_text_1000_points.png")));
|
|
|
|
|
game_text_textures_.emplace_back(std::make_shared<Texture>(renderer_, asset_->get("game_text_2500_points.png")));
|
|
|
|
|
game_text_textures_.emplace_back(std::make_shared<Texture>(renderer_, asset_->get("game_text_5000_points.png")));
|
|
|
|
|
game_text_textures_.emplace_back(std::make_shared<Texture>(renderer_, asset_->get("game_text_powerup.png")));
|
|
|
|
|
game_text_textures_.emplace_back(std::make_shared<Texture>(renderer_, asset_->get("game_text_one_hit.png")));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Texturas - Globos
|
|
|
|
|
@@ -1197,21 +1166,21 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
|
|
|
|
case ITEM_POINTS_1_DISK:
|
|
|
|
|
{
|
|
|
|
|
player->addScore(1000);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (p1000_sprite_->getWidth() / 2), player->getPosY(), p1000_sprite_);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_sprites_[0]->getWidth() / 2), player->getPosY(), game_text_sprites_[0]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case ITEM_POINTS_2_GAVINA:
|
|
|
|
|
{
|
|
|
|
|
player->addScore(2500);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (p2500_sprite_->getWidth() / 2), player->getPosY(), p2500_sprite_);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_sprites_[1]->getWidth() / 2), player->getPosY(), game_text_sprites_[1]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case ITEM_POINTS_3_PACMAR:
|
|
|
|
|
{
|
|
|
|
|
player->addScore(5000);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (p5000_sprite_->getWidth() / 2), player->getPosY(), p5000_sprite_);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_sprites_[2]->getWidth() / 2), player->getPosY(), game_text_sprites_[2]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1226,9 +1195,13 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
|
|
|
|
if (player->getCoffees() == 2)
|
|
|
|
|
{
|
|
|
|
|
player->addScore(5000);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (p5000_sprite_->getWidth() / 2), player->getPosY(), p5000_sprite_);
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_sprites_[2]->getWidth() / 2), player->getPosY(), game_text_sprites_[2]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
player->giveExtraHit();
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_sprites_[4]->getWidth() / 2), player->getPosY(), game_text_sprites_[4]);
|
|
|
|
|
}
|
|
|
|
|
player->giveExtraHit();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1236,6 +1209,7 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
|
|
|
|
{
|
|
|
|
|
player->setPowerUp();
|
|
|
|
|
coffee_machine_enabled_ = false;
|
|
|
|
|
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_sprites_[3]->getWidth() / 2), player->getPosY(), game_text_sprites_[3]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1480,7 +1454,7 @@ void Game::freeItems()
|
|
|
|
|
// Crea un objeto SmartSprite para mostrar la puntuación al coger un objeto
|
|
|
|
|
void Game::createItemScoreSprite(int x, int y, std::shared_ptr<SmartSprite> sprite)
|
|
|
|
|
{
|
|
|
|
|
auto ss = new SmartSprite(nullptr);
|
|
|
|
|
auto ss = sprite.get();
|
|
|
|
|
smart_sprites_.push_back(ss);
|
|
|
|
|
|
|
|
|
|
// Crea una copia del objeto
|
|
|
|
|
@@ -2541,8 +2515,12 @@ void Game::reloadTextures()
|
|
|
|
|
texture->reLoad();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (auto &texture : game_text_textures_)
|
|
|
|
|
{
|
|
|
|
|
texture->reLoad();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bullet_texture_->reLoad();
|
|
|
|
|
game_text_texture_->reLoad();
|
|
|
|
|
background_->reloadTextures();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|