Treballant en la intro

This commit is contained in:
2025-03-12 14:17:15 +01:00
parent 215ce999c2
commit a3d4b13f3b
2 changed files with 46 additions and 85 deletions

View File

@@ -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<SmartSprite>(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<PathSprite>(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<Texture>(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<Sprite>(shadow_texture, bitmaps_.front()->getRect());
shadow_sprite_ = std::make_unique<Sprite>(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<int>(bitmaps_.at(scene_)->getPosX()) + 2;
const int Y = static_cast<int>(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

View File

@@ -4,7 +4,7 @@
#include <SDL2/SDL.h> // Para SDL_Texture
#include <memory> // Para unique_ptr, shared_ptr
#include <vector> // 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<std::unique_ptr<SmartSprite>> bitmaps_; // Vector con los sprites inteligentes para los dibujos de la intro
std::vector<std::unique_ptr<Writer>> texts_; // Textos de la intro
std::unique_ptr<Sprite> shadow_sprite_; // Sprite para la sombra de las imagenes
std::vector<std::unique_ptr<PathSprite>> sprites_; // Vector con los sprites inteligentes para los dibujos de la intro
std::vector<std::unique_ptr<Writer>> texts_; // Textos de la intro
std::unique_ptr<Sprite> shadow_sprite_; // Sprite para la sombra de las imagenes
// Variables
Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa