#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_TOOLSET_H #define YAZE_APP_EDITOR_DUNGEON_DUNGEON_TOOLSET_H #include #include #include "imgui/imgui.h" namespace yaze { namespace editor { /** * @brief Handles the dungeon editor toolset UI * * This component manages the toolbar with placement modes, background layer * selection, and other editing tools. */ class DungeonToolset { public: enum BackgroundType { kNoBackground, kBackground1, kBackground2, kBackground3, kBackgroundAny, }; enum PlacementType { kNoType, kObject, // Object editing mode kSprite, // Sprite editing mode kItem, // Item placement mode kEntrance, // Entrance/exit editing mode kDoor, // Door configuration mode kChest, // Chest management mode kBlock // Legacy block mode }; DungeonToolset() = default; void Draw(); // Getters BackgroundType background_type() const { return background_type_; } PlacementType placement_type() const { return placement_type_; } // Setters void set_background_type(BackgroundType type) { background_type_ = type; } void set_placement_type(PlacementType type) { placement_type_ = type; } // Callbacks void SetUndoCallback(std::function callback) { undo_callback_ = callback; } void SetRedoCallback(std::function callback) { redo_callback_ = callback; } void SetPaletteToggleCallback(std::function callback) { palette_toggle_callback_ = callback; } private: BackgroundType background_type_ = kBackgroundAny; PlacementType placement_type_ = kNoType; // Callbacks for editor actions std::function undo_callback_; std::function redo_callback_; std::function palette_toggle_callback_; }; } // namespace editor } // namespace yaze #endif // YAZE_APP_EDITOR_DUNGEON_DUNGEON_TOOLSET_H