#include "SohModals.h" #include "ImGui/imgui.h" #include #include #include #include #include "UIWidgets.hpp" #include "OTRGlobals.h" #include "z64.h" extern "C" PlayState* gPlayState; struct SohModal { std::string title_; std::string message_; std::string button1_; std::string button2_; std::function button1callback_; std::function button2callback_; }; std::vector modals; void SohModalWindow::DrawElement() { if (modals.size() > 0) { SohModal curModal = modals.at(0); if (!ImGui::IsPopupOpen(curModal.title_.c_str())) { ImGui::OpenPopup(curModal.title_.c_str()); } if (ImGui::BeginPopupModal(curModal.title_.c_str(), NULL, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoSavedSettings)) { ImGui::Text(curModal.message_.c_str()); if (ImGui::Button(curModal.button1_.c_str())) { if (curModal.button1callback_ != nullptr) { curModal.button1callback_(); } ImGui::CloseCurrentPopup(); modals.erase(modals.begin()); } ImGui::SameLine(); if (curModal.button2_ != "") { if (ImGui::Button(curModal.button2_.c_str())) { if (curModal.button2callback_ != nullptr) { curModal.button2callback_(); } ImGui::CloseCurrentPopup(); modals.erase(modals.begin()); } } } ImGui::EndPopup(); } } void SohModalWindow::RegisterPopup(std::string title, std::string message, std::string button1, std::string button2, std::function button1callback, std::function button2callback) { modals.push_back({ title, message, button1, button2, button1callback, button2callback }); }