Mes renames. Mes ordre.

This commit is contained in:
2024-10-12 12:03:19 +02:00
parent 101e375fd3
commit cce14dba4d
4 changed files with 283 additions and 279 deletions

View File

@@ -23,41 +23,40 @@ struct JA_Music_t;
// Constructor // Constructor
Instructions::Instructions(JA_Music_t *music) Instructions::Instructions(JA_Music_t *music)
: music(music) : music_(music)
{ {
// Copia los punteros // Copia los punteros
renderer = Screen::get()->getRenderer(); renderer_ = Screen::get()->getRenderer();
// Crea objetos // Crea objetos
eventHandler = std::make_unique<SDL_Event>(); text_ = std::make_unique<Text>(Asset::get()->get("smb2.gif"), Asset::get()->get("smb2.txt"), renderer_);
text = std::make_unique<Text>(Asset::get()->get("smb2.gif"), Asset::get()->get("smb2.txt"), renderer); tiled_bg_ = std::make_unique<Tiledbg>(Asset::get()->get("title_bg_tile.png"), (SDL_Rect){0, 0, param.game.width, param.game.height}, TILED_MODE_STATIC);
tiledbg = std::make_unique<Tiledbg>(Asset::get()->get("title_bg_tile.png"), (SDL_Rect){0, 0, param.game.width, param.game.height}, TILED_MODE_STATIC); fade_ = std::make_unique<Fade>(renderer_);
fade = std::make_unique<Fade>(renderer);
// Crea un backbuffer para el renderizador // Crea un backbuffer para el renderizador
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.width, param.game.height); backbuffer_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.width, param.game.height);
SDL_SetTextureBlendMode(backbuffer, SDL_BLENDMODE_BLEND); SDL_SetTextureBlendMode(backbuffer_, SDL_BLENDMODE_BLEND);
// Crea una textura para el texto fijo // Crea una textura para el texto fijo
texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.width, param.game.height); texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.width, param.game.height);
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND); SDL_SetTextureBlendMode(texture_, SDL_BLENDMODE_BLEND);
// Inicializa variables // Inicializa variables
section::name = section::Name::INSTRUCTIONS; section::name = section::Name::INSTRUCTIONS;
ticks = 0; ticks_ = 0;
ticksSpeed = 15; ticks_speed_ = 15;
counter = 0; counter_ = 0;
counterEnd = 700; counter_end_ = 700;
view = {0, 0, param.game.width, param.game.height}; view_ = {0, 0, param.game.width, param.game.height};
spritePos = {0, 0}; sprite_pos_ = {0, 0};
itemSpace = 2; item_space_ = 2;
// Inicializa objetos // Inicializa objetos
fade->setColor(fade_color.r, fade_color.g, fade_color.b); fade_->setColor(fade_color.r, fade_color.g, fade_color.b);
fade->setType(FadeType::FULLSCREEN); fade_->setType(FadeType::FULLSCREEN);
fade->setPost(param.fade.post_duration); fade_->setPost(param.fade.post_duration);
fade->setMode(FadeMode::IN); fade_->setMode(FadeMode::IN);
fade->activate(); fade_->activate();
// Rellena la textura de texto // Rellena la textura de texto
fillTexture(); fillTexture();
@@ -69,187 +68,187 @@ Instructions::Instructions(JA_Music_t *music)
// Destructor // Destructor
Instructions::~Instructions() Instructions::~Instructions()
{ {
itemTextures.clear(); item_textures_.clear();
sprites.clear(); sprites_.clear();
SDL_DestroyTexture(backbuffer); SDL_DestroyTexture(backbuffer_);
SDL_DestroyTexture(texture); SDL_DestroyTexture(texture_);
} }
// Inicializa los sprites de los items // Inicializa los sprites de los items
void Instructions::iniSprites() void Instructions::iniSprites()
{ {
// Inicializa las texturas // Inicializa las texturas
auto item1 = std::make_shared<Texture>(renderer, Asset::get()->get("item_points1_disk.png")); auto item1 = std::make_shared<Texture>(renderer_, Asset::get()->get("item_points1_disk.png"));
itemTextures.push_back(item1); item_textures_.push_back(item1);
auto item2 = std::make_shared<Texture>(renderer, Asset::get()->get("item_points2_gavina.png")); auto item2 = std::make_shared<Texture>(renderer_, Asset::get()->get("item_points2_gavina.png"));
itemTextures.push_back(item2); item_textures_.push_back(item2);
auto item3 = std::make_shared<Texture>(renderer, Asset::get()->get("item_points3_pacmar.png")); auto item3 = std::make_shared<Texture>(renderer_, Asset::get()->get("item_points3_pacmar.png"));
itemTextures.push_back(item3); item_textures_.push_back(item3);
auto item4 = std::make_shared<Texture>(renderer, Asset::get()->get("item_clock.png")); auto item4 = std::make_shared<Texture>(renderer_, Asset::get()->get("item_clock.png"));
itemTextures.push_back(item4); item_textures_.push_back(item4);
auto item5 = std::make_shared<Texture>(renderer, Asset::get()->get("item_coffee.png")); auto item5 = std::make_shared<Texture>(renderer_, Asset::get()->get("item_coffee.png"));
itemTextures.push_back(item5); item_textures_.push_back(item5);
// Inicializa los sprites // Inicializa los sprites
for (int i = 0; i < (int)itemTextures.size(); ++i) for (int i = 0; i < (int)item_textures_.size(); ++i)
{ {
auto sprite = std::make_unique<Sprite>(0, 0, param.game.item_size, param.game.item_size, itemTextures[i]); auto sprite = std::make_unique<Sprite>(0, 0, param.game.item_size, param.game.item_size, item_textures_[i]);
sprite->setPos((SDL_Point){spritePos.x, spritePos.y + ((param.game.item_size + itemSpace) * i)}); sprite->setPos((SDL_Point){sprite_pos_.x, sprite_pos_.y + ((param.game.item_size + item_space_) * i)});
sprites.push_back(std::move(sprite)); sprites_.push_back(std::move(sprite));
} }
} }
// Actualiza los sprites // Actualiza los sprites
void Instructions::updateSprites() void Instructions::updateSprites()
{ {
SDL_Rect srcRect = {0, 0, param.game.item_size, param.game.item_size}; SDL_Rect src_rect = {0, 0, param.game.item_size, param.game.item_size};
// Disquito // Disquito
srcRect.y = param.game.item_size * (((counter + 12) / 36) % 2); src_rect.y = param.game.item_size * (((counter_ + 12) / 36) % 2);
sprites[0]->setSpriteClip(srcRect); sprites_[0]->setSpriteClip(src_rect);
// Gavineixon // Gavina
srcRect.y = param.game.item_size * (((counter + 9) / 36) % 2); src_rect.y = param.game.item_size * (((counter_ + 9) / 36) % 2);
sprites[1]->setSpriteClip(srcRect); sprites_[1]->setSpriteClip(src_rect);
// Pacmar // Pacmar
srcRect.y = param.game.item_size * (((counter + 6) / 36) % 2); src_rect.y = param.game.item_size * (((counter_ + 6) / 36) % 2);
sprites[2]->setSpriteClip(srcRect); sprites_[2]->setSpriteClip(src_rect);
// Time Stopper // Time Stopper
srcRect.y = param.game.item_size * (((counter + 3) / 36) % 2); src_rect.y = param.game.item_size * (((counter_ + 3) / 36) % 2);
sprites[3]->setSpriteClip(srcRect); sprites_[3]->setSpriteClip(src_rect);
// Coffee // Coffee
srcRect.y = param.game.item_size * (((counter + 0) / 36) % 2); src_rect.y = param.game.item_size * (((counter_ + 0) / 36) % 2);
sprites[4]->setSpriteClip(srcRect); sprites_[4]->setSpriteClip(src_rect);
} }
// Rellena la textura de texto // Rellena la textura de texto
void Instructions::fillTexture() void Instructions::fillTexture()
{ {
const int despX = param.game.item_size + 8; const int desp_x = param.game.item_size + 8;
// Modifica el renderizador para pintar en la textura // Modifica el renderizador para pintar en la textura
SDL_Texture *temp = SDL_GetRenderTarget(renderer); auto temp = SDL_GetRenderTarget(renderer_);
SDL_SetRenderTarget(renderer, texture); SDL_SetRenderTarget(renderer_, texture_);
// Limpia la textura // Limpia la textura
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0); SDL_SetRenderDrawColor(renderer_, 0, 0, 0, 0);
SDL_RenderClear(renderer); SDL_RenderClear(renderer_);
// Constantes // Constantes
const int numLines = 4; constexpr int num_lines = 4;
const int numItemLines = 4; constexpr int num_item_lines = 4;
const int numPostHeaders = 2; constexpr int num_post_headers = 2;
const int numPreHeaders = 1; constexpr int num_pre_headers = 1;
const int spacePostHeader = 20; constexpr int space_post_header = 20;
const int spacePreHeader = 28; constexpr int space_pre_header = 28;
const int spaceBetweenLines = text->getCharacterSize() * 1.5f; const int space_between_lines = text_->getCharacterSize() * 1.5f;
const int spaceBetweenItemLines = param.game.item_size + itemSpace; const int space_between_item_lines = param.game.item_size + item_space_;
const int spaceNewParagraph = spaceBetweenLines * 0.5f; const int space_new_paragraph = space_between_lines * 0.5f;
const int size = (numLines * spaceBetweenLines) + (numItemLines * spaceBetweenItemLines) + (numPostHeaders * spacePostHeader) + (numPreHeaders * spacePreHeader) + (spaceNewParagraph); const int size = (num_lines * space_between_lines) + (num_item_lines * space_between_item_lines) + (num_post_headers * space_post_header) + (num_pre_headers * space_pre_header) + (space_new_paragraph);
const int firstLine = (param.game.height - size) / 2; const int first_line = (param.game.height - size) / 2;
// Calcula cual es el texto más largo de las descripciones de los items // Calcula cual es el texto más largo de las descripciones de los items
int lenght = 0; int lenght = 0;
for (int i = 17; i <= 21; ++i) for (int i = 17; i <= 21; ++i)
{ {
const int l = text->lenght(lang::getText(i)); const int l = text_->lenght(lang::getText(i));
lenght = l > lenght ? l : lenght; lenght = l > lenght ? l : lenght;
} }
const int anchorItem = (param.game.width - (lenght + despX)) / 2; const int anchor_item = (param.game.width - (lenght + desp_x)) / 2;
// Escribe el texto de las instrucciones // Escribe el texto de las instrucciones
text->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, firstLine, lang::getText(11), 1, orange_color, 1, shdw_txt_color); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, first_line, lang::getText(11), 1, orange_color, 1, shdw_txt_color);
const int anchor1 = firstLine + spacePostHeader; const int anchor1 = first_line + space_post_header;
text->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + spaceBetweenLines * 0, lang::getText(12), 1, no_color, 1, shdw_txt_color); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 0, lang::getText(12), 1, no_color, 1, shdw_txt_color);
text->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + spaceBetweenLines * 1, lang::getText(13), 1, no_color, 1, shdw_txt_color); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 1, lang::getText(13), 1, no_color, 1, shdw_txt_color);
text->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + spaceNewParagraph + spaceBetweenLines * 2, lang::getText(14), 1, no_color, 1, shdw_txt_color); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 2, lang::getText(14), 1, no_color, 1, shdw_txt_color);
text->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + spaceNewParagraph + spaceBetweenLines * 3, lang::getText(15), 1, no_color, 1, shdw_txt_color); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 3, lang::getText(15), 1, no_color, 1, shdw_txt_color);
// Escribe el texto de los objetos y sus puntos // Escribe el texto de los objetos y sus puntos
const int anchor2 = anchor1 + spacePreHeader + spaceNewParagraph + spaceBetweenLines * 3; const int anchor2 = anchor1 + space_pre_header + space_new_paragraph + space_between_lines * 3;
text->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor2, lang::getText(16), 1, orange_color, 1, shdw_txt_color); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor2, lang::getText(16), 1, orange_color, 1, shdw_txt_color);
const int anchor3 = anchor2 + spacePostHeader; const int anchor3 = anchor2 + space_post_header;
// const int anchor4 = anchor3 + ((param.game.item_size + text->getCharacterSize()) / 2); // const int anchor4 = anchor3 + ((param.game.item_size + text->getCharacterSize()) / 2);
text->writeShadowed(anchorItem + despX, anchor3 + spaceBetweenItemLines * 0, lang::getText(17), shdw_txt_color); text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 0, lang::getText(17), shdw_txt_color);
text->writeShadowed(anchorItem + despX, anchor3 + spaceBetweenItemLines * 1, lang::getText(18), shdw_txt_color); text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 1, lang::getText(18), shdw_txt_color);
text->writeShadowed(anchorItem + despX, anchor3 + spaceBetweenItemLines * 2, lang::getText(19), shdw_txt_color); text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 2, lang::getText(19), shdw_txt_color);
text->writeShadowed(anchorItem + despX, anchor3 + spaceBetweenItemLines * 3, lang::getText(20), shdw_txt_color); text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 3, lang::getText(20), shdw_txt_color);
text->writeShadowed(anchorItem + despX, anchor3 + spaceBetweenItemLines * 4, lang::getText(21), shdw_txt_color); text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 4, lang::getText(21), shdw_txt_color);
// Deja el renderizador como estaba // Deja el renderizador como estaba
SDL_SetRenderTarget(renderer, temp); SDL_SetRenderTarget(renderer_, temp);
// Da valor a la variable // Da valor a la variable
spritePos.x = anchorItem; sprite_pos_.x = anchor_item;
spritePos.y = anchor3 - ((param.game.item_size - text->getCharacterSize()) / 2); sprite_pos_.y = anchor3 - ((param.game.item_size - text_->getCharacterSize()) / 2);
} }
// Rellena el backbuffer // Rellena el backbuffer
void Instructions::fillBackbuffer() void Instructions::fillBackbuffer()
{ {
// Modifica el renderizador para pintar en la textura // Modifica el renderizador para pintar en la textura
SDL_Texture *temp = SDL_GetRenderTarget(renderer); auto temp = SDL_GetRenderTarget(renderer_);
SDL_SetRenderTarget(renderer, backbuffer); SDL_SetRenderTarget(renderer_, backbuffer_);
// Limpia la textura // Limpia la textura
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0); SDL_SetRenderDrawColor(renderer_, 0, 0, 0, 0);
SDL_RenderClear(renderer); SDL_RenderClear(renderer_);
// Coloca el texto de fondo // Coloca el texto de fondo
SDL_RenderCopy(renderer, texture, nullptr, nullptr); SDL_RenderCopy(renderer_, texture_, nullptr, nullptr);
// Dibuja los sprites // Dibuja los sprites
for (auto &sprite : sprites) for (auto &sprite : sprites_)
{ {
sprite->render(); sprite->render();
} }
// Deja el renderizador como estaba // Deja el renderizador como estaba
SDL_SetRenderTarget(renderer, temp); SDL_SetRenderTarget(renderer_, temp);
} }
// Actualiza las variables // Actualiza las variables
void Instructions::update() void Instructions::update()
{ {
// Actualiza las variables // Actualiza las variables
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks_ > ticks_speed_)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks_ = SDL_GetTicks();
// Mantiene la música sonando // Mantiene la música sonando
if ((JA_GetMusicState() == JA_MUSIC_INVALID) || (JA_GetMusicState() == JA_MUSIC_STOPPED)) if ((JA_GetMusicState() == JA_MUSIC_INVALID) || (JA_GetMusicState() == JA_MUSIC_STOPPED))
JA_PlayMusic(music); JA_PlayMusic(music_);
// Actualiza el objeto screen // Actualiza el objeto screen
Screen::get()->update(); Screen::get()->update();
// Incrementa el contador // Incrementa el contador
counter++; counter_++;
// Actualiza los sprites // Actualiza los sprites
updateSprites(); updateSprites();
// Actualiza el mosaico de fondo // Actualiza el mosaico de fondo
tiledbg->update(); tiled_bg_->update();
// Actualiza el objeto "fade" // Actualiza el objeto "fade"
fade->update(); fade_->update();
// Comprueba si el contador ha llegado al final // Comprueba si el contador ha llegado al final
if (counter == counterEnd) if (counter_ == counter_end_)
{ {
section::name = section::Name::TITLE; section::name = section::Name::TITLE;
section::options = section::Options::TITLE_1; section::options = section::Options::TITLE_1;
@@ -270,15 +269,15 @@ void Instructions::render()
Screen::get()->clean(bg_color); Screen::get()->clean(bg_color);
// Dibuja el mosacico de fondo // Dibuja el mosacico de fondo
tiledbg->render(); tiled_bg_->render();
// Establece la ventana del backbuffer // Establece la ventana del backbuffer
view.y = std::max(0, param.game.height - counter + 100); view_.y = std::max(0, param.game.height - counter_ + 100);
// Copia la textura y el backbuffer al renderizador // Copia la textura y el backbuffer al renderizador
SDL_RenderCopy(renderer, backbuffer, nullptr, &view); SDL_RenderCopy(renderer_, backbuffer_, nullptr, &view_);
fade->render(); fade_->render();
// Vuelca el contenido del renderizador en pantalla // Vuelca el contenido del renderizador en pantalla
Screen::get()->blit(); Screen::get()->blit();
@@ -287,11 +286,11 @@ void Instructions::render()
// Recarga todas las texturas // Recarga todas las texturas
void Instructions::reloadTextures() void Instructions::reloadTextures()
{ {
for (auto &tex : itemTextures) for (auto &texture : item_textures_)
{ {
tex->reLoad(); texture->reLoad();
} }
text->reLoadTexture(); text_->reLoadTexture();
fillTexture(); fillTexture();
} }
@@ -299,19 +298,20 @@ void Instructions::reloadTextures()
void Instructions::checkEvents() void Instructions::checkEvents()
{ {
// Comprueba los eventos que hay en la cola // Comprueba los eventos que hay en la cola
while (SDL_PollEvent(eventHandler.get()) != 0) SDL_Event event;
while (SDL_PollEvent(&event))
{ {
// Evento de salida de la aplicación // Evento de salida de la aplicación
if (eventHandler->type == SDL_QUIT) if (event.type == SDL_QUIT)
{ {
section::name = section::Name::QUIT; section::name = section::Name::QUIT;
break; break;
} }
// Comprueba si se ha cambiado el tamaño de la ventana // Comprueba si se ha cambiado el tamaño de la ventana
else if (eventHandler->type == SDL_WINDOWEVENT) else if (event.type == SDL_WINDOWEVENT)
{ {
if (eventHandler->window.event == SDL_WINDOWEVENT_SIZE_CHANGED) if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
{ {
reloadTextures(); reloadTextures();
} }

View File

@@ -31,26 +31,25 @@ class Instructions
{ {
private: private:
// Objetos y punteros // Objetos y punteros
std::vector<std::shared_ptr<Texture>> itemTextures; // Vector con las texturas de los items std::vector<std::shared_ptr<Texture>> item_textures_; // Vector con las texturas de los items
std::vector<std::unique_ptr<Sprite>> sprites; // Vector con los sprites de los items std::vector<std::unique_ptr<Sprite>> sprites_; // Vector con los sprites de los items
std::unique_ptr<SDL_Event> eventHandler; // Manejador de eventos std::unique_ptr<Text> text_; // Objeto para escribir texto
std::unique_ptr<Text> text; // Objeto para escribir texto std::unique_ptr<Tiledbg> tiled_bg_; // Objeto para dibujar el mosaico animado de fondo
std::unique_ptr<Tiledbg> tiledbg; // Objeto para dibujar el mosaico animado de fondo std::unique_ptr<Fade> fade_; // Objeto para renderizar fades
std::unique_ptr<Fade> fade; // Objeto para renderizar fades
SDL_Renderer *renderer; // El renderizador de la ventana SDL_Renderer *renderer_; // El renderizador de la ventana
JA_Music_t *music; // Musica de fondo JA_Music_t *music_; // Musica de fondo
SDL_Texture *texture; // Textura fija con el texto SDL_Texture *texture_; // Textura fija con el texto
SDL_Texture *backbuffer; // Textura para usar como backbuffer SDL_Texture *backbuffer_; // Textura para usar como backbuffer
// Variables // Variables
int counter; // Contador int counter_; // Contador
int counterEnd; // Valor final para el contador int counter_end_; // Valor final para el contador
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa Uint32 ticks_speed_; // Velocidad a la que se repiten los bucles del programa
SDL_Rect view; // Vista del backbuffer que se va amostrar por pantalla SDL_Rect view_; // Vista del backbuffer que se va amostrar por pantalla
SDL_Point spritePos; // Posición del primer sprite SDL_Point sprite_pos_; // Posición del primer sprite
int itemSpace; // Espacio entre los items int item_space_; // Espacio entre los items
// Actualiza las variables // Actualiza las variables
void update(); void update();

View File

@@ -20,134 +20,134 @@ struct JA_Music_t;
// Constructor // Constructor
Intro::Intro(JA_Music_t *music) Intro::Intro(JA_Music_t *music)
: music(music) : music_(music)
{ {
// Copia los punteros // Copia los punteros
auto renderer = Screen::get()->getRenderer(); auto renderer = Screen::get()->getRenderer();
// Reserva memoria para los objetos // Reserva memoria para los objetos
texture = std::make_shared<Texture>(renderer, Asset::get()->get("intro.png")); texture_ = std::make_shared<Texture>(renderer, Asset::get()->get("intro.png"));
text = std::make_shared<Text>(Asset::get()->get("nokia.png"), Asset::get()->get("nokia.txt"), renderer); text_ = std::make_shared<Text>(Asset::get()->get("nokia.png"), Asset::get()->get("nokia.txt"), renderer);
// Inicializa variables // Inicializa variables
section::name = section::Name::INTRO; section::name = section::Name::INTRO;
section::options = section::Options::NONE; section::options = section::Options::NONE;
ticks = 0; ticks_ = 0;
ticksSpeed = 15; ticks_speed_ = 15;
scene = 1; scene_ = 1;
// Inicializa los bitmaps de la intro // Inicializa los bitmaps de la intro
constexpr int totalBitmaps = 6; constexpr int totalBitmaps = 6;
for (int i = 0; i < totalBitmaps; ++i) for (int i = 0; i < totalBitmaps; ++i)
{ {
auto ss = std::make_unique<SmartSprite>(texture); auto ss = std::make_unique<SmartSprite>(texture_);
ss->setWidth(128); ss->setWidth(128);
ss->setHeight(96); ss->setHeight(96);
ss->setFinishedCounter(20); ss->setFinishedCounter(20);
ss->setDestX(param.game.game_area.center_x - 64); ss->setDestX(param.game.game_area.center_x - 64);
ss->setDestY(param.game.game_area.first_quarter_y - 24); ss->setDestY(param.game.game_area.first_quarter_y - 24);
bitmaps.push_back(std::move(ss)); bitmaps_.push_back(std::move(ss));
} }
bitmaps[0]->setPosX(-128); bitmaps_[0]->setPosX(-128);
bitmaps[0]->setPosY(param.game.game_area.first_quarter_y - 24); bitmaps_[0]->setPosY(param.game.game_area.first_quarter_y - 24);
bitmaps[0]->setVelX(0.0f); bitmaps_[0]->setVelX(0.0f);
bitmaps[0]->setVelY(0.0f); bitmaps_[0]->setVelY(0.0f);
bitmaps[0]->setAccelX(0.6f); bitmaps_[0]->setAccelX(0.6f);
bitmaps[0]->setAccelY(0.0f); bitmaps_[0]->setAccelY(0.0f);
bitmaps[0]->setSpriteClip(0, 0, 128, 96); bitmaps_[0]->setSpriteClip(0, 0, 128, 96);
bitmaps[1]->setPosX(param.game.width); bitmaps_[1]->setPosX(param.game.width);
bitmaps[1]->setPosY(param.game.game_area.first_quarter_y - 24); bitmaps_[1]->setPosY(param.game.game_area.first_quarter_y - 24);
bitmaps[1]->setVelX(-1.0f); bitmaps_[1]->setVelX(-1.0f);
bitmaps[1]->setVelY(0.0f); bitmaps_[1]->setVelY(0.0f);
bitmaps[1]->setAccelX(-0.3f); bitmaps_[1]->setAccelX(-0.3f);
bitmaps[1]->setAccelY(0.0f); bitmaps_[1]->setAccelY(0.0f);
bitmaps[1]->setSpriteClip(128, 0, 128, 96); bitmaps_[1]->setSpriteClip(128, 0, 128, 96);
bitmaps[2]->setPosX(param.game.game_area.center_x - 64); bitmaps_[2]->setPosX(param.game.game_area.center_x - 64);
bitmaps[2]->setPosY(-96); bitmaps_[2]->setPosY(-96);
bitmaps[2]->setVelX(0.0f); bitmaps_[2]->setVelX(0.0f);
bitmaps[2]->setVelY(3.0f); bitmaps_[2]->setVelY(3.0f);
bitmaps[2]->setAccelX(0.1f); bitmaps_[2]->setAccelX(0.1f);
bitmaps[2]->setAccelY(0.3f); bitmaps_[2]->setAccelY(0.3f);
bitmaps[2]->setSpriteClip(0, 96, 128, 96); bitmaps_[2]->setSpriteClip(0, 96, 128, 96);
bitmaps[2]->setFinishedCounter(250); bitmaps_[2]->setFinishedCounter(250);
bitmaps[3]->setPosX(param.game.game_area.center_x - 64); bitmaps_[3]->setPosX(param.game.game_area.center_x - 64);
bitmaps[3]->setPosY(param.game.height); bitmaps_[3]->setPosY(param.game.height);
bitmaps[3]->setVelX(0.0f); bitmaps_[3]->setVelX(0.0f);
bitmaps[3]->setVelY(-0.7f); bitmaps_[3]->setVelY(-0.7f);
bitmaps[3]->setAccelX(0.0f); bitmaps_[3]->setAccelX(0.0f);
bitmaps[3]->setAccelY(0.0f); bitmaps_[3]->setAccelY(0.0f);
bitmaps[3]->setSpriteClip(128, 96, 128, 96); bitmaps_[3]->setSpriteClip(128, 96, 128, 96);
bitmaps[4]->setPosX(param.game.game_area.center_x - 64); bitmaps_[4]->setPosX(param.game.game_area.center_x - 64);
bitmaps[4]->setPosY(-96); bitmaps_[4]->setPosY(-96);
bitmaps[4]->setVelX(0.0f); bitmaps_[4]->setVelX(0.0f);
bitmaps[4]->setVelY(3.0f); bitmaps_[4]->setVelY(3.0f);
bitmaps[4]->setAccelX(0.1f); bitmaps_[4]->setAccelX(0.1f);
bitmaps[4]->setAccelY(0.3f); bitmaps_[4]->setAccelY(0.3f);
bitmaps[4]->setSpriteClip(0, 192, 128, 96); bitmaps_[4]->setSpriteClip(0, 192, 128, 96);
bitmaps[5]->setPosX(param.game.width); bitmaps_[5]->setPosX(param.game.width);
bitmaps[5]->setPosY(param.game.game_area.first_quarter_y - 24); bitmaps_[5]->setPosY(param.game.game_area.first_quarter_y - 24);
bitmaps[5]->setVelX(-0.7f); bitmaps_[5]->setVelX(-0.7f);
bitmaps[5]->setVelY(0.0f); bitmaps_[5]->setVelY(0.0f);
bitmaps[5]->setAccelX(0.0f); bitmaps_[5]->setAccelX(0.0f);
bitmaps[5]->setAccelY(0.0f); bitmaps_[5]->setAccelY(0.0f);
bitmaps[5]->setSpriteClip(128, 192, 128, 96); bitmaps_[5]->setSpriteClip(128, 192, 128, 96);
// Inicializa los textos de la intro // Inicializa los textos de la intro
constexpr int totalTexts = 9; constexpr int totalTexts = 9;
for (int i = 0; i < totalTexts; ++i) for (int i = 0; i < totalTexts; ++i)
{ {
auto w = std::make_unique<Writer>(text); auto w = std::make_unique<Writer>(text_);
w->setPosX(BLOCK * 0); w->setPosX(BLOCK * 0);
w->setPosY(param.game.height - (BLOCK * 6)); w->setPosY(param.game.height - (BLOCK * 6));
w->setKerning(-1); w->setKerning(-1);
w->setEnabled(false); w->setEnabled(false);
w->setFinishedCounter(180); w->setFinishedCounter(180);
texts.push_back(std::move(w)); texts_.push_back(std::move(w));
} }
// Un dia qualsevol de l'any 2000 // Un dia qualsevol de l'any 2000
texts[0]->setCaption(lang::getText(27)); texts_[0]->setCaption(lang::getText(27));
texts[0]->setSpeed(8); texts_[0]->setSpeed(8);
// Tot esta tranquil a la UPV // Tot esta tranquil a la UPV
texts[1]->setCaption(lang::getText(28)); texts_[1]->setCaption(lang::getText(28));
texts[1]->setSpeed(8); texts_[1]->setSpeed(8);
// Fins que un desaprensiu... // Fins que un desaprensiu...
texts[2]->setCaption(lang::getText(29)); texts_[2]->setCaption(lang::getText(29));
texts[2]->setSpeed(12); texts_[2]->setSpeed(12);
// HEY! ME ANE A FERME UN CORTAET... // HEY! ME ANE A FERME UN CORTAET...
texts[3]->setCaption(lang::getText(30)); texts_[3]->setCaption(lang::getText(30));
texts[3]->setSpeed(8); texts_[3]->setSpeed(8);
// UAAAAAAAAAAAAA!!! // UAAAAAAAAAAAAA!!!
texts[4]->setCaption(lang::getText(31)); texts_[4]->setCaption(lang::getText(31));
texts[4]->setSpeed(1); texts_[4]->setSpeed(1);
// Espera un moment... // Espera un moment...
texts[5]->setCaption(lang::getText(32)); texts_[5]->setCaption(lang::getText(32));
texts[5]->setSpeed(16); texts_[5]->setSpeed(16);
// Si resulta que no tinc solt! // Si resulta que no tinc solt!
texts[6]->setCaption(lang::getText(33)); texts_[6]->setCaption(lang::getText(33));
texts[6]->setSpeed(2); texts_[6]->setSpeed(2);
// MERDA DE MAQUINA! // MERDA DE MAQUINA!
texts[7]->setCaption(lang::getText(34)); texts_[7]->setCaption(lang::getText(34));
texts[7]->setSpeed(3); texts_[7]->setSpeed(3);
// Blop... blop... blop... // Blop... blop... blop...
texts[8]->setCaption(lang::getText(35)); texts_[8]->setCaption(lang::getText(35));
texts[8]->setSpeed(16); texts_[8]->setSpeed(16);
for (auto &text : texts) for (auto &text : texts_)
{ {
text->center(param.game.game_area.center_x); text->center(param.game.game_area.center_x);
} }
@@ -156,8 +156,8 @@ Intro::Intro(JA_Music_t *music)
// Recarga todas las texturas // Recarga todas las texturas
void Intro::reloadTextures() void Intro::reloadTextures()
{ {
texture->reLoad(); texture_->reLoad();
text->reLoadTexture(); text_->reLoadTexture();
} }
// Comprueba los eventos // Comprueba los eventos
@@ -213,153 +213,158 @@ void Intro::checkInput()
// Actualiza las escenas de la intro // Actualiza las escenas de la intro
void Intro::updateScenes() void Intro::updateScenes()
{ {
switch (scene) switch (scene_)
{ {
case 1: case 1:
// Primera imagen - UPV { // Primera imagen - UPV
if (!bitmaps[0]->hasFinished()) if (!bitmaps_[0]->hasFinished())
{ {
bitmaps[0]->setEnabled(true); bitmaps_[0]->setEnabled(true);
} }
// Primer texto de la primera imagen // Primer texto de la primera imagen
if (bitmaps[0]->hasFinished() && !texts[0]->hasFinished()) if (bitmaps_[0]->hasFinished() && !texts_[0]->hasFinished())
{ {
texts[0]->setEnabled(true); texts_[0]->setEnabled(true);
} }
// Segundo texto de la primera imagen // Segundo texto de la primera imagen
if (texts[0]->hasFinished() && !texts[1]->hasFinished()) if (texts_[0]->hasFinished() && !texts_[1]->hasFinished())
{ {
texts[0]->setEnabled(false); texts_[0]->setEnabled(false);
texts[1]->setEnabled(true); texts_[1]->setEnabled(true);
} }
// Tercer texto de la primera imagen // Tercer texto de la primera imagen
if (texts[1]->hasFinished() && !texts[2]->hasFinished()) if (texts_[1]->hasFinished() && !texts_[2]->hasFinished())
{ {
texts[1]->setEnabled(false); texts_[1]->setEnabled(false);
texts[2]->setEnabled(true); texts_[2]->setEnabled(true);
} }
// Fin de la primera escena // Fin de la primera escena
if (texts[2]->hasFinished()) if (texts_[2]->hasFinished())
{ {
bitmaps[0]->setEnabled(false); bitmaps_[0]->setEnabled(false);
texts[2]->setEnabled(false); texts_[2]->setEnabled(false);
scene++; scene_++;
} }
break; break;
}
case 2: case 2:
// Segunda imagen - Máquina { // Segunda imagen - Máquina
if (!bitmaps[1]->hasFinished()) if (!bitmaps_[1]->hasFinished())
{ {
bitmaps[1]->setEnabled(true); bitmaps_[1]->setEnabled(true);
} }
// Primer texto de la segunda imagen // Primer texto de la segunda imagen
if (bitmaps[1]->hasFinished() && !texts[3]->hasFinished()) if (bitmaps_[1]->hasFinished() && !texts_[3]->hasFinished())
{ {
texts[3]->setEnabled(true); texts_[3]->setEnabled(true);
} }
// Fin de la segunda escena // Fin de la segunda escena
if (texts[3]->hasFinished()) if (texts_[3]->hasFinished())
{ {
bitmaps[1]->setEnabled(false); bitmaps_[1]->setEnabled(false);
texts[3]->setEnabled(false); texts_[3]->setEnabled(false);
scene++; scene_++;
} }
break; break;
}
case 3: case 3:
// Tercera imagen junto con primer texto - GRITO { // Tercera imagen junto con primer texto - GRITO
if (!bitmaps[2]->hasFinished() && !texts[4]->hasFinished()) if (!bitmaps_[2]->hasFinished() && !texts_[4]->hasFinished())
{ {
bitmaps[2]->setEnabled(true); bitmaps_[2]->setEnabled(true);
texts[4]->setEnabled(true); texts_[4]->setEnabled(true);
} }
// Fin de la tercera escena // Fin de la tercera escena
if (bitmaps[2]->hasFinished() && texts[4]->hasFinished()) if (bitmaps_[2]->hasFinished() && texts_[4]->hasFinished())
{ {
bitmaps[2]->setEnabled(false); bitmaps_[2]->setEnabled(false);
texts[4]->setEnabled(false); texts_[4]->setEnabled(false);
scene++; scene_++;
} }
break; break;
}
case 4: case 4:
// Cuarta imagen junto con primer texto - Reflexión { // Cuarta imagen junto con primer texto - Reflexión
if (!bitmaps[3]->hasFinished() && !texts[5]->hasFinished()) if (!bitmaps_[3]->hasFinished() && !texts_[5]->hasFinished())
{ {
bitmaps[3]->setEnabled(true); bitmaps_[3]->setEnabled(true);
texts[5]->setEnabled(true); texts_[5]->setEnabled(true);
} }
// Segundo texto de la cuarta imagen // Segundo texto de la cuarta imagen
if (texts[5]->hasFinished() && !texts[6]->hasFinished()) if (texts_[5]->hasFinished() && !texts_[6]->hasFinished())
{ {
texts[5]->setEnabled(false); texts_[5]->setEnabled(false);
texts[6]->setEnabled(true); texts_[6]->setEnabled(true);
} }
// Fin de la cuarta escena // Fin de la cuarta escena
if (bitmaps[3]->hasFinished() && texts[6]->hasFinished()) if (bitmaps_[3]->hasFinished() && texts_[6]->hasFinished())
{ {
bitmaps[3]->setEnabled(false); bitmaps_[3]->setEnabled(false);
texts[6]->setEnabled(false); texts_[6]->setEnabled(false);
scene++; scene_++;
} }
break; break;
}
case 5: case 5:
// Quinta imagen - Patada { // Quinta imagen - Patada
if (!bitmaps[4]->hasFinished()) if (!bitmaps_[4]->hasFinished())
{ {
bitmaps[4]->setEnabled(true); bitmaps_[4]->setEnabled(true);
} }
// Primer texto de la quinta imagen // Primer texto de la quinta imagen
if (bitmaps[4]->hasFinished() && !texts[7]->hasFinished()) if (bitmaps_[4]->hasFinished() && !texts_[7]->hasFinished())
{ {
texts[7]->setEnabled(true); texts_[7]->setEnabled(true);
} }
// Fin de la quinta escena // Fin de la quinta escena
if (bitmaps[4]->hasFinished() && texts[7]->hasFinished()) if (bitmaps_[4]->hasFinished() && texts_[7]->hasFinished())
{ {
bitmaps[4]->setEnabled(false); bitmaps_[4]->setEnabled(false);
texts[7]->setEnabled(false); texts_[7]->setEnabled(false);
scene++; scene_++;
} }
break; break;
}
case 6: 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_[5]->hasFinished() && !texts_[8]->hasFinished())
{ {
bitmaps[5]->setEnabled(true); bitmaps_[5]->setEnabled(true);
texts[8]->setEnabled(true); texts_[8]->setEnabled(true);
} }
// Acaba el último texto // Acaba el último texto
if (bitmaps[5]->hasFinished() && texts[8]->hasFinished()) if (bitmaps_[5]->hasFinished() && texts_[8]->hasFinished())
{ {
bitmaps[5]->setEnabled(false); bitmaps_[5]->setEnabled(false);
texts[8]->setEnabled(false); texts_[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;
} }
break; break;
}
default: default:
break; break;
@@ -369,21 +374,21 @@ void Intro::updateScenes()
// Actualiza las variables del objeto // Actualiza las variables del objeto
void Intro::update() void Intro::update()
{ {
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks_ > ticks_speed_)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks_ = SDL_GetTicks();
// Actualiza el objeto screen // Actualiza el objeto screen
Screen::get()->update(); Screen::get()->update();
// Actualiza los objetos // Actualiza los objetos
for (auto &bitmap : bitmaps) for (auto &bitmap : bitmaps_)
{ {
bitmap->update(); bitmap->update();
} }
for (auto &text : texts) for (auto &text : texts_)
{ {
text->update(); text->update();
} }
@@ -403,12 +408,12 @@ void Intro::render()
Screen::get()->clean(bg_color); Screen::get()->clean(bg_color);
// Dibuja los objetos // Dibuja los objetos
for (auto &bitmap : bitmaps) for (auto &bitmap : bitmaps_)
{ {
bitmap->render(); bitmap->render();
} }
for (auto &text : texts) for (auto &text : texts_)
{ {
text->render(); text->render();
} }
@@ -420,7 +425,7 @@ void Intro::render()
// Bucle principal // Bucle principal
void Intro::run() void Intro::run()
{ {
JA_PlayMusic(music, 0); JA_PlayMusic(music_, 0);
while (section::name == section::Name::INTRO) while (section::name == section::Name::INTRO)
{ {

View File

@@ -20,17 +20,17 @@ class Intro
{ {
private: private:
// Objetos // Objetos
std::shared_ptr<Texture> texture; // Textura con los graficos std::shared_ptr<Texture> texture_; // Textura con los graficos
std::shared_ptr<Text> text; // Textos de la intro std::shared_ptr<Text> text_; // Textos 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<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
// Variables // Variables
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa
Uint8 ticksSpeed; // Velocidad a la que se repiten los bucles del programa Uint8 ticks_speed_; // Velocidad a la que se repiten los bucles del programa
JA_Music_t *music; // Musica para la intro JA_Music_t *music_; // Musica para la intro
int scene; // Indica que escena está activa int scene_; // Indica que escena está activa
// Actualiza las variables del objeto // Actualiza las variables del objeto
void update(); void update();