diff --git a/source/game.cpp b/source/game.cpp index 36c8790..da301b6 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -297,31 +297,37 @@ void Game::renderRoomName() bool Game::changeRoom(std::string file) { // 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 room; - room = nullptr; + if (file == "0") + { + return false; + } - // Crea un objeto habitación nuevo a partir del fichero - room = new Room(resource->getRoom(file), renderer, screen, asset, options, itemTracker, &board.items, debug); + // Verifica que exista el fichero que se va a cargar + if (asset->get(file) != "") + { + // Elimina la habitación actual + delete room; + room = nullptr; - // Actualiza el marcador - const color_t c = room->getBorderColor(); // Pone el color del marcador - board.color = (c.r + c.g + c.b == 0) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco - if (roomTracker->addRoom(file)) - { // Incrementa el contador de habitaciones visitadas - board.rooms++; - } + // Crea un objeto habitación nuevo a partir del fichero + room = new Room(resource->getRoom(file), renderer, screen, asset, options, itemTracker, &board.items, debug); - // Pasa la nueva habitación al jugador - player->setRoom(room); - - return true; + // Actualiza el marcador + const color_t c = room->getBorderColor(); // Obtiene el color del vorde + const color_t cBlack = stringToColor(options->palette, "black"); + board.color = (c.r == cBlack.r && c.g == cBlack.g && c.b == cBlack.b) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco + // board.color = (c.r + c.g + c.b == 0) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco + if (roomTracker->addRoom(file)) + { // Incrementa el contador de habitaciones visitadas + board.rooms++; } + // Pasa la nueva habitación al jugador + player->setRoom(room); + + return true; + } + return false; }