From a3d4b13f3b1210404da6446a3384a68574cae3eb Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Wed, 12 Mar 2025 14:17:15 +0100 Subject: [PATCH] Treballant en la intro --- source/intro.cpp | 123 ++++++++++++++++------------------------------- source/intro.h | 8 +-- 2 files changed, 46 insertions(+), 85 deletions(-) diff --git a/source/intro.cpp b/source/intro.cpp index ecfcdef..54d38e8 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -11,7 +11,7 @@ #include "resource.h" // Para Resource #include "screen.h" // Para Screen #include "section.h" // Para Name, name, Options, options -#include "smart_sprite.h" // Para SmartSprite +#include "path_sprite.h" // Para PathSprite #include "text.h" // Para Text #include "texture.h" // Para Texture #include "utils.h" // Para Zone, BLOCK, Color, bg_color @@ -54,13 +54,13 @@ void Intro::updateScenes() case 0: { // Primera imagen - UPV - if (!bitmaps_.at(0)->hasFinished()) + if (!sprites_.at(0)->hasFinished()) { - bitmaps_.at(0)->setEnabled(true); + sprites_.at(0)->enable(); } // Primer texto de la primera imagen - if (bitmaps_.at(0)->hasFinished() && !texts_.at(0)->hasFinished()) + if (sprites_.at(0)->hasFinished() && !texts_.at(0)->hasFinished()) { texts_.at(0)->setEnabled(true); } @@ -82,7 +82,6 @@ void Intro::updateScenes() // Fin de la primera escena if (texts_.at(2)->hasFinished()) { - bitmaps_.at(0)->setEnabled(false); texts_.at(2)->setEnabled(false); scene_++; } @@ -93,13 +92,13 @@ void Intro::updateScenes() case 1: { // Segunda imagen - Máquina - if (!bitmaps_.at(1)->hasFinished()) + if (!sprites_.at(1)->hasFinished()) { - bitmaps_.at(1)->setEnabled(true); + sprites_.at(1)->enable(); } // Primer texto de la segunda imagen - if (bitmaps_.at(1)->hasFinished() && !texts_.at(3)->hasFinished()) + if (sprites_.at(1)->hasFinished() && !texts_.at(3)->hasFinished()) { texts_.at(3)->setEnabled(true); } @@ -107,7 +106,6 @@ void Intro::updateScenes() // Fin de la segunda escena if (texts_.at(3)->hasFinished()) { - bitmaps_.at(1)->setEnabled(false); texts_.at(3)->setEnabled(false); scene_++; } @@ -117,16 +115,15 @@ void Intro::updateScenes() case 2: { // Tercera imagen junto con primer texto - GRITO - if (!bitmaps_.at(2)->hasFinished() && !texts_.at(4)->hasFinished()) + if (!sprites_.at(2)->hasFinished() && !texts_.at(4)->hasFinished()) { - bitmaps_.at(2)->setEnabled(true); + sprites_.at(2)->enable(); texts_.at(4)->setEnabled(true); } // Fin de la tercera escena - if (bitmaps_.at(2)->hasFinished() && texts_.at(4)->hasFinished()) + if (sprites_.at(2)->hasFinished() && texts_.at(4)->hasFinished()) { - bitmaps_.at(2)->setEnabled(false); texts_.at(4)->setEnabled(false); scene_++; } @@ -137,9 +134,9 @@ void Intro::updateScenes() case 3: { // Cuarta imagen junto con primer texto - Reflexión - if (!bitmaps_.at(3)->hasFinished() && !texts_.at(5)->hasFinished()) + if (!sprites_.at(3)->hasFinished() && !texts_.at(5)->hasFinished()) { - bitmaps_.at(3)->setEnabled(true); + sprites_.at(3)->enable(); texts_.at(5)->setEnabled(true); } @@ -151,9 +148,8 @@ void Intro::updateScenes() } // Fin de la cuarta escena - if (bitmaps_.at(3)->hasFinished() && texts_.at(6)->hasFinished()) + if (sprites_.at(3)->hasFinished() && texts_.at(6)->hasFinished()) { - bitmaps_.at(3)->setEnabled(false); texts_.at(6)->setEnabled(false); scene_++; } @@ -164,21 +160,20 @@ void Intro::updateScenes() case 4: { // Quinta imagen - Patada - if (!bitmaps_.at(4)->hasFinished()) + if (!sprites_.at(4)->hasFinished()) { - bitmaps_.at(4)->setEnabled(true); + sprites_.at(4)->enable(); } // Primer texto de la quinta imagen - if (bitmaps_.at(4)->hasFinished() && !texts_.at(7)->hasFinished()) + if (sprites_.at(4)->hasFinished() && !texts_.at(7)->hasFinished()) { texts_.at(7)->setEnabled(true); } // Fin de la quinta escena - if (bitmaps_.at(4)->hasFinished() && texts_.at(7)->hasFinished()) + if (sprites_.at(4)->hasFinished() && texts_.at(7)->hasFinished()) { - bitmaps_.at(4)->setEnabled(false); texts_.at(7)->setEnabled(false); scene_++; } @@ -189,16 +184,15 @@ void Intro::updateScenes() case 5: { // Sexta imagen junto con texto - Globos de café - if (!bitmaps_.at(5)->hasFinished() && !texts_.at(8)->hasFinished()) + if (!sprites_.at(5)->hasFinished() && !texts_.at(8)->hasFinished()) { - bitmaps_.at(5)->setEnabled(true); + sprites_.at(5)->enable(); texts_.at(8)->setEnabled(true); } // Acaba el último texto - if (bitmaps_.at(5)->hasFinished() && texts_.at(8)->hasFinished()) + if (sprites_.at(5)->hasFinished() && texts_.at(8)->hasFinished()) { - bitmaps_.at(5)->setEnabled(false); texts_.at(8)->setEnabled(false); JA_StopMusic(); section::name = section::Name::TITLE; @@ -284,63 +278,30 @@ void Intro::initSprites() auto texture = Resource::get()->getTexture(BITMAP_LIST.front()); const int BITMAP_WIDTH = texture->getWidth(); const int BITMAP_HEIGHT = texture->getHeight(); + const int X_DEST = param.game.game_area.center_x - BITMAP_WIDTH / 2; + const int Y_DEST = param.game.game_area.first_quarter_y - (BITMAP_HEIGHT / 4); // Inicializa los bitmaps de la intro constexpr int TOTAL_BITMAPS = 6; for (int i = 0; i < TOTAL_BITMAPS; ++i) { - auto ss = std::make_unique(Resource::get()->getTexture(BITMAP_LIST.at(i))); - ss->setWidth(BITMAP_WIDTH); - ss->setHeight(BITMAP_HEIGHT); - ss->setSpriteClip(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT); - ss->setFinishedCounter(20); - ss->setDestX(param.game.game_area.center_x - (BITMAP_WIDTH / 2)); - ss->setDestY(param.game.game_area.first_quarter_y - (BITMAP_HEIGHT / 4)); - bitmaps_.push_back(std::move(ss)); + auto sprite = std::make_unique(Resource::get()->getTexture(BITMAP_LIST.at(i))); + sprite->setWidth(BITMAP_WIDTH); + sprite->setHeight(BITMAP_HEIGHT); + sprite->setSpriteClip(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT); + + // sprite->setFinishedCounter(20); + // sprite->setDestX(param.game.game_area.center_x - (BITMAP_WIDTH / 2)); + // sprite->setDestY(param.game.game_area.first_quarter_y - (BITMAP_HEIGHT / 4)); + sprites_.push_back(std::move(sprite)); } - bitmaps_.at(0)->setPosX(-BITMAP_WIDTH); - bitmaps_.at(0)->setPosY(param.game.game_area.first_quarter_y - (BITMAP_HEIGHT / 4)); - bitmaps_.at(0)->setVelX(0.0f); - bitmaps_.at(0)->setVelY(0.0f); - bitmaps_.at(0)->setAccelX(0.6f); - bitmaps_.at(0)->setAccelY(0.0f); - - bitmaps_.at(1)->setPosX(param.game.width); - bitmaps_.at(1)->setPosY(param.game.game_area.first_quarter_y - (BITMAP_HEIGHT / 4)); - bitmaps_.at(1)->setVelX(-1.0f); - bitmaps_.at(1)->setVelY(0.0f); - bitmaps_.at(1)->setAccelX(-0.3f); - bitmaps_.at(1)->setAccelY(0.0f); - - bitmaps_.at(2)->setPosX(param.game.game_area.center_x - (BITMAP_WIDTH / 2)); - bitmaps_.at(2)->setPosY(-BITMAP_HEIGHT); - bitmaps_.at(2)->setVelX(0.0f); - bitmaps_.at(2)->setVelY(3.0f); - bitmaps_.at(2)->setAccelX(0.1f); - bitmaps_.at(2)->setAccelY(0.3f); - bitmaps_.at(2)->setFinishedCounter(250); - - bitmaps_.at(3)->setPosX(param.game.game_area.center_x - (BITMAP_WIDTH / 2)); - bitmaps_.at(3)->setPosY(param.game.height); - bitmaps_.at(3)->setVelX(0.0f); - bitmaps_.at(3)->setVelY(-0.7f); - bitmaps_.at(3)->setAccelX(0.0f); - bitmaps_.at(3)->setAccelY(0.0f); - - bitmaps_.at(4)->setPosX(param.game.game_area.center_x - (BITMAP_WIDTH / 2)); - bitmaps_.at(4)->setPosY(-BITMAP_HEIGHT); - bitmaps_.at(4)->setVelX(0.0f); - bitmaps_.at(4)->setVelY(3.0f); - bitmaps_.at(4)->setAccelX(0.1f); - bitmaps_.at(4)->setAccelY(0.3f); - - bitmaps_.at(5)->setPosX(param.game.width); - bitmaps_.at(5)->setPosY(param.game.game_area.first_quarter_y - (BITMAP_HEIGHT / 4)); - bitmaps_.at(5)->setVelX(-0.7f); - bitmaps_.at(5)->setVelY(0.0f); - bitmaps_.at(5)->setAccelX(0.0f); - bitmaps_.at(5)->setAccelY(0.0f); + sprites_.at(0)->addPath(-BITMAP_WIDTH, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeOutQuint, 0); + sprites_.at(1)->addPath(param.game.width, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeOutQuint, 0); + sprites_.at(2)->addPath(-BITMAP_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 100, easeOutQuint, 0); + sprites_.at(3)->addPath(param.game.height, Y_DEST, PathType::VERTICAL, X_DEST, 100, easeOutQuint, 0); + sprites_.at(4)->addPath(-BITMAP_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 100, easeOutQuint, 0); + sprites_.at(5)->addPath(param.game.width, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeOutQuint, 0); // Crea la textura para la sombra auto shadow_texture = std::make_shared(Screen::get()->getRenderer()); @@ -353,7 +314,7 @@ void Intro::initSprites() SDL_SetRenderTarget(Screen::get()->getRenderer(), temp); // Inicializa el sprite para la sombra - shadow_sprite_ = std::make_unique(shadow_texture, bitmaps_.front()->getRect()); + shadow_sprite_ = std::make_unique(shadow_texture, sprites_.front()->getRect()); } // Inicializa los textos @@ -416,12 +377,12 @@ void Intro::initTexts() // Actualiza los sprites void Intro::updateSprites() { - for (auto &bitmap : bitmaps_) + for (auto &bitmap : sprites_) { bitmap->update(); } - const int X = static_cast(bitmaps_.at(scene_)->getPosX()) + 2; - const int Y = static_cast(bitmaps_.at(scene_)->getPosY()) + 2; + const int X = sprites_.at(scene_)->getX() + 2; + const int Y = sprites_.at(scene_)->getY() + 2; shadow_sprite_->setPosition(X, Y); } @@ -438,7 +399,7 @@ void Intro::updateTexts() void Intro::renderSprites() { shadow_sprite_->render(); - bitmaps_.at(scene_)->render(); + sprites_.at(scene_)->render(); } // Dibuja los textos diff --git a/source/intro.h b/source/intro.h index 5d084d4..3696501 100644 --- a/source/intro.h +++ b/source/intro.h @@ -4,7 +4,7 @@ #include // Para SDL_Texture #include // Para unique_ptr, shared_ptr #include // Para vector -#include "smart_sprite.h" // Para SmartSprite +#include "path_sprite.h" // Para PathSprite #include "writer.h" // Para Writer class Text; // lines 8-8 class Texture; // lines 9-9 @@ -19,9 +19,9 @@ class Intro { private: // Objetos - std::vector> bitmaps_; // Vector con los sprites inteligentes para los dibujos de la intro - std::vector> texts_; // Textos de la intro - std::unique_ptr shadow_sprite_; // Sprite para la sombra de las imagenes + std::vector> sprites_; // Vector con los sprites inteligentes para los dibujos de la intro + std::vector> texts_; // Textos de la intro + std::unique_ptr shadow_sprite_; // Sprite para la sombra de las imagenes // Variables Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa