FADE_RANDOM_SQUARE no limpiaba la textura previamente

centrada la tabla de la clase hiscore_table
This commit is contained in:
2024-06-30 22:31:48 +02:00
parent 354795d52c
commit 4e9135c1af
4 changed files with 28 additions and 13 deletions

View File

@@ -346,15 +346,19 @@ void Screen::renderFX()
void Screen::update() void Screen::update()
{ {
updateShake(); updateShake();
// updateFlash();
} }
// Agita la pantalla // Agita la pantalla
void Screen::shake() void Screen::shake()
{ {
// Si ya hay un shake effect en marcha no se pilla el origen, solo se renuevan los contadores
if (shakeEffect.remaining == 0)
{
shakeEffect.origin = dest.x;
}
shakeEffect.remaining = shakeEffect.lenght; shakeEffect.remaining = shakeEffect.lenght;
shakeEffect.counter = shakeEffect.delay; shakeEffect.counter = shakeEffect.delay;
shakeEffect.origin = dest.x;
} }
// Actualiza la logica para agitar la pantalla // Actualiza la logica para agitar la pantalla

View File

@@ -258,6 +258,14 @@ void Fade::activate()
square[num - 1] = temp; square[num - 1] = temp;
num--; num--;
} }
// Limpia la textura
SDL_Texture *temp = SDL_GetRenderTarget(renderer);
SDL_SetRenderTarget(renderer, backbuffer);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderClear(renderer);
SDL_SetRenderTarget(renderer, temp);
break; break;
} }

View File

@@ -38,7 +38,7 @@ HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset,
ticksSpeed = 15; ticksSpeed = 15;
manualQuit = false; manualQuit = false;
counter = 0; counter = 0;
counterEnd = 600; counterEnd = 800;
viewArea = {0, 0, param->gameWidth, param->gameHeight}; viewArea = {0, 0, param->gameWidth, param->gameHeight};
// Crea el contenido de la textura con la lista de puntuaciones // Crea el contenido de la textura con la lista de puntuaciones
@@ -85,10 +85,13 @@ void HiScoreTable::update()
// Crea el contenido de la textura con la lista de puntuaciones // Crea el contenido de la textura con la lista de puntuaciones
void HiScoreTable::fillTexture() void HiScoreTable::fillTexture()
{ {
const color_t orangeColor = {0xFF, 0x7A, 0x00};
// hay 27 letras - 7 de puntos quedan 20 caracteres 20 - nameLenght 0 numDots // hay 27 letras - 7 de puntos quedan 20 caracteres 20 - nameLenght 0 numDots
const color_t orangeColor = {0xFF, 0x7A, 0x00};
const int maxNames = 10;
const int spaceBetweenHeader = 32; const int spaceBetweenHeader = 32;
const int spaceBetweenLines = text->getCharacterSize() * 1.8f; const int spaceBetweenLines = text->getCharacterSize() * 2.0f;
const int size = spaceBetweenHeader + spaceBetweenLines * maxNames;
const int firstLine = (param->gameHeight - size) / 2;
// Pinta en el backbuffer el texto y los sprites // Pinta en el backbuffer el texto y los sprites
SDL_Texture *temp = SDL_GetRenderTarget(renderer); SDL_Texture *temp = SDL_GetRenderTarget(renderer);
@@ -97,13 +100,13 @@ void HiScoreTable::fillTexture()
SDL_RenderClear(renderer); SDL_RenderClear(renderer);
// Escribe el texto: Mejores puntuaciones // Escribe el texto: Mejores puntuaciones
text->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, GAMECANVAS_CENTER_X, 8, lang->getText(42), 1, orangeColor, 1, shdwTxtColor); text->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, GAMECANVAS_CENTER_X, firstLine, lang->getText(42), 1, orangeColor, 1, shdwTxtColor);
// Rellena la lista con nombres // Rellena la lista con nombres
std::vector<std::string> names; std::vector<std::string> names;
names.insert(names.end(), {"Bry", "Usufondo", "G.Lucas", "P.Delgat", "P.Arrabalera", "Pelechano", "Sahuquillo", "Bacteriol", "Pepe", "Rosita"}); names.insert(names.end(), {"Bry", "Usufondo", "G.Lucas", "P.Delgat", "P.Arrabalera", "Pelechano", "Sahuquillo", "Bacteriol", "Pepe", "Rosita"});
for (int i = 0; i < 10; ++i) for (int i = 0; i < maxNames; ++i)
{ {
const int nameLenght = names[i].length(); const int nameLenght = names[i].length();
const int numDots = 20 - nameLenght; const int numDots = 20 - nameLenght;
@@ -113,7 +116,7 @@ void HiScoreTable::fillTexture()
dots = dots + "."; dots = dots + ".";
} }
const std::string line = names[i] + dots + "0000000"; const std::string line = names[i] + dots + "0000000";
text->writeDX(TXT_CENTER | TXT_SHADOW, GAMECANVAS_CENTER_X, (i * spaceBetweenLines) + spaceBetweenHeader, line, 1, orangeColor, 1, shdwTxtColor); text->writeDX(TXT_CENTER | TXT_SHADOW, GAMECANVAS_CENTER_X, (i * spaceBetweenLines) + firstLine + spaceBetweenHeader, line, 1, orangeColor, 1, shdwTxtColor);
} }
// Cambia el destino de renderizado // Cambia el destino de renderizado
@@ -133,7 +136,7 @@ void HiScoreTable::render()
background->render(); background->render();
// Establece la ventana del backbuffer // Establece la ventana del backbuffer
viewArea.y = std::max(8, param->gameHeight - counter + 100); viewArea.y = std::max(0, param->gameHeight - counter + 100);
// Copia el backbuffer al renderizador // Copia el backbuffer al renderizador
SDL_RenderCopy(renderer, backbuffer, nullptr, &viewArea); SDL_RenderCopy(renderer, backbuffer, nullptr, &viewArea);

View File

@@ -106,7 +106,7 @@ void Instructions::render()
// Pinta en el backbuffer el texto y los sprites // Pinta en el backbuffer el texto y los sprites
SDL_SetRenderTarget(renderer, backbuffer); SDL_SetRenderTarget(renderer, backbuffer);
SDL_SetRenderDrawColor(renderer, bgColor.r, bgColor.g, bgColor.b, 255); SDL_SetRenderDrawColor(renderer, 255, bgColor.g, bgColor.b, 255);
SDL_RenderClear(renderer); SDL_RenderClear(renderer);
// Escribe el texto // Escribe el texto
@@ -168,7 +168,7 @@ void Instructions::render()
screen->clean(bgColor); screen->clean(bgColor);
// Establece la ventana del backbuffer // Establece la ventana del backbuffer
window.y = std::max(8, param->gameHeight - counter + 100); window.y = std::max(0, param->gameHeight - counter + 100);
// Copia el backbuffer al renderizador // Copia el backbuffer al renderizador
SDL_RenderCopy(renderer, backbuffer, nullptr, &window); SDL_RenderCopy(renderer, backbuffer, nullptr, &window);