arreglos d'estil pa deixar el repo com a plantilla
This commit is contained in:
121
source/logo.cpp
121
source/logo.cpp
@@ -1,87 +1,112 @@
|
||||
#include "logo.h"
|
||||
#include <SDL3/SDL_events.h> // Manejo de eventos de SDL (teclado, ratón, etc.)
|
||||
#include <SDL3/SDL_init.h> // Inicialización y limpieza de SDL
|
||||
#include <SDL3/SDL_log.h> // Manejo de logs en SDL
|
||||
#include <SDL3/SDL_timer.h> // Funciones de temporización de SDL
|
||||
#include "global_inputs.h" // Funciones para manejar entradas globales
|
||||
#include "mouse.h" // Manejo de eventos del ratón
|
||||
#include "options.h" // Configuración global de opciones
|
||||
#include "s_sprite.h" // Clase para manejar sprites
|
||||
#include "screen.h" // Clase para manejar la pantalla
|
||||
#include "surface.h" // Clase para manejar superficies
|
||||
|
||||
#include "screen.h"
|
||||
#include "mouse.h"
|
||||
#include "surface.h"
|
||||
#include "s_sprite.h"
|
||||
#include "global_inputs.h"
|
||||
|
||||
// Constructor de la clase Logo: inicializa los recursos necesarios
|
||||
Logo::Logo()
|
||||
{
|
||||
init();
|
||||
init();
|
||||
}
|
||||
|
||||
// Destructor de la clase Logo: libera los recursos utilizados
|
||||
Logo::~Logo()
|
||||
{
|
||||
close();
|
||||
close();
|
||||
}
|
||||
|
||||
// Método privado para inicializar los recursos del logotipo
|
||||
void Logo::init()
|
||||
{
|
||||
SDL_SetLogPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||
SDL_SetLogPriority(SDL_LOG_CATEGORY_TEST, SDL_LOG_PRIORITY_ERROR);
|
||||
// Configura las prioridades de los logs
|
||||
SDL_SetLogPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||
SDL_SetLogPriority(SDL_LOG_CATEGORY_TEST, SDL_LOG_PRIORITY_ERROR);
|
||||
|
||||
Screen::get()->init();
|
||||
logo_surface = std::make_shared<Surface>("jailgames.gif");
|
||||
logo_surface->scale(5);
|
||||
// Inicializa la pantalla
|
||||
Screen::get()->init();
|
||||
|
||||
logo_sprite = std::make_unique<SSprite>(logo_surface);
|
||||
logo_sprite->setPosition(
|
||||
(options.logo.width - logo_sprite->getWidth()) / 2,
|
||||
(options.logo.height - logo_sprite->getHeight()) / 2);
|
||||
// Carga la superficie del logotipo desde un archivo y la escala
|
||||
logo_surface = std::make_shared<Surface>("jailgames.gif");
|
||||
logo_surface->scale(5);
|
||||
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Logo start");
|
||||
// Crea el sprite del logotipo y lo posiciona en el centro de la pantalla
|
||||
logo_sprite = std::make_unique<SSprite>(logo_surface);
|
||||
logo_sprite->setPosition(
|
||||
(options.logo.width - logo_sprite->getWidth()) / 2,
|
||||
(options.logo.height - logo_sprite->getHeight()) / 2);
|
||||
|
||||
// Log de inicio del logotipo
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Logo start");
|
||||
}
|
||||
|
||||
// Método privado para liberar los recursos del logotipo
|
||||
void Logo::close()
|
||||
{
|
||||
Screen::get()->destroy();
|
||||
// Destruye la pantalla
|
||||
Screen::get()->destroy();
|
||||
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "\nBye!");
|
||||
SDL_Quit();
|
||||
// Log de finalización del logotipo
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "\nBye!");
|
||||
|
||||
// Finaliza SDL
|
||||
SDL_Quit();
|
||||
}
|
||||
|
||||
// Método privado para manejar los eventos de entrada
|
||||
void Logo::checkEvents()
|
||||
{
|
||||
SDL_Event event;
|
||||
while (SDL_PollEvent(&event))
|
||||
{
|
||||
switch (event.type)
|
||||
{
|
||||
case SDL_EVENT_QUIT:
|
||||
options.logo.running = false;
|
||||
return;
|
||||
}
|
||||
SDL_Event event;
|
||||
while (SDL_PollEvent(&event)) // Procesa todos los eventos en la cola
|
||||
{
|
||||
switch (event.type)
|
||||
{
|
||||
case SDL_EVENT_QUIT: // Evento de salida (cerrar la ventana)
|
||||
options.logo.running = false; // Detiene el bucle principal
|
||||
return;
|
||||
}
|
||||
|
||||
globalInputs::check(event);
|
||||
Mouse::handleEvent(event);
|
||||
}
|
||||
// Maneja entradas globales y eventos del ratón
|
||||
globalInputs::check(event);
|
||||
Mouse::handleEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
// Método privado para actualizar el estado del logotipo
|
||||
void Logo::update()
|
||||
{
|
||||
if (SDL_GetTicks() - ticks > options.logo.speed)
|
||||
{
|
||||
ticks = SDL_GetTicks();
|
||||
// Comprueba si ha pasado suficiente tiempo para actualizar
|
||||
if (SDL_GetTicks() - ticks > options.logo.speed)
|
||||
{
|
||||
ticks = SDL_GetTicks(); // Actualiza el contador de ticks
|
||||
|
||||
Screen::get()->update();
|
||||
}
|
||||
// Actualiza la pantalla
|
||||
Screen::get()->update();
|
||||
}
|
||||
}
|
||||
|
||||
// Método privado para renderizar el logotipo en pantalla
|
||||
void Logo::render()
|
||||
{
|
||||
Screen::get()->start();
|
||||
logo_sprite->render();
|
||||
Screen::get()->render();
|
||||
Screen::get()->start(); // Inicia el proceso de renderizado
|
||||
logo_sprite->render(); // Renderiza el sprite del logotipo
|
||||
Screen::get()->render(); // Finaliza el renderizado
|
||||
}
|
||||
|
||||
// Método principal que ejecuta el ciclo de vida del logotipo
|
||||
int Logo::run()
|
||||
{
|
||||
while (options.logo.running)
|
||||
{
|
||||
update();
|
||||
checkEvents();
|
||||
render();
|
||||
}
|
||||
return 0;
|
||||
while (options.logo.running) // Bucle principal mientras el logotipo esté activo
|
||||
{
|
||||
update(); // Actualiza el estado del logotipo
|
||||
checkEvents(); // Maneja los eventos de entrada
|
||||
render(); // Renderiza el logotipo
|
||||
}
|
||||
return 0; // Devuelve 0 al finalizar
|
||||
}
|
||||
Reference in New Issue
Block a user