1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_CANVAS_VIEWER_H
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_CANVAS_VIEWER_H
12#include "imgui/imgui.h"
39 void Draw(
int room_id);
156 ? it->second.GetLayerBlendMode(layer)
162 uint8_t alpha = 128) {
278 std::array<zelda3::Room, 0x128>*
rooms_ =
nullptr;
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
bool show_coordinate_overlay_
void SetCurrentPaletteId(uint64_t id)
std::pair< int, int > CanvasToRoomCoordinates(int canvas_x, int canvas_y) const
const zelda3::RoomLayerManager & GetRoomLayerManager(int room_id) const
std::pair< int, int > RoomToCanvasCoordinates(int room_x, int room_y) const
zelda3::GameData * game_data_
bool AreSpritesVisible() const
std::optional< std::pair< int, int > > pending_scroll_target_
ObjectOutlineToggles object_outline_toggles_
void SetLayerBlendMode(int room_id, zelda3::LayerType layer, zelda3::LayerBlendMode mode)
void SetEditorSystem(zelda3::DungeonEditorSystem *system)
std::array< zelda3::Room, 0x128 > * rooms_
void RenderPotItems(const gui::CanvasRuntime &rt, const zelda3::Room &room)
absl::Status LoadAndRenderRoomGraphics(int room_id)
bool show_room_debug_info_
bool IsBG1Visible(int room_id) const
int GetBG2LayerType(int room_id) const
void SetObjectTranslucent(int room_id, size_t object_index, bool translucent, uint8_t alpha=128)
void SetShowItemPanelCallback(std::function< void()> callback)
void SetContext(EditorContext ctx)
void SetSpritesVisible(bool visible)
EditorContext context() const
void DrawRoomBackgroundLayers(int room_id)
void set_active_rooms(const ImVector< int > &rooms)
void SetRenderer(gfx::IRenderer *renderer)
void SetBG2LayerType(int room_id, int type)
zelda3::GameData * game_data() const
bool object_interaction_enabled_
void SetCurrentPaletteGroup(const gfx::PaletteGroup &group)
int current_active_room_tab_
DungeonCanvasViewer(Rom *rom=nullptr)
DungeonObjectInteraction object_interaction_
void SetObjectRenderMode(ObjectRenderMode mode)
uint64_t last_palette_hash_
DungeonObjectInteraction & object_interaction()
void ClearPreviewObject()
void SetRoomNavigationCallback(std::function< void(int)> callback)
void SetShowSpritePanelCallback(std::function< void()> callback)
void SetPreviewObject(const zelda3::RoomObject &object)
std::function< void()> show_object_panel_callback_
void SetBG1Visible(int room_id, bool visible)
void SetBG2Visible(int room_id, bool visible)
ImVector< int > active_rooms_
bool IsLayerVisible(int room_id, zelda3::LayerType layer) const
bool IsObjectInteractionEnabled() const
void SetShowObjectPanelCallback(std::function< void()> callback)
void RenderSprites(const gui::CanvasRuntime &rt, const zelda3::Room &room)
uint64_t current_palette_id_
zelda3::RoomLayerManager & GetRoomLayerManager(int room_id)
ObjectRenderMode GetObjectRenderMode() const
void set_current_palette_group_id(uint64_t id)
gfx::PaletteGroup current_palette_group_
void DrawMaskHighlights(const gui::CanvasRuntime &rt, const zelda3::Room &room)
uint64_t current_palette_group_id_
void SetObjectInteractionEnabled(bool enabled)
gfx::IRenderer * renderer_
void SetRoomSwapCallback(std::function< void(int, int)> callback)
EntityVisibility entity_visibility_
bool IsWithinCanvasBounds(int canvas_x, int canvas_y, int margin=32) const
zelda3::LayerBlendMode GetLayerBlendMode(int room_id, zelda3::LayerType layer) const
bool IsBG2Visible(int room_id) const
void set_current_active_room_tab(int tab)
void DrawDungeonCanvas(int room_id)
std::function< void(int)> room_navigation_callback_
void RenderEntityOverlay(const gui::CanvasRuntime &rt, const zelda3::Room &room)
std::function< void()> show_item_panel_callback_
std::map< int, zelda3::RoomLayerManager > room_layer_managers_
std::vector< ObjectRenderCache > object_render_cache_
void DisplayObjectInfo(const gui::CanvasRuntime &rt, const zelda3::RoomObject &object, int canvas_x, int canvas_y)
std::function< void()> show_sprite_panel_callback_
bool ArePotItemsVisible() const
std::function< void(int, int)> room_swap_callback_
ObjectRenderMode object_render_mode_
void SetLayerVisible(int room_id, zelda3::LayerType layer, bool visible)
void SetPotItemsVisible(bool visible)
void DrawObjectPositionOutlines(const gui::CanvasRuntime &rt, const zelda3::Room &room)
void DeleteSelectedObjects()
void SetRooms(std::array< zelda3::Room, 0x128 > *rooms)
const gui::Canvas & canvas() const
void SetGameData(zelda3::GameData *game_data)
Handles object selection, placement, and interaction within the dungeon canvas.
void HandleDeleteSelected()
void SetCurrentPaletteGroup(const gfx::PaletteGroup &group)
void SetEditorSystem(zelda3::DungeonEditorSystem *system)
void SetPreviewObject(const zelda3::RoomObject &object, bool loaded)
Represents a bitmap image optimized for SNES ROM hacking.
Defines an abstract interface for all rendering operations.
Modern, robust canvas for drawing and manipulating graphics.
Comprehensive dungeon editing system.
RoomLayerManager - Manages layer visibility and compositing.
void SetLayerBlendMode(LayerType layer, LayerBlendMode mode)
void SetLayerVisible(LayerType layer, bool visible)
void SetObjectTranslucency(size_t object_index, bool translucent, uint8_t alpha=128)
ObjectRenderMode
Handles the main dungeon canvas rendering and interaction.
LayerBlendMode
Layer blend modes for compositing.
LayerType
Layer types for the 4-way visibility system.
gfx::Bitmap rendered_bitmap
Lightweight view into the essential runtime context (Rom + GameData)
zelda3::GameData * game_data
Represents a group of palettes.