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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

View File

@@ -411,7 +411,12 @@ bool Director::setFileList()
Asset::get()->add(prefix + "/data/gfx/game/game_grass.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game/game_power_meter.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game/game_sky_colors.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game/game_text.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game_text/game_text_1000_points.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game_text/game_text_2500_points.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game_text/game_text_5000_points.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game_text/game_text_powerup.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/game_text/game_text_one_hit.png", AssetType::BITMAP);
Asset::get()->add(prefix + "/data/gfx/intro/intro.png", AssetType::BITMAP);

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

View File

@@ -132,7 +132,8 @@ private:
std::vector<std::shared_ptr<Texture>> player2_textures_; // Vector con las texturas del jugador
std::vector<std::vector<std::shared_ptr<Texture>>> player_textures_; // Vector con todas las texturas de los jugadores;
std::shared_ptr<Texture> game_text_texture_; // Textura para los sprites con textos
std::vector<std::shared_ptr<Texture>> game_text_textures_; // Vector con las texturas para los sprites con textos
std::vector<std::shared_ptr<SmartSprite>> game_text_sprites_; // Sprite con el textos que aparecen al coger items
std::vector<std::vector<std::string> *> item_animations_; // Vector con las animaciones de los items
std::vector<std::vector<std::string> *> player_animations_; // Vector con las animaciones del jugador
@@ -146,10 +147,6 @@ private:
std::unique_ptr<Fade> fade_; // Objeto para renderizar fades
std::shared_ptr<SmartSprite> p1000_sprite_; // Sprite con el texto 1.000
std::shared_ptr<SmartSprite> p2500_sprite_; // Sprite con el texto 2.500
std::shared_ptr<SmartSprite> p5000_sprite_; // Sprite con el texto 5.000
JA_Sound_t *balloon_sound_; // Sonido para la explosión del globo
JA_Sound_t *bullet_sound_; // Sonido para los disparos
JA_Sound_t *player_collision_sound_; // Sonido para la colisión del jugador con un enemigo

View File

@@ -12,7 +12,9 @@ Sprite::Sprite(SDL_Rect rect, std::shared_ptr<Texture> texture)
sprite_clip_((SDL_Rect){0, 0, pos_.w, pos_.h}) {}
Sprite::Sprite(std::shared_ptr<Texture> texture)
: texture_(texture) {}
: texture_(texture),
pos_({0, 0, texture_->getWidth(), texture_->getHeight()}),
sprite_clip_(pos_) {}
// Muestra el sprite por pantalla
void Sprite::render()