Implementado el cambio de pantalla
This commit is contained in:
@@ -10,7 +10,7 @@ Game::Game(SDL_Renderer *renderer, Asset *asset, Screen *screen, Input *input)
|
||||
this->input = input;
|
||||
|
||||
eventHandler = new SDL_Event();
|
||||
map = new Map(asset->get("01.map"), renderer, asset);
|
||||
map = new Map(asset->get("02.map"), renderer, asset);
|
||||
player = new Player(renderer, asset, input, map);
|
||||
debugText = new Text(asset->get("debug.png"), asset->get("debug.txt"), renderer);
|
||||
}
|
||||
@@ -75,6 +75,7 @@ void Game::update()
|
||||
}
|
||||
|
||||
player->update();
|
||||
checkScreenBorders();
|
||||
checkInput();
|
||||
}
|
||||
}
|
||||
@@ -105,6 +106,8 @@ void Game::checkInput()
|
||||
|
||||
if (input->checkInput(INPUT_BUTTON_3, REPEAT_FALSE))
|
||||
{
|
||||
delete map;
|
||||
map = new Map(asset->get("01.map"),renderer, asset);
|
||||
delete player;
|
||||
player = new Player(renderer, asset, input, map);
|
||||
}
|
||||
@@ -156,4 +159,40 @@ void Game::renderDebugInfo()
|
||||
|
||||
text = "state " + std::to_string(player->state);
|
||||
debugText->write(0, line += 6, text, -1);
|
||||
|
||||
text = map->getRoomFileName(b_top) + " " +map->getRoomFileName(b_right) + " " +map->getRoomFileName(b_bottom) + " " +map->getRoomFileName(b_left);
|
||||
debugText->write(0, line += 6, text, -1);
|
||||
}
|
||||
|
||||
// Cambia el mapa
|
||||
bool Game::changeMap(std::string file)
|
||||
{
|
||||
bool success = false;
|
||||
// En las habitaciones los limites tienen la cadena del fichero o un 0 en caso de no limitar con nada
|
||||
if (file != "0")
|
||||
// Verifica que exista el fichero que se va a cargar
|
||||
if (asset->get(file) != "")
|
||||
{
|
||||
// Elimina la habitación actual
|
||||
delete map;
|
||||
|
||||
// Crea un objeto habitación nuevo a partir del fichero
|
||||
map = new Map(asset->get(file), renderer, asset);
|
||||
success = true;
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
// Comprueba si el jugador está en el borde y se ha de cambiar el mapa
|
||||
void Game::checkScreenBorders()
|
||||
{
|
||||
if (player->isOnScreenBorder())
|
||||
{
|
||||
if (changeMap(map->getRoomFileName(player->getBorder())))
|
||||
{
|
||||
player->setMap(map);
|
||||
player->switchBorders();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user