forked from jaildesigner-jailgames/jaildoctors_dilemma
Actualizado el proceso de dibujado de la pantalla de carga
This commit is contained in:
@@ -9,6 +9,8 @@ Director::Director(std::string path)
|
|||||||
section.name = SECTION_PROG_GAME;
|
section.name = SECTION_PROG_GAME;
|
||||||
section.subsection = 0;
|
section.subsection = 0;
|
||||||
|
|
||||||
|
section.name = SECTION_PROG_INTRO;
|
||||||
|
|
||||||
// Crea el objeto que controla los ficheros de recursos
|
// Crea el objeto que controla los ficheros de recursos
|
||||||
asset = new Asset(path.substr(0, path.find_last_of("\\/")));
|
asset = new Asset(path.substr(0, path.find_last_of("\\/")));
|
||||||
|
|
||||||
|
|||||||
131
source/intro.cpp
131
source/intro.cpp
@@ -10,10 +10,10 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset)
|
|||||||
|
|
||||||
// Reserva memoria para los punteros
|
// Reserva memoria para los punteros
|
||||||
eventHandler = new SDL_Event();
|
eventHandler = new SDL_Event();
|
||||||
texture = new LTexture(renderer, asset->get("loading_screen1.png"));
|
loadingScreenTexture1 = new LTexture(renderer, asset->get("loading_screen1.png"));
|
||||||
texture2 = new LTexture(renderer, asset->get("loading_screen2.png"));
|
loadingScreenTexture2 = new LTexture(renderer, asset->get("loading_screen2.png"));
|
||||||
sprite = new Sprite(0, 0, texture->getWidth(), texture->getHeight(), texture, renderer);
|
sprite1 = new Sprite(0, 0, loadingScreenTexture1->getWidth(), loadingScreenTexture1->getHeight(), loadingScreenTexture1, renderer);
|
||||||
sprite2 = new Sprite(0, 0, texture2->getWidth(), texture2->getHeight(), texture2, renderer);
|
sprite2 = new Sprite(0, 0, loadingScreenTexture2->getWidth(), loadingScreenTexture2->getHeight(), loadingScreenTexture2, renderer);
|
||||||
loadingSound1 = JA_LoadMusic(asset->get("loading_sound1.ogg").c_str());
|
loadingSound1 = JA_LoadMusic(asset->get("loading_sound1.ogg").c_str());
|
||||||
loadingSound2 = JA_LoadMusic(asset->get("loading_sound2.ogg").c_str());
|
loadingSound2 = JA_LoadMusic(asset->get("loading_sound2.ogg").c_str());
|
||||||
loadingSound3 = JA_LoadMusic(asset->get("loading_sound3.ogg").c_str());
|
loadingSound3 = JA_LoadMusic(asset->get("loading_sound3.ogg").c_str());
|
||||||
@@ -26,9 +26,35 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset)
|
|||||||
ticks = 0;
|
ticks = 0;
|
||||||
ticksSpeed = 15;
|
ticksSpeed = 15;
|
||||||
loadCounter = 0;
|
loadCounter = 0;
|
||||||
loadCounter = 0;
|
lineCounter = 0;
|
||||||
load1 = true;
|
loadingFirstPart = true;
|
||||||
load2 = false;
|
|
||||||
|
// Ls lineas que tapan la primera textura
|
||||||
|
for (int i = 0; i < 192; ++i)
|
||||||
|
{
|
||||||
|
lines[i].x1 = 0;
|
||||||
|
lines[i].x2 = 257;
|
||||||
|
lines[i].y = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Establece el orden de las lineas para imitar el direccionamiento de memoria del spectrum
|
||||||
|
for (int i = 0; i < 192; ++i)
|
||||||
|
{
|
||||||
|
if (i < 64)
|
||||||
|
{ // Primer bloque de 2K
|
||||||
|
lineIndex[i] = ((i % 8) * 8) + (i / 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (i >= 64 && i < 128)
|
||||||
|
{ // Segundo bloque de 2K
|
||||||
|
lineIndex[i] = 64 + ((i % 8) * 8) + ((i - 64) / 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (i >= 128 && i < 192)
|
||||||
|
{ // tercer bloque de 2K
|
||||||
|
lineIndex[i] = 128 + ((i % 8) * 8) + ((i - 128) / 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Cambia el color del borde
|
// Cambia el color del borde
|
||||||
screen->setBorderColor(stringToColor("black"));
|
screen->setBorderColor(stringToColor("black"));
|
||||||
@@ -37,9 +63,9 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset)
|
|||||||
// Destructor
|
// Destructor
|
||||||
Intro::~Intro()
|
Intro::~Intro()
|
||||||
{
|
{
|
||||||
delete texture;
|
delete loadingScreenTexture1;
|
||||||
delete texture2;
|
delete loadingScreenTexture2;
|
||||||
delete sprite;
|
delete sprite1;
|
||||||
delete sprite2;
|
delete sprite2;
|
||||||
delete eventHandler;
|
delete eventHandler;
|
||||||
JA_DeleteMusic(loadingSound1);
|
JA_DeleteMusic(loadingSound1);
|
||||||
@@ -74,17 +100,34 @@ void Intro::checkEventHandler()
|
|||||||
// Gestiona el contador de carga
|
// Gestiona el contador de carga
|
||||||
void Intro::updateLoad()
|
void Intro::updateLoad()
|
||||||
{
|
{
|
||||||
if (load1)
|
// Primera parte de la carga, la parte en blanco ynegro
|
||||||
|
if (loadingFirstPart)
|
||||||
{
|
{
|
||||||
loadCounter = counter / 20;
|
// Cada 5 pasos el loadCounter se incrementa en uno
|
||||||
if (loadCounter == 25)
|
const int numSteps = 5;
|
||||||
|
loadCounter = counter / numSteps;
|
||||||
|
|
||||||
|
if (loadCounter < 192)
|
||||||
{
|
{
|
||||||
load1 = false;
|
const int step = 256 / numSteps;
|
||||||
load2 = true;
|
lines[lineIndex[loadCounter]].x1 = step * (counter % numSteps);
|
||||||
|
|
||||||
|
// Elimina por completo la linea anterior
|
||||||
|
if (loadCounter > 0)
|
||||||
|
{
|
||||||
|
lines[lineIndex[loadCounter - 1]].x1 = 256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Una vez actualizadas las 192 lineas, pasa a la segunda fase de la carga
|
||||||
|
else if (loadCounter == 192)
|
||||||
|
{
|
||||||
|
loadingFirstPart = false;
|
||||||
loadCounter = 0;
|
loadCounter = 0;
|
||||||
JA_PlayMusic(loadingSound3);
|
JA_PlayMusic(loadingSound3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Segunda parte de la carga, la parte de los bloques en color
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
loadCounter += 2;
|
loadCounter += 2;
|
||||||
@@ -96,7 +139,7 @@ void Intro::updateLoad()
|
|||||||
void Intro::updateCounter()
|
void Intro::updateCounter()
|
||||||
{
|
{
|
||||||
if (preCounter >= 50)
|
if (preCounter >= 50)
|
||||||
{
|
{ // Si el contador previo ha llegado a 50, empieza a contar el contador normal
|
||||||
if (counter == 0)
|
if (counter == 0)
|
||||||
{
|
{
|
||||||
JA_PlayMusic(loadingSound2);
|
JA_PlayMusic(loadingSound2);
|
||||||
@@ -104,7 +147,7 @@ void Intro::updateCounter()
|
|||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // Actualiza el precontador
|
||||||
preCounter++;
|
preCounter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,58 +156,22 @@ void Intro::updateCounter()
|
|||||||
void Intro::renderLoad()
|
void Intro::renderLoad()
|
||||||
{
|
{
|
||||||
// Carga 1 - Blanco y negro
|
// Carga 1 - Blanco y negro
|
||||||
if (load1)
|
if (loadingFirstPart)
|
||||||
{
|
{
|
||||||
sprite->render();
|
// Dibuja la textura de pantalla de carga en blanco y negro en pantalla
|
||||||
|
sprite1->render();
|
||||||
|
|
||||||
|
// Dibuja las 192 lineas negras sobre la textura
|
||||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
||||||
|
for (int i = 0; i < 192; ++i)
|
||||||
// Muestra las lineas 0..63
|
|
||||||
if (loadCounter < 8)
|
|
||||||
{
|
{
|
||||||
SDL_Rect rect = {0, 0 + loadCounter, 256, 8 - loadCounter};
|
SDL_RenderDrawLine(renderer, lines[i].x1, lines[i].y, lines[i].x2, lines[i].y);
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
|
|
||||||
for (int i = 0; i < 6; ++i)
|
|
||||||
{
|
|
||||||
rect.y += 8;
|
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
}
|
|
||||||
rect.y += 8;
|
|
||||||
rect.h = 128;
|
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
}
|
|
||||||
// Muestra las lineas 64..127
|
|
||||||
else if (loadCounter >= 8 && loadCounter < 16)
|
|
||||||
{
|
|
||||||
SDL_Rect rect = {0, 64 + (loadCounter - 8), 256, 8 - (loadCounter - 8)};
|
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
|
|
||||||
for (int i = 0; i < 6; ++i)
|
|
||||||
{
|
|
||||||
rect.y += 8;
|
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
}
|
|
||||||
rect.y += 8;
|
|
||||||
rect.h = 64;
|
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
}
|
|
||||||
// Muestra las lineas 128..191
|
|
||||||
else if (loadCounter >= 16 && loadCounter < 23)
|
|
||||||
{
|
|
||||||
SDL_Rect rect = {0, 128 + (loadCounter - 16), 256, 8 - (loadCounter - 16)};
|
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
|
|
||||||
for (int i = 0; i < 6; ++i)
|
|
||||||
{
|
|
||||||
rect.y += 8;
|
|
||||||
SDL_RenderFillRect(renderer, &rect);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
// Carga 2 - Color
|
// Carga 2 - Color
|
||||||
{
|
{
|
||||||
sprite->render();
|
sprite1->render();
|
||||||
SDL_Rect rect = {0, 0, 8, 8};
|
SDL_Rect rect = {0, 0, 8, 8};
|
||||||
for (int i = 0; i < loadCounter; ++i)
|
for (int i = 0; i < loadCounter; ++i)
|
||||||
{
|
{
|
||||||
@@ -216,8 +223,6 @@ void Intro::render()
|
|||||||
|
|
||||||
// Dibuja la pantalla de carga
|
// Dibuja la pantalla de carga
|
||||||
renderLoad();
|
renderLoad();
|
||||||
// text->write(0, 0, std::to_string(loadCounter));
|
|
||||||
// text->write(0, 8, std::to_string(loadCounter));
|
|
||||||
|
|
||||||
// Vuelca el contenido del renderizador en pantalla
|
// Vuelca el contenido del renderizador en pantalla
|
||||||
screen->blit();
|
screen->blit();
|
||||||
|
|||||||
@@ -19,22 +19,27 @@
|
|||||||
class Intro
|
class Intro
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
Screen *screen; // Objeto encargado de dibujar en pantalla
|
Screen *screen; // Objeto encargado de dibujar en pantalla
|
||||||
Asset *asset; // Objeto con los ficheros de recursos
|
Asset *asset; // Objeto con los ficheros de recursos
|
||||||
LTexture *texture; // Textura con los graficos "JAILGAMES"
|
LTexture *loadingScreenTexture1; // Textura con la pantalla de carga en blanco y negro
|
||||||
LTexture *texture2; // Textura con los graficos "Since 1998"
|
LTexture *loadingScreenTexture2; // Textura con la pantalla de carga en color
|
||||||
SDL_Event *eventHandler; // Manejador de eventos
|
SDL_Event *eventHandler; // Manejador de eventos
|
||||||
Sprite *sprite; // Sprite para manejar la textura
|
Sprite *sprite1; // Sprite para manejar la textura loadingScreenTexture1
|
||||||
Sprite *sprite2; // Sprite para manejar la textura2
|
Sprite *sprite2; // Sprite para manejar la textura loadingScreenTexture2
|
||||||
int preCounter; // Contador previo para realizar una pausa inicial
|
int preCounter; // Contador previo para realizar una pausa inicial
|
||||||
int counter; // Contador
|
int counter; // Contador
|
||||||
section_t section; // Estado del bucle principal para saber si continua o se sale
|
section_t section; // Estado del bucle principal para saber si continua o se sale
|
||||||
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 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||||
int loadCounter; // Contador para controlar las cargas
|
int loadCounter; // Contador para controlar las cargas
|
||||||
bool load1, load2;
|
int lineCounter; // Contador para dibujar las lineas de carga
|
||||||
JA_Music loadingSound1, loadingSound2, loadingSound3;
|
bool loadingFirstPart; // Para saber en que parte de la carga se encuentra
|
||||||
|
JA_Music loadingSound1; // Sonidos para imitar la carga tipo spectrum
|
||||||
|
JA_Music loadingSound2; // Sonidos para imitar la carga tipo spectrum
|
||||||
|
JA_Music loadingSound3; // Sonidos para imitar la carga tipo spectrum
|
||||||
|
h_line_t lines[192];
|
||||||
|
int lineIndex[192];
|
||||||
|
|
||||||
// Text *text;
|
// Text *text;
|
||||||
|
|
||||||
|
|||||||
2
todo.txt
2
todo.txt
@@ -40,7 +40,7 @@ x (A) La pantalla de titulo no tiene menu, solo un PRESS ENTER TO PLAY
|
|||||||
(A) Añadir color y efectos a los creditos
|
(A) Añadir color y efectos a los creditos
|
||||||
(A) Crear la tipografia de corazon
|
(A) Crear la tipografia de corazon
|
||||||
(A) Los Creditos se han de ir escribiendo letra a letra
|
(A) Los Creditos se han de ir escribiendo letra a letra
|
||||||
(A) Arreglar la pantalla de carga para que cargue bit a bit
|
x (A) Arreglar la pantalla de carga para que cargue bit a bit
|
||||||
(A) La musica del titulo ha de seguir sonando en los creditos y el ¿logo?
|
(A) La musica del titulo ha de seguir sonando en los creditos y el ¿logo?
|
||||||
(A) Ha de haber un modo demo en el que se muestran las habitaciones predefinidas
|
(A) Ha de haber un modo demo en el que se muestran las habitaciones predefinidas
|
||||||
(A) Menu de pausa/salir
|
(A) Menu de pausa/salir
|
||||||
|
|||||||
Reference in New Issue
Block a user