diff --git a/source/global_inputs.cpp b/source/global_inputs.cpp index d4f776ae..40361dd4 100644 --- a/source/global_inputs.cpp +++ b/source/global_inputs.cpp @@ -27,7 +27,6 @@ namespace globalInputs // Cambia la paleta de colores void switchPalette() { - //options.video.palette = options.video.palette == Palette::ZXSPECTRUM ? Palette::ZXARNE : Palette::ZXSPECTRUM; Screen::get()->nextPalette(); } @@ -102,7 +101,7 @@ namespace globalInputs else if (Input::get()->checkInput(InputAction::TOGGLE_PALETTE, REPEAT_FALSE)) { switchPalette(); - //Notifier::get()->show({"PALETTE " + std::string(options.video.palette == Palette::ZXSPECTRUM ? "ZX SPECTRUM" : "ZX ARNE")}, NotificationText::CENTER); + Notifier::get()->show({"PALETTE " + options.video.palette}, NotificationText::CENTER); } } } \ No newline at end of file diff --git a/source/screen.cpp b/source/screen.cpp index d17ef933..c06981a7 100644 --- a/source/screen.cpp +++ b/source/screen.cpp @@ -92,6 +92,9 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer) // Muestra la ventana SDL_SetWindowPosition(window_, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); show(); + + // Extrae el nombre de las paletas desde su ruta + processPaletteList(); } // Destructor @@ -130,12 +133,11 @@ void Screen::startDrawOnBorder() void Screen::render() { // Renderiza sobre game_surface_ los overlays - //renderNotifications(); + renderNotifications(); // Copia la surface a game_texture_ game_surface_->copyToTexture(renderer_, game_texture_); - // Si está el borde activo, vuelca gameCanvas sobre borderCanvas if (options.video.border.enabled) { @@ -398,4 +400,25 @@ void Screen::nextPalette() game_surface_->loadPalette(Resource::get()->getPalette(palettes_.at(current_palette_))); border_surface_->loadPalette(Resource::get()->getPalette(palettes_.at(current_palette_))); + + options.video.palette = palettes_.at(current_palette_); + + // Eliminar ".gif" + size_t pos = options.video.palette.find(".gif"); + if (pos != std::string::npos) + { + options.video.palette.erase(pos, 4); + } + + // Convertir a mayúsculas + std::transform(options.video.palette.begin(), options.video.palette.end(), options.video.palette.begin(), ::toupper); +} + +// Extrae los nombres de las paletas +void Screen::processPaletteList() +{ + for (auto &palette : palettes_) + { + palette = getFileName(palette); + } } \ No newline at end of file diff --git a/source/screen.h b/source/screen.h index 906c4564..6362b519 100644 --- a/source/screen.h +++ b/source/screen.h @@ -63,6 +63,9 @@ private: // Reinicia los shaders void resetShaders(); + // Extrae los nombres de las paletas + void processPaletteList(); + // Constructor Screen(SDL_Window *window, SDL_Renderer *renderer);