From 83adafff82eddbe0db9ec77c1d753097d2f1b098 Mon Sep 17 00:00:00 2001 From: CraftyBoss Date: Sat, 6 Jun 2026 19:39:23 -0700 Subject: [PATCH] basic setup for archipelago support started For now we'll be using APCpp, seems to be good enough for what we need to do for this. might eventually roll my own library if things end up being too weird/complicated to integrate properly. --- files.cmake | 1 + src/dusk/imgui/ImGuiArchipelagoDebug.cpp | 27 ++++++++++++++++++++++++ src/dusk/imgui/ImGuiArchipelagoDebug.h | 13 ++++++++++++ src/dusk/imgui/ImGuiConsole.cpp | 2 ++ src/dusk/imgui/ImGuiConsole.hpp | 2 ++ src/dusk/randomizer/randomizer.cmake | 13 +++++++++--- 6 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/dusk/imgui/ImGuiArchipelagoDebug.cpp create mode 100644 src/dusk/imgui/ImGuiArchipelagoDebug.h diff --git a/files.cmake b/files.cmake index 012a35a03d..bf84a1df55 100644 --- a/files.cmake +++ b/files.cmake @@ -1459,6 +1459,7 @@ set(DUSK_FILES src/dusk/imgui/ImGuiMenuTools.hpp src/dusk/imgui/ImGuiMenuRandomizer.cpp src/dusk/imgui/ImGuiMenuRandomizer.hpp + src/dusk/imgui/ImGuiArchipelagoDebug.cpp src/dusk/imgui/ImGuiActorSpawner.cpp src/dusk/imgui/ImGuiProcessOverlay.cpp src/dusk/imgui/ImGuiCameraOverlay.cpp diff --git a/src/dusk/imgui/ImGuiArchipelagoDebug.cpp b/src/dusk/imgui/ImGuiArchipelagoDebug.cpp new file mode 100644 index 0000000000..ac1239e71c --- /dev/null +++ b/src/dusk/imgui/ImGuiArchipelagoDebug.cpp @@ -0,0 +1,27 @@ +#include + +#include "imgui.h" + +#include "Archipelago.h" + +namespace dusk { +ImGuiArchipelagoDebug::ImGuiArchipelagoDebug() { + +} + +void ImGuiArchipelagoDebug::drawMenuItem() { + if (ImGui::BeginMenu("Randomizer")) { + ImGui::Checkbox("Archipelago Window", &m_drawWindow); + ImGui::EndMenu(); + } +} + +void ImGuiArchipelagoDebug::drawWindow() { + if (!m_drawWindow) + return; + + ImGui::Begin("Archipelago Debug"); + + ImGui::End(); +} +} \ No newline at end of file diff --git a/src/dusk/imgui/ImGuiArchipelagoDebug.h b/src/dusk/imgui/ImGuiArchipelagoDebug.h new file mode 100644 index 0000000000..1c156be979 --- /dev/null +++ b/src/dusk/imgui/ImGuiArchipelagoDebug.h @@ -0,0 +1,13 @@ +#pragma once + +namespace dusk { +class ImGuiArchipelagoDebug { +private: + bool m_drawWindow = false; +public: + ImGuiArchipelagoDebug(); + + void drawMenuItem(); + void drawWindow(); +}; +} \ No newline at end of file diff --git a/src/dusk/imgui/ImGuiConsole.cpp b/src/dusk/imgui/ImGuiConsole.cpp index c65879c493..e6d44e1d83 100644 --- a/src/dusk/imgui/ImGuiConsole.cpp +++ b/src/dusk/imgui/ImGuiConsole.cpp @@ -278,6 +278,7 @@ namespace dusk { ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.0f, 0.0f, 0.0f, 0.0f)); if (showMenu && ImGui::BeginMainMenuBar()) { m_menuRandomizer.draw(); + m_menuArchipelago.drawMenuItem(); m_menuTools.draw(); ImGui::EndMainMenuBar(); @@ -375,6 +376,7 @@ namespace dusk { m_menuRandomizer.windowRandoGeneration(); m_menuRandomizer.windowRandoTracker(); + m_menuArchipelago.drawWindow(); } void ImGuiConsole::PostDraw() { diff --git a/src/dusk/imgui/ImGuiConsole.hpp b/src/dusk/imgui/ImGuiConsole.hpp index 3001b58070..5fe823d1cd 100644 --- a/src/dusk/imgui/ImGuiConsole.hpp +++ b/src/dusk/imgui/ImGuiConsole.hpp @@ -11,6 +11,7 @@ #include "ImGuiMenuRandomizer.hpp" #include "dusk/main.h" #include "imgui.h" +#include "ImGuiArchipelagoDebug.h" union SDL_Event; struct ImGuiWindow; @@ -34,6 +35,7 @@ private: ImVec2 m_dragScrollLastMousePos = {}; ImGuiMenuRandomizer m_menuRandomizer; + ImGuiArchipelagoDebug m_menuArchipelago; // Keep always last ImGuiMenuTools m_menuTools; diff --git a/src/dusk/randomizer/randomizer.cmake b/src/dusk/randomizer/randomizer.cmake index a6296edece..cd5e353ce8 100644 --- a/src/dusk/randomizer/randomizer.cmake +++ b/src/dusk/randomizer/randomizer.cmake @@ -52,12 +52,19 @@ FetchContent_Declare( GIT_TAG fdbae3f ) -FetchContent_MakeAvailable(yaml-cpp base64pp battery-embed) +message(STATUS "randomizer: Fetching APCpp") +FetchContent_Declare( + APCpp + GIT_REPOSITORY https://github.com/N00byKing/APCpp.git + GIT_TAG 9194179 +) + +FetchContent_MakeAvailable(yaml-cpp base64pp battery-embed APCpp) string(LENGTH "${CMAKE_SOURCE_DIR}/" SOURCE_PATH_SIZE) set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} SOURCE_PATH_SIZE=${SOURCE_PATH_SIZE}) -set(GAME_LIBS ${GAME_LIBS} yaml-cpp::yaml-cpp base64pp) +set(GAME_LIBS ${GAME_LIBS} yaml-cpp::yaml-cpp base64pp APCpp) file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/randomizer") # Put data files together for easier manipulation -# file(COPY "${CMAKE_SOURCE_DIR}/src/dusk/randomizer/data/" DESTINATION "${CMAKE_BINARY_DIR}/randomizer/data/" REGEX "^.*example.*$" EXCLUDE) # World, macros, and location info +# file(COPY "${CMAKE_SOURCE_DIR}/src/dusk/randomizer/data/" DESTINATION "${CMAKE_BINARY_DIR}/randomizer/data/" REGEX "^.*example.*$" EXCLUDE) # World, macros, and location info \ No newline at end of file