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
|
||||
}
|
||||
|
||||
absl::Status AssemblyEditor::Load() {
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
void AssemblyEditor::OpenFolder(const std::string& folder_path) {
|
||||
current_folder_ = LoadFolder(folder_path);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ class AssemblyEditor : public Editor {
|
||||
}
|
||||
|
||||
void Initialize() override;
|
||||
absl::Status Load() override;
|
||||
void Update(bool &is_loaded);
|
||||
void InlineUpdate();
|
||||
|
||||
|
||||
@@ -41,6 +41,10 @@ constexpr ImGuiTableFlags kDungeonObjectTableFlags =
|
||||
ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter |
|
||||
ImGuiTableFlags_BordersV;
|
||||
|
||||
absl::Status DungeonEditor::Load() {
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status DungeonEditor::Update() {
|
||||
if (!is_loaded_ && rom()->is_loaded()) {
|
||||
Initialize();
|
||||
|
||||
@@ -43,6 +43,7 @@ class DungeonEditor : public Editor, public SharedRom {
|
||||
DungeonEditor() { type_ = EditorType::kDungeon; }
|
||||
|
||||
void Initialize() override;
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||
|
||||
@@ -53,8 +53,15 @@ class Editor {
|
||||
Editor() = default;
|
||||
virtual ~Editor() = default;
|
||||
|
||||
// Initialization of the editor, no ROM assets.
|
||||
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 Copy() = 0;
|
||||
virtual absl::Status Paste() = 0;
|
||||
@@ -62,8 +69,6 @@ class Editor {
|
||||
virtual absl::Status Undo() = 0;
|
||||
virtual absl::Status Redo() = 0;
|
||||
|
||||
virtual absl::Status Update() = 0;
|
||||
|
||||
virtual absl::Status Find() = 0;
|
||||
|
||||
EditorType type() const { return type_; }
|
||||
|
||||
@@ -450,7 +450,8 @@ void EditorManager::DrawHomepage() {
|
||||
}
|
||||
Separator();
|
||||
|
||||
settings_editor_.Update();
|
||||
auto settings = settings_editor_.Update();
|
||||
if (!settings.ok()) status_ = settings;
|
||||
}
|
||||
|
||||
void EditorManager::DrawMenuBar() {
|
||||
|
||||
@@ -42,6 +42,11 @@ constexpr ImGuiTableFlags kGfxEditTableFlags =
|
||||
|
||||
void GraphicsEditor::Initialize() {}
|
||||
|
||||
absl::Status GraphicsEditor::Load() {
|
||||
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status GraphicsEditor::Update() {
|
||||
if (ImGui::BeginTabBar("##TabBar")) {
|
||||
status_ = UpdateGfxEdit();
|
||||
|
||||
@@ -59,6 +59,7 @@ class GraphicsEditor : public SharedRom, public Editor {
|
||||
GraphicsEditor() { type_ = EditorType::kGraphics; }
|
||||
|
||||
void Initialize() override;
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||
|
||||
@@ -172,7 +172,7 @@ absl::Status DisplayPalette(gfx::SnesPalette& palette, bool loaded) {
|
||||
|
||||
void PaletteEditor::Initialize() {}
|
||||
|
||||
absl::Status PaletteEditor::Update() {
|
||||
absl::Status PaletteEditor::Load() {
|
||||
if (rom()->is_loaded()) {
|
||||
// Initialize the labels
|
||||
for (int i = 0; i < kNumPalettes; i++) {
|
||||
@@ -183,7 +183,10 @@ absl::Status PaletteEditor::Update() {
|
||||
} else {
|
||||
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))) {
|
||||
TableSetupColumn("Palette Groups", ImGuiTableColumnFlags_WidthStretch,
|
||||
GetContentRegionAvail().x);
|
||||
|
||||
@@ -85,9 +85,8 @@ class PaletteEditor : public SharedRom, public Editor {
|
||||
}
|
||||
|
||||
void Initialize() override;
|
||||
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
|
||||
absl::Status Cut() override { return absl::OkStatus(); }
|
||||
absl::Status Copy() override { return absl::OkStatus(); }
|
||||
absl::Status Paste() override { return absl::OkStatus(); }
|
||||
|
||||
@@ -28,6 +28,8 @@ constexpr uint32_t kRedPen = 0xFF0000FF;
|
||||
|
||||
void ScreenEditor::Initialize() {}
|
||||
|
||||
absl::Status ScreenEditor::Load() { return absl::OkStatus(); }
|
||||
|
||||
absl::Status ScreenEditor::Update() {
|
||||
if (ImGui::BeginTabBar("##ScreenEditorTabBar")) {
|
||||
if (ImGui::BeginTabItem("Dungeon Maps")) {
|
||||
|
||||
@@ -39,9 +39,8 @@ class ScreenEditor : public SharedRom, public Editor {
|
||||
}
|
||||
|
||||
void Initialize() override;
|
||||
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
|
||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||
absl::Status Cut() override { return absl::UnimplementedError("Cut"); }
|
||||
|
||||
@@ -85,6 +85,10 @@ void MessageEditor::Initialize() {
|
||||
DrawMessagePreview();
|
||||
}
|
||||
|
||||
absl::Status MessageEditor::Load() {
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status MessageEditor::Update() {
|
||||
if (rom()->is_loaded() && !data_loaded_) {
|
||||
Initialize();
|
||||
|
||||
@@ -38,6 +38,7 @@ class MessageEditor : public Editor, public SharedRom {
|
||||
MessageEditor() { type_ = EditorType::kMessage; }
|
||||
|
||||
void Initialize() override;
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
void DrawMessageList();
|
||||
void DrawCurrentMessage();
|
||||
|
||||
@@ -11,6 +11,10 @@ namespace editor {
|
||||
|
||||
void MusicEditor::Initialize() {}
|
||||
|
||||
absl::Status MusicEditor::Load() {
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status MusicEditor::Update() {
|
||||
if (ImGui::BeginTable("MusicEditorColumns", 2, music_editor_flags_,
|
||||
ImVec2(0, 0))) {
|
||||
|
||||
@@ -48,8 +48,8 @@ static constexpr absl::string_view kSongNotes[] = {
|
||||
|
||||
const ImGuiTableFlags toolset_table_flags_ = ImGuiTableFlags_SizingFixedFit;
|
||||
const ImGuiTableFlags music_editor_flags_ = ImGuiTableFlags_SizingFixedFit |
|
||||
ImGuiTableFlags_Resizable |
|
||||
ImGuiTableFlags_Reorderable;
|
||||
ImGuiTableFlags_Resizable |
|
||||
ImGuiTableFlags_Reorderable;
|
||||
/**
|
||||
* @class MusicEditor
|
||||
* @brief A class for editing music data in a Rom.
|
||||
@@ -59,6 +59,7 @@ class MusicEditor : public SharedRom, public Editor {
|
||||
MusicEditor() { type_ = EditorType::kMusic; }
|
||||
|
||||
void Initialize() override;
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||
|
||||
@@ -59,14 +59,48 @@ using ImGui::Text;
|
||||
|
||||
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() {
|
||||
status_ = absl::OkStatus();
|
||||
if (rom_.is_loaded() && !all_gfx_loaded_) {
|
||||
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_IF_ERROR(Load());
|
||||
}
|
||||
|
||||
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 yaze
|
||||
|
||||
@@ -77,7 +77,7 @@ class OverworldEditor : public Editor, public gfx::GfxContext {
|
||||
OverworldEditor(Rom& rom) : rom_(rom) { type_ = EditorType::kOverworld; }
|
||||
|
||||
void Initialize() override;
|
||||
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() final;
|
||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||
|
||||
@@ -23,6 +23,10 @@ using ImGui::Text;
|
||||
|
||||
void SpriteEditor::Initialize() {}
|
||||
|
||||
absl::Status SpriteEditor::Load() {
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status SpriteEditor::Update() {
|
||||
if (rom()->is_loaded() && !sheets_loaded_) {
|
||||
// Load the values for current_sheets_ array
|
||||
|
||||
@@ -38,6 +38,7 @@ class SpriteEditor : public SharedRom, public Editor {
|
||||
SpriteEditor() { type_ = EditorType::kSprite; }
|
||||
|
||||
void Initialize() override;
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||
|
||||
@@ -23,6 +23,10 @@ using ImGui::TableSetupColumn;
|
||||
|
||||
void SettingsEditor::Initialize() {}
|
||||
|
||||
absl::Status SettingsEditor::Load() {
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status SettingsEditor::Update() {
|
||||
if (BeginTabBar("Settings", ImGuiTabBarFlags_None)) {
|
||||
if (BeginTabItem("General")) {
|
||||
|
||||
@@ -209,6 +209,7 @@ class SettingsEditor : public Editor {
|
||||
public:
|
||||
SettingsEditor() : Editor() { type_ = EditorType::kSettings; }
|
||||
void Initialize() override;
|
||||
absl::Status Load() override;
|
||||
absl::Status Update() override;
|
||||
absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
|
||||
absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
|
||||
|
||||
Reference in New Issue
Block a user