OverworldEditor cleanup
This commit is contained in:
@@ -44,38 +44,16 @@ using ImGui::Text;
|
|||||||
|
|
||||||
absl::Status OverworldEditor::Update() {
|
absl::Status OverworldEditor::Update() {
|
||||||
if (rom()->is_loaded() && !all_gfx_loaded_) {
|
if (rom()->is_loaded() && !all_gfx_loaded_) {
|
||||||
RETURN_IF_ERROR(tile16_editor_.InitBlockset(
|
tile16_editor_.InitBlockset(tile16_blockset_bmp_, current_gfx_bmp_,
|
||||||
tile16_blockset_bmp_, current_gfx_bmp_, tile16_individual_,
|
tile16_individual_,
|
||||||
*overworld_.mutable_all_tiles_types()));
|
*overworld_.mutable_all_tiles_types());
|
||||||
gfx_group_editor_.InitBlockset(tile16_blockset_bmp_);
|
gfx_group_editor_.InitBlockset(tile16_blockset_bmp_);
|
||||||
all_gfx_loaded_ = true;
|
all_gfx_loaded_ = true;
|
||||||
} else if (!rom()->is_loaded() && all_gfx_loaded_) {
|
} else if (!rom()->is_loaded() && all_gfx_loaded_) {
|
||||||
// TODO: Destroy the overworld graphics canvas.
|
|
||||||
Shutdown();
|
Shutdown();
|
||||||
overworld_.Destroy();
|
|
||||||
all_gfx_loaded_ = false;
|
|
||||||
map_blockset_loaded_ = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (overworld_canvas_fullscreen_) {
|
RETURN_IF_ERROR(UpdateFullscreenCanvas());
|
||||||
static bool use_work_area = true;
|
|
||||||
static ImGuiWindowFlags flags = ImGuiWindowFlags_NoDecoration |
|
|
||||||
ImGuiWindowFlags_NoMove |
|
|
||||||
ImGuiWindowFlags_NoSavedSettings;
|
|
||||||
const ImGuiViewport *viewport = ImGui::GetMainViewport();
|
|
||||||
ImGui::SetNextWindowPos(use_work_area ? viewport->WorkPos : viewport->Pos);
|
|
||||||
ImGui::SetNextWindowSize(use_work_area ? viewport->WorkSize
|
|
||||||
: viewport->Size);
|
|
||||||
|
|
||||||
if (ImGui::Begin("Example: Fullscreen window",
|
|
||||||
&overworld_canvas_fullscreen_, flags)) {
|
|
||||||
// Draws the toolset for editing the Overworld.
|
|
||||||
RETURN_IF_ERROR(DrawToolset())
|
|
||||||
DrawOverworldCanvas();
|
|
||||||
}
|
|
||||||
ImGui::End();
|
|
||||||
return absl::OkStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
TAB_BAR("##OWEditorTabBar")
|
TAB_BAR("##OWEditorTabBar")
|
||||||
TAB_ITEM("Map Editor")
|
TAB_ITEM("Map Editor")
|
||||||
@@ -109,6 +87,29 @@ absl::Status OverworldEditor::UpdateOverworldEdit() {
|
|||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
absl::Status OverworldEditor::UpdateFullscreenCanvas() {
|
||||||
|
if (overworld_canvas_fullscreen_) {
|
||||||
|
static bool use_work_area = true;
|
||||||
|
static ImGuiWindowFlags flags = ImGuiWindowFlags_NoDecoration |
|
||||||
|
ImGuiWindowFlags_NoMove |
|
||||||
|
ImGuiWindowFlags_NoSavedSettings;
|
||||||
|
const ImGuiViewport *viewport = ImGui::GetMainViewport();
|
||||||
|
ImGui::SetNextWindowPos(use_work_area ? viewport->WorkPos : viewport->Pos);
|
||||||
|
ImGui::SetNextWindowSize(use_work_area ? viewport->WorkSize
|
||||||
|
: viewport->Size);
|
||||||
|
|
||||||
|
if (ImGui::Begin("Example: Fullscreen window",
|
||||||
|
&overworld_canvas_fullscreen_, flags)) {
|
||||||
|
// Draws the toolset for editing the Overworld.
|
||||||
|
RETURN_IF_ERROR(DrawToolset())
|
||||||
|
DrawOverworldCanvas();
|
||||||
|
}
|
||||||
|
ImGui::End();
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
return absl::OkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
absl::Status OverworldEditor::DrawToolset() {
|
absl::Status OverworldEditor::DrawToolset() {
|
||||||
static bool show_gfx_group = false;
|
static bool show_gfx_group = false;
|
||||||
static bool show_properties = false;
|
static bool show_properties = false;
|
||||||
@@ -350,7 +351,8 @@ absl::Status OverworldEditor::RefreshMapPalette() {
|
|||||||
for (int i = 1; i < 4; i++) {
|
for (int i = 1; i < 4; i++) {
|
||||||
int sibling_index = overworld_.overworld_map(current_map_)->parent() + i;
|
int sibling_index = overworld_.overworld_map(current_map_)->parent() + i;
|
||||||
if (i >= 2) sibling_index += 6;
|
if (i >= 2) sibling_index += 6;
|
||||||
overworld_.mutable_overworld_map(sibling_index)->LoadPalette();
|
RETURN_IF_ERROR(
|
||||||
|
overworld_.mutable_overworld_map(sibling_index)->LoadPalette());
|
||||||
RETURN_IF_ERROR(maps_bmp_[sibling_index].ApplyPalette(
|
RETURN_IF_ERROR(maps_bmp_[sibling_index].ApplyPalette(
|
||||||
*overworld_.mutable_overworld_map(sibling_index)
|
*overworld_.mutable_overworld_map(sibling_index)
|
||||||
->mutable_current_palette()));
|
->mutable_current_palette()));
|
||||||
@@ -384,16 +386,11 @@ void OverworldEditor::RefreshMapProperties() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OverworldEditor::DrawOverworldMapSettings() {
|
void OverworldEditor::DrawOverworldMapSettings() {
|
||||||
if (BeginTable(kOWMapTable.data(), 8, kOWMapFlags, ImVec2(0, 0), -1)) {
|
if (BeginTable(kOWMapTable.data(), 7, kOWMapFlags, ImVec2(0, 0), -1)) {
|
||||||
for (const auto &name :
|
for (const auto &name : {"##1stCol", "##gfxCol", "##palCol", "##sprgfxCol",
|
||||||
{"##mapIdCol", "##1stCol", "##gfxCol", "##palCol", "##sprgfxCol",
|
"##sprpalCol", "##msgidCol", "##2ndCol"})
|
||||||
"##sprpalCol", "##msgidCol", "##2ndCol"})
|
|
||||||
ImGui::TableSetupColumn(name);
|
ImGui::TableSetupColumn(name);
|
||||||
|
|
||||||
TableNextColumn();
|
|
||||||
ImGui::Text("Parent/Map ID:%#x, %#x",
|
|
||||||
overworld_.overworld_map(current_map_)->parent(), current_map_);
|
|
||||||
|
|
||||||
TableNextColumn();
|
TableNextColumn();
|
||||||
ImGui::SetNextItemWidth(120.f);
|
ImGui::SetNextItemWidth(120.f);
|
||||||
ImGui::Combo("##world", ¤t_world_, kWorldList.data(), 3);
|
ImGui::Combo("##world", ¤t_world_, kWorldList.data(), 3);
|
||||||
@@ -729,7 +726,7 @@ void OverworldEditor::DrawOverworldCanvas() {
|
|||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverworldEditor::DrawTile16Selector() {
|
absl::Status OverworldEditor::DrawTile16Selector() {
|
||||||
gui::BeginPadding(3);
|
gui::BeginPadding(3);
|
||||||
ImGui::BeginGroup();
|
ImGui::BeginGroup();
|
||||||
gui::BeginChildWithScrollbar("##Tile16SelectorScrollRegion");
|
gui::BeginChildWithScrollbar("##Tile16SelectorScrollRegion");
|
||||||
@@ -744,7 +741,7 @@ void OverworldEditor::DrawTile16Selector() {
|
|||||||
int grid_x = static_cast<int>(tile_pos.x / 32);
|
int grid_x = static_cast<int>(tile_pos.x / 32);
|
||||||
int grid_y = static_cast<int>(tile_pos.y / 32);
|
int grid_y = static_cast<int>(tile_pos.y / 32);
|
||||||
int id = grid_x + grid_y * 8;
|
int id = grid_x + grid_y * 8;
|
||||||
tile16_editor_.set_tile16(id);
|
RETURN_IF_ERROR(tile16_editor_.set_tile16(id));
|
||||||
show_tile16_editor_ = true;
|
show_tile16_editor_ = true;
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemClicked() && !blockset_canvas_.points().empty()) {
|
if (ImGui::IsItemClicked() && !blockset_canvas_.points().empty()) {
|
||||||
@@ -756,6 +753,7 @@ void OverworldEditor::DrawTile16Selector() {
|
|||||||
blockset_canvas_.DrawOverlay();
|
blockset_canvas_.DrawOverlay();
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
ImGui::EndGroup();
|
ImGui::EndGroup();
|
||||||
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverworldEditor::DrawTile8Selector() {
|
void OverworldEditor::DrawTile8Selector() {
|
||||||
|
|||||||
@@ -91,12 +91,17 @@ class OverworldEditor : public Editor,
|
|||||||
for (auto& [i, bmp] : current_graphics_set_) {
|
for (auto& [i, bmp] : current_graphics_set_) {
|
||||||
bmp.Cleanup();
|
bmp.Cleanup();
|
||||||
}
|
}
|
||||||
|
maps_bmp_.clear();
|
||||||
|
overworld_.Destroy();
|
||||||
|
all_gfx_loaded_ = false;
|
||||||
|
map_blockset_loaded_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
absl::Status LoadGraphics();
|
absl::Status LoadGraphics();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
absl::Status UpdateOverworldEdit();
|
absl::Status UpdateOverworldEdit();
|
||||||
|
absl::Status UpdateFullscreenCanvas();
|
||||||
|
|
||||||
absl::Status DrawToolset();
|
absl::Status DrawToolset();
|
||||||
void DrawOverworldMapSettings();
|
void DrawOverworldMapSettings();
|
||||||
@@ -123,7 +128,7 @@ class OverworldEditor : public Editor,
|
|||||||
void CheckForMousePan();
|
void CheckForMousePan();
|
||||||
void DrawOverworldCanvas();
|
void DrawOverworldCanvas();
|
||||||
|
|
||||||
void DrawTile16Selector();
|
absl::Status DrawTile16Selector();
|
||||||
void DrawTile8Selector();
|
void DrawTile8Selector();
|
||||||
void DrawAreaGraphics();
|
void DrawAreaGraphics();
|
||||||
void DrawTileSelector();
|
void DrawTileSelector();
|
||||||
|
|||||||
Reference in New Issue
Block a user