4 #include "imgui_impl_sdl.h"
5 #include "imgui_impl_sdlrenderer.h"
14 #include "../services/AudioMixer.hxx"
17 namespace fs = std::filesystem;
30 ImVec2 windowSize(500, 500);
31 ImVec2 screenSize = ui::GetIO().DisplaySize;
35 const auto &layout = uiManager.getLayouts()[
"LoadDialogButtons"];
36 ui::SetNextWindowPos(ImVec2((screenSize.x - windowSize.x) / 2, (screenSize.y - windowSize.y) / 2));
37 ui::SetNextWindowSize(windowSize);
39 constexpr
float btnSide = 40;
40 const ImVec2 buttonSize(windowSize.x - btnSide * 3, btnSide);
41 const ImVec2 buttonOffset((windowSize.x - buttonSize.x) / 2, buttonSize.y / 2);
42 const ImVec2 widgetSize((windowSize.x / 2) - 8, 20);
44 ui::PushFont(layout.font);
45 ui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
46 ui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0, 0));
47 ui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, buttonOffset.y));
50 ui::BeginCt(
"LoadDialog", &open,
51 ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar |
52 ImGuiWindowFlags_NoScrollWithMouse);
55 ui::PushItemWidth(widgetSize.x);
58 auto textWidth = ImGui::CalcTextSize(
"Load city").x;
59 ImGui::SetCursorPosX((windowSize.x - textWidth) * 0.5f);
60 ui::LabelText(
"##loadcitylbl",
"Load city");
62 ImGui::BeginChild(
"##loadbuttons", {0.f, windowSize.y * 0.6f},
false, ImGuiWindowFlags_NoTitleBar);
65 for (
const auto &entry : fs::directory_iterator(path))
67 if (!fs::is_regular_file(entry) || entry.path().extension() !=
".cts")
70 ui::Dummy({btnSide / 2.f, 0.f});
72 if (ui::ButtonCt(entry.path().filename().string().c_str(), buttonSize))
79 ui::Dummy({btnSide / 2.f, 0.f});
81 if (ui::ButtonCt(
"X", {btnSide, btnSide}))
91 ImVec2 btnSize(windowSize.x / 4, btnSide);
93 ui::SetCursorPosY(windowSize.y - btnSize.y * 2);
94 ui::Dummy({(windowSize.x - btnSize.x) / 2.f, 0.f});
96 if (ui::ButtonCt(
"OK", btnSize))