From 3c92b58c21ccba485785f6359789372613d2bc7c Mon Sep 17 00:00:00 2001 From: scawful Date: Sun, 12 Nov 2023 19:18:17 -0500 Subject: [PATCH] Add tile painting canvas to `Tile16Editor` --- src/app/editor/modules/tile16_editor.cc | 26 ++++++++++++++++++++++++- src/app/editor/modules/tile16_editor.h | 9 ++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/app/editor/modules/tile16_editor.cc b/src/app/editor/modules/tile16_editor.cc index fe2dcee0..7fc7ed81 100644 --- a/src/app/editor/modules/tile16_editor.cc +++ b/src/app/editor/modules/tile16_editor.cc @@ -46,6 +46,25 @@ absl::Status Tile16Editor::Update() { ImGui::TableNextColumn(); { // Create various options for the Tile16 Editor + if (ImGuiID child_id = ImGui::GetID((void*)(intptr_t)27); + ImGui::BeginChild(child_id, + ImVec2(ImGui::GetContentRegionAvail().x, 0x100), + true)) { + tile16_edit_canvas_.DrawBackground(ImVec2(0x40, 0x40)); + tile16_edit_canvas_.DrawContextMenu(); + if (!blockset_canvas_.Points().empty()) { + int x = blockset_canvas_.Points().front().x / 32; + int y = blockset_canvas_.Points().front().y / 32; + current_tile16_ = x + (y * 8); + if (tile16_edit_canvas_.DrawTilePainter( + tile16_individual_[current_tile16_], 16)) { + // Update the tile16 + } + } + tile16_edit_canvas_.DrawGrid(64.0f); + tile16_edit_canvas_.DrawOverlay(); + } + ImGui::EndChild(); ImGui::Separator(); ImGui::Text("Options:"); @@ -132,11 +151,16 @@ absl::Status Tile16Editor::Update() { return absl::OkStatus(); } -absl::Status Tile16Editor::InitBlockset(gfx::Bitmap tile16_blockset_bmp) { +absl::Status Tile16Editor::InitBlockset( + gfx::Bitmap tile16_blockset_bmp, std::vector tile16_individual, + std::vector tile8_individual_) { tile16_blockset_bmp_ = tile16_blockset_bmp; + tile16_individual_ = tile16_individual; + tile8_individual_ = tile8_individual_; map_blockset_loaded_ = true; return absl::OkStatus(); } +  } // namespace editor } // namespace app diff --git a/src/app/editor/modules/tile16_editor.h b/src/app/editor/modules/tile16_editor.h index 75809397..f1f061db 100644 --- a/src/app/editor/modules/tile16_editor.h +++ b/src/app/editor/modules/tile16_editor.h @@ -26,13 +26,17 @@ class Tile16Editor : public SharedROM { public: absl::Status Update(); - absl::Status InitBlockset(gfx::Bitmap tile16_blockset_bmp); + absl::Status InitBlockset(gfx::Bitmap tile16_blockset_bmp, + std::vector tile16_individual, + std::vector tile8_individual_); private: bool map_blockset_loaded_ = false; bool transfer_started_ = false; bool transfer_blockset_loaded_ = false; + int current_tile16_ = 0; + // Canvas dimensions int canvas_width; int canvas_height; @@ -49,6 +53,8 @@ class Tile16Editor : public SharedROM { gui::Canvas blockset_canvas_; gfx::Bitmap tile16_blockset_bmp_; + gui::Canvas tile16_edit_canvas_; + gui::Canvas transfer_canvas_; gfx::Bitmap transfer_blockset_bmp_; gfx::Bitmap transfer_current_bmp_; @@ -59,6 +65,7 @@ class Tile16Editor : public SharedROM { zelda3::Overworld transfer_overworld_; std::vector tile16_individual_data_; std::vector tile16_individual_; + std::vector tile8_individual_; gfx::BitmapTable graphics_bin_; ROM transfer_rom_;