Treballan en la Intro
This commit is contained in:
230
source/intro.cpp
230
source/intro.cpp
@@ -51,83 +51,110 @@ void Intro::updateScenes()
|
|||||||
{
|
{
|
||||||
switch (scene_)
|
switch (scene_)
|
||||||
{
|
{
|
||||||
case 1:
|
case 0:
|
||||||
{
|
{
|
||||||
// Primera imagen - UPV
|
// Primera imagen - UPV
|
||||||
if (!bitmaps_[0]->hasFinished())
|
if (!bitmaps_.at(0)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[0]->setEnabled(true);
|
bitmaps_.at(0)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Primer texto de la primera imagen
|
// Primer texto de la primera imagen
|
||||||
if (bitmaps_[0]->hasFinished() && !texts_[0]->hasFinished())
|
if (bitmaps_.at(0)->hasFinished() && !texts_.at(0)->hasFinished())
|
||||||
{
|
{
|
||||||
texts_[0]->setEnabled(true);
|
texts_.at(0)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Segundo texto de la primera imagen
|
// Segundo texto de la primera imagen
|
||||||
if (texts_[0]->hasFinished() && !texts_[1]->hasFinished())
|
if (texts_.at(0)->hasFinished() && !texts_.at(1)->hasFinished())
|
||||||
{
|
{
|
||||||
texts_[0]->setEnabled(false);
|
texts_.at(0)->setEnabled(false);
|
||||||
texts_[1]->setEnabled(true);
|
texts_.at(1)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tercer texto de la primera imagen
|
// Tercer texto de la primera imagen
|
||||||
if (texts_[1]->hasFinished() && !texts_[2]->hasFinished())
|
if (texts_.at(1)->hasFinished() && !texts_.at(2)->hasFinished())
|
||||||
{
|
{
|
||||||
texts_[1]->setEnabled(false);
|
texts_.at(1)->setEnabled(false);
|
||||||
texts_[2]->setEnabled(true);
|
texts_.at(2)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fin de la primera escena
|
// Fin de la primera escena
|
||||||
if (texts_[2]->hasFinished())
|
if (texts_.at(2)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[0]->setEnabled(false);
|
bitmaps_.at(0)->setEnabled(false);
|
||||||
texts_[2]->setEnabled(false);
|
texts_.at(2)->setEnabled(false);
|
||||||
scene_++;
|
scene_++;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 2:
|
case 1:
|
||||||
{
|
{
|
||||||
// Segunda imagen - Máquina
|
// Segunda imagen - Máquina
|
||||||
if (!bitmaps_[1]->hasFinished())
|
if (!bitmaps_.at(1)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[1]->setEnabled(true);
|
bitmaps_.at(1)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Primer texto de la segunda imagen
|
// Primer texto de la segunda imagen
|
||||||
if (bitmaps_[1]->hasFinished() && !texts_[3]->hasFinished())
|
if (bitmaps_.at(1)->hasFinished() && !texts_.at(3)->hasFinished())
|
||||||
{
|
{
|
||||||
texts_[3]->setEnabled(true);
|
texts_.at(3)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fin de la segunda escena
|
// Fin de la segunda escena
|
||||||
if (texts_[3]->hasFinished())
|
if (texts_.at(3)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[1]->setEnabled(false);
|
bitmaps_.at(1)->setEnabled(false);
|
||||||
texts_[3]->setEnabled(false);
|
texts_.at(3)->setEnabled(false);
|
||||||
scene_++;
|
scene_++;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3:
|
case 2:
|
||||||
{
|
{
|
||||||
// Tercera imagen junto con primer texto - GRITO
|
// Tercera imagen junto con primer texto - GRITO
|
||||||
if (!bitmaps_[2]->hasFinished() && !texts_[4]->hasFinished())
|
if (!bitmaps_.at(2)->hasFinished() && !texts_.at(4)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[2]->setEnabled(true);
|
bitmaps_.at(2)->setEnabled(true);
|
||||||
texts_[4]->setEnabled(true);
|
texts_.at(4)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fin de la tercera escena
|
// Fin de la tercera escena
|
||||||
if (bitmaps_[2]->hasFinished() && texts_[4]->hasFinished())
|
if (bitmaps_.at(2)->hasFinished() && texts_.at(4)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[2]->setEnabled(false);
|
bitmaps_.at(2)->setEnabled(false);
|
||||||
texts_[4]->setEnabled(false);
|
texts_.at(4)->setEnabled(false);
|
||||||
|
scene_++;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
// Cuarta imagen junto con primer texto - Reflexión
|
||||||
|
if (!bitmaps_.at(3)->hasFinished() && !texts_.at(5)->hasFinished())
|
||||||
|
{
|
||||||
|
bitmaps_.at(3)->setEnabled(true);
|
||||||
|
texts_.at(5)->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Segundo texto de la cuarta imagen
|
||||||
|
if (texts_.at(5)->hasFinished() && !texts_.at(6)->hasFinished())
|
||||||
|
{
|
||||||
|
texts_.at(5)->setEnabled(false);
|
||||||
|
texts_.at(6)->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fin de la cuarta escena
|
||||||
|
if (bitmaps_.at(3)->hasFinished() && texts_.at(6)->hasFinished())
|
||||||
|
{
|
||||||
|
bitmaps_.at(3)->setEnabled(false);
|
||||||
|
texts_.at(6)->setEnabled(false);
|
||||||
scene_++;
|
scene_++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,26 +162,24 @@ void Intro::updateScenes()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
{
|
{
|
||||||
// Cuarta imagen junto con primer texto - Reflexión
|
// Quinta imagen - Patada
|
||||||
if (!bitmaps_[3]->hasFinished() && !texts_[5]->hasFinished())
|
if (!bitmaps_.at(4)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[3]->setEnabled(true);
|
bitmaps_.at(4)->setEnabled(true);
|
||||||
texts_[5]->setEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Segundo texto de la cuarta imagen
|
// Primer texto de la quinta imagen
|
||||||
if (texts_[5]->hasFinished() && !texts_[6]->hasFinished())
|
if (bitmaps_.at(4)->hasFinished() && !texts_.at(7)->hasFinished())
|
||||||
{
|
{
|
||||||
texts_[5]->setEnabled(false);
|
texts_.at(7)->setEnabled(true);
|
||||||
texts_[6]->setEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fin de la cuarta escena
|
// Fin de la quinta escena
|
||||||
if (bitmaps_[3]->hasFinished() && texts_[6]->hasFinished())
|
if (bitmaps_.at(4)->hasFinished() && texts_.at(7)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[3]->setEnabled(false);
|
bitmaps_.at(4)->setEnabled(false);
|
||||||
texts_[6]->setEnabled(false);
|
texts_.at(7)->setEnabled(false);
|
||||||
scene_++;
|
scene_++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,44 +187,19 @@ void Intro::updateScenes()
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
{
|
{
|
||||||
// Quinta imagen - Patada
|
|
||||||
if (!bitmaps_[4]->hasFinished())
|
|
||||||
{
|
|
||||||
bitmaps_[4]->setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Primer texto de la quinta imagen
|
|
||||||
if (bitmaps_[4]->hasFinished() && !texts_[7]->hasFinished())
|
|
||||||
{
|
|
||||||
texts_[7]->setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fin de la quinta escena
|
|
||||||
if (bitmaps_[4]->hasFinished() && texts_[7]->hasFinished())
|
|
||||||
{
|
|
||||||
bitmaps_[4]->setEnabled(false);
|
|
||||||
texts_[7]->setEnabled(false);
|
|
||||||
scene_++;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 6:
|
|
||||||
{
|
|
||||||
// Sexta imagen junto con texto - Globos de café
|
// Sexta imagen junto con texto - Globos de café
|
||||||
if (!bitmaps_[5]->hasFinished() && !texts_[8]->hasFinished())
|
if (!bitmaps_.at(5)->hasFinished() && !texts_.at(8)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[5]->setEnabled(true);
|
bitmaps_.at(5)->setEnabled(true);
|
||||||
texts_[8]->setEnabled(true);
|
texts_.at(8)->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Acaba el último texto
|
// Acaba el último texto
|
||||||
if (bitmaps_[5]->hasFinished() && texts_[8]->hasFinished())
|
if (bitmaps_.at(5)->hasFinished() && texts_.at(8)->hasFinished())
|
||||||
{
|
{
|
||||||
bitmaps_[5]->setEnabled(false);
|
bitmaps_.at(5)->setEnabled(false);
|
||||||
texts_[8]->setEnabled(false);
|
texts_.at(8)->setEnabled(false);
|
||||||
JA_StopMusic();
|
JA_StopMusic();
|
||||||
section::name = section::Name::TITLE;
|
section::name = section::Name::TITLE;
|
||||||
section::options = section::Options::TITLE_1;
|
section::options = section::Options::TITLE_1;
|
||||||
@@ -224,16 +224,11 @@ void Intro::update()
|
|||||||
// Actualiza el objeto screen
|
// Actualiza el objeto screen
|
||||||
Screen::get()->update();
|
Screen::get()->update();
|
||||||
|
|
||||||
// Actualiza los objetos
|
// Actualiza los sprites
|
||||||
for (auto &bitmap : bitmaps_)
|
updateSprites();
|
||||||
{
|
|
||||||
bitmap->update();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (auto &text : texts_)
|
// Actualiza los textos
|
||||||
{
|
updateTexts();
|
||||||
text->update();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Actualiza las escenas de la intro
|
// Actualiza las escenas de la intro
|
||||||
updateScenes();
|
updateScenes();
|
||||||
@@ -252,16 +247,11 @@ void Intro::render()
|
|||||||
// Limpia la pantalla
|
// Limpia la pantalla
|
||||||
Screen::get()->clean(bg_color);
|
Screen::get()->clean(bg_color);
|
||||||
|
|
||||||
// Dibuja los objetos
|
// Dibuja los sprites
|
||||||
for (const auto &bitmap : bitmaps_)
|
renderSprites();
|
||||||
{
|
|
||||||
bitmap->render();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const auto &text : texts_)
|
// Dibuja los textos
|
||||||
{
|
renderTexts();
|
||||||
text->render();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vuelca el contenido del renderizador en pantalla
|
// Vuelca el contenido del renderizador en pantalla
|
||||||
Screen::get()->render();
|
Screen::get()->render();
|
||||||
@@ -351,6 +341,19 @@ void Intro::initSprites()
|
|||||||
bitmaps_.at(5)->setVelY(0.0f);
|
bitmaps_.at(5)->setVelY(0.0f);
|
||||||
bitmaps_.at(5)->setAccelX(0.0f);
|
bitmaps_.at(5)->setAccelX(0.0f);
|
||||||
bitmaps_.at(5)->setAccelY(0.0f);
|
bitmaps_.at(5)->setAccelY(0.0f);
|
||||||
|
|
||||||
|
// Crea la textura para la sombra
|
||||||
|
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->setBlendMode(SDL_BLENDMODE_BLEND);
|
||||||
|
auto temp = SDL_GetRenderTarget(Screen::get()->getRenderer());
|
||||||
|
shadow_texture->setAsRenderTarget(Screen::get()->getRenderer());
|
||||||
|
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0x54, 0x31, 0x49, 0xFF);
|
||||||
|
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, bitmaps_.front()->getRect());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inicializa los textos
|
// Inicializa los textos
|
||||||
@@ -408,4 +411,41 @@ void Intro::initTexts()
|
|||||||
{
|
{
|
||||||
text->center(param.game.game_area.center_x);
|
text->center(param.game.game_area.center_x);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actualiza los sprites
|
||||||
|
void Intro::updateSprites()
|
||||||
|
{
|
||||||
|
for (auto &bitmap : bitmaps_)
|
||||||
|
{
|
||||||
|
bitmap->update();
|
||||||
|
}
|
||||||
|
const int X = static_cast<int>(bitmaps_.at(scene_)->getPosX()) + 2;
|
||||||
|
const int Y = static_cast<int>(bitmaps_.at(scene_)->getPosY()) + 2;
|
||||||
|
shadow_sprite_->setPosition(X, Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actualiza los textos
|
||||||
|
void Intro::updateTexts()
|
||||||
|
{
|
||||||
|
for (auto &text : texts_)
|
||||||
|
{
|
||||||
|
text->update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dibuja los sprites
|
||||||
|
void Intro::renderSprites()
|
||||||
|
{
|
||||||
|
shadow_sprite_->render();
|
||||||
|
bitmaps_.at(scene_)->render();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dibuja los textos
|
||||||
|
void Intro::renderTexts()
|
||||||
|
{
|
||||||
|
for (const auto &text : texts_)
|
||||||
|
{
|
||||||
|
text->render();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <SDL2/SDL_stdinc.h> // Para Uint32
|
#include <SDL2/SDL_stdinc.h> // Para Uint32
|
||||||
|
#include <SDL2/SDL.h> // Para SDL_Texture
|
||||||
#include <memory> // Para unique_ptr, shared_ptr
|
#include <memory> // Para unique_ptr, shared_ptr
|
||||||
#include <vector> // Para vector
|
#include <vector> // Para vector
|
||||||
#include "smart_sprite.h" // Para SmartSprite
|
#include "smart_sprite.h" // Para SmartSprite
|
||||||
@@ -20,10 +21,11 @@ private:
|
|||||||
// Objetos
|
// Objetos
|
||||||
std::vector<std::unique_ptr<SmartSprite>> bitmaps_; // Vector con los sprites inteligentes para los dibujos de la intro
|
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::vector<std::unique_ptr<Writer>> texts_; // Textos de la intro
|
||||||
|
std::unique_ptr<Sprite> shadow_sprite_; // Sprite para la sombra de las imagenes
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa
|
Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa
|
||||||
int scene_ = 1; // Indica que escena está activa
|
int scene_ = 0; // Indica que escena está activa
|
||||||
|
|
||||||
// Actualiza las variables del objeto
|
// Actualiza las variables del objeto
|
||||||
void update();
|
void update();
|
||||||
@@ -46,6 +48,18 @@ private:
|
|||||||
// Inicializa los textos
|
// Inicializa los textos
|
||||||
void initTexts();
|
void initTexts();
|
||||||
|
|
||||||
|
// Actualiza los sprites
|
||||||
|
void updateSprites();
|
||||||
|
|
||||||
|
// Actualiza los textos
|
||||||
|
void updateTexts();
|
||||||
|
|
||||||
|
// Dibuja los sprites
|
||||||
|
void renderSprites();
|
||||||
|
|
||||||
|
// Dibuja los textos
|
||||||
|
void renderTexts();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Intro();
|
Intro();
|
||||||
|
|||||||
@@ -15,13 +15,9 @@ std::vector<SDL_Point> createPath(int start, int end, PathType type, int fixed_p
|
|||||||
double t = static_cast<double>(i) / (steps - 1);
|
double t = static_cast<double>(i) / (steps - 1);
|
||||||
double value = start + (end - start) * easingFunction(t);
|
double value = start + (end - start) * easingFunction(t);
|
||||||
|
|
||||||
if (start > 0 && end < 0)
|
if ((start > 0 && end < 0) || (start < 0 && end > 0))
|
||||||
{
|
{
|
||||||
value = start - std::abs(end - start) * easingFunction(t);
|
value = start + (end > 0 ? 1 : -1) * std::abs(end - start) * easingFunction(t);
|
||||||
}
|
|
||||||
else if (start < 0 && end > 0)
|
|
||||||
{
|
|
||||||
value = start + std::abs(end - start) * easingFunction(t);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
@@ -105,8 +101,8 @@ void PathSprite::enable()
|
|||||||
|
|
||||||
// Establece la posición
|
// Establece la posición
|
||||||
auto &path = paths_.at(current_path_);
|
auto &path = paths_.at(current_path_);
|
||||||
const auto &p = path.spots.at(path.counter);
|
const auto &P = path.spots.at(path.counter);
|
||||||
setPosition(p);
|
setPosition(P);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Coloca el sprite en los diferentes puntos del recorrido
|
// Coloca el sprite en los diferentes puntos del recorrido
|
||||||
|
|||||||
Reference in New Issue
Block a user