fase 2 de zones
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
|
||||
#include "core/resources/resource_helper.hpp" // Para Resource::Helper
|
||||
#include "external/fkyaml_node.hpp" // Para fkyaml::node
|
||||
#include "game/gameplay/zone.hpp" // Para Zone::Data
|
||||
#include "game/gameplay/zone_manager.hpp" // Para ZoneManager
|
||||
#include "utils/defines.hpp" // Para Tile::SIZE
|
||||
#include "utils/utils.hpp"
|
||||
|
||||
@@ -71,8 +73,40 @@ void RoomLoader::parseRoomConfig(const fkyaml::node& yaml, Room::Data& room, con
|
||||
|
||||
// Basic properties
|
||||
// bgColor ya no se lee del YAML; bg_color queda siempre a 0
|
||||
|
||||
// --- Resolución de zona + overrides (tileSetFile, music) ---
|
||||
// Obtener zona declarada (o caer al default si no existe)
|
||||
std::string zone_name;
|
||||
if (room_node.contains("zone")) {
|
||||
zone_name = room_node["zone"].get_value<std::string>();
|
||||
} else {
|
||||
std::cerr << "Warning: room " << file_name << " has no 'zone' field, using default\n";
|
||||
const Zone::Data* default_zone = ZoneManager::get()->getDefaultZone();
|
||||
if (default_zone != nullptr) { zone_name = default_zone->name; }
|
||||
}
|
||||
room.zone = zone_name;
|
||||
|
||||
// Localizar la zona en el catálogo (fallback al default si no existe)
|
||||
const Zone::Data* zone = ZoneManager::get()->getZone(zone_name);
|
||||
if (zone == nullptr) {
|
||||
std::cerr << "Warning: unknown zone '" << zone_name << "' in " << file_name << ", using default\n";
|
||||
zone = ZoneManager::get()->getDefaultZone();
|
||||
}
|
||||
|
||||
// tileSetFile: zona, override si está en el yaml
|
||||
if (room_node.contains("tileSetFile")) {
|
||||
room.tile_set_file = room_node["tileSetFile"].get_value<std::string>();
|
||||
room.tile_set_overridden = true;
|
||||
} else if (zone != nullptr) {
|
||||
room.tile_set_file = zone->tile_set_file;
|
||||
}
|
||||
|
||||
// music: zona, override si está en el yaml
|
||||
if (room_node.contains("music")) {
|
||||
room.music = room_node["music"].get_value<std::string>();
|
||||
room.music_overridden = true;
|
||||
} else if (zone != nullptr) {
|
||||
room.music = zone->music;
|
||||
}
|
||||
|
||||
// Room connections
|
||||
|
||||
Reference in New Issue
Block a user