yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
item_interaction_handler.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_INTERACTION_ITEM_INTERACTION_HANDLER_H_
2#define YAZE_APP_EDITOR_DUNGEON_INTERACTION_ITEM_INTERACTION_HANDLER_H_
3
6
7namespace yaze {
8namespace editor {
9
16 public:
17 // ========================================================================
18 // BaseEntityHandler interface
19 // ========================================================================
20
21 void BeginPlacement() override;
22 void CancelPlacement() override { item_placement_mode_ = false; }
23 bool IsPlacementActive() const override { return item_placement_mode_; }
24
25 bool HandleClick(int canvas_x, int canvas_y) override;
26 void HandleDrag(ImVec2 current_pos, ImVec2 delta) override;
27 void HandleRelease() override;
28
29 void DrawGhostPreview() override;
30 void DrawSelectionHighlight() override;
31
32 std::optional<size_t> GetEntityAtPosition(int canvas_x,
33 int canvas_y) const override;
34
35 // ========================================================================
36 // Item-specific methods
37 // ========================================================================
38
42 void SetItemId(uint8_t id) { preview_item_id_ = id; }
43
47 uint8_t GetItemId() const { return preview_item_id_; }
48
52 void SelectItem(size_t index);
53
57 void ClearSelection();
58
62 bool HasSelection() const { return selected_item_index_.has_value(); }
63
67 std::optional<size_t> GetSelectedIndex() const { return selected_item_index_; }
68
72 void DeleteSelected();
73
74 private:
75 // Placement state
77 uint8_t preview_item_id_ = 0;
78
79 // Selection state
80 std::optional<size_t> selected_item_index_;
81 bool is_dragging_ = false;
84
88 void PlaceItemAtPosition(int canvas_x, int canvas_y);
89};
90
91} // namespace editor
92} // namespace yaze
93
94#endif // YAZE_APP_EDITOR_DUNGEON_INTERACTION_ITEM_INTERACTION_HANDLER_H_
Abstract base class for entity interaction handlers.
Handles pot item placement and interaction in the dungeon editor.
void DrawSelectionHighlight() override
Draw selection highlight for selected entities.
uint8_t GetItemId() const
Get current item ID for placement.
bool HandleClick(int canvas_x, int canvas_y) override
Handle mouse click at canvas position.
bool IsPlacementActive() const override
Check if placement mode is active.
void DrawGhostPreview() override
Draw ghost preview during placement.
void BeginPlacement() override
Begin placement mode.
void PlaceItemAtPosition(int canvas_x, int canvas_y)
Place item at position.
void HandleDrag(ImVec2 current_pos, ImVec2 delta) override
Handle mouse drag.
std::optional< size_t > GetEntityAtPosition(int canvas_x, int canvas_y) const override
Get entity at canvas position.
bool HasSelection() const
Check if an item is selected.
void SetItemId(uint8_t id)
Set item ID for placement.
void HandleRelease() override
Handle mouse release.
std::optional< size_t > GetSelectedIndex() const
Get selected item index.
void SelectItem(size_t index)
Select item at index.
void CancelPlacement() override
Cancel current placement.