Shared context for all interaction handlers. More...
#include <interaction_context.h>

Public Member Functions | |
| bool | IsValid () const |
| Check if context has required dependencies. | |
| zelda3::Room * | GetCurrentRoom () const |
| Get pointer to current room. | |
| const zelda3::Room * | GetCurrentRoomConst () const |
| Get const pointer to current room. | |
| void | NotifyMutation (MutationDomain domain=MutationDomain::kUnknown) const |
| Notify that a mutation is about to happen. | |
| void | NotifyInvalidateCache (MutationDomain domain=MutationDomain::kUnknown) const |
| Notify that cache invalidation is needed. | |
| void | NotifySelectionChanged () const |
| Notify that selection has changed. | |
| void | NotifyEntityChanged () const |
| Notify that entity has changed. | |
Public Attributes | |
| gui::Canvas * | canvas = nullptr |
| Rom * | rom = nullptr |
| std::array< zelda3::Room, dungeon_coords::kRoomCount > * | rooms = nullptr |
| int | current_room_id = 0 |
| ObjectSelection * | selection = nullptr |
| gfx::PaletteGroup | current_palette_group |
| std::function< void()> | on_mutation |
| std::function< void()> | on_invalidate_cache |
| std::function< void()> | on_selection_changed |
| std::function< void()> | on_entity_changed |
| MutationDomain | last_mutation_domain = MutationDomain::kUnknown |
| MutationDomain | last_invalidation_domain = MutationDomain::kUnknown |
Shared context for all interaction handlers.
This struct provides a unified way to pass dependencies and callbacks to all interaction handlers, replacing the previous pattern of multiple individual setter methods.
Usage: InteractionContext ctx; ctx.canvas = &canvas_; ctx.rom = rom_; ctx.rooms = &rooms_; ctx.current_room_id = room_id; ctx.on_mutation = [this]() { PushUndoSnapshot(); }; handler.SetContext(&ctx);
Definition at line 75 of file interaction_context.h.
|
inline |
Check if context has required dependencies.
Definition at line 107 of file interaction_context.h.
Referenced by yaze::editor::BaseEntityHandler::HasValidContext().
|
inline |
Get pointer to current room.
Definition at line 113 of file interaction_context.h.
References current_room_id, yaze::editor::dungeon_coords::IsValidRoomId(), and rooms.
Referenced by yaze::editor::BaseEntityHandler::GetCurrentRoom().

|
inline |
Get const pointer to current room.
Definition at line 124 of file interaction_context.h.
References current_room_id, yaze::editor::dungeon_coords::IsValidRoomId(), and rooms.
Referenced by yaze::editor::DoorInteractionHandler::GetEntityAtPosition(), yaze::editor::ItemInteractionHandler::GetEntityAtPosition(), and yaze::editor::SpriteInteractionHandler::GetEntityAtPosition().

|
inline |
Notify that a mutation is about to happen.
Call this before making any changes to room data. This allows the editor to capture undo snapshots.
Definition at line 137 of file interaction_context.h.
References last_mutation_domain, and on_mutation.
Referenced by yaze::editor::TileObjectHandler::DeleteAllObjects(), yaze::editor::TileObjectHandler::DeleteObjects(), yaze::editor::DoorInteractionHandler::DeleteSelected(), yaze::editor::ItemInteractionHandler::DeleteSelected(), yaze::editor::SpriteInteractionHandler::DeleteSelected(), yaze::editor::TileObjectHandler::DuplicateObjects(), yaze::editor::TileObjectHandler::HandleDrag(), yaze::editor::DoorInteractionHandler::HandleRelease(), yaze::editor::ItemInteractionHandler::HandleRelease(), yaze::editor::SpriteInteractionHandler::HandleRelease(), yaze::editor::TileObjectHandler::MoveBackward(), yaze::editor::TileObjectHandler::MoveForward(), yaze::editor::TileObjectHandler::MoveObjects(), yaze::editor::TileObjectHandler::PasteFromClipboard(), yaze::editor::DoorInteractionHandler::PlaceDoorAtSnappedPosition(), yaze::editor::ItemInteractionHandler::PlaceItemAtPosition(), yaze::editor::TileObjectHandler::PlaceObjectAt(), yaze::editor::SpriteInteractionHandler::PlaceSpriteAtPosition(), yaze::editor::TileObjectHandler::ResizeObjects(), yaze::editor::TileObjectHandler::SendToBack(), yaze::editor::TileObjectHandler::SendToFront(), yaze::editor::DungeonObjectInteraction::UpdateCollisionPainting(), yaze::editor::TileObjectHandler::UpdateObjectsId(), yaze::editor::TileObjectHandler::UpdateObjectsLayer(), and yaze::editor::TileObjectHandler::UpdateObjectsSize().
|
inline |
Notify that cache invalidation is needed.
Call this after changes that require re-rendering.
Definition at line 147 of file interaction_context.h.
References last_invalidation_domain, and on_invalidate_cache.
Referenced by yaze::editor::DoorInteractionHandler::DeleteSelected(), yaze::editor::ItemInteractionHandler::DeleteSelected(), yaze::editor::SpriteInteractionHandler::DeleteSelected(), yaze::editor::DoorInteractionHandler::HandleRelease(), yaze::editor::TileObjectHandler::HandleRelease(), yaze::editor::TileObjectHandler::NotifyChange(), yaze::editor::DoorInteractionHandler::PlaceDoorAtSnappedPosition(), yaze::editor::ItemInteractionHandler::PlaceItemAtPosition(), yaze::editor::SpriteInteractionHandler::PlaceSpriteAtPosition(), and yaze::editor::DungeonObjectInteraction::UpdateCollisionPainting().
|
inline |
Notify that selection has changed.
Definition at line 156 of file interaction_context.h.
References on_selection_changed.
|
inline |
Notify that entity has changed.
Definition at line 163 of file interaction_context.h.
References on_entity_changed.
Referenced by yaze::editor::InteractionCoordinator::ClearEntitySelection(), yaze::editor::ItemInteractionHandler::HandleRelease(), yaze::editor::SpriteInteractionHandler::HandleRelease(), yaze::editor::DoorInteractionHandler::SelectDoor(), yaze::editor::ItemInteractionHandler::SelectItem(), and yaze::editor::SpriteInteractionHandler::SelectSprite().
| gui::Canvas* yaze::editor::InteractionContext::canvas = nullptr |
Definition at line 77 of file interaction_context.h.
Referenced by yaze::editor::DoorInteractionHandler::DrawGhostPreview(), yaze::editor::ItemInteractionHandler::DrawGhostPreview(), yaze::editor::SpriteInteractionHandler::DrawGhostPreview(), yaze::editor::TileObjectHandler::DrawSelectionHighlight(), yaze::editor::DungeonObjectInteraction::DungeonObjectInteraction(), yaze::editor::BaseEntityHandler::GetCanvasScale(), yaze::editor::BaseEntityHandler::GetCanvasZeroPoint(), yaze::editor::TileObjectHandler::HandleMarqueeSelection(), IsValid(), and yaze::editor::DungeonObjectInteraction::SetContext().
| Rom* yaze::editor::InteractionContext::rom = nullptr |
Definition at line 78 of file interaction_context.h.
Referenced by yaze::editor::TileObjectHandler::RenderGhostPreviewBitmap(), and yaze::editor::DungeonObjectInteraction::SetRom().
| std::array<zelda3::Room, dungeon_coords::kRoomCount>* yaze::editor::InteractionContext::rooms = nullptr |
Definition at line 79 of file interaction_context.h.
Referenced by GetCurrentRoom(), GetCurrentRoomConst(), yaze::editor::TileObjectHandler::GetRoom(), and IsValid().
| int yaze::editor::InteractionContext::current_room_id = 0 |
Definition at line 80 of file interaction_context.h.
Referenced by yaze::editor::TileObjectHandler::DrawGhostPreview(), GetCurrentRoom(), GetCurrentRoomConst(), yaze::editor::TileObjectHandler::GetEntityAtPosition(), yaze::editor::TileObjectHandler::HandleClick(), yaze::editor::TileObjectHandler::HandleDrag(), yaze::editor::TileObjectHandler::HandleMarqueeSelection(), yaze::editor::TileObjectHandler::HandleMouseWheel(), and yaze::editor::TileObjectHandler::RenderGhostPreviewBitmap().
| ObjectSelection* yaze::editor::InteractionContext::selection = nullptr |
Definition at line 81 of file interaction_context.h.
Referenced by yaze::editor::TileObjectHandler::BeginMarqueeSelection(), yaze::editor::TileObjectHandler::DrawSelectionHighlight(), yaze::editor::DungeonObjectInteraction::DungeonObjectInteraction(), yaze::editor::TileObjectHandler::GetEntityAtPosition(), yaze::editor::InteractionCoordinator::HandleClick(), yaze::editor::TileObjectHandler::HandleClick(), yaze::editor::InteractionCoordinator::HandleDrag(), yaze::editor::TileObjectHandler::HandleDrag(), yaze::editor::TileObjectHandler::HandleMarqueeSelection(), yaze::editor::TileObjectHandler::HandleMouseWheel(), yaze::editor::InteractionCoordinator::SelectEntity(), and yaze::editor::DungeonObjectInteraction::SetContext().
| gfx::PaletteGroup yaze::editor::InteractionContext::current_palette_group |
Definition at line 84 of file interaction_context.h.
Referenced by yaze::editor::TileObjectHandler::RenderGhostPreviewBitmap(), and yaze::editor::DungeonObjectInteraction::SetCurrentPaletteGroup().
| std::function<void()> yaze::editor::InteractionContext::on_mutation |
Definition at line 88 of file interaction_context.h.
Referenced by NotifyMutation(), and yaze::editor::DungeonObjectInteraction::SetMutationCallback().
| std::function<void()> yaze::editor::InteractionContext::on_invalidate_cache |
Definition at line 91 of file interaction_context.h.
Referenced by NotifyInvalidateCache(), and yaze::editor::DungeonObjectInteraction::SetCacheInvalidationCallback().
| std::function<void()> yaze::editor::InteractionContext::on_selection_changed |
Definition at line 94 of file interaction_context.h.
Referenced by NotifySelectionChanged().
| std::function<void()> yaze::editor::InteractionContext::on_entity_changed |
Definition at line 97 of file interaction_context.h.
Referenced by NotifyEntityChanged(), and yaze::editor::DungeonObjectInteraction::SetEntityChangedCallback().
|
mutable |
Definition at line 101 of file interaction_context.h.
Referenced by yaze::editor::DungeonObjectInteraction::last_mutation_domain(), and NotifyMutation().
|
mutable |
Definition at line 102 of file interaction_context.h.
Referenced by yaze::editor::DungeonObjectInteraction::last_invalidation_domain(), and NotifyInvalidateCache().