diff --git a/data/gfx/game/game_text.png b/data/gfx/game/game_text.png deleted file mode 100644 index 44ae8a2..0000000 Binary files a/data/gfx/game/game_text.png and /dev/null differ diff --git a/data/gfx/game_text/game_text_1000_points.png b/data/gfx/game_text/game_text_1000_points.png new file mode 100644 index 0000000..6967f5f Binary files /dev/null and b/data/gfx/game_text/game_text_1000_points.png differ diff --git a/data/gfx/game_text/game_text_2500_points.png b/data/gfx/game_text/game_text_2500_points.png new file mode 100644 index 0000000..99ad813 Binary files /dev/null and b/data/gfx/game_text/game_text_2500_points.png differ diff --git a/data/gfx/game_text/game_text_5000_points.png b/data/gfx/game_text/game_text_5000_points.png new file mode 100644 index 0000000..ef0f468 Binary files /dev/null and b/data/gfx/game_text/game_text_5000_points.png differ diff --git a/data/gfx/game_text/game_text_one_hit.png b/data/gfx/game_text/game_text_one_hit.png new file mode 100644 index 0000000..18cf73e Binary files /dev/null and b/data/gfx/game_text/game_text_one_hit.png differ diff --git a/data/gfx/game_text/game_text_powerup.png b/data/gfx/game_text/game_text_powerup.png new file mode 100644 index 0000000..45227a5 Binary files /dev/null and b/data/gfx/game_text/game_text_powerup.png differ diff --git a/source/director.cpp b/source/director.cpp index a447cdb..264f7d1 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -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); diff --git a/source/game.cpp b/source/game.cpp index 4b9d64e..6fcd1c5 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -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(game_text_texture_); - p2500_sprite_ = std::make_shared(game_text_texture_); - p5000_sprite_ = std::make_shared(game_text_texture_); + game_text_sprites_.emplace_back(std::make_shared(game_text_textures_.at(0))); + game_text_sprites_.emplace_back(std::make_shared(game_text_textures_.at(1))); + game_text_sprites_.emplace_back(std::make_shared(game_text_textures_.at(2))); + game_text_sprites_.emplace_back(std::make_shared(game_text_textures_.at(3))); + game_text_sprites_.emplace_back(std::make_shared(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(renderer_, asset_->get("bullet.png")); - game_text_texture_ = std::make_shared(renderer_, asset_->get("game_text.png")); + } + + // Texturas - Game_text + { + game_text_textures_.emplace_back(std::make_shared(renderer_, asset_->get("game_text_1000_points.png"))); + game_text_textures_.emplace_back(std::make_shared(renderer_, asset_->get("game_text_2500_points.png"))); + game_text_textures_.emplace_back(std::make_shared(renderer_, asset_->get("game_text_5000_points.png"))); + game_text_textures_.emplace_back(std::make_shared(renderer_, asset_->get("game_text_powerup.png"))); + game_text_textures_.emplace_back(std::make_shared(renderer_, asset_->get("game_text_one_hit.png"))); } // Texturas - Globos @@ -1197,21 +1166,21 @@ void Game::checkPlayerItemCollision(std::shared_ptr &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) 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->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 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(); } diff --git a/source/game.h b/source/game.h index 3d18e1e..ba9083b 100644 --- a/source/game.h +++ b/source/game.h @@ -132,7 +132,8 @@ private: std::vector> player2_textures_; // Vector con las texturas del jugador std::vector>> player_textures_; // Vector con todas las texturas de los jugadores; - std::shared_ptr game_text_texture_; // Textura para los sprites con textos + std::vector> game_text_textures_; // Vector con las texturas para los sprites con textos + std::vector> game_text_sprites_; // Sprite con el textos que aparecen al coger items std::vector *> item_animations_; // Vector con las animaciones de los items std::vector *> player_animations_; // Vector con las animaciones del jugador @@ -146,10 +147,6 @@ private: std::unique_ptr fade_; // Objeto para renderizar fades - std::shared_ptr p1000_sprite_; // Sprite con el texto 1.000 - std::shared_ptr p2500_sprite_; // Sprite con el texto 2.500 - std::shared_ptr 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 diff --git a/source/sprite.cpp b/source/sprite.cpp index 92cb7e5..d7ba738 100644 --- a/source/sprite.cpp +++ b/source/sprite.cpp @@ -12,7 +12,9 @@ Sprite::Sprite(SDL_Rect rect, std::shared_ptr texture) sprite_clip_((SDL_Rect){0, 0, pos_.w, pos_.h}) {} Sprite::Sprite(std::shared_ptr texture) - : texture_(texture) {} + : texture_(texture), + pos_({0, 0, texture_->getWidth(), texture_->getHeight()}), + sprite_clip_(pos_) {} // Muestra el sprite por pantalla void Sprite::render()