1#ifndef YAZE_APP_EDITOR_DUNGEON_PANELS_CUSTOM_COLLISION_PANEL_H
2#define YAZE_APP_EDITOR_DUNGEON_PANELS_CUSTOM_COLLISION_PANEL_H
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
25 std::string
GetId()
const override {
return "dungeon.custom_collision"; }
36 void Draw(
bool* p_open)
override;
38 static absl::StatusOr<std::vector<zelda3::CustomCollisionRoomEntry>>
44 const std::vector<zelda3::CustomCollisionRoomEntry>& entries,
45 std::string_view source_label =
"import");
47 std::string_view source_label =
"import");
49 const std::string& path);
std::string GetWorkflowGroup() const override
Optional workflow group for hack-centric actions.
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
void SetCanvasViewer(DungeonCanvasViewer *viewer)
std::string GetIcon() const override
Material Design icon for this panel.
const std::string & last_io_status() const
static absl::StatusOr< std::vector< zelda3::CustomCollisionRoomEntry > > CollectRoomEntries(const DungeonRoomStore &rooms)
DungeonObjectInteraction * interaction_
std::string last_io_status_
DungeonCanvasViewer * viewer_
std::string GetEditorCategory() const override
Editor category this panel belongs to.
absl::Status ImportCollisionRooms(const std::vector< zelda3::CustomCollisionRoomEntry > &entries, std::string_view source_label="import")
absl::Status ExportCollisionToFile(const DungeonRoomStore &rooms, const std::string &path)
void SetInteraction(DungeonObjectInteraction *interaction)
const std::string & last_io_error() const
CustomCollisionPanel(DungeonCanvasViewer *viewer, DungeonObjectInteraction *interaction)
absl::Status ImportCollisionJson(std::string_view json_content, std::string_view source_label="import")
std::string last_io_error_
static void ApplyRoomEntry(const zelda3::CustomCollisionRoomEntry &entry, zelda3::Room *room)
void Draw(bool *p_open) override
Draw the panel content.
std::string GetId() const override
Unique identifier for this panel.
Handles object selection, placement, and interaction within the dungeon canvas.
Base interface for all logical window content components.
Editors are the view controllers for the application.