Refactor Tile16Editor: rename InitBlockset to Initialize and update palette application methods for consistency
This commit is contained in:
@@ -42,19 +42,19 @@ using ImGui::TableNextRow;
|
|||||||
using ImGui::TableSetupColumn;
|
using ImGui::TableSetupColumn;
|
||||||
using ImGui::Text;
|
using ImGui::Text;
|
||||||
|
|
||||||
absl::Status Tile16Editor::InitBlockset(
|
absl::Status Tile16Editor::Initialize(
|
||||||
const gfx::Bitmap &tile16_blockset_bmp, const gfx::Bitmap ¤t_gfx_bmp,
|
const gfx::Bitmap &tile16_blockset_bmp, const gfx::Bitmap ¤t_gfx_bmp,
|
||||||
std::array<uint8_t, 0x200> &all_tiles_types) {
|
std::array<uint8_t, 0x200> &all_tiles_types) {
|
||||||
all_tiles_types_ = all_tiles_types;
|
all_tiles_types_ = all_tiles_types;
|
||||||
current_gfx_bmp_.Create(current_gfx_bmp.width(), current_gfx_bmp.height(),
|
current_gfx_bmp_.Create(current_gfx_bmp.width(), current_gfx_bmp.height(),
|
||||||
current_gfx_bmp.depth(), current_gfx_bmp.vector());
|
current_gfx_bmp.depth(), current_gfx_bmp.vector());
|
||||||
RETURN_IF_ERROR(current_gfx_bmp_.ApplyPalette(current_gfx_bmp.palette()));
|
RETURN_IF_ERROR(current_gfx_bmp_.SetPalette(current_gfx_bmp.palette()));
|
||||||
core::Renderer::GetInstance().RenderBitmap(¤t_gfx_bmp_);
|
core::Renderer::GetInstance().RenderBitmap(¤t_gfx_bmp_);
|
||||||
tile16_blockset_bmp_.Create(
|
tile16_blockset_bmp_.Create(
|
||||||
tile16_blockset_bmp.width(), tile16_blockset_bmp.height(),
|
tile16_blockset_bmp.width(), tile16_blockset_bmp.height(),
|
||||||
tile16_blockset_bmp.depth(), tile16_blockset_bmp.vector());
|
tile16_blockset_bmp.depth(), tile16_blockset_bmp.vector());
|
||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(
|
||||||
tile16_blockset_bmp_.ApplyPalette(tile16_blockset_bmp.palette()));
|
tile16_blockset_bmp_.SetPalette(tile16_blockset_bmp.palette()));
|
||||||
core::Renderer::GetInstance().RenderBitmap(&tile16_blockset_bmp_);
|
core::Renderer::GetInstance().RenderBitmap(&tile16_blockset_bmp_);
|
||||||
RETURN_IF_ERROR(LoadTile8());
|
RETURN_IF_ERROR(LoadTile8());
|
||||||
ImVector<std::string> tile16_names;
|
ImVector<std::string> tile16_names;
|
||||||
@@ -64,6 +64,19 @@ absl::Status Tile16Editor::InitBlockset(
|
|||||||
}
|
}
|
||||||
*tile8_source_canvas_.mutable_labels(0) = tile16_names;
|
*tile8_source_canvas_.mutable_labels(0) = tile16_names;
|
||||||
*tile8_source_canvas_.custom_labels_enabled() = true;
|
*tile8_source_canvas_.custom_labels_enabled() = true;
|
||||||
|
|
||||||
|
gui::AddTableColumn(tile_edit_table_, "##tile16ID", [&]() {
|
||||||
|
ImGui::Text("Tile16 ID: %02X", current_tile16_);
|
||||||
|
});
|
||||||
|
gui::AddTableColumn(tile_edit_table_, "##tile8ID",
|
||||||
|
[&]() { ImGui::Text("Tile8 ID: %02X", current_tile8_); });
|
||||||
|
|
||||||
|
gui::AddTableColumn(tile_edit_table_, "##tile16Flip", [&]() {
|
||||||
|
ImGui::Checkbox("X Flip", &x_flip);
|
||||||
|
ImGui::Checkbox("Y Flip", &y_flip);
|
||||||
|
ImGui::Checkbox("Priority", &priority_tile);
|
||||||
|
});
|
||||||
|
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +91,6 @@ absl::Status Tile16Editor::Update() {
|
|||||||
RETURN_IF_ERROR(UpdateTile16Transfer());
|
RETURN_IF_ERROR(UpdateTile16Transfer());
|
||||||
EndTabBar();
|
EndTabBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,10 +101,8 @@ absl::Status Tile16Editor::DrawMenu() {
|
|||||||
tile8_source_canvas_.custom_labels_enabled());
|
tile8_source_canvas_.custom_labels_enabled());
|
||||||
EndMenu();
|
EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
EndMenuBar();
|
EndMenuBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,8 +156,8 @@ absl::Status Tile16Editor::UpdateBlockset() {
|
|||||||
current_tile16_ = notify_tile16.get();
|
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;
|
auto ow_main_pal_group = rom()->palette_group().overworld_main;
|
||||||
RETURN_IF_ERROR(current_tile16_bmp_.ApplyPalette(
|
RETURN_IF_ERROR(
|
||||||
ow_main_pal_group[current_palette_]));
|
current_tile16_bmp_.SetPalette(ow_main_pal_group[current_palette_]));
|
||||||
Renderer::GetInstance().RenderBitmap(¤t_tile16_bmp_);
|
Renderer::GetInstance().RenderBitmap(¤t_tile16_bmp_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -197,7 +207,7 @@ absl::Status Tile16Editor::UpdateTile16Edit() {
|
|||||||
tile8_source_canvas_.DrawContextMenu(¤t_gfx_bmp_);
|
tile8_source_canvas_.DrawContextMenu(¤t_gfx_bmp_);
|
||||||
if (tile8_source_canvas_.DrawTileSelector(32)) {
|
if (tile8_source_canvas_.DrawTileSelector(32)) {
|
||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(
|
||||||
current_gfx_individual_[current_tile8_].ApplyPaletteWithTransparent(
|
current_gfx_individual_[current_tile8_].SetPaletteWithTransparent(
|
||||||
ow_main_pal_group[0], current_palette_));
|
ow_main_pal_group[0], current_palette_));
|
||||||
Renderer::GetInstance().UpdateBitmap(
|
Renderer::GetInstance().UpdateBitmap(
|
||||||
¤t_gfx_individual_[current_tile8_]);
|
¤t_gfx_individual_[current_tile8_]);
|
||||||
@@ -215,7 +225,7 @@ absl::Status Tile16Editor::UpdateTile16Edit() {
|
|||||||
|
|
||||||
current_tile8_ = x + (y * 8);
|
current_tile8_ = x + (y * 8);
|
||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(
|
||||||
current_gfx_individual_[current_tile8_].ApplyPaletteWithTransparent(
|
current_gfx_individual_[current_tile8_].SetPaletteWithTransparent(
|
||||||
ow_main_pal_group[0], current_palette_));
|
ow_main_pal_group[0], current_palette_));
|
||||||
Renderer::GetInstance().UpdateBitmap(
|
Renderer::GetInstance().UpdateBitmap(
|
||||||
¤t_gfx_individual_[current_tile8_]);
|
¤t_gfx_individual_[current_tile8_]);
|
||||||
@@ -243,8 +253,6 @@ absl::Status Tile16Editor::UpdateTile16Edit() {
|
|||||||
|
|
||||||
absl::Status Tile16Editor::DrawTileEditControls() {
|
absl::Status Tile16Editor::DrawTileEditControls() {
|
||||||
Separator();
|
Separator();
|
||||||
Text("Tile16 ID: %d", current_tile16_);
|
|
||||||
Text("Tile8 ID: %d", current_tile8_);
|
|
||||||
Text("Options:");
|
Text("Options:");
|
||||||
gui::InputHexByte("Palette", ¬ify_palette.edit());
|
gui::InputHexByte("Palette", ¬ify_palette.edit());
|
||||||
notify_palette.commit();
|
notify_palette.commit();
|
||||||
@@ -261,19 +269,15 @@ absl::Status Tile16Editor::DrawTileEditControls() {
|
|||||||
|
|
||||||
if (value > 0x00) {
|
if (value > 0x00) {
|
||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(
|
||||||
current_gfx_bmp_.ApplyPaletteWithTransparent(palette, value));
|
current_gfx_bmp_.SetPaletteWithTransparent(palette, value));
|
||||||
Renderer::GetInstance().UpdateBitmap(¤t_gfx_bmp_);
|
Renderer::GetInstance().UpdateBitmap(¤t_gfx_bmp_);
|
||||||
|
|
||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(
|
||||||
current_tile16_bmp_.ApplyPaletteWithTransparent(palette, value));
|
current_tile16_bmp_.SetPaletteWithTransparent(palette, value));
|
||||||
Renderer::GetInstance().UpdateBitmap(¤t_tile16_bmp_);
|
Renderer::GetInstance().UpdateBitmap(¤t_tile16_bmp_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
gui::DrawTable(tile_edit_table_);
|
||||||
Checkbox("X Flip", &x_flip);
|
|
||||||
Checkbox("Y Flip", &y_flip);
|
|
||||||
Checkbox("Priority Tile", &priority_tile);
|
|
||||||
|
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,8 +326,8 @@ absl::Status Tile16Editor::LoadTile8() {
|
|||||||
current_gfx_individual_.emplace_back();
|
current_gfx_individual_.emplace_back();
|
||||||
auto &tile_bitmap = current_gfx_individual_.back();
|
auto &tile_bitmap = current_gfx_individual_.back();
|
||||||
tile_bitmap.Create(0x08, 0x08, 0x08, tile_data);
|
tile_bitmap.Create(0x08, 0x08, 0x08, tile_data);
|
||||||
RETURN_IF_ERROR(tile_bitmap.ApplyPaletteWithTransparent(
|
RETURN_IF_ERROR(tile_bitmap.SetPaletteWithTransparent(ow_main_pal_group[0],
|
||||||
ow_main_pal_group[0], current_palette_));
|
current_palette_));
|
||||||
Renderer::GetInstance().RenderBitmap(&tile_bitmap);
|
Renderer::GetInstance().RenderBitmap(&tile_bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,7 +341,7 @@ absl::Status Tile16Editor::SetCurrentTile(int id) {
|
|||||||
current_tile16_bmp_ = tile16_individual_[id];
|
current_tile16_bmp_ = tile16_individual_[id];
|
||||||
auto ow_main_pal_group = rom()->palette_group().overworld_main;
|
auto ow_main_pal_group = rom()->palette_group().overworld_main;
|
||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(
|
||||||
current_tile16_bmp_.ApplyPalette(ow_main_pal_group[current_palette_]));
|
current_tile16_bmp_.SetPalette(ow_main_pal_group[current_palette_]));
|
||||||
Renderer::GetInstance().RenderBitmap(¤t_tile16_bmp_);
|
Renderer::GetInstance().RenderBitmap(¤t_tile16_bmp_);
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include "app/gfx/snes_palette.h"
|
#include "app/gfx/snes_palette.h"
|
||||||
#include "app/gfx/snes_tile.h"
|
#include "app/gfx/snes_tile.h"
|
||||||
#include "app/gui/canvas.h"
|
#include "app/gui/canvas.h"
|
||||||
|
#include "app/gui/input.h"
|
||||||
#include "app/rom.h"
|
#include "app/rom.h"
|
||||||
#include "app/zelda3/overworld/overworld.h"
|
#include "app/zelda3/overworld/overworld.h"
|
||||||
#include "imgui/imgui.h"
|
#include "imgui/imgui.h"
|
||||||
@@ -26,9 +27,9 @@ class Tile16Editor : public gfx::GfxContext, public SharedRom {
|
|||||||
Tile16Editor(
|
Tile16Editor(
|
||||||
std::array<gfx::Bitmap, zelda3::kNumTile16Individual> &tile16_individual)
|
std::array<gfx::Bitmap, zelda3::kNumTile16Individual> &tile16_individual)
|
||||||
: tile16_individual_(tile16_individual) {}
|
: tile16_individual_(tile16_individual) {}
|
||||||
absl::Status InitBlockset(const gfx::Bitmap &tile16_blockset_bmp,
|
absl::Status Initialize(const gfx::Bitmap &tile16_blockset_bmp,
|
||||||
const gfx::Bitmap ¤t_gfx_bmp,
|
const gfx::Bitmap ¤t_gfx_bmp,
|
||||||
std::array<uint8_t, 0x200> &all_tiles_types);
|
std::array<uint8_t, 0x200> &all_tiles_types);
|
||||||
|
|
||||||
absl::Status Update();
|
absl::Status Update();
|
||||||
absl::Status DrawMenu();
|
absl::Status DrawMenu();
|
||||||
@@ -87,6 +88,8 @@ class Tile16Editor : public gfx::GfxContext, public SharedRom {
|
|||||||
gui::Canvas transfer_canvas_;
|
gui::Canvas transfer_canvas_;
|
||||||
gfx::Bitmap transfer_blockset_bmp_;
|
gfx::Bitmap transfer_blockset_bmp_;
|
||||||
|
|
||||||
|
gui::Table tile_edit_table_{"##TileEditTable", 3, ImGuiTableFlags_Borders};
|
||||||
|
|
||||||
std::array<gfx::Bitmap, zelda3::kNumTile16Individual> &tile16_individual_;
|
std::array<gfx::Bitmap, zelda3::kNumTile16Individual> &tile16_individual_;
|
||||||
std::vector<gfx::Bitmap> current_gfx_individual_;
|
std::vector<gfx::Bitmap> current_gfx_individual_;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user