treballant en editor de items i tile_picker

This commit is contained in:
2026-04-02 14:49:26 +02:00
parent acaf434e5c
commit 22d6ac2fbf
15 changed files with 540 additions and 45 deletions

View File

@@ -8,6 +8,7 @@
#include <string> // Para string
#include "external/fkyaml_node.hpp" // Para fkyaml::node
#include "game/editor/tile_picker.hpp" // Para TilePicker
#include "game/entities/enemy.hpp" // Para Enemy::Data
#include "game/entities/item.hpp" // Para Item::Data
#include "game/entities/player.hpp" // Para Player::SpawnData
@@ -42,6 +43,14 @@ class MapEditor {
// Comandos para propiedades de la habitación
auto setRoomProperty(const std::string& property, const std::string& value) -> std::string;
// Comandos para items
auto setItemProperty(const std::string& property, const std::string& value) -> std::string;
auto addItem() -> std::string;
auto deleteItem() -> std::string;
auto duplicateItem() -> std::string;
[[nodiscard]] auto hasSelectedItem() const -> bool;
void openTilePicker(const std::string& tileset_name, int current_tile);
private:
static MapEditor* instance_; // [SINGLETON] Objeto privado
@@ -49,7 +58,12 @@ class MapEditor {
~MapEditor(); // Destructor
// Tipos para drag & drop y selección
enum class DragTarget { NONE, PLAYER, ENEMY_INITIAL, ENEMY_BOUND1, ENEMY_BOUND2, ITEM };
enum class DragTarget { NONE,
PLAYER,
ENEMY_INITIAL,
ENEMY_BOUND1,
ENEMY_BOUND2,
ITEM };
struct DragState {
DragTarget target{DragTarget::NONE};
@@ -78,6 +92,7 @@ class MapEditor {
bool active_{false};
DragState drag_;
int selected_enemy_{-1}; // Índice del enemigo seleccionado (-1 = ninguno)
int selected_item_{-1}; // Índice del item seleccionado (-1 = ninguno)
// Datos de la habitación
Room::Data room_data_;
@@ -96,6 +111,9 @@ class MapEditor {
// Barra de estado del editor
std::unique_ptr<EditorStatusBar> statusbar_;
// Tile picker (para seleccionar tiles de un tileset)
TilePicker tile_picker_;
// Estado del ratón
float mouse_game_x_{0.0F};
float mouse_game_y_{0.0F};