Commit de Boromir

This commit is contained in:
2024-10-14 22:33:45 +02:00
parent 39a8c992e1
commit 3b9885ab03
10 changed files with 48 additions and 66 deletions

View File

@@ -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();
}