Treballant en la intro

This commit is contained in:
2025-03-13 14:18:19 +01:00
parent a3d4b13f3b
commit 5a6b96f7ab
7 changed files with 126 additions and 50 deletions

View File

@@ -54,10 +54,8 @@ void Intro::updateScenes()
case 0:
{
// Primera imagen - UPV
if (!sprites_.at(0)->hasFinished())
{
sprites_.at(0)->enable();
}
sprites_.at(0)->enable();
shadow_sprites_.at(0)->enable();
// Primer texto de la primera imagen
if (sprites_.at(0)->hasFinished() && !texts_.at(0)->hasFinished())
@@ -92,10 +90,8 @@ void Intro::updateScenes()
case 1:
{
// Segunda imagen - Máquina
if (!sprites_.at(1)->hasFinished())
{
sprites_.at(1)->enable();
}
sprites_.at(1)->enable();
shadow_sprites_.at(1)->enable();
// Primer texto de la segunda imagen
if (sprites_.at(1)->hasFinished() && !texts_.at(3)->hasFinished())
@@ -112,12 +108,15 @@ void Intro::updateScenes()
break;
}
case 2:
{
// Tercera imagen junto con primer texto - GRITO
if (!sprites_.at(2)->hasFinished() && !texts_.at(4)->hasFinished())
if (!texts_.at(4)->hasFinished())
{
sprites_.at(2)->enable();
shadow_sprites_.at(2)->enable();
texts_.at(4)->setEnabled(true);
}
@@ -134,9 +133,11 @@ void Intro::updateScenes()
case 3:
{
// Cuarta imagen junto con primer texto - Reflexión
if (!sprites_.at(3)->hasFinished() && !texts_.at(5)->hasFinished())
sprites_.at(3)->enable();
shadow_sprites_.at(3)->enable();
if (!texts_.at(5)->hasFinished())
{
sprites_.at(3)->enable();
texts_.at(5)->setEnabled(true);
}
@@ -160,10 +161,8 @@ void Intro::updateScenes()
case 4:
{
// Quinta imagen - Patada
if (!sprites_.at(4)->hasFinished())
{
sprites_.at(4)->enable();
}
sprites_.at(4)->enable();
shadow_sprites_.at(4)->enable();
// Primer texto de la quinta imagen
if (sprites_.at(4)->hasFinished() && !texts_.at(7)->hasFinished())
@@ -184,9 +183,11 @@ void Intro::updateScenes()
case 5:
{
// Sexta imagen junto con texto - Globos de café
if (!sprites_.at(5)->hasFinished() && !texts_.at(8)->hasFinished())
sprites_.at(5)->enable();
shadow_sprites_.at(5)->enable();
if (!texts_.at(8)->hasFinished())
{
sprites_.at(5)->enable();
texts_.at(8)->setEnabled(true);
}
@@ -289,23 +290,25 @@ void Intro::initSprites()
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));
}
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);
constexpr int BORDER = 4;
sprites_.at(0)->addPath(-BITMAP_WIDTH - BORDER, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeInOutExpo, 0);
sprites_.at(1)->addPath(param.game.width, X_DEST, PathType::HORIZONTAL, Y_DEST, 100, easeOutBounce, 0);
sprites_.at(2)->addPath(-BITMAP_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 40, easeOutQuint, 0);
sprites_.at(3)->addPath(param.game.height, Y_DEST, PathType::VERTICAL, X_DEST, 800, easeOutQuint, 0);
sprites_.at(4)->addPath(-BITMAP_HEIGHT, Y_DEST, PathType::VERTICAL, X_DEST, 70, easeOutElastic, 0);
sprites_.at(5)->addPath(param.game.width, X_DEST, PathType::HORIZONTAL, Y_DEST, 400, easeOutQuint, 0);
// Crea la textura para la sombra
const int S_BITMAP_WIDTH = BITMAP_WIDTH + BORDER;
const int S_BITMAP_HEIGHT = BITMAP_HEIGHT + BORDER;
const int S_X_DEST = X_DEST - BORDER / 2;
const int S_Y_DEST = Y_DEST - BORDER / 2;;
auto shadow_texture = std::make_shared<Texture>(Screen::get()->getRenderer());
shadow_texture->createBlank(BITMAP_WIDTH, BITMAP_HEIGHT, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET);
shadow_texture->createBlank(S_BITMAP_WIDTH, S_BITMAP_HEIGHT, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET);
shadow_texture->setBlendMode(SDL_BLENDMODE_BLEND);
auto temp = SDL_GetRenderTarget(Screen::get()->getRenderer());
shadow_texture->setAsRenderTarget(Screen::get()->getRenderer());
@@ -313,8 +316,22 @@ void Intro::initSprites()
SDL_RenderClear(Screen::get()->getRenderer());
SDL_SetRenderTarget(Screen::get()->getRenderer(), temp);
// Inicializa el sprite para la sombra
shadow_sprite_ = std::make_unique<Sprite>(shadow_texture, sprites_.front()->getRect());
// Inicializa los sprites para la sombra
for (int i = 0; i < TOTAL_BITMAPS; ++i)
{
auto sprite = std::make_unique<PathSprite>(shadow_texture);
sprite->setWidth(S_BITMAP_WIDTH);
sprite->setHeight(S_BITMAP_HEIGHT);
sprite->setSpriteClip(0, 0, S_BITMAP_WIDTH, S_BITMAP_HEIGHT);
shadow_sprites_.push_back(std::move(sprite));
}
shadow_sprites_.at(0)->addPath(param.game.height, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 100, easeInOutExpo, 0);
shadow_sprites_.at(1)->addPath(-S_BITMAP_HEIGHT, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 100, easeOutBounce, 0);
shadow_sprites_.at(2)->addPath(-S_BITMAP_WIDTH, S_X_DEST, PathType::HORIZONTAL, S_Y_DEST, 40, easeOutQuint, 0);
shadow_sprites_.at(3)->addPath(param.game.width, S_X_DEST, PathType::HORIZONTAL, S_Y_DEST, 800, easeOutQuint, 0);
shadow_sprites_.at(4)->addPath(param.game.height, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 70, easeOutElastic, 0);
shadow_sprites_.at(5)->addPath(-S_BITMAP_HEIGHT, S_Y_DEST, PathType::VERTICAL, S_X_DEST, 400, easeOutQuint, 0);
}
// Inicializa los textos
@@ -377,13 +394,15 @@ void Intro::initTexts()
// Actualiza los sprites
void Intro::updateSprites()
{
for (auto &bitmap : sprites_)
for (auto &sprite : sprites_)
{
bitmap->update();
sprite->update();
}
for (auto &sprite : shadow_sprites_)
{
sprite->update();
}
const int X = sprites_.at(scene_)->getX() + 2;
const int Y = sprites_.at(scene_)->getY() + 2;
shadow_sprite_->setPosition(X, Y);
}
// Actualiza los textos
@@ -398,7 +417,7 @@ void Intro::updateTexts()
// Dibuja los sprites
void Intro::renderSprites()
{
shadow_sprite_->render();
shadow_sprites_.at(scene_)->render();
sprites_.at(scene_)->render();
}