forked from jaildesigner-jailgames/jaildoctors_dilemma
Trabajando en la sección de creditos
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user