From f0863b36918be5c15fa028008f0c39955d6d36db Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 5 Dec 2024 08:18:40 +0100 Subject: [PATCH] Afegit zoom al subtitol ARCADE EDITION --- source/game_logo.cpp | 56 +++++++++++++++++++++++++++++--------------- source/game_logo.h | 10 ++++---- 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/source/game_logo.cpp b/source/game_logo.cpp index 4f83307..b86ede3 100644 --- a/source/game_logo.cpp +++ b/source/game_logo.cpp @@ -15,30 +15,24 @@ GameLogo::GameLogo(int x, int y) coffee_texture_(Resource::get()->getTexture("title_coffee.png")), crisis_texture_(Resource::get()->getTexture("title_crisis.png")), arcade_edition_texture_(Resource::get()->getTexture("title_arcade_edition.png")), - dust_left_sprite_(std::make_unique(dust_texture_, Resource::get()->getAnimation("title_dust.ani"))), dust_right_sprite_(std::make_unique(dust_texture_, Resource::get()->getAnimation("title_dust.ani"))), - coffee_sprite_(std::make_unique(coffee_texture_)), crisis_sprite_(std::make_unique(crisis_texture_)), - arcade_edition_sprite_(std::make_unique(arcade_edition_texture_, (param.game.width - arcade_edition_texture_->getWidth()) / 2, param.title.arcade_edition_position, arcade_edition_texture_->getWidth(), arcade_edition_texture_->getHeight())), - x_(x), - y_(y) -{ - // Inicializa las variables - init(); -} + y_(y) { } // Inicializa las variables void GameLogo::init() { - const auto xp = x_ - coffee_sprite_->getWidth() / 2; + const auto xp = x_ - coffee_texture_->getWidth() / 2; const auto desp = getInitialVerticalDesp(); // Variables - status_ = Status::DISABLED; + coffee_crisis_status_ = Status::DISABLED; + arcade_edition_status_ = Status::DISABLED; + shake_.desp = 1; shake_.delay = 2; shake_.lenght = 8; @@ -46,6 +40,8 @@ void GameLogo::init() shake_.counter = shake_.delay; shake_.origin = xp; + zoom_ = 3.0f; + // Inicializa el bitmap de 'Coffee' coffee_sprite_->setPosX(xp); coffee_sprite_->setPosY(y_ - coffee_texture_->getHeight() - desp); @@ -92,7 +88,7 @@ void GameLogo::init() dust_left_sprite_->setHeight(16); // Inicializa el bitmap de 'Arcade Edition' - arcade_edition_sprite_->setZoom(2.0f); + arcade_edition_sprite_->setZoom(zoom_); } // Pinta la clase en pantalla @@ -102,8 +98,10 @@ void GameLogo::render() coffee_sprite_->render(); crisis_sprite_->render(); - if (status_ == Status::FINISHED) + if (arcade_edition_status_ != Status::DISABLED) + { arcade_edition_sprite_->render(); + } // Dibuja el polvillo del logo dust_right_sprite_->render(); @@ -113,17 +111,18 @@ void GameLogo::render() // Actualiza la lógica de la clase void GameLogo::update() { - switch (status_) + switch (coffee_crisis_status_) { case Status::MOVING: { coffee_sprite_->update(); crisis_sprite_->update(); - // Si los objetos han llegado a su destino, cambiamos de Sección + // Si los objetos han llegado a su destino, cambia el estado if (coffee_sprite_->hasFinished() && crisis_sprite_->hasFinished()) { - status_ = Status::SHAKING; + coffee_crisis_status_ = Status::SHAKING; + arcade_edition_status_ = Status::MOVING; // Reproduce el efecto sonoro JA_PlaySound(Resource::get()->getSound("title.wav")); @@ -154,7 +153,7 @@ void GameLogo::update() { coffee_sprite_->setPosX(shake_.origin); crisis_sprite_->setPosX(shake_.origin + 15); - status_ = Status::FINISHED; + coffee_crisis_status_ = Status::FINISHED; } dust_right_sprite_->update(); @@ -174,19 +173,37 @@ void GameLogo::update() default: break; } + + switch (arcade_edition_status_) + { + case Status::MOVING: + { + zoom_ -= 0.1f; + arcade_edition_sprite_->setZoom(zoom_); + if (zoom_ <= 1.0f) + { + arcade_edition_status_ = Status::FINISHED; + zoom_ = 1.0f; + } + break; + } + + default: + break; + } } // Activa la clase void GameLogo::enable() { init(); - status_ = Status::MOVING; + coffee_crisis_status_ = Status::MOVING; } // Indica si ha terminado la animación bool GameLogo::hasFinished() const { - return status_ == Status::FINISHED; + return coffee_crisis_status_ == Status::FINISHED && arcade_edition_status_ == Status::FINISHED; } // Recarga las texturas @@ -195,6 +212,7 @@ void GameLogo::reLoad() dust_texture_->reLoad(); coffee_texture_->reLoad(); crisis_texture_->reLoad(); + arcade_edition_texture_->reLoad(); } // Calcula el desplazamiento vertical inicial diff --git a/source/game_logo.h b/source/game_logo.h index 098fa52..7b8ecc3 100644 --- a/source/game_logo.h +++ b/source/game_logo.h @@ -43,11 +43,13 @@ private: std::unique_ptr arcade_edition_sprite_; // Sprite con los graficos de "Arcade Edition" // Variables - int x_; // Posición donde dibujar el logo - int y_; // Posición donde dibujar el logo + int x_; // Posición donde dibujar el logo + int y_; // Posición donde dibujar el logo + float zoom_; // Zoom aplicado al texto "ARCADE EDITION" - Status status_; // Estado en el que se encuentra la clase - Shake shake_; // Estructura para generar el efecto de agitación + Status coffee_crisis_status_ = Status::DISABLED; // Estado en el que se encuentra el texto "COFFEE CRISIS" + Status arcade_edition_status_ = Status::DISABLED; // Estado en el que se encuentra el texto "ARCADE_EDITION" + Shake shake_; // Estructura para generar el efecto de agitación // Inicializa las variables void init();