diff --git a/src/jasper/modules/world/include/jasper/world/worldobject.hpp b/src/jasper/modules/world/include/jasper/world/worldobject.hpp index 91e6661..2b7b919 100644 --- a/src/jasper/modules/world/include/jasper/world/worldobject.hpp +++ b/src/jasper/modules/world/include/jasper/world/worldobject.hpp @@ -6,7 +6,6 @@ #include -#include #include namespace jasper::world { diff --git a/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.cpp b/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.cpp index d025184..ad7aa3e 100644 --- a/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.cpp +++ b/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.cpp @@ -75,11 +75,11 @@ constexpr ox::Point fbPtToTileAddr( WorldEditorImGui::WorldEditorImGui(studio::StudioContext &sctx, ox::StringParam path): Editor(std::move(path)), m_sctx{sctx}, + m_objSetPicker{"Object Set Chooser", keelCtx(m_sctx), FileExt_jwob}, m_doc{*keel::readObj(keelCtx(m_sctx), itemPath()).unwrapThrow()} { OX_THROW_ERROR(m_loader.loadWorldStatic()); OX_THROW_ERROR(m_view.setupWorld()); OX_THROW_ERROR(loadObjectSets()); - m_objSetPicker.filePicked.connect(this, &WorldEditorImGui::addObjSet); m_sctx.project->fileUpdated.connect(this, &WorldEditorImGui::handleDepUpdate); m_loader.resourcesUpdated.connect(&m_view, &WorldEditorView::setupWorld); m_loader.tileUpdated.connect(&m_view, &WorldEditorView::setupTile); @@ -103,7 +103,9 @@ void WorldEditorImGui::draw(studio::StudioContext&) noexcept { ImGui::Separator(); drawResources(); } - m_objSetPicker.draw(); + if (auto o = m_objSetPicker.draw(m_sctx)) { + oxLogError(addObjSet(*o)); + } drawPropEditor(); } @@ -187,7 +189,7 @@ ox::Error WorldEditorImGui::saveItem() noexcept { void WorldEditorImGui::drawObjSetSelector() noexcept { ig::IDStackItem const idStackItem("ObjSetSelector"); if (ig::PushButton("+", SqrBtnSize)) { - m_objSetPicker.show(); + m_objSetPicker.open(); } ImGui::SameLine(); if (ig::PushButton("-", SqrBtnSize)) { diff --git a/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.hpp b/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.hpp index fbdd408..1c7ae02 100644 --- a/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.hpp +++ b/src/jasper/modules/world/src/studio/worldeditor/worldeditor-imgui.hpp @@ -6,6 +6,7 @@ #include +#include #include #include @@ -21,7 +22,7 @@ class WorldEditorImGui: public studio::Editor { ox::Optional m_selection; uint8_t m_activeLayer{}; studio::StudioContext &m_sctx; - studio::ig::FilePicker m_objSetPicker{m_sctx, "Choose Object Set", FileExt_jwob}; + studio::FilePickerPopup m_objSetPicker; WorldDoc m_doc; struct ObjSetRef { ox::String name; diff --git a/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.cpp b/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.cpp index eb401ae..2194cd6 100644 --- a/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.cpp +++ b/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.cpp @@ -28,7 +28,8 @@ WorldObjectSetEditorImGui::WorldObjectSetEditorImGui( m_sctx(ctx), m_itemPath(itemPath()), m_doc(*readObj(keelCtx(m_sctx), itemPath()).unwrapThrow()), - m_tileSheet(readObj(keelCtx(m_sctx), m_doc.tilesheet).unwrapThrow()) { + m_tileSheet(readObj(keelCtx(m_sctx), m_doc.tilesheet).unwrapThrow()), + m_addPalPopup{"Palette Chooser", keelCtx(m_sctx), ngfx::FileExt_npal} { auto &kctx = keelCtx(m_sctx); auto const [tsPath, err] = getPath(kctx, m_doc.tilesheet); if (!err) { @@ -308,19 +309,8 @@ void WorldObjectSetEditorImGui::drawPaletteListItems() noexcept { } void WorldObjectSetEditorImGui::drawAddPalettePopup() noexcept { - if (!m_addPalPopup.show) { - return; - } - auto constexpr popupName = ox::CStringView("Add Palette"); - auto constexpr popupSz = ImVec2{285.f, 0}; - ig::IDStackItem const idStackItem{"AddPalette"}; - if (ig::BeginPopup(m_sctx.tctx, popupName, m_addPalPopup.show, popupSz)) { - auto const&palettes = m_sctx.project->fileList(ngfx::FileExt_npal); - ig::ComboBox("Palette", palettes, m_addPalPopup.selectedIdx); - if (ig::PopupControlsOkCancel(popupSz.x, m_addPalPopup.show) == ig::PopupResponse::OK) { - addPalette(palettes[m_addPalPopup.selectedIdx]); - } - ImGui::EndPopup(); + if (auto o = m_addPalPopup.draw(m_sctx)) { + addPalette(*o); } } @@ -338,8 +328,7 @@ void WorldObjectSetEditorImGui::addPalette(ox::StringViewCR path) noexcept { } void WorldObjectSetEditorImGui::showAddPalette() noexcept { - m_addPalPopup.show = true; - m_addPalPopup.selectedIdx = 0; + m_addPalPopup.open(); } void WorldObjectSetEditorImGui::rmSelectedPalette() noexcept { diff --git a/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.hpp b/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.hpp index 01039da..b5cdbba 100644 --- a/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.hpp +++ b/src/jasper/modules/world/src/studio/worldobjectseteditor/worldobjectseteditor-imgui.hpp @@ -24,10 +24,7 @@ class WorldObjectSetEditorImGui: public studio::Editor { size_t m_selectedObj{}; size_t m_selectedPal{}; ox::String m_tilesheetPath{}; - struct { - bool show{}; - size_t selectedIdx{}; - } m_addPalPopup; + studio::FilePickerPopup m_addPalPopup; CollisionView m_colView{m_sctx}; struct { ox::IString<256> nameBuff;