Terminada la marquesina del titulo

This commit is contained in:
2022-09-03 18:16:22 +02:00
parent 1571b73c84
commit 57c51676a4
2 changed files with 85 additions and 15 deletions

View File

@@ -21,6 +21,16 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Asset *asset)
section.subsection = 0; section.subsection = 0;
ticks = 0; ticks = 0;
ticksSpeed = 15; ticksSpeed = 15;
longText = "HEY HAVE YOU HEARD IT? JAILGAMES ARE BACK!! MORE THAN 10 TITLES ON JAILDOC'S KITCHEN! THATS A LOOOOOOT OF JAILGAMES, BUT WHICH ONE WILL STRIKE FIRST? OH BABY, WE DON'T KNOW. THERE IS ALSO A NEW DEVICE TO COME P.A.C.O. WILL BLOW YOUR MIND WITH JAILGAMES ON THE GO. BUT WAIT! WHAT'S THAT BEAUTY I'M SEEING RIGHT OVER THERE?? MINIASCII IS PURE LOVE!! OH! AND DON'T FORGET TO BRING BACK THOSE OLD AND FAT MS-DOS JAILGAMES";
for (int i = 0; i < longText.length(); i++)
{
letter_t l;
l.letter = longText.substr(i, 1);
l.x = 256;
l.enabled = false;
letters.push_back(l);
}
letters[0].enabled = true;
} }
// Destructor // Destructor
@@ -67,6 +77,42 @@ void Title::checkEventHandler()
} }
} }
// Actualiza la marquesina
void Title::updateMarquee()
{
for (int i = 0; i < letters.size(); i++)
{
if (letters[i].enabled)
{
letters[i].x -= 2;
if (letters[i].x < -10)
{
letters[i].enabled = false;
}
}
else
{
if (i > 0 && letters[i - 1].x < 250)
{
letters[i].enabled = true;
}
}
}
}
// Dibuja la marquesina
void Title::renderMarquee()
{
for (auto l : letters)
{
if (l.enabled)
{
// text->writeColored(l.x, 176, l.letter, {0, 0, 0});
text->write(l.x, 176, l.letter);
}
}
}
// Actualiza las variables // Actualiza las variables
void Title::update() void Title::update()
{ {
@@ -82,8 +128,14 @@ void Title::update()
// Incrementa el contador // Incrementa el contador
counter++; counter++;
// Actualiza la marquesina
updateMarquee();
// Comprueba si ha pasado mucho tiempo y acaba el titulo // Comprueba si ha pasado mucho tiempo y acaba el titulo
if (counter == 1000) // if (counter == 1000)
// Comprueba si ha terminado la marquesina y acaba con el titulo
if (letters[letters.size() - 1].x < -10)
{ {
section.name = SECTION_PROG_LOGO; section.name = SECTION_PROG_LOGO;
section.subsection = 0; section.subsection = 0;
@@ -100,15 +152,18 @@ void Title::render()
// Limpia la pantalla // Limpia la pantalla
screen->clean(); screen->clean();
// Dibuja los objetos // Dibuja el fondo del titulo
sprite->render(); sprite->render();
// Dibuja el texto de PRESS ENTER TO PLAY
SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255); SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
SDL_Rect rect = {0, 192 / 5 * 4, 256, 8}; SDL_Rect rect = {0, 192 / 5 * 4, 256, 8};
SDL_RenderFillRect(renderer, &rect); SDL_RenderFillRect(renderer, &rect);
if (counter % 80 < 60) if (counter % 80 < 60)
text->writeCentered(256 / 2, 192 / 5 * 4, "PRESS ENTER TO PLAY"); text->writeCentered(256 / 2, 192 / 5 * 4, "PRESS ENTER TO PLAY");
//text->write(0, 0, std::to_string(counter)); // Dibuja la marquesina
renderMarquee();
// Vuelca el contenido del renderizador en pantalla // Vuelca el contenido del renderizador en pantalla
screen->blit(); screen->blit();

View File

@@ -17,18 +17,27 @@
class Title class Title
{ {
private: private:
SDL_Renderer *renderer; // El renderizador de la ventana struct letter_t
Screen *screen; // Objeto encargado de dibujar en pantalla {
Asset *asset; // Objeto con los ficheros de recursos std::string letter; // Letra a escribir
SDL_Event *eventHandler; // Manejador de eventos int x; // Posición en el eje x
LTexture *texture; // Textura con los graficos bool enabled; // Solo se escriben y mueven si estan habilitadas
Sprite *sprite; // Sprite para manejar la textura };
Text *text; // Objeto para escribir texto en pantalla
JA_Music music; // Musica del titulo SDL_Renderer *renderer; // El renderizador de la ventana
int counter; // Contador Screen *screen; // Objeto encargado de dibujar en pantalla
section_t section; // Estado del bucle principal para saber si continua o se sale Asset *asset; // Objeto con los ficheros de recursos
int ticks; // Contador de ticks para ajustar la velocidad del programa SDL_Event *eventHandler; // Manejador de eventos
int ticksSpeed; // Velocidad a la que se repiten los bucles del programa LTexture *texture; // Textura con los graficos
Sprite *sprite; // Sprite para manejar la textura
Text *text; // Objeto para escribir texto en pantalla
JA_Music music; // Musica del titulo
int counter; // Contador
section_t section; // Estado del bucle principal para saber si continua o se sale
std::string longText; // Texto que aparece en la parte inferior del titulo
int ticks; // Contador de ticks para ajustar la velocidad del programa
int ticksSpeed; // Velocidad a la que se repiten los bucles del programa
std::vector<letter_t> letters; // Vector con las letras de la marquesina
// Actualiza las variables // Actualiza las variables
void update(); void update();
@@ -39,6 +48,12 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Actualiza la marquesina
void updateMarquee();
// Dibuja la marquesina
void renderMarquee();
public: public:
// Constructor // Constructor
Title(SDL_Renderer *renderer, Screen *screen, Asset *asset); Title(SDL_Renderer *renderer, Screen *screen, Asset *asset);