refactor editor template
This commit is contained in:
@@ -87,7 +87,7 @@ Editor::Editor() {
|
||||
}
|
||||
|
||||
Editor::~Editor() {
|
||||
for (auto &each : imagesCache) {
|
||||
for (auto &each : image_cache_) {
|
||||
SDL_DestroyTexture(each.second);
|
||||
}
|
||||
rom_.Close();
|
||||
@@ -125,9 +125,7 @@ void Editor::UpdateScreen() {
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
void Editor::Shutdown() {
|
||||
|
||||
}
|
||||
void Editor::Shutdown() {}
|
||||
|
||||
void Editor::DrawYazeMenu() {
|
||||
MENU_BAR()
|
||||
@@ -142,7 +140,7 @@ void Editor::DrawYazeMenu() {
|
||||
std::string filePathName = ImGuiFileDialog::Instance()->GetFilePathName();
|
||||
std::string filePath = ImGuiFileDialog::Instance()->GetCurrentPath();
|
||||
rom_.LoadFromFile(filePathName);
|
||||
rom_data_ = (void *)rom_.GetRawData();
|
||||
rom_data_ = (void *)rom_.data();
|
||||
overworld_editor_.SetupROM(rom_);
|
||||
}
|
||||
ImGuiFileDialog::Instance()->Close();
|
||||
@@ -299,10 +297,9 @@ void Editor::DrawGraphicsSheet(int offset) {
|
||||
|
||||
unsigned int snesAddr = 0;
|
||||
unsigned int pcAddr = 0;
|
||||
snesAddr =
|
||||
(unsigned int)((((uchar)(rom_.GetRawData()[0x4F80 + offset]) << 16) |
|
||||
((uchar)(rom_.GetRawData()[0x505F + offset]) << 8) |
|
||||
((uchar)(rom_.GetRawData()[0x513E + offset]))));
|
||||
snesAddr = (unsigned int)((((uchar)(rom_.data()[0x4F80 + offset]) << 16) |
|
||||
((uchar)(rom_.data()[0x505F + offset]) << 8) |
|
||||
((uchar)(rom_.data()[0x513E + offset]))));
|
||||
pcAddr = rom_.SnesToPc(snesAddr);
|
||||
std::cout << "Decompressing..." << std::endl;
|
||||
char *decomp = rom_.Decompress(pcAddr);
|
||||
@@ -313,7 +310,7 @@ void Editor::DrawGraphicsSheet(int offset) {
|
||||
std::cout << "Creating texture from surface..." << std::endl;
|
||||
SDL_Texture *sheet_texture = nullptr;
|
||||
sheet_texture = SDL_CreateTextureFromSurface(sdl_renderer_.get(), surface);
|
||||
imagesCache[offset] = sheet_texture;
|
||||
image_cache_[offset] = sheet_texture;
|
||||
if (sheet_texture == nullptr) {
|
||||
std::cout << "Error: " << SDL_GetError() << std::endl;
|
||||
}
|
||||
@@ -412,13 +409,13 @@ void Editor::DrawProjectEditor() {
|
||||
|
||||
// Draw the tilesheets loaded from the ROM
|
||||
if (loaded_image) {
|
||||
for (const auto &[key, value] : imagesCache) {
|
||||
for (const auto &[key, value] : image_cache_) {
|
||||
int offset = 128 * (key + 1);
|
||||
int top_left_y = canvas_p0.y + 2;
|
||||
if (key >= 1) {
|
||||
top_left_y = canvas_p0.y + 128 * key;
|
||||
}
|
||||
draw_list->AddImage((void *)(SDL_Texture *)value,
|
||||
draw_list->AddImage((void *)value,
|
||||
ImVec2(canvas_p0.x + 2, top_left_y),
|
||||
ImVec2(canvas_p0.x + 512, canvas_p0.y + offset));
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ class Editor {
|
||||
TextEditor asm_editor_;
|
||||
TextEditor::LanguageDefinition language_65816_;
|
||||
OverworldEditor overworld_editor_;
|
||||
std::unordered_map<uint, SDL_Texture *> imagesCache;
|
||||
std::unordered_map<uint, SDL_Texture *> image_cache_;
|
||||
std::shared_ptr<SDL_Renderer> sdl_renderer_;
|
||||
|
||||
ImVec4 current_palette_[8];
|
||||
|
||||
@@ -35,11 +35,9 @@ namespace editor {
|
||||
void OverworldEditor::SetupROM(app::rom::ROM &rom) { rom_ = rom; }
|
||||
|
||||
void OverworldEditor::Update() {
|
||||
if (rom_.isLoaded()) {
|
||||
if (!all_gfx_loaded_) {
|
||||
LoadGraphics();
|
||||
all_gfx_loaded_ = true;
|
||||
}
|
||||
if (rom_.isLoaded() && !all_gfx_loaded_) {
|
||||
LoadGraphics();
|
||||
all_gfx_loaded_ = true;
|
||||
}
|
||||
|
||||
if (show_changelist_) {
|
||||
@@ -142,8 +140,7 @@ void OverworldEditor::DrawToolset() {
|
||||
}
|
||||
|
||||
void OverworldEditor::DrawOverworldMapSettings() {
|
||||
if (ImGui::BeginTable("#mapSettings", 7, ow_map_settings_flags, ImVec2(0, 0),
|
||||
-1)) {
|
||||
if (ImGui::BeginTable("#mapSettings", 7, ow_map_flags, ImVec2(0, 0), -1)) {
|
||||
ImGui::TableSetupColumn("##1stCol");
|
||||
ImGui::TableSetupColumn("##gfxCol");
|
||||
ImGui::TableSetupColumn("##palCol");
|
||||
@@ -202,8 +199,7 @@ void OverworldEditor::DrawOverworldCanvas() {
|
||||
static bool adding_line = false;
|
||||
ImVec2 canvas_p0 = ImGui::GetCursorScreenPos();
|
||||
ImVec2 canvas_sz = ImGui::GetContentRegionAvail();
|
||||
ImVec2 canvas_p1 =
|
||||
ImVec2(canvas_p0.x + canvas_sz.x, canvas_p0.y + canvas_sz.y);
|
||||
auto canvas_p1 = ImVec2(canvas_p0.x + canvas_sz.x, canvas_p0.y + canvas_sz.y);
|
||||
|
||||
// Draw border and background color
|
||||
const ImGuiIO &io = ImGui::GetIO();
|
||||
@@ -249,10 +245,10 @@ void OverworldEditor::DrawOverworldCanvas() {
|
||||
if (ImGui::BeginPopup("context")) {
|
||||
if (adding_line) points.resize(points.size() - 2);
|
||||
adding_line = false;
|
||||
if (ImGui::MenuItem("Remove one", NULL, false, points.Size > 0)) {
|
||||
if (ImGui::MenuItem("Remove one", nullptr, false, points.Size > 0)) {
|
||||
points.resize(points.size() - 2);
|
||||
}
|
||||
if (ImGui::MenuItem("Remove all", NULL, false, points.Size > 0)) {
|
||||
if (ImGui::MenuItem("Remove all", nullptr, false, points.Size > 0)) {
|
||||
points.clear();
|
||||
}
|
||||
ImGui::EndPopup();
|
||||
@@ -286,7 +282,6 @@ void OverworldEditor::DrawOverworldCanvas() {
|
||||
void OverworldEditor::DrawTileSelector() {
|
||||
if (ImGui::BeginTabBar("##TabBar", ImGuiTabBarFlags_FittingPolicyScroll)) {
|
||||
if (ImGui::BeginTabItem("Tile16")) {
|
||||
ImGuiStyle &style = ImGui::GetStyle();
|
||||
bool child_is_visible =
|
||||
ImGui::BeginChild("#Tile16Child", ImGui::GetContentRegionAvail(),
|
||||
true, ImGuiWindowFlags_AlwaysVerticalScrollbar);
|
||||
@@ -296,7 +291,6 @@ void OverworldEditor::DrawTileSelector() {
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
if (ImGui::BeginTabItem("Tile8")) {
|
||||
ImGuiStyle &style = ImGui::GetStyle();
|
||||
ImGuiID child_id = ImGui::GetID((void *)(intptr_t)1);
|
||||
bool child_is_visible =
|
||||
ImGui::BeginChild(child_id, ImGui::GetContentRegionAvail(), true,
|
||||
@@ -304,9 +298,6 @@ void OverworldEditor::DrawTileSelector() {
|
||||
if (child_is_visible) {
|
||||
DrawTile8Selector();
|
||||
}
|
||||
float scroll_x = ImGui::GetScrollX();
|
||||
float scroll_max_x = ImGui::GetScrollMaxX();
|
||||
|
||||
ImGui::EndChild();
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
@@ -318,9 +309,8 @@ void OverworldEditor::DrawTileSelector() {
|
||||
void OverworldEditor::DrawTile16Selector() {
|
||||
static ImVec2 scrolling(0.0f, 0.0f);
|
||||
ImVec2 canvas_p0 = ImGui::GetCursorScreenPos();
|
||||
ImVec2 canvas_sz = ImVec2(256 + 1, kNumSheetsToLoad * 64 + 1);
|
||||
ImVec2 canvas_p1 =
|
||||
ImVec2(canvas_p0.x + canvas_sz.x, canvas_p0.y + canvas_sz.y);
|
||||
auto canvas_sz = ImVec2(256 + 1, kNumSheetsToLoad * 64 + 1);
|
||||
auto canvas_p1 = ImVec2(canvas_p0.x + canvas_sz.x, canvas_p0.y + canvas_sz.y);
|
||||
|
||||
// Draw border and background color
|
||||
const ImGuiIO &io = ImGui::GetIO();
|
||||
@@ -332,8 +322,6 @@ void OverworldEditor::DrawTile16Selector() {
|
||||
ImGui::InvisibleButton(
|
||||
"Tile16SelectorCanvas", canvas_sz,
|
||||
ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_MouseButtonRight);
|
||||
const bool is_hovered = ImGui::IsItemHovered(); // Hovered
|
||||
const bool is_active = ImGui::IsItemActive(); // Held
|
||||
const ImVec2 origin(canvas_p0.x + scrolling.x,
|
||||
canvas_p0.y + scrolling.y); // Lock scrolled origin
|
||||
const ImVec2 mouse_pos_in_canvas(io.MousePos.x - origin.x,
|
||||
@@ -350,7 +338,7 @@ void OverworldEditor::DrawTile16Selector() {
|
||||
|
||||
if (map_blockset_loaded_) {
|
||||
draw_list->AddImage(
|
||||
(void *)(SDL_Texture *)mapblockset16Bitmap.GetTexture(),
|
||||
(void *)mapblockset16Bitmap.GetTexture(),
|
||||
ImVec2(canvas_p0.x + 2, canvas_p0.y + 2),
|
||||
ImVec2(canvas_p0.x + (mapblockset16Bitmap.GetWidth() * 2),
|
||||
canvas_p0.y + (mapblockset16Bitmap.GetHeight() * 2)));
|
||||
@@ -378,9 +366,8 @@ void OverworldEditor::DrawTile16Selector() {
|
||||
void OverworldEditor::DrawTile8Selector() {
|
||||
static ImVec2 scrolling(0.0f, 0.0f);
|
||||
ImVec2 canvas_p0 = ImGui::GetCursorScreenPos();
|
||||
ImVec2 canvas_sz = ImVec2(256 + 1, kNumSheetsToLoad * 64 + 1);
|
||||
ImVec2 canvas_p1 =
|
||||
ImVec2(canvas_p0.x + canvas_sz.x, canvas_p0.y + canvas_sz.y);
|
||||
auto canvas_sz = ImVec2(256 + 1, kNumSheetsToLoad * 64 + 1);
|
||||
auto canvas_p1 = ImVec2(canvas_p0.x + canvas_sz.x, canvas_p0.y + canvas_sz.y);
|
||||
|
||||
// Draw border and background color
|
||||
const ImGuiIO &io = ImGui::GetIO();
|
||||
@@ -392,8 +379,6 @@ void OverworldEditor::DrawTile8Selector() {
|
||||
ImGui::InvisibleButton(
|
||||
"Tile8SelectorCanvas", canvas_sz,
|
||||
ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_MouseButtonRight);
|
||||
const bool is_hovered = ImGui::IsItemHovered(); // Hovered
|
||||
const bool is_active = ImGui::IsItemActive(); // Held
|
||||
const ImVec2 origin(canvas_p0.x + scrolling.x,
|
||||
canvas_p0.y + scrolling.y); // Lock scrolled origin
|
||||
const ImVec2 mouse_pos_in_canvas(io.MousePos.x - origin.x,
|
||||
@@ -414,7 +399,7 @@ void OverworldEditor::DrawTile8Selector() {
|
||||
if (key >= 1) {
|
||||
top_left_y = canvas_p0.y + 64 * key;
|
||||
}
|
||||
draw_list->AddImage((void *)(SDL_Texture *)value,
|
||||
draw_list->AddImage((void *)value,
|
||||
ImVec2(canvas_p0.x + 2, top_left_y),
|
||||
ImVec2(canvas_p0.x + 256, canvas_p0.y + offset));
|
||||
}
|
||||
@@ -481,9 +466,6 @@ void OverworldEditor::LoadBlockset() {
|
||||
tile16_blockset_bmp_.Create(128, 8192, 8, tile16_blockset_ptr_);
|
||||
tile16_blockset_bmp_.CreateTexture(rom_.Renderer());
|
||||
map_blockset_loaded_ = true;
|
||||
|
||||
// mapblockset16Bitmap.Create(128, 8192, 8, overworld_.GetMapBlockset16Ptr());
|
||||
// mapblockset16Bitmap.CreateTexture(rom_.Renderer());
|
||||
}
|
||||
|
||||
void OverworldEditor::LoadGraphics() {
|
||||
|
||||
@@ -73,7 +73,7 @@ class OverworldEditor {
|
||||
constexpr static float kInputFieldSize = 30.f;
|
||||
|
||||
ImGuiTableFlags toolset_table_flags = ImGuiTableFlags_SizingFixedFit;
|
||||
ImGuiTableFlags ow_map_settings_flags = ImGuiTableFlags_Borders;
|
||||
ImGuiTableFlags ow_map_flags = ImGuiTableFlags_Borders;
|
||||
ImGuiTableFlags ow_edit_flags = ImGuiTableFlags_Reorderable |
|
||||
ImGuiTableFlags_Resizable |
|
||||
ImGuiTableFlags_SizingStretchSame;
|
||||
|
||||
Reference in New Issue
Block a user