Add Load method to editor classes and update corresponding headers
This commit is contained in:
@@ -101,6 +101,10 @@ void AssemblyEditor::Initialize() {
|
|||||||
// Set the language definition
|
// Set the language definition
|
||||||
}
|
}
|
||||||
|
|
||||||
|
absl::Status AssemblyEditor::Load() {
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
void AssemblyEditor::OpenFolder(const std::string& folder_path) {
|
void AssemblyEditor::OpenFolder(const std::string& folder_path) {
|
||||||
current_folder_ = LoadFolder(folder_path);
|
current_folder_ = LoadFolder(folder_path);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class AssemblyEditor : public Editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
void Update(bool &is_loaded);
|
void Update(bool &is_loaded);
|
||||||
void InlineUpdate();
|
void InlineUpdate();
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,10 @@ constexpr ImGuiTableFlags kDungeonObjectTableFlags =
|
|||||||
ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter |
|
ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter |
|
||||||
ImGuiTableFlags_BordersV;
|
ImGuiTableFlags_BordersV;
|
||||||
|
|
||||||
|
absl::Status DungeonEditor::Load() {
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status DungeonEditor::Update() {
|
absl::Status DungeonEditor::Update() {
|
||||||
if (!is_loaded_ && rom()->is_loaded()) {
|
if (!is_loaded_ && rom()->is_loaded()) {
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class DungeonEditor : public Editor, public SharedRom {
|
|||||||
DungeonEditor() { type_ = EditorType::kDungeon; }
|
DungeonEditor() { type_ = EditorType::kDungeon; }
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||||
|
|||||||
@@ -53,8 +53,15 @@ class Editor {
|
|||||||
Editor() = default;
|
Editor() = default;
|
||||||
virtual ~Editor() = default;
|
virtual ~Editor() = default;
|
||||||
|
|
||||||
|
// Initialization of the editor, no ROM assets.
|
||||||
virtual void Initialize() = 0;
|
virtual void Initialize() = 0;
|
||||||
|
|
||||||
|
// Initialization of ROM assets.
|
||||||
|
virtual absl::Status Load() = 0;
|
||||||
|
|
||||||
|
// Update the editor state, ran every frame.
|
||||||
|
virtual absl::Status Update() = 0;
|
||||||
|
|
||||||
virtual absl::Status Cut() = 0;
|
virtual absl::Status Cut() = 0;
|
||||||
virtual absl::Status Copy() = 0;
|
virtual absl::Status Copy() = 0;
|
||||||
virtual absl::Status Paste() = 0;
|
virtual absl::Status Paste() = 0;
|
||||||
@@ -62,8 +69,6 @@ class Editor {
|
|||||||
virtual absl::Status Undo() = 0;
|
virtual absl::Status Undo() = 0;
|
||||||
virtual absl::Status Redo() = 0;
|
virtual absl::Status Redo() = 0;
|
||||||
|
|
||||||
virtual absl::Status Update() = 0;
|
|
||||||
|
|
||||||
virtual absl::Status Find() = 0;
|
virtual absl::Status Find() = 0;
|
||||||
|
|
||||||
EditorType type() const { return type_; }
|
EditorType type() const { return type_; }
|
||||||
|
|||||||
@@ -450,7 +450,8 @@ void EditorManager::DrawHomepage() {
|
|||||||
}
|
}
|
||||||
Separator();
|
Separator();
|
||||||
|
|
||||||
settings_editor_.Update();
|
auto settings = settings_editor_.Update();
|
||||||
|
if (!settings.ok()) status_ = settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorManager::DrawMenuBar() {
|
void EditorManager::DrawMenuBar() {
|
||||||
|
|||||||
@@ -42,6 +42,11 @@ constexpr ImGuiTableFlags kGfxEditTableFlags =
|
|||||||
|
|
||||||
void GraphicsEditor::Initialize() {}
|
void GraphicsEditor::Initialize() {}
|
||||||
|
|
||||||
|
absl::Status GraphicsEditor::Load() {
|
||||||
|
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status GraphicsEditor::Update() {
|
absl::Status GraphicsEditor::Update() {
|
||||||
if (ImGui::BeginTabBar("##TabBar")) {
|
if (ImGui::BeginTabBar("##TabBar")) {
|
||||||
status_ = UpdateGfxEdit();
|
status_ = UpdateGfxEdit();
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ class GraphicsEditor : public SharedRom, public Editor {
|
|||||||
GraphicsEditor() { type_ = EditorType::kGraphics; }
|
GraphicsEditor() { type_ = EditorType::kGraphics; }
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ absl::Status DisplayPalette(gfx::SnesPalette& palette, bool loaded) {
|
|||||||
|
|
||||||
void PaletteEditor::Initialize() {}
|
void PaletteEditor::Initialize() {}
|
||||||
|
|
||||||
absl::Status PaletteEditor::Update() {
|
absl::Status PaletteEditor::Load() {
|
||||||
if (rom()->is_loaded()) {
|
if (rom()->is_loaded()) {
|
||||||
// Initialize the labels
|
// Initialize the labels
|
||||||
for (int i = 0; i < kNumPalettes; i++) {
|
for (int i = 0; i < kNumPalettes; i++) {
|
||||||
@@ -183,7 +183,10 @@ absl::Status PaletteEditor::Update() {
|
|||||||
} else {
|
} else {
|
||||||
return absl::NotFoundError("ROM not open, no palettes to display");
|
return absl::NotFoundError("ROM not open, no palettes to display");
|
||||||
}
|
}
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
absl::Status PaletteEditor::Update() {
|
||||||
if (BeginTable("paletteEditorTable", 2, kPaletteTableFlags, ImVec2(0, 0))) {
|
if (BeginTable("paletteEditorTable", 2, kPaletteTableFlags, ImVec2(0, 0))) {
|
||||||
TableSetupColumn("Palette Groups", ImGuiTableColumnFlags_WidthStretch,
|
TableSetupColumn("Palette Groups", ImGuiTableColumnFlags_WidthStretch,
|
||||||
GetContentRegionAvail().x);
|
GetContentRegionAvail().x);
|
||||||
|
|||||||
@@ -85,9 +85,8 @@ class PaletteEditor : public SharedRom, public Editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
|
|
||||||
absl::Status Cut() override { return absl::OkStatus(); }
|
absl::Status Cut() override { return absl::OkStatus(); }
|
||||||
absl::Status Copy() override { return absl::OkStatus(); }
|
absl::Status Copy() override { return absl::OkStatus(); }
|
||||||
absl::Status Paste() override { return absl::OkStatus(); }
|
absl::Status Paste() override { return absl::OkStatus(); }
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ constexpr uint32_t kRedPen = 0xFF0000FF;
|
|||||||
|
|
||||||
void ScreenEditor::Initialize() {}
|
void ScreenEditor::Initialize() {}
|
||||||
|
|
||||||
|
absl::Status ScreenEditor::Load() { return absl::OkStatus(); }
|
||||||
|
|
||||||
absl::Status ScreenEditor::Update() {
|
absl::Status ScreenEditor::Update() {
|
||||||
if (ImGui::BeginTabBar("##ScreenEditorTabBar")) {
|
if (ImGui::BeginTabBar("##ScreenEditorTabBar")) {
|
||||||
if (ImGui::BeginTabItem("Dungeon Maps")) {
|
if (ImGui::BeginTabItem("Dungeon Maps")) {
|
||||||
|
|||||||
@@ -39,9 +39,8 @@ class ScreenEditor : public SharedRom, public Editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
|
|
||||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||||
absl::Status Cut() override { return absl::UnimplementedError("Cut"); }
|
absl::Status Cut() override { return absl::UnimplementedError("Cut"); }
|
||||||
|
|||||||
@@ -85,6 +85,10 @@ void MessageEditor::Initialize() {
|
|||||||
DrawMessagePreview();
|
DrawMessagePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
absl::Status MessageEditor::Load() {
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status MessageEditor::Update() {
|
absl::Status MessageEditor::Update() {
|
||||||
if (rom()->is_loaded() && !data_loaded_) {
|
if (rom()->is_loaded() && !data_loaded_) {
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class MessageEditor : public Editor, public SharedRom {
|
|||||||
MessageEditor() { type_ = EditorType::kMessage; }
|
MessageEditor() { type_ = EditorType::kMessage; }
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
void DrawMessageList();
|
void DrawMessageList();
|
||||||
void DrawCurrentMessage();
|
void DrawCurrentMessage();
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ namespace editor {
|
|||||||
|
|
||||||
void MusicEditor::Initialize() {}
|
void MusicEditor::Initialize() {}
|
||||||
|
|
||||||
|
absl::Status MusicEditor::Load() {
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status MusicEditor::Update() {
|
absl::Status MusicEditor::Update() {
|
||||||
if (ImGui::BeginTable("MusicEditorColumns", 2, music_editor_flags_,
|
if (ImGui::BeginTable("MusicEditorColumns", 2, music_editor_flags_,
|
||||||
ImVec2(0, 0))) {
|
ImVec2(0, 0))) {
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ static constexpr absl::string_view kSongNotes[] = {
|
|||||||
|
|
||||||
const ImGuiTableFlags toolset_table_flags_ = ImGuiTableFlags_SizingFixedFit;
|
const ImGuiTableFlags toolset_table_flags_ = ImGuiTableFlags_SizingFixedFit;
|
||||||
const ImGuiTableFlags music_editor_flags_ = ImGuiTableFlags_SizingFixedFit |
|
const ImGuiTableFlags music_editor_flags_ = ImGuiTableFlags_SizingFixedFit |
|
||||||
ImGuiTableFlags_Resizable |
|
ImGuiTableFlags_Resizable |
|
||||||
ImGuiTableFlags_Reorderable;
|
ImGuiTableFlags_Reorderable;
|
||||||
/**
|
/**
|
||||||
* @class MusicEditor
|
* @class MusicEditor
|
||||||
* @brief A class for editing music data in a Rom.
|
* @brief A class for editing music data in a Rom.
|
||||||
@@ -59,6 +59,7 @@ class MusicEditor : public SharedRom, public Editor {
|
|||||||
MusicEditor() { type_ = EditorType::kMusic; }
|
MusicEditor() { type_ = EditorType::kMusic; }
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||||
|
|||||||
@@ -59,14 +59,48 @@ using ImGui::Text;
|
|||||||
|
|
||||||
constexpr int kTile16Size = 0x10;
|
constexpr int kTile16Size = 0x10;
|
||||||
|
|
||||||
|
void OverworldEditor::Initialize() {
|
||||||
|
// Load zeml string from layouts/overworld.zeml
|
||||||
|
std::string layout = gui::zeml::LoadFile("overworld.zeml");
|
||||||
|
// Parse the zeml string into a Node object
|
||||||
|
layout_node_ = gui::zeml::Parse(layout);
|
||||||
|
|
||||||
|
gui::zeml::Bind(&*layout_node_.GetNode("OverworldCanvas"),
|
||||||
|
[this]() { DrawOverworldCanvas(); });
|
||||||
|
gui::zeml::Bind(&*layout_node_.GetNode("OverworldTileSelector"),
|
||||||
|
[this]() { status_ = DrawTileSelector(); });
|
||||||
|
gui::zeml::Bind(&*layout_node_.GetNode("OwUsageStats"), [this]() {
|
||||||
|
if (rom_.is_loaded()) {
|
||||||
|
status_ = UpdateUsageStats();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
gui::zeml::Bind(&*layout_node_.GetNode("owToolset"),
|
||||||
|
[this]() { DrawToolset(); });
|
||||||
|
gui::zeml::Bind(&*layout_node_.GetNode("OwTile16Editor"), [this]() {
|
||||||
|
if (rom_.is_loaded()) {
|
||||||
|
status_ = tile16_editor_.Update();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
gui::zeml::Bind(&*layout_node_.GetNode("OwGfxGroupEditor"), [this]() {
|
||||||
|
if (rom_.is_loaded()) {
|
||||||
|
status_ = gfx_group_editor_.Update();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
absl::Status OverworldEditor::Load() {
|
||||||
|
RETURN_IF_ERROR(
|
||||||
|
tile16_editor_.Initialize(tile16_blockset_bmp_, current_gfx_bmp_,
|
||||||
|
*overworld_.mutable_all_tiles_types()));
|
||||||
|
ASSIGN_OR_RETURN(entrance_tiletypes_, zelda3::LoadEntranceTileTypes(rom_));
|
||||||
|
all_gfx_loaded_ = true;
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status OverworldEditor::Update() {
|
absl::Status OverworldEditor::Update() {
|
||||||
status_ = absl::OkStatus();
|
status_ = absl::OkStatus();
|
||||||
if (rom_.is_loaded() && !all_gfx_loaded_) {
|
if (rom_.is_loaded() && !all_gfx_loaded_) {
|
||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(Load());
|
||||||
tile16_editor_.Initialize(tile16_blockset_bmp_, current_gfx_bmp_,
|
|
||||||
*overworld_.mutable_all_tiles_types()));
|
|
||||||
ASSIGN_OR_RETURN(entrance_tiletypes_, zelda3::LoadEntranceTileTypes(rom_));
|
|
||||||
all_gfx_loaded_ = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (overworld_canvas_fullscreen_) {
|
if (overworld_canvas_fullscreen_) {
|
||||||
@@ -1484,34 +1518,5 @@ void OverworldEditor::DrawDebugWindow() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverworldEditor::Initialize() {
|
|
||||||
// Load zeml string from layouts/overworld.zeml
|
|
||||||
std::string layout = gui::zeml::LoadFile("overworld.zeml");
|
|
||||||
// Parse the zeml string into a Node object
|
|
||||||
layout_node_ = gui::zeml::Parse(layout);
|
|
||||||
|
|
||||||
gui::zeml::Bind(&*layout_node_.GetNode("OverworldCanvas"),
|
|
||||||
[this]() { DrawOverworldCanvas(); });
|
|
||||||
gui::zeml::Bind(&*layout_node_.GetNode("OverworldTileSelector"),
|
|
||||||
[this]() { status_ = DrawTileSelector(); });
|
|
||||||
gui::zeml::Bind(&*layout_node_.GetNode("OwUsageStats"), [this]() {
|
|
||||||
if (rom_.is_loaded()) {
|
|
||||||
status_ = UpdateUsageStats();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
gui::zeml::Bind(&*layout_node_.GetNode("owToolset"),
|
|
||||||
[this]() { DrawToolset(); });
|
|
||||||
gui::zeml::Bind(&*layout_node_.GetNode("OwTile16Editor"), [this]() {
|
|
||||||
if (rom_.is_loaded()) {
|
|
||||||
status_ = tile16_editor_.Update();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
gui::zeml::Bind(&*layout_node_.GetNode("OwGfxGroupEditor"), [this]() {
|
|
||||||
if (rom_.is_loaded()) {
|
|
||||||
status_ = gfx_group_editor_.Update();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace editor
|
} // namespace editor
|
||||||
} // namespace yaze
|
} // namespace yaze
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class OverworldEditor : public Editor, public gfx::GfxContext {
|
|||||||
OverworldEditor(Rom& rom) : rom_(rom) { type_ = EditorType::kOverworld; }
|
OverworldEditor(Rom& rom) : rom_(rom) { type_ = EditorType::kOverworld; }
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() final;
|
absl::Status Update() final;
|
||||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ using ImGui::Text;
|
|||||||
|
|
||||||
void SpriteEditor::Initialize() {}
|
void SpriteEditor::Initialize() {}
|
||||||
|
|
||||||
|
absl::Status SpriteEditor::Load() {
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status SpriteEditor::Update() {
|
absl::Status SpriteEditor::Update() {
|
||||||
if (rom()->is_loaded() && !sheets_loaded_) {
|
if (rom()->is_loaded() && !sheets_loaded_) {
|
||||||
// Load the values for current_sheets_ array
|
// Load the values for current_sheets_ array
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class SpriteEditor : public SharedRom, public Editor {
|
|||||||
SpriteEditor() { type_ = EditorType::kSprite; }
|
SpriteEditor() { type_ = EditorType::kSprite; }
|
||||||
|
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ using ImGui::TableSetupColumn;
|
|||||||
|
|
||||||
void SettingsEditor::Initialize() {}
|
void SettingsEditor::Initialize() {}
|
||||||
|
|
||||||
|
absl::Status SettingsEditor::Load() {
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status SettingsEditor::Update() {
|
absl::Status SettingsEditor::Update() {
|
||||||
if (BeginTabBar("Settings", ImGuiTabBarFlags_None)) {
|
if (BeginTabBar("Settings", ImGuiTabBarFlags_None)) {
|
||||||
if (BeginTabItem("General")) {
|
if (BeginTabItem("General")) {
|
||||||
|
|||||||
@@ -209,6 +209,7 @@ class SettingsEditor : public Editor {
|
|||||||
public:
|
public:
|
||||||
SettingsEditor() : Editor() { type_ = EditorType::kSettings; }
|
SettingsEditor() : Editor() { type_ = EditorType::kSettings; }
|
||||||
void Initialize() override;
|
void Initialize() override;
|
||||||
|
absl::Status Load() override;
|
||||||
absl::Status Update() override;
|
absl::Status Update() override;
|
||||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||||
|
|||||||
Reference in New Issue
Block a user