Add tile painting canvas to Tile16Editor

This commit is contained in:
scawful
2023-11-12 19:18:17 -05:00
parent bb806c51a7
commit 3c92b58c21
2 changed files with 33 additions and 2 deletions

View File

@@ -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<gfx::Bitmap> tile16_individual,
std::vector<gfx::Bitmap> 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

View File

@@ -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<gfx::Bitmap> tile16_individual,
std::vector<gfx::Bitmap> 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<Bytes> tile16_individual_data_;
std::vector<gfx::Bitmap> tile16_individual_;
std::vector<gfx::Bitmap> tile8_individual_;
gfx::BitmapTable graphics_bin_;
ROM transfer_rom_;