This commit is contained in:
2026-04-05 23:47:54 +02:00
parent 25ecc74251
commit c4a26ffa0f
96 changed files with 457 additions and 307 deletions

View File

@@ -8,8 +8,8 @@
#include "utils/utils.hpp" // Para checkCollision
// Constructor
ItemManager::ItemManager(std::string room_name, std::shared_ptr<Scoreboard::Data> scoreboard_data)
: room_name_(std::move(room_name)),
ItemManager::ItemManager(std::string room_id, std::shared_ptr<Scoreboard::Data> scoreboard_data)
: room_id_(std::move(room_id)),
data_(std::move(scoreboard_data)) {
}
@@ -49,7 +49,7 @@ auto ItemManager::checkCollision(SDL_FRect& rect) -> bool { // NOLINT(readabili
for (int i = 0; i < static_cast<int>(items_.size()); ++i) {
if (::checkCollision(rect, items_.at(i)->getCollider())) {
// Registra el item como recogido
ItemTracker::get()->addItem(room_name_, items_.at(i)->getPos());
ItemTracker::get()->addItem(room_id_, items_.at(i)->getPos());
// Elimina el item de la colección
items_.erase(items_.begin() + i);

View File

@@ -23,10 +23,10 @@ class ItemManager {
public:
/**
* @brief Constructor
* @param room_name Nombre de la habitación (para ItemTracker)
* @param room_id Identificador de la habitación (para ItemTracker)
* @param scoreboard_data Puntero compartido a los datos del scoreboard
*/
ItemManager(std::string room_name, std::shared_ptr<Scoreboard::Data> scoreboard_data);
ItemManager(std::string room_id, std::shared_ptr<Scoreboard::Data> scoreboard_data);
~ItemManager() = default;
// Prohibir copia y movimiento para evitar duplicación accidental
@@ -68,6 +68,6 @@ class ItemManager {
private:
std::vector<std::shared_ptr<Item>> items_; // Colección de items
std::string room_name_; // Nombre de la habitación
std::string room_id_; // Identificador de la habitación
std::shared_ptr<Scoreboard::Data> data_; // Datos del scoreboard
};

View File

@@ -23,7 +23,7 @@ Room::Room(const std::string& room_path, std::shared_ptr<Scoreboard::Data> data)
// Crea los managers de enemigos e items
enemy_manager_ = std::make_unique<EnemyManager>();
item_manager_ = std::make_unique<ItemManager>(room->name, data_);
item_manager_ = std::make_unique<ItemManager>(room->number, data_);
initializeRoom(*room);
openTheJail(); // Abre la Jail si se da el caso
@@ -44,7 +44,6 @@ Room::~Room() = default;
void Room::initializeRoom(const Data& room) {
// Asignar valores a las variables miembro
number_ = room.number;
name_ = room.name;
bg_color_ = room.bg_color;
border_color_ = room.border_color;
item_color1_ = room.item_color1.empty() ? "yellow" : room.item_color1;
@@ -69,7 +68,7 @@ void Room::initializeRoom(const Data& room) {
for (const auto& item : room.items) {
const SDL_FPoint ITEM_POS = {item.x, item.y};
if (!ItemTracker::get()->hasBeenPicked(room.name, ITEM_POS)) {
if (!ItemTracker::get()->hasBeenPicked(room.number, ITEM_POS)) {
// Crear una copia local de los datos del item
Item::Data item_copy = item;
item_copy.color1 = stringToColor(item_color1_);

View File

@@ -40,7 +40,6 @@ class Room {
struct Data {
std::string number; // Numero de la habitación
std::string name; // Nombre de la habitación
std::string bg_color; // Color de fondo de la habitación
std::string border_color; // Color del borde de la pantalla
std::string item_color1; // Color 1 para los items de la habitación
@@ -62,7 +61,6 @@ class Room {
// --- Funciones ---
[[nodiscard]] auto getNumber() const -> const std::string& { return number_; } // Devuelve el numero de la habitación
[[nodiscard]] auto getName() const -> const std::string& { return name_; } // Devuelve el nombre de la habitación
[[nodiscard]] auto getBGColor() const -> Uint8 { return stringToColor(bg_color_); } // Devuelve el color de la habitación
[[nodiscard]] auto getBorderColor() const -> Uint8 { return stringToColor(border_color_); } // Devuelve el color del borde
void renderMap(); // Dibuja el mapa en pantalla
@@ -122,7 +120,6 @@ class Room {
// --- Variables ---
std::string number_; // Numero de la habitación
std::string name_; // Nombre de la habitación
std::string bg_color_; // Color de fondo de la habitación
std::string border_color_; // Color del borde de la pantalla
std::string item_color1_; // Color 1 para los items de la habitación

View File

@@ -5,7 +5,6 @@
#include "core/resources/resource_helper.hpp" // Para Resource::Helper
#include "external/fkyaml_node.hpp" // Para fkyaml::node
#include "game/options.hpp" // Para Options::language
#include "utils/defines.hpp" // Para Tile::SIZE
#include "utils/utils.hpp" // Para stringToColor
@@ -71,12 +70,6 @@ void RoomLoader::parseRoomConfig(const fkyaml::node& yaml, Room::Data& room, con
room.number = file_name.substr(0, file_name.find_last_of('.'));
// Basic properties
const std::string LANG_KEY = "name_" + Options::language;
if (room_node.contains(LANG_KEY)) {
room.name = room_node[LANG_KEY].get_value<std::string>();
} else if (room_node.contains("name")) {
room.name = room_node["name"].get_value<std::string>();
}
if (room_node.contains("bgColor")) {
room.bg_color = readColorNode(room_node["bgColor"]);
}

View File

@@ -43,6 +43,7 @@ Scoreboard::Scoreboard(std::shared_ptr<Data> data)
// Pinta el objeto en pantalla
void Scoreboard::render() {
return;
surface_->render(nullptr, &surface_dest_);
}