yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
object_editor_content.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_INSPECTORS_OBJECT_EDITOR_CONTENT_H_
2#define YAZE_APP_EDITOR_DUNGEON_INSPECTORS_OBJECT_EDITOR_CONTENT_H_
3
4#include <cstddef>
5#include <functional>
6#include <memory>
7#include <string>
8#include <vector>
9
13#include "app/gui/core/icons.h"
15
16namespace yaze::editor {
17
19 DungeonObjectInteraction& interaction,
20 const std::vector<size_t>& editor_selected_indices);
21
23 public:
24 explicit ObjectEditorContent(
25 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor = nullptr);
26
27 std::string GetId() const override { return "dungeon.object_editor"; }
28 std::string GetDisplayName() const override { return "Selection Inspector"; }
29 std::string GetIcon() const override { return ICON_MD_TUNE; }
30 std::string GetEditorCategory() const override { return "Dungeon"; }
31 int GetPriority() const override { return 61; }
32 std::string GetWorkflowGroup() const override { return "Editors"; }
33 float GetPreferredWidth() const override { return 460.0f; }
34
35 void Draw(bool* p_open) override;
36
37 void SetCurrentRoom(int room_id) { current_room_id_ = room_id; }
38 void SetCanvasViewerProvider(std::function<DungeonCanvasViewer*()> provider) {
39 canvas_viewer_provider_ = std::move(provider);
40 }
43 std::function<void(int neighbor_room_id, size_t reciprocal_door_index)>
44 callback) {
45 on_jump_to_reciprocal_door_ = std::move(callback);
46 }
47
48 void CycleObjectSelection(int direction);
49 void SelectAllObjects();
52 void PasteObjects();
53
54 private:
56 void OnSelectionChanged();
59
60 void DrawEmptyState();
68
70 void DeselectAllObjects();
76 void NudgeCurrentSelection(int dx, int dy);
77 void ScrollToObject(size_t index);
78
82 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor_;
83
86 bool show_shortcut_help_ = false;
88 std::function<void(int, size_t)> on_jump_to_reciprocal_door_;
89};
90
91} // namespace yaze::editor
92
93#endif // YAZE_APP_EDITOR_DUNGEON_INSPECTORS_OBJECT_EDITOR_CONTENT_H_
std::string GetEditorCategory() const override
Editor category this panel belongs to.
void Draw(bool *p_open) override
Draw the panel content.
void SetJumpToReciprocalDoorCallback(std::function< void(int neighbor_room_id, size_t reciprocal_door_index)> callback)
std::function< DungeonCanvasViewer *()> canvas_viewer_provider_
void SetCanvasViewerProvider(std::function< DungeonCanvasViewer *()> provider)
ObjectEditorContent(std::shared_ptr< zelda3::DungeonObjectEditor > object_editor=nullptr)
DungeonSelectionSnapshot selection_snapshot_
std::string GetWorkflowGroup() const override
Optional workflow group for hack-centric actions.
void SetCanvasViewer(DungeonCanvasViewer *viewer)
std::string GetId() const override
Unique identifier for this panel.
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
std::string GetIcon() const override
Material Design icon for this panel.
int GetPriority() const override
Get display priority for menu ordering.
std::function< void(int, size_t)> on_jump_to_reciprocal_door_
std::shared_ptr< zelda3::DungeonObjectEditor > object_editor_
float GetPreferredWidth() const override
Get preferred width for this panel (optional)
Base interface for all logical window content components.
#define ICON_MD_TUNE
Definition icons.h:2022
Editors are the view controllers for the application.
bool SyncObjectEditorSelectionToCanvas(DungeonObjectInteraction &interaction, const std::vector< size_t > &editor_selected_indices)