Add GraphicsBinCanvasPipeline
This commit is contained in:
@@ -19,6 +19,37 @@ namespace yaze {
|
|||||||
namespace app {
|
namespace app {
|
||||||
namespace core {
|
namespace core {
|
||||||
|
|
||||||
|
void GraphicsBinCanvasPipeline(int width, int height, int tile_size,
|
||||||
|
int num_sheets_to_load, int canvas_id,
|
||||||
|
bool is_loaded, gfx::BitmapTable& graphics_bin) {
|
||||||
|
gui::Canvas canvas;
|
||||||
|
|
||||||
|
if (ImGuiID child_id = ImGui::GetID((void*)(intptr_t)canvas_id);
|
||||||
|
ImGui::BeginChild(child_id, ImGui::GetContentRegionAvail(), true,
|
||||||
|
ImGuiWindowFlags_AlwaysVerticalScrollbar)) {
|
||||||
|
canvas.DrawBackground(ImVec2(width + 1, num_sheets_to_load * height + 1));
|
||||||
|
canvas.DrawContextMenu();
|
||||||
|
if (is_loaded) {
|
||||||
|
for (const auto& [key, value] : graphics_bin) {
|
||||||
|
int offset = height * (key + 1);
|
||||||
|
int top_left_y = canvas.GetZeroPoint().y + 2;
|
||||||
|
if (key >= 1) {
|
||||||
|
top_left_y = canvas.GetZeroPoint().y + height * key;
|
||||||
|
}
|
||||||
|
canvas.GetDrawList()->AddImage(
|
||||||
|
(void*)value.texture(),
|
||||||
|
ImVec2(canvas.GetZeroPoint().x + 2, top_left_y),
|
||||||
|
ImVec2(canvas.GetZeroPoint().x + 0x100,
|
||||||
|
canvas.GetZeroPoint().y + offset));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
canvas.DrawTileSelector(tile_size);
|
||||||
|
canvas.DrawGrid(tile_size);
|
||||||
|
canvas.DrawOverlay();
|
||||||
|
}
|
||||||
|
ImGui::EndChild();
|
||||||
|
}
|
||||||
|
|
||||||
void ButtonPipe(absl::string_view button_text, std::function<void()> callback) {
|
void ButtonPipe(absl::string_view button_text, std::function<void()> callback) {
|
||||||
if (ImGui::Button(button_text.data())) {
|
if (ImGui::Button(button_text.data())) {
|
||||||
callback();
|
callback();
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ namespace yaze {
|
|||||||
namespace app {
|
namespace app {
|
||||||
namespace core {
|
namespace core {
|
||||||
|
|
||||||
|
void GraphicsBinCanvasPipeline(int width, int height, int tile_size,
|
||||||
|
int num_sheets_to_load, int canvas_id,
|
||||||
|
bool is_loaded, gfx::BitmapTable& graphics_bin);
|
||||||
|
|
||||||
void ButtonPipe(absl::string_view button_text, std::function<void()> callback);
|
void ButtonPipe(absl::string_view button_text, std::function<void()> callback);
|
||||||
|
|
||||||
void BitmapCanvasPipeline(int width, int height, int tile_size, int canvas_id,
|
void BitmapCanvasPipeline(int width, int height, int tile_size, int canvas_id,
|
||||||
|
|||||||
@@ -252,30 +252,8 @@ absl::Status GraphicsEditor::DrawMemoryEditor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
absl::Status GraphicsEditor::DrawGraphicsBin() {
|
absl::Status GraphicsEditor::DrawGraphicsBin() {
|
||||||
if (ImGuiID child_id = ImGui::GetID((void*)(intptr_t)3);
|
core::GraphicsBinCanvasPipeline(0x100, 0x40, 0x20, num_sheets_to_load_, 3,
|
||||||
ImGui::BeginChild(child_id, ImGui::GetContentRegionAvail(), true,
|
super_donkey_, graphics_bin_);
|
||||||
ImGuiWindowFlags_AlwaysVerticalScrollbar)) {
|
|
||||||
super_donkey_canvas_.DrawBackground(
|
|
||||||
ImVec2(0x100 + 1, num_sheets_to_load_ * 0x40 + 1));
|
|
||||||
super_donkey_canvas_.DrawContextMenu();
|
|
||||||
if (super_donkey_) {
|
|
||||||
for (const auto& [key, value] : graphics_bin_) {
|
|
||||||
int offset = 0x40 * (key + 1);
|
|
||||||
int top_left_y = super_donkey_canvas_.GetZeroPoint().y + 2;
|
|
||||||
if (key >= 1) {
|
|
||||||
top_left_y = super_donkey_canvas_.GetZeroPoint().y + 0x40 * key;
|
|
||||||
}
|
|
||||||
super_donkey_canvas_.GetDrawList()->AddImage(
|
|
||||||
(void*)value.texture(),
|
|
||||||
ImVec2(super_donkey_canvas_.GetZeroPoint().x + 2, top_left_y),
|
|
||||||
ImVec2(super_donkey_canvas_.GetZeroPoint().x + 0x100,
|
|
||||||
super_donkey_canvas_.GetZeroPoint().y + offset));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super_donkey_canvas_.DrawGrid(16.0f);
|
|
||||||
super_donkey_canvas_.DrawOverlay();
|
|
||||||
}
|
|
||||||
ImGui::EndChild();
|
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,17 +20,16 @@
|
|||||||
namespace yaze {
|
namespace yaze {
|
||||||
namespace app {
|
namespace app {
|
||||||
namespace editor {
|
namespace editor {
|
||||||
// "99973","A3D80",
|
// "99973","A3D80",
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
const std::string kSuperDonkeyTiles[] = {
|
const std::string kSuperDonkeyTiles[] = {
|
||||||
"97C05", "98219", "9871E", "98C00", "99084", "995AF",
|
"97C05", "98219", "9871E", "98C00", "99084", "995AF", "99DE0", "9A27E",
|
||||||
"99DE0", "9A27E", "9A741", "9AC31", "9B07E", "9B55C", "9B963",
|
"9A741", "9AC31", "9B07E", "9B55C", "9B963", "9BB99", "9C009", "9C4B4",
|
||||||
"9BB99", "9C009", "9C4B4", "9C92B", "9CDD6", "9D2C2", "9E037",
|
"9C92B", "9CDD6", "9D2C2", "9E037", "9E527", "9EA56", "9EF65", "9FCD1",
|
||||||
"9E527", "9EA56", "9EF65", "9FCD1", "A0193", "A059E", "A0B17",
|
"A0193", "A059E", "A0B17", "A0FB6", "A14A5", "A1988", "A1E66", "A232B",
|
||||||
"A0FB6", "A14A5", "A1988", "A1E66", "A232B", "A27F0", "A2B6E",
|
"A27F0", "A2B6E", "A302C", "A3453", "A38CA", "A42BB", "A470C", "A4BA9",
|
||||||
"A302C", "A3453", "A38CA", "A42BB", "A470C", "A4BA9",
|
|
||||||
"A5089", "A5385", "A5742", "A5BCC", "A6017", "A6361", "A66F8"};
|
"A5089", "A5385", "A5742", "A5BCC", "A6017", "A6361", "A66F8"};
|
||||||
|
|
||||||
const std::string kSuperDonkeySprites[] = {
|
const std::string kSuperDonkeySprites[] = {
|
||||||
@@ -125,6 +124,8 @@ class GraphicsEditor {
|
|||||||
gui::Canvas super_donkey_canvas_;
|
gui::Canvas super_donkey_canvas_;
|
||||||
gfx::BitmapTable graphics_bin_;
|
gfx::BitmapTable graphics_bin_;
|
||||||
|
|
||||||
|
gfx::BitmapTable clipboard_graphics_bin_;
|
||||||
|
|
||||||
gfx::SNESPalette palette_;
|
gfx::SNESPalette palette_;
|
||||||
gfx::SNESPalette col_file_palette_;
|
gfx::SNESPalette col_file_palette_;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user