1#ifndef YAZE_APP_EDITOR_DUNGEON_INTERACTION_DOOR_INTERACTION_HANDLER_H_
2#define YAZE_APP_EDITOR_DUNGEON_INTERACTION_DOOR_INTERACTION_HANDLER_H_
28 bool HandleClick(
int canvas_x,
int canvas_y)
override;
29 void HandleDrag(ImVec2 current_pos, ImVec2 delta)
override;
36 int canvas_y)
const override;
Abstract base class for entity interaction handlers.
Handles door placement and interaction in the dungeon editor.
bool door_placement_mode_
void DrawSelectionHighlight() override
Draw selection highlight for selected entities.
void DrawSnapIndicators()
Draw snap position indicators during door drag.
void SelectDoor(size_t index)
Select door at index.
std::optional< size_t > selected_door_index_
zelda3::DoorType preview_door_type_
void DrawGhostPreview() override
Draw ghost preview during placement.
void ClearSelection()
Clear door selection.
zelda3::DoorType GetDoorType() const
Get current door type for placement.
void HandleDrag(ImVec2 current_pos, ImVec2 delta) override
Handle mouse drag.
void DeleteSelected()
Delete selected door.
uint8_t snapped_door_position_
void SetDoorType(zelda3::DoorType type)
Set door type for placement.
void CancelPlacement() override
Cancel current placement.
zelda3::DoorDirection detected_door_direction_
void BeginPlacement() override
Begin placement mode.
void HandleRelease() override
Handle mouse release.
bool HandleClick(int canvas_x, int canvas_y) override
Handle mouse click at canvas position.
std::optional< size_t > GetSelectedIndex() const
Get selected door index.
bool IsPlacementActive() const override
Check if placement mode is active.
bool UpdateSnappedPosition(int canvas_x, int canvas_y)
Update snapped position based on cursor.
void PlaceDoorAtSnappedPosition(int canvas_x, int canvas_y)
Place door at snapped position.
std::optional< size_t > GetEntityAtPosition(int canvas_x, int canvas_y) const override
Get entity at canvas position.
bool HasSelection() const
Check if a door is selected.
DoorType
Door types from ALTTP.
@ NormalDoor
Normal door (upper layer)
DoorDirection
Door direction on room walls.
@ North
Top wall (horizontal door, 4x3 tiles)