diff --git a/source/game/editor/editor.cpp b/source/game/editor/editor.cpp index 85a13ac..5a26db9 100644 --- a/source/game/editor/editor.cpp +++ b/source/game/editor/editor.cpp @@ -14,6 +14,7 @@ #include "core/resources/resource_cache.hpp" #include "core/resources/resource_helper.hpp" #include "core/system/event_buffer.hpp" +#include "game/levels/level_manager.hpp" #include "game/map/tilemap.hpp" #include "utils/defaults.hpp" #include "utils/defines.hpp" @@ -76,11 +77,13 @@ void Editor::exit(Tilemap& tilemap) { if (!active_) { return; } active_ = false; picker_open_ = false; - // Resolem la ruta via Resource::Helper perquè en Debug el root de - // dades és AEE_SOURCE_DIR (ruta absoluta al repo), no el CWD. Sense - // això, el writer obriria `data/maps/pyramid.yaml` relatiu al CWD - // i fallaria sempre excepte si el binari es llança des del repo root. - const auto ABS_PATH = Resource::Helper::resolve(Defaults::Editor::SAVE_PATH); + // El writer salva sempre sobre la sala actualment carregada (segons + // el LevelManager): així el "9" de l'editor desa el que tens davant, + // no una constant fixa. Resolem la ruta via Resource::Helper perquè + // en Debug el root de dades és AEE_SOURCE_DIR (ruta absoluta al repo), + // no el CWD; sense això, el writer obriria el path relatiu al CWD i + // fallaria si el binari no es llança des del repo root. + const auto ABS_PATH = Resource::Helper::resolve(Levels::LevelManager::get().currentPath()); const bool SAVED = tilemap.save(ABS_PATH); Notification::notify(Locale::get().text(SAVED ? "input.editor_off" : "input.editor_save_error")); } diff --git a/source/utils/defaults.hpp b/source/utils/defaults.hpp index 379ce05..9392e36 100644 --- a/source/utils/defaults.hpp +++ b/source/utils/defaults.hpp @@ -206,8 +206,6 @@ namespace Defaults { namespace Editor { // Color del rectangle 1 px que envolta el canvas durant l'edició. constexpr std::uint32_t BORDER_ARGB = 0xFF2244FFU; - // Ruta de persistència: writer surgical sobre la font del repo. - constexpr const char* SAVE_PATH = "data/maps/pyramid.yaml"; // Píxels entre el canvas i el rectangle del TilePicker per totes // les vores. Prou perquè el border blau de l'editor no es // superpose amb la graella del picker.