1#ifndef YAZE_APP_EDITOR_DUNGEON_INTERACTION_SPRITE_INTERACTION_HANDLER_H_
2#define YAZE_APP_EDITOR_DUNGEON_INTERACTION_SPRITE_INTERACTION_HANDLER_H_
33 bool HandleClick(
int canvas_x,
int canvas_y)
override;
34 void HandleDrag(ImVec2 current_pos, ImVec2 delta)
override;
41 int canvas_y)
const override;
Abstract base class for entity interaction handlers.
Handles sprite placement and interaction in the dungeon editor.
GhostCapacityState GetPlacementGhostCapacityState() const
bool IsPlacementActive() const override
Check if placement mode is active.
bool NudgeSelected(int delta_x, int delta_y)
void PlaceSpriteAtPosition(int canvas_x, int canvas_y)
Place sprite at position.
void ClearSelection()
Clear sprite selection.
uint8_t GetSpriteId() const
Get current sprite ID for placement.
PlacementCapacityState GhostCapacityState
void CancelPlacement() override
Cancel current placement.
void HandleRelease() override
Handle mouse release.
PlacementBlockReason placement_block_reason() const
void SelectSprite(size_t index)
Select sprite at index.
void clear_placement_blocked()
std::optional< size_t > selected_sprite_index_
bool HasSelection() const
Check if a sprite is selected.
std::optional< size_t > GetEntityAtPosition(int canvas_x, int canvas_y) const override
Get entity at canvas position.
void DrawGhostPreview() override
Draw ghost preview during placement.
bool was_placement_blocked() const
True if the most recent PlaceSpriteAtPosition was blocked.
uint8_t preview_sprite_id_
bool sprite_placement_mode_
void DrawSelectionHighlight() override
Draw selection highlight for selected entities.
void HandleDrag(ImVec2 current_pos, ImVec2 delta) override
Handle mouse drag.
bool HandleClick(int canvas_x, int canvas_y) override
Handle mouse click at canvas position.
std::optional< size_t > GetSelectedIndex() const
Get selected sprite index.
void SetSpriteId(uint8_t id)
Set sprite ID for placement.
std::pair< int, int > CanvasToSpriteCoords(int canvas_x, int canvas_y) const
Convert canvas to sprite coordinates (16-pixel grid)
void BeginPlacement() override
Begin placement mode.
PlacementBlockReason placement_block_reason_
void DeleteSelected()
Delete selected sprite.