Trabajando en la sección de creditos

This commit is contained in:
2022-10-11 14:04:49 +02:00
parent 91412889c3
commit 365639bc95
5 changed files with 57 additions and 12 deletions

View File

@@ -45,7 +45,7 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset)
texts.push_back("MADE ON SUMMER/FALL 2022");
texts.push_back("");
texts.push_back("");
texts.push_back("LOVE JAILGAMES!");
texts.push_back("LOVE JAILGAMES!}");
texts.push_back("");
// Crea la textura para el texto que se escribe en pantalla
@@ -56,6 +56,14 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset)
}
SDL_SetTextureBlendMode(textTexture, SDL_BLENDMODE_BLEND);
// Crea la textura para cubrir el rexto
coverTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
if (coverTexture == nullptr)
{
printf("Error: coverTexture could not be created!\nSDL Error: %s\n", SDL_GetError());
}
SDL_SetTextureBlendMode(coverTexture, SDL_BLENDMODE_BLEND);
// Escribe el texto en la textura
fillTexture();
}
@@ -65,6 +73,8 @@ Credits::~Credits()
{
delete eventHandler;
delete text;
SDL_DestroyTexture(textTexture);
SDL_DestroyTexture(coverTexture);
}
// Comprueba el manejador de eventos
@@ -104,6 +114,7 @@ void Credits::checkEventHandler()
// Escribe el texto en la textura
void Credits::fillTexture()
{
// Rellena la textura de texto
SDL_SetRenderTarget(renderer, textTexture);
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
SDL_RenderClear(renderer);
@@ -112,13 +123,39 @@ void Credits::fillTexture()
const int size = text->getCharacterSize();
int i = 0;
for (auto t:texts)
for (auto t : texts)
{
text->write(0, i * size, t);
i++;
}
SDL_SetRenderTarget(renderer, nullptr);
// Rellena la textura que cubre el texto
SDL_SetRenderTarget(renderer, coverTexture);
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
SDL_RenderClear(renderer);
// Los primeros 8 pixels crea una malla
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
for (int i = 0; i < 256; i += 2)
{
SDL_RenderDrawPoint(renderer, i, 0);
SDL_RenderDrawPoint(renderer, i, 2);
SDL_RenderDrawPoint(renderer, i, 4);
SDL_RenderDrawPoint(renderer, i, 6);
SDL_RenderDrawPoint(renderer, i + 1, 1);
SDL_RenderDrawPoint(renderer, i + 1, 3);
SDL_RenderDrawPoint(renderer, i + 1, 5);
SDL_RenderDrawPoint(renderer, i + 1, 7);
}
// El resto se rellena de color
SDL_Rect rect = {0, 8, 256, 192};
SDL_RenderFillRect(renderer, &rect);
SDL_SetRenderTarget(renderer, nullptr);
}
// Actualiza las variables
@@ -153,10 +190,13 @@ void Credits::render()
// Limpia la pantalla
screen->clean();
SDL_Rect rect = {0, 0, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT};
// Dibuja la textura con el texto en pantalla
SDL_RenderCopy(renderer, textTexture, nullptr, nullptr);
// Dibuja la textura con el mapa en pantalla
SDL_RenderCopy(renderer, textTexture, &rect, nullptr);
// Dibuja la textura que cubre el texto
const int offset = std::min(counter / 4, 192 / 2);
SDL_Rect rect = {0, offset * 2, 256, 192};
SDL_RenderCopy(renderer, coverTexture, nullptr, &rect);
// Vuelca el contenido del renderizador en pantalla
screen->blit();