diff --git a/source/director.cpp b/source/director.cpp index 1650094..c66fe17 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -9,7 +9,7 @@ Director::Director(std::string path) section.name = SECTION_PROG_LOGO; section.subsection = SUBSECTION_LOGO_TO_INTRO; - section.name = SECTION_PROG_TITLE; + section.name = SECTION_PROG_GAME; // Crea el objeto que controla los ficheros de recursos asset = new Asset(path.substr(0, path.find_last_of("\\/"))); diff --git a/source/game.cpp b/source/game.cpp index bb8ed06..6e50cc2 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -154,14 +154,7 @@ void Game::checkEventHandler() break; case SDL_SCANCODE_F5: - if (options->palette == p_zxspectrum) - { - options->palette = p_zxarne; - } - else - { - options->palette = p_zxspectrum; - } + switchPalette(); reLoadTextures(); break; @@ -411,6 +404,23 @@ void Game::reLoadTextures() text->reLoadTexture(); } +// Cambia la paleta +void Game::switchPalette() +{ + // Modifica la variable + if (options->palette == p_zxspectrum) + { + options->palette = p_zxarne; + } + else + { + options->palette = p_zxspectrum; + } + + room->reLoadPalette(); + player->reLoadPalette(); +} + // Establece la pantalla en negro void Game::setBlackScreen() { diff --git a/source/game.h b/source/game.h index 721ceda..07902ed 100644 --- a/source/game.h +++ b/source/game.h @@ -95,6 +95,9 @@ private: // Recarga todas las texturas void reLoadTextures(); + // Cambia la paleta + void switchPalette(); + // Establece la pantalla en negro void setBlackScreen(); diff --git a/source/room.cpp b/source/room.cpp index d80e520..8cab567 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -20,8 +20,8 @@ Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asse mapWidth = 32; mapHeight = 16; paused = false; - itemColor1 = stringToColor(options->palette, "magenta"); - itemColor2 = stringToColor(options->palette, "yellow"); + itemColor1 = "magenta"; + itemColor2 = "yellow"; autoSurfaceDirection = 1; counter = 0; @@ -57,7 +57,7 @@ Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asse fillMapTexture(); // Establece el color del borde - screen->setBorderColor(borderColor); + screen->setBorderColor(stringToColor(options->palette, borderColor)); } // Destructor @@ -130,8 +130,8 @@ bool Room::loadMapFile(std::string file_path) item.asset = asset; item.renderer = renderer; item.counter = 0; - item.color1 = itemColor1; - item.color2 = itemColor2; + item.color1 = stringToColor(options->palette, itemColor1); + item.color2 = stringToColor(options->palette, itemColor2); do { @@ -249,22 +249,22 @@ bool Room::setVars(std::string var, std::string value) else if (var == "bgColor") { - bgColor = stringToColor(options->palette, value); + bgColor = value; } else if (var == "border") { - borderColor = stringToColor(options->palette, value); + borderColor = value; } else if (var == "itemColor1") { - itemColor1 = stringToColor(options->palette, value); + itemColor1 = value; } else if (var == "itemColor2") { - itemColor2 = stringToColor(options->palette, value); + itemColor2 = value; } else if (var == "tileset") @@ -464,13 +464,13 @@ std::string Room::getName() // Devuelve el color de la habitación color_t Room::getBGColor() { - return bgColor; + return stringToColor(options->palette, bgColor); } // Devuelve el color del borde color_t Room::getBorderColor() { - return borderColor; + return stringToColor(options->palette, borderColor); } // Crea la textura con el mapeado de la habitación @@ -794,8 +794,14 @@ void Room::reLoadTexture() // Recarga la paleta void Room::reLoadPalette() { - itemColor1 = stringToColor(options->palette, "magenta"); - itemColor2 = stringToColor(options->palette, "yellow"); + // Cambia el color de los items + for (auto item:items) + { + item->setColors(stringToColor(options->palette, itemColor1), stringToColor(options->palette, itemColor2)); + } + + // Establece el color del borde + screen->setBorderColor(stringToColor(options->palette, borderColor)); } // Obten el tamaño del tile diff --git a/source/room.h b/source/room.h index cfe5711..97ae445 100644 --- a/source/room.h +++ b/source/room.h @@ -52,10 +52,10 @@ private: // Variables std::string name; // Nombre de la habitación - color_t bgColor; // Color de fondo de la habitación - color_t borderColor; // Color del borde de la pantalla - color_t itemColor1; // Color 1 para los items de la habitación - color_t itemColor2; // Color 2 para los items de la habitación + std::string bgColor; // Color de fondo de la habitación + std::string borderColor; // Color del borde de la pantalla + std::string itemColor1; // Color 1 para los items de la habitación + std::string itemColor2; // Color 2 para los items de la habitación std::string roomUp; // Identificador de la habitación que se encuentra arriba std::string roomDown; // Identificador de la habitación que se encuentra abajp std::string roomLeft; // Identificador de la habitación que se encuentra a la izquierda