Handles entity interaction logic for the Overworld Editor. More...
#include <overworld_entity_interaction.h>
Public Member Functions | |
| OverworldEntityInteraction (Rom *rom) | |
| void | SetRom (Rom *rom) |
| void | SetEntityRenderer (OverworldEntityRenderer *renderer) |
| void | HandleContextMenus (zelda3::GameEntity *hovered_entity) |
| Handle entity context menus on right-click. | |
| int | HandleDoubleClick (zelda3::GameEntity *hovered_entity) |
| Handle double-click actions on entities. | |
| bool | HandleDragDrop (zelda3::GameEntity *hovered_entity, ImVec2 mouse_delta) |
| Handle entity drag-and-drop operations. | |
| void | FinishDrag () |
| Finish an active drag operation. | |
| zelda3::GameEntity * | current_entity () const |
| zelda3::OverworldExit & | current_exit () |
| zelda3::OverworldEntrance & | current_entrance () |
| zelda3::OverworldItem & | current_item () |
| zelda3::Sprite & | current_sprite () |
| bool | is_dragging () const |
| zelda3::GameEntity * | dragged_entity () const |
Private Attributes | |
| Rom * | rom_ = nullptr |
| OverworldEntityRenderer * | entity_renderer_ = nullptr |
| zelda3::GameEntity * | current_entity_ = nullptr |
| zelda3::OverworldExit | current_exit_ |
| zelda3::OverworldEntrance | current_entrance_ |
| zelda3::OverworldItem | current_item_ |
| zelda3::Sprite | current_sprite_ |
| bool | is_dragging_ = false |
| bool | free_movement_ = false |
| zelda3::GameEntity * | dragged_entity_ = nullptr |
Handles entity interaction logic for the Overworld Editor.
This class centralizes all entity interaction logic including:
Extracted from OverworldEditor to reduce cognitive complexity and improve separation of concerns.
Definition at line 30 of file overworld_entity_interaction.h.
|
inlineexplicit |
Definition at line 32 of file overworld_entity_interaction.h.
|
inline |
Definition at line 34 of file overworld_entity_interaction.h.
References rom_.
|
inline |
Definition at line 35 of file overworld_entity_interaction.h.
References entity_renderer_.
| void yaze::editor::OverworldEntityInteraction::HandleContextMenus | ( | zelda3::GameEntity * | hovered_entity | ) |
Handle entity context menus on right-click.
| hovered_entity | The entity currently under the cursor |
Definition at line 12 of file overworld_entity_interaction.cc.
References current_entity_, current_entrance_, current_exit_, current_item_, current_sprite_, yaze::zelda3::GameEntity::entity_type_, yaze::zelda3::GameEntity::kEntrance, yaze::zelda3::GameEntity::kExit, yaze::zelda3::GameEntity::kItem, yaze::gui::EditorNames::kOverworld, yaze::zelda3::GameEntity::kSprite, and yaze::gui::MakePopupId().

| int yaze::editor::OverworldEntityInteraction::HandleDoubleClick | ( | zelda3::GameEntity * | hovered_entity | ) |
Handle double-click actions on entities.
| hovered_entity | The entity currently under the cursor |
Definition at line 52 of file overworld_entity_interaction.cc.
References yaze::zelda3::GameEntity::entity_type_, yaze::zelda3::GameEntity::kEntrance, and yaze::zelda3::GameEntity::kExit.
| bool yaze::editor::OverworldEntityInteraction::HandleDragDrop | ( | zelda3::GameEntity * | hovered_entity, |
| ImVec2 | mouse_delta ) |
Handle entity drag-and-drop operations.
| hovered_entity | The entity currently under the cursor |
| mouse_delta | The mouse movement delta for dragging |
Definition at line 68 of file overworld_entity_interaction.cc.
References dragged_entity_, yaze::zelda3::GameEntity::entity_type_, FinishDrag(), free_movement_, is_dragging_, yaze::zelda3::GameEntity::kExit, rom_, yaze::Rom::set_dirty(), yaze::zelda3::GameEntity::x_, and yaze::zelda3::GameEntity::y_.

| void yaze::editor::OverworldEntityInteraction::FinishDrag | ( | ) |
Finish an active drag operation.
Definition at line 101 of file overworld_entity_interaction.cc.
References dragged_entity_, free_movement_, and is_dragging_.
Referenced by HandleDragDrop().
|
inline |
Definition at line 66 of file overworld_entity_interaction.h.
References current_entity_.
|
inline |
Definition at line 67 of file overworld_entity_interaction.h.
References current_exit_.
|
inline |
Definition at line 68 of file overworld_entity_interaction.h.
References current_entrance_.
|
inline |
Definition at line 69 of file overworld_entity_interaction.h.
References current_item_.
|
inline |
Definition at line 70 of file overworld_entity_interaction.h.
References current_sprite_.
|
inline |
Definition at line 73 of file overworld_entity_interaction.h.
References is_dragging_.
|
inline |
Definition at line 74 of file overworld_entity_interaction.h.
References dragged_entity_.
|
private |
Definition at line 77 of file overworld_entity_interaction.h.
Referenced by HandleDragDrop(), and SetRom().
|
private |
Definition at line 78 of file overworld_entity_interaction.h.
Referenced by SetEntityRenderer().
|
private |
Definition at line 81 of file overworld_entity_interaction.h.
Referenced by current_entity(), and HandleContextMenus().
|
private |
Definition at line 82 of file overworld_entity_interaction.h.
Referenced by current_exit(), and HandleContextMenus().
|
private |
Definition at line 83 of file overworld_entity_interaction.h.
Referenced by current_entrance(), and HandleContextMenus().
|
private |
Definition at line 84 of file overworld_entity_interaction.h.
Referenced by current_item(), and HandleContextMenus().
|
private |
Definition at line 85 of file overworld_entity_interaction.h.
Referenced by current_sprite(), and HandleContextMenus().
|
private |
Definition at line 88 of file overworld_entity_interaction.h.
Referenced by FinishDrag(), HandleDragDrop(), and is_dragging().
|
private |
Definition at line 89 of file overworld_entity_interaction.h.
Referenced by FinishDrag(), and HandleDragDrop().
|
private |
Definition at line 90 of file overworld_entity_interaction.h.
Referenced by dragged_entity(), FinishDrag(), and HandleDragDrop().