1#ifndef YAZE_APP_EDITOR_DUNGEON_PANELS_DUNGEON_WORKBENCH_PANEL_H
2#define YAZE_APP_EDITOR_DUNGEON_PANELS_DUNGEON_WORKBENCH_PANEL_H
7#include <unordered_map>
18class DungeonCanvasViewer;
19class DungeonRoomSelector;
27 std::function<
void(
int)> on_room_selected,
29 on_room_selected_with_intent,
30 std::function<
void(
int)> on_save_room,
33 std::function<
const std::deque<int>&()> get_recent_rooms,
34 std::function<
void(
int)> forget_recent_room,
35 std::function<
void(
const std::string&)> show_panel,
36 std::function<
void(
bool)> set_workflow_mode,
Rom* rom =
nullptr);
38 std::string
GetId()
const override;
40 std::string
GetIcon()
const override;
53 std::function<
bool()> can_redo,
54 std::function<
void()> on_undo,
55 std::function<
void()> on_redo,
56 std::function<std::string()> undo_desc,
57 std::function<std::string()> redo_desc,
58 std::function<
int()> undo_depth) {
73 void Draw(
bool* p_open)
override;
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Handles room and entrance selection UI.
std::function< void(int)> on_room_selected_
void NotifyRoomChanged(int previous_room_id)
Called by the editor when the current room changes.
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
std::function< void(const std::string &) show_panel_)
void DrawInspectorShelfView(DungeonCanvasViewer &viewer)
DungeonWorkbenchPanel(DungeonRoomSelector *room_selector, int *current_room_id, std::function< void(int)> on_room_selected, std::function< void(int, RoomSelectionIntent)> on_room_selected_with_intent, std::function< void(int)> on_save_room, std::function< DungeonCanvasViewer *()> get_viewer, std::function< DungeonCanvasViewer *()> get_compare_viewer, std::function< const std::deque< int > &()> get_recent_rooms, std::function< void(int)> forget_recent_room, std::function< void(const std::string &)> show_panel, std::function< void(bool)> set_workflow_mode, Rom *rom=nullptr)
void DrawInspectorShelf(DungeonCanvasViewer &viewer)
DungeonWorkbenchLayoutState layout_state_
std::string GetIcon() const override
Material Design icon for this panel.
std::function< const char *()> get_tool_mode_
std::function< DungeonCanvasViewer *()> get_compare_viewer_
std::function< void(int)> on_save_room_
void DrawSplitView(DungeonCanvasViewer &primary_viewer)
std::function< void(int)> forget_recent_room_
std::function< const std::deque< int > &()> get_recent_rooms_
std::function< void()> on_undo_
std::function< bool()> can_undo_
std::function< int()> undo_depth_
std::function< void(int, RoomSelectionIntent)> on_room_selected_with_intent_
void DrawInspector(DungeonCanvasViewer &viewer)
void DrawInspectorShelfRoom(DungeonCanvasViewer &viewer)
std::unordered_map< int, std::string > room_dungeon_cache_
int GetPriority() const override
Get display priority for menu ordering.
std::string GetEditorCategory() const override
Editor category this panel belongs to.
void DrawRecentRoomTabs()
std::function< std::string()> redo_desc_
void SetUndoRedoProvider(std::function< bool()> can_undo, std::function< bool()> can_redo, std::function< void()> on_undo, std::function< void()> on_redo, std::function< std::string()> undo_desc, std::function< std::string()> redo_desc, std::function< int()> undo_depth)
std::function< bool()> can_redo_
char compare_search_buf_[64]
void BuildRoomDungeonCache()
std::string GetId() const override
Unique identifier for this panel.
void Draw(bool *p_open) override
Draw the panel content.
void DrawInspectorShelfTools(DungeonCanvasViewer &viewer)
bool show_shortcut_legend_
void SetToolModeProvider(std::function< const char *()> provider)
DungeonRoomSelector * room_selector_
bool room_dungeon_cache_built_
void DrawInspectorShelfSelection(DungeonCanvasViewer &viewer)
std::function< void(bool)> set_workflow_mode_
std::function< void()> on_redo_
std::function< DungeonCanvasViewer *()> get_viewer_
std::function< std::string()> undo_desc_
Base interface for all logical panel components.
Editors are the view controllers for the application.
RoomSelectionIntent
Intent for room selection in the dungeon editor.