Recarga de texturas en el cambio de modo de video

This commit is contained in:
2022-09-22 08:27:28 +02:00
parent e517ef62c8
commit 5806f7352f
6 changed files with 44 additions and 9 deletions

View File

@@ -12,7 +12,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
this->debug->setEnabled(true);
// Reserva memoria para los objetos
scoreboard = new ScoreBoard(renderer, asset, &board);
scoreboard = new ScoreBoard(renderer, asset, &board);
eventHandler = new SDL_Event();
itemTracker = new ItemTracker();
map = new Map(asset->get("01.map"), renderer, asset, itemTracker);
@@ -79,17 +79,17 @@ void Game::update()
ticks = SDL_GetTicks();
// Comprueba los eventos de la cola
checkEventHandler();
checkEventHandler();
// Actualiza los objetos
debug->clear();
// Actualiza los objetos
debug->clear();
scoreboard->update();
map->update();
enemyEngine->update();
player->update();
checkScreenBorders();
updateDebugInfo();
updateDebugInfo();
}
}
@@ -132,7 +132,7 @@ void Game::checkEventHandler()
break;
case SDL_SCANCODE_D:
debug->switchEnabled();
debug->switchEnabled();
musicEnabled = !debug->getEnabled();
musicEnabled ? JA_ResumeMusic() : JA_PauseMusic();
break;
@@ -151,22 +151,27 @@ void Game::checkEventHandler()
case SDL_SCANCODE_F:
screen->switchVideoMode();
reLoadTextures();
break;
case SDL_SCANCODE_F1:
screen->setWindowSize(1);
reLoadTextures();
break;
case SDL_SCANCODE_F2:
screen->setWindowSize(2);
reLoadTextures();
break;
case SDL_SCANCODE_F3:
screen->setWindowSize(3);
reLoadTextures();
break;
case SDL_SCANCODE_F4:
screen->setWindowSize(4);
reLoadTextures();
break;
default:
@@ -201,7 +206,7 @@ void Game::renderDebugInfo()
return;
}
// Pinta la rejilla
// Pinta la rejilla
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 16);
for (int i = 0; i < 240; i += 8)
{
@@ -258,3 +263,11 @@ void Game::checkScreenBorders()
}
}
}
// Recarga las texturas
void Game::reLoadTextures()
{
map->reLoadTextures();
player->reLoadTextures();
scoreboard->reLoadTexture();
}

View File

@@ -58,6 +58,9 @@ private:
// Comprueba si el jugador está en el borde y se ha de cambiar el mapa
void checkScreenBorders();
// Recarga las texturas
void reLoadTextures();
public:
// Constructor
Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Debug *debug);

View File

@@ -669,3 +669,10 @@ std::string Map::getEnemyFile()
{
return enemy_file;
}
// Recarga las texturas
void Map::reLoadTextures()
{
texture_tile->reLoad();
fillMapTexture();
}

View File

@@ -123,6 +123,9 @@ public:
// Obtiene el valor de la variable
std::string getEnemyFile();
// Recarga las texturas
void reLoadTextures();
};
#endif

View File

@@ -481,3 +481,9 @@ int Player::checkActors()
return index;
}
// Recarga las texturas
void Player::reLoadTextures()
{
texture->reLoad();
}

View File

@@ -119,6 +119,9 @@ public:
// Pasa la referencia del mapa
void setMap(Map *map);
// Recarga las texturas
void reLoadTextures();
};
#endif