diff --git a/src/app/editor/modules/gfx_group_editor.cc b/src/app/editor/modules/gfx_group_editor.cc index e606312c..920a064e 100644 --- a/src/app/editor/modules/gfx_group_editor.cc +++ b/src/app/editor/modules/gfx_group_editor.cc @@ -263,10 +263,6 @@ void GfxGroupEditor::DrawPaletteViewer() { DrawPaletteFromPaletteGroup(spr_aux_pal3); } -void GfxGroupEditor::InitBlockset(gfx::Bitmap tile16_blockset) { - tile16_blockset_bmp_ = tile16_blockset; -} - } // namespace editor } // namespace app } // namespace yaze diff --git a/src/app/editor/modules/gfx_group_editor.h b/src/app/editor/modules/gfx_group_editor.h index 8d7579ca..971eb94d 100644 --- a/src/app/editor/modules/gfx_group_editor.h +++ b/src/app/editor/modules/gfx_group_editor.h @@ -7,8 +7,8 @@ #include "absl/status/status.h" #include "absl/status/statusor.h" -#include "app/editor/utils/editor.h" #include "app/editor/modules/palette_editor.h" +#include "app/editor/utils/editor.h" #include "app/gfx/bitmap.h" #include "app/gfx/snes_palette.h" #include "app/gfx/snes_tile.h" @@ -42,7 +42,9 @@ class GfxGroupEditor : public SharedRom { selected_spriteset_ = spriteset; } - void InitBlockset(gfx::Bitmap tile16_blockset); + void InitBlockset(gfx::Bitmap* tile16_blockset) { + tile16_blockset_bmp_ = tile16_blockset; + } private: int preview_palette_id_ = 0; @@ -60,7 +62,7 @@ class GfxGroupEditor : public SharedRom { gfx::SnesPalette palette_; gfx::PaletteGroup palette_group_; - gfx::Bitmap tile16_blockset_bmp_; + gfx::Bitmap* tile16_blockset_bmp_; std::vector tile16_individual_data_; std::vector tile16_individual_; diff --git a/src/app/editor/modules/tile16_editor.cc b/src/app/editor/modules/tile16_editor.cc index 38ab5c39..cfc73d9d 100644 --- a/src/app/editor/modules/tile16_editor.cc +++ b/src/app/editor/modules/tile16_editor.cc @@ -108,7 +108,7 @@ absl::Status Tile16Editor::UpdateBlockset() { { blockset_canvas_.DrawContextMenu(); blockset_canvas_.DrawTileSelector(32); - blockset_canvas_.DrawBitmap(tile16_blockset_bmp_, 0, map_blockset_loaded_); + blockset_canvas_.DrawBitmap(*tile16_blockset_bmp_, 0, map_blockset_loaded_); blockset_canvas_.DrawGrid(); blockset_canvas_.DrawOverlay(); ImGui::EndChild(); @@ -123,11 +123,11 @@ absl::Status Tile16Editor::UpdateBlockset() { notify_tile16.apply_changes(); if (notify_tile16.modified()) { current_tile16_ = notify_tile16.get(); - current_tile16_bmp_ = tile16_individual_[notify_tile16]; + current_tile16_bmp_ = &tile16_individual_[notify_tile16]; auto ow_main_pal_group = rom()->palette_group().overworld_main; - RETURN_IF_ERROR(current_tile16_bmp_.ApplyPalette( + RETURN_IF_ERROR(current_tile16_bmp_->ApplyPalette( ow_main_pal_group[current_palette_])); - rom()->RenderBitmap(¤t_tile16_bmp_); + rom()->RenderBitmap(current_tile16_bmp_); } } @@ -158,7 +158,7 @@ absl::Status Tile16Editor::DrawToCurrentTile16(ImVec2 click_position) { int pixel_index = (start_position.y + y) * tile16_size + ((start_position.x) + x); int gfx_pixel_index = y * tile8_size + x; - current_tile16_bmp_.WriteToPixel( + current_tile16_bmp_->WriteToPixel( pixel_index, current_gfx_individual_[current_tile8_].data()[gfx_pixel_index]); } @@ -202,14 +202,14 @@ absl::Status Tile16Editor::UpdateTile16Edit() { if (ImGui::BeginChild("Tile16 Editor Options", ImVec2(ImGui::GetContentRegionAvail().x, 0x50), true)) { tile16_edit_canvas_.DrawBackground(); - tile16_edit_canvas_.DrawContextMenu(¤t_tile16_bmp_); - tile16_edit_canvas_.DrawBitmap(current_tile16_bmp_, 0, 0, 4.0f); + tile16_edit_canvas_.DrawContextMenu(current_tile16_bmp_); + tile16_edit_canvas_.DrawBitmap(*current_tile16_bmp_, 0, 0, 4.0f); if (!tile8_source_canvas_.points().empty()) { if (tile16_edit_canvas_.DrawTilePainter( current_gfx_individual_[current_tile8_], 16, 2.0f)) { RETURN_IF_ERROR( DrawToCurrentTile16(tile16_edit_canvas_.drawn_tile_position())); - rom()->UpdateBitmap(¤t_tile16_bmp_); + rom()->UpdateBitmap(current_tile16_bmp_); } } tile16_edit_canvas_.DrawGrid(); @@ -241,9 +241,9 @@ absl::Status Tile16Editor::DrawTileEditControls() { RETURN_IF_ERROR( current_gfx_bmp_.ApplyPaletteWithTransparent(palette, value)); RETURN_IF_ERROR( - current_tile16_bmp_.ApplyPaletteWithTransparent(palette, value)); + current_tile16_bmp_->ApplyPaletteWithTransparent(palette, value)); rom()->UpdateBitmap(¤t_gfx_bmp_); - rom()->UpdateBitmap(¤t_tile16_bmp_); + rom()->UpdateBitmap(current_tile16_bmp_); } } @@ -353,9 +353,9 @@ absl::Status Tile16Editor::UpdateTransferTileCanvas() { palette_ = transfer_overworld_.AreaPalette(); // Create the tile16 blockset image - RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(0x80, 0x2000, 0x80, - transfer_overworld_.Tile16Blockset(), - transfer_blockset_bmp_, palette_)); + RETURN_IF_ERROR(rom()->CreateAndRenderBitmap( + 0x80, 0x2000, 0x80, transfer_overworld_.Tile16Blockset(), + transfer_blockset_bmp_, palette_)); transfer_blockset_loaded_ = true; } diff --git a/src/app/editor/modules/tile16_editor.h b/src/app/editor/modules/tile16_editor.h index f554b8e1..b370ce0e 100644 --- a/src/app/editor/modules/tile16_editor.h +++ b/src/app/editor/modules/tile16_editor.h @@ -44,7 +44,7 @@ class Tile16Editor : public context::GfxContext, public SharedRom { absl::Status UpdateTransferTileCanvas(); - void InitBlockset(const gfx::Bitmap& tile16_blockset_bmp, + void InitBlockset(gfx::Bitmap* tile16_blockset_bmp, gfx::Bitmap current_gfx_bmp, const std::vector& tile16_individual, uint8_t all_tiles_types[0x200]) { @@ -59,11 +59,11 @@ class Tile16Editor : public context::GfxContext, public SharedRom { absl::Status set_tile16(int id) { current_tile16_ = id; - current_tile16_bmp_ = tile16_individual_[id]; + current_tile16_bmp_ = &tile16_individual_[id]; auto ow_main_pal_group = rom()->palette_group().overworld_main; RETURN_IF_ERROR( - current_tile16_bmp_.ApplyPalette(ow_main_pal_group[current_palette_])); - rom()->RenderBitmap(¤t_tile16_bmp_); + current_tile16_bmp_->ApplyPalette(ow_main_pal_group[current_palette_])); + rom()->RenderBitmap(current_tile16_bmp_); return absl::OkStatus(); } @@ -97,13 +97,13 @@ class Tile16Editor : public context::GfxContext, public SharedRom { // Tile16 blockset for selecting the tile to edit gui::Canvas blockset_canvas_{ImVec2(0x100, 0x4000), gui::CanvasGridSize::k32x32}; - gfx::Bitmap tile16_blockset_bmp_; + gfx::Bitmap* tile16_blockset_bmp_; // Canvas for editing the selected tile gui::Canvas tile16_edit_canvas_{ImVec2(0x40, 0x40), gui::CanvasGridSize::k64x64}; - gfx::Bitmap current_tile16_bmp_; - gfx::Bitmap current_tile8_bmp_; + gfx::Bitmap* current_tile16_bmp_; + gfx::Bitmap* current_tile8_bmp_; // Tile8 canvas to get the tile to drawing in the tile16_edit_canvas_ gui::Canvas tile8_source_canvas_{ diff --git a/src/app/editor/overworld_editor.cc b/src/app/editor/overworld_editor.cc index b4ab46e8..0bd51625 100644 --- a/src/app/editor/overworld_editor.cc +++ b/src/app/editor/overworld_editor.cc @@ -65,10 +65,10 @@ void OverworldEditor::InitializeZeml() { absl::Status OverworldEditor::Update() { status_ = absl::OkStatus(); if (rom()->is_loaded() && !all_gfx_loaded_) { - tile16_editor_.InitBlockset(tile16_blockset_bmp_, current_gfx_bmp_, + tile16_editor_.InitBlockset(&tile16_blockset_bmp_, current_gfx_bmp_, tile16_individual_, *overworld_.mutable_all_tiles_types()); - gfx_group_editor_.InitBlockset(tile16_blockset_bmp_); + gfx_group_editor_.InitBlockset(&tile16_blockset_bmp_); RETURN_IF_ERROR(LoadEntranceTileTypes(*rom())); all_gfx_loaded_ = true; } else if (!rom()->is_loaded() && all_gfx_loaded_) {