From 19b8f7ede0c741d219171b226d5c8caee1be6667 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sat, 22 Aug 2026 23:59:59 -0600 Subject: [PATCH 1/2] Link dusklight_mod_api to generator --- mods/randomizer/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/randomizer/CMakeLists.txt b/mods/randomizer/CMakeLists.txt index 220e91bf5d..3f015d862a 100644 --- a/mods/randomizer/CMakeLists.txt +++ b/mods/randomizer/CMakeLists.txt @@ -134,7 +134,8 @@ target_compile_definitions(randomizer PRIVATE # standalone randomizer generator for testing add_executable(randomizer_generator ${CMAKE_CURRENT_SOURCE_DIR}/generator/generator_only.cpp ${RANDOMIZER_GENERATOR_SOURCES}) -target_link_libraries(randomizer_generator PRIVATE yaml-cpp::yaml-cpp base64pp fmt::fmt randomizer_embeds) +target_link_libraries(randomizer_generator PRIVATE + dusklight_mod_api yaml-cpp::yaml-cpp base64pp fmt::fmt randomizer_embeds) target_compile_definitions(randomizer_generator PRIVATE RANDOMIZER_VERSION="1.0.0" RANDO_DATA_PATH="generator/data/" @@ -144,7 +145,8 @@ target_compile_definitions(randomizer_generator PRIVATE # standalone tests add_executable(randomizer_generator_tests ${CMAKE_CURRENT_SOURCE_DIR}/generator/test/test.cpp ${RANDOMIZER_GENERATOR_SOURCES}) -target_link_libraries(randomizer_generator_tests PRIVATE yaml-cpp::yaml-cpp base64pp fmt::fmt randomizer_embeds) +target_link_libraries(randomizer_generator_tests PRIVATE + dusklight_mod_api yaml-cpp::yaml-cpp base64pp fmt::fmt randomizer_embeds) target_compile_definitions(randomizer_generator_tests PRIVATE RANDOMIZER_VERSION="1.0.0" RANDO_DATA_PATH="generator/data/" From 2885c7d9d83c7cafd04242fd48c166e8883ef579 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Sat, 22 Aug 2026 23:01:09 -0700 Subject: [PATCH 2/2] disable OK button while seed is generating --- mods/randomizer/src/ui/rando_config.cpp | 12 ++++++------ mods/randomizer/src/ui/rando_seed_generation.cpp | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/mods/randomizer/src/ui/rando_config.cpp b/mods/randomizer/src/ui/rando_config.cpp index 0f4adb0855..478b8babff 100644 --- a/mods/randomizer/src/ui/rando_config.cpp +++ b/mods/randomizer/src/ui/rando_config.cpp @@ -392,8 +392,8 @@ void SaveNewRandomizerPreset(const std::string& presetName, bool overwriteExisti // again but force overwrite the existing preset if (std::filesystem::exists(presetFilepath) && !overwriteExisting) { UiDialogAction actions[] = { - {"No", onOverwriteDialogNo, nullptr, false}, - {"Yes", onOverwriteDialogYes, nullptr, false}, + {sizeof(UiDialogAction), "No", onOverwriteDialogNo, nullptr, false, nullptr}, + {sizeof(UiDialogAction), "Yes", onOverwriteDialogYes, nullptr, false, nullptr}, }; actions[1].user_data = (void*)presetName.data(); @@ -476,8 +476,8 @@ void onPresetDialogCancel(ModContext* ctx, UiDialogHandle dialog, void* user_dat void buildPresetSaveDialog(ModContext* ctx, void* user_data) { UiDialogAction actions[] = { - {"Save", onPresetDialogSave, nullptr, false}, - {"Cancel", onPresetDialogCancel, nullptr, false}, + {sizeof(UiDialogAction), "Save", onPresetDialogSave, nullptr, false, nullptr}, + {sizeof(UiDialogAction), "Cancel", onPresetDialogCancel, nullptr, false, nullptr}, }; auto buildPaneFn = [](ModContext* ctx, UiElementHandle pane, void* user_data, ModError* out_error) { @@ -516,7 +516,7 @@ void onPresetLoad(ModContext* ctx, void* user_data) { std::vector presetList{}; void buildPresetLoadDialog(ModContext* ctx, void* user_data) { UiDialogAction actions[] = { - {"Cancel", onPresetDialogLoadCancel, nullptr, false}, + {sizeof(UiDialogAction), "Cancel", onPresetDialogLoadCancel, nullptr, false, nullptr}, }; auto buildPaneFn = [](ModContext* ctx, UiElementHandle pane, void* user_data, ModError* out_error) { @@ -577,7 +577,7 @@ bool isSeedDeleteDisabled(ModContext* ctx, void* user_data) { void buildSeedDeleteDialog(ModContext* ctx, void* user_data) { UiDialogAction actions[] = { - {"Cancel", onSeedDeleteCancel, nullptr, false}, + {sizeof(UiDialogAction), "Cancel", onSeedDeleteCancel, nullptr, false, nullptr}, }; auto buildPaneFn = [](ModContext* ctx, UiElementHandle pane, void* user_data, ModError* out_error) { diff --git a/mods/randomizer/src/ui/rando_seed_generation.cpp b/mods/randomizer/src/ui/rando_seed_generation.cpp index 271eceaf54..eb222b72d3 100644 --- a/mods/randomizer/src/ui/rando_seed_generation.cpp +++ b/mods/randomizer/src/ui/rando_seed_generation.cpp @@ -49,10 +49,15 @@ static ModResult buildDialog() { desc.variant = UI_DIALOG_NORMAL; UiDialogAction action = { + .struct_size = sizeof(UiDialogAction), .label = "OK", .on_pressed = OnDialogActionOK, .user_data = nullptr, .keep_open = false, + .is_disabled = [](ModContext*, void*) { + // disable button while seed is generating + return seedGenStatus.load() == SeedGenerateStatus::Generating; + } }; desc.actions = &action; desc.action_count = 1;