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 float GetPreferredWidth() const override { return 460.0f; }
33
34 void Draw(bool* p_open) override;
35
36 void SetCurrentRoom(int room_id) { current_room_id_ = room_id; }
37 void SetCanvasViewerProvider(std::function<DungeonCanvasViewer*()> provider) {
38 canvas_viewer_provider_ = std::move(provider);
39 }
42 std::function<void(int neighbor_room_id, size_t reciprocal_door_index)>
43 callback) {
44 on_jump_to_reciprocal_door_ = std::move(callback);
45 }
46
47 void CycleObjectSelection(int direction);
48 void SelectAllObjects();
51 void PasteObjects();
52
53 private:
55 void OnSelectionChanged();
58
59 void DrawEmptyState();
67
69 void DeselectAllObjects();
75 void NudgeCurrentSelection(int dx, int dy);
76 void ScrollToObject(size_t index);
77
81 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor_;
82
85 bool show_shortcut_help_ = false;
87 std::function<void(int, size_t)> on_jump_to_reciprocal_door_;
88};
89
90} // namespace yaze::editor
91
92#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_
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)