From 0ebab8bad30b6ee6fb12ed5129749fe5942421ce Mon Sep 17 00:00:00 2001 From: gymnast86 Date: Thu, 9 Apr 2026 00:29:16 -0700 Subject: [PATCH] change how randomizer is included --- CMakeLists.txt | 5 +- files.cmake | 74 +++++++++++++++++++ .../{CMakeLists.txt => randomizer.cmake} | 38 +++++----- 3 files changed, 96 insertions(+), 21 deletions(-) rename src/dusk/randomizer/{CMakeLists.txt => randomizer.cmake} (54%) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6e92c17f8..e1c32cdd4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,6 @@ set(AURORA_ENABLE_CARD ON CACHE BOOL "Enable CARD API support" FORCE) add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(libs/freeverb) -add_subdirectory(src/dusk/randomizer) option(DUSK_BUILD_WARNINGS "If off, compiler warnings will be suppressed") option(DUSK_SELECTED_OPT "If on, selected parts of the project will be compiled with optimizations on Debug, intending to make the game run at 30 FPS. Note for MSVC: you will need to remove '/RTC1' from your debug flags in CMake.") @@ -121,6 +120,8 @@ if (DUSK_MOVIE_SUPPORT_REAL) list(APPEND GAME_COMPILE_DEFS MOVIE_SUPPORT=1) endif () +include(src/dusk/randomizer/randomizer.cmake) + # game_debug is for game code files that we know work when compiled with DEBUG=1 # Of course, if building a release build, this distinction is irrelevant add_library(game_debug OBJECT ${JSYSTEM_DEBUG_FILES} ${SSYSTEM_FILES} @@ -161,7 +162,7 @@ target_link_libraries(game PUBLIC ${GAME_LIBS}) add_executable(dusk src/dusk/main.cpp) target_compile_definitions(dusk PRIVATE TARGET_PC AVOID_UB=1 VERSION=0) target_include_directories(dusk PRIVATE include) -target_link_libraries(dusk PRIVATE game aurora::main freeverb randomizer) +target_link_libraries(dusk PRIVATE game aurora::main freeverb) add_custom_command(TARGET dusk POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory diff --git a/files.cmake b/files.cmake index e9149a1777..9f48a109fe 100644 --- a/files.cmake +++ b/files.cmake @@ -1372,4 +1372,78 @@ set(DUSK_FILES src/dusk/OSContext.cpp src/dusk/OSThread.cpp src/dusk/OSMutex.cpp + # Randomizer files + src/dusk/randomizer/logic/area.cpp + src/dusk/randomizer/logic/area.hpp + src/dusk/randomizer/logic/dungeon.cpp + src/dusk/randomizer/logic/dungeon.hpp + src/dusk/randomizer/logic/entrance.cpp + src/dusk/randomizer/logic/entrance.hpp + src/dusk/randomizer/logic/entrance_shuffle.cpp + src/dusk/randomizer/logic/entrance_shuffle.hpp + src/dusk/randomizer/logic/fill.cpp + src/dusk/randomizer/logic/fill.hpp + src/dusk/randomizer/logic/flatten/bits.cpp + src/dusk/randomizer/logic/flatten/bits.hpp + src/dusk/randomizer/logic/flatten/flatten.cpp + src/dusk/randomizer/logic/flatten/flatten.hpp + src/dusk/randomizer/logic/flatten/simplify_algebraic.cpp + src/dusk/randomizer/logic/flatten/simplify_algebraic.hpp + src/dusk/randomizer/logic/generate.cpp + src/dusk/randomizer/logic/generate.hpp + src/dusk/randomizer/logic/item.cpp + src/dusk/randomizer/logic/item.hpp + src/dusk/randomizer/logic/item_pool.cpp + src/dusk/randomizer/logic/item_pool.hpp + src/dusk/randomizer/logic/location.cpp + src/dusk/randomizer/logic/location.hpp + src/dusk/randomizer/logic/plandomizer.cpp + src/dusk/randomizer/logic/plandomizer.hpp + src/dusk/randomizer/logic/requirement.cpp + src/dusk/randomizer/logic/requirement.hpp + src/dusk/randomizer/logic/search.cpp + src/dusk/randomizer/logic/search.hpp + src/dusk/randomizer/logic/spoiler_log.cpp + src/dusk/randomizer/logic/spoiler_log.hpp + src/dusk/randomizer/logic/world.cpp + src/dusk/randomizer/logic/world.hpp + src/dusk/randomizer/randomizer.cpp + src/dusk/randomizer/randomizer.hpp + src/dusk/randomizer/seedgen/config.cpp + src/dusk/randomizer/seedgen/config.hpp + src/dusk/randomizer/seedgen/packed_bits.hpp + src/dusk/randomizer/seedgen/seed.cpp + src/dusk/randomizer/seedgen/seed.hpp + src/dusk/randomizer/seedgen/settings.cpp + src/dusk/randomizer/seedgen/settings.hpp + src/dusk/randomizer/test/test.cpp + src/dusk/randomizer/test/test.hpp + src/dusk/randomizer/utility/color.cpp + src/dusk/randomizer/utility/color.hpp + src/dusk/randomizer/utility/common.cpp + src/dusk/randomizer/utility/common.hpp + src/dusk/randomizer/utility/container.hpp + src/dusk/randomizer/utility/endian.cpp + src/dusk/randomizer/utility/endian.hpp + src/dusk/randomizer/utility/exception.hpp + src/dusk/randomizer/utility/file.cpp + src/dusk/randomizer/utility/file.hpp + src/dusk/randomizer/utility/general.hpp + src/dusk/randomizer/utility/log.cpp + src/dusk/randomizer/utility/log.hpp + src/dusk/randomizer/utility/math.hpp + src/dusk/randomizer/utility/path.cpp + src/dusk/randomizer/utility/path.hpp + src/dusk/randomizer/utility/platform.cpp + src/dusk/randomizer/utility/platform.hpp + src/dusk/randomizer/utility/random.cpp + src/dusk/randomizer/utility/random.hpp + src/dusk/randomizer/utility/string.cpp + src/dusk/randomizer/utility/string.hpp + src/dusk/randomizer/utility/text.cpp + src/dusk/randomizer/utility/text.hpp + src/dusk/randomizer/utility/thread_local.hpp + src/dusk/randomizer/utility/time.cpp + src/dusk/randomizer/utility/time.hpp + src/dusk/randomizer/utility/yaml.hpp ) diff --git a/src/dusk/randomizer/CMakeLists.txt b/src/dusk/randomizer/randomizer.cmake similarity index 54% rename from src/dusk/randomizer/CMakeLists.txt rename to src/dusk/randomizer/randomizer.cmake index 45106f8ae3..1beec3bdb0 100644 --- a/src/dusk/randomizer/CMakeLists.txt +++ b/src/dusk/randomizer/randomizer.cmake @@ -3,51 +3,45 @@ cmake_minimum_required(VERSION 3.16) set(RANDOMIZER_ONLY "0" CACHE STRING "Runs only the randomizer generator") set(RANDO_SAVE_PATH "${CMAKE_BINARY_DIR}/randomizer/") -add_compile_definitions(RANDO_SAVE_PATH="${RANDO_SAVE_PATH}" +set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} RANDO_SAVE_PATH="${RANDO_SAVE_PATH}" LOGS_PATH="${RANDO_SAVE_PATH}logs/" DATA_PATH="${RANDO_SAVE_PATH}data/") -if(WRITE_ERROR_LOG) +if(RANDO_ERROR_LOG) message("Error Log will be saved") - add_compile_definitions(WRITE_ERROR_LOG) + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} RANDO_ERROR_LOG) endif() if(ENABLE_TIMING) message("Some events will be timed") - add_compile_definitions(ENABLE_TIMING) + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} ENABLE_TIMING) endif() if(DRY_RUN) message("Game patching will be skipped") - add_compile_definitions(DRY_RUN) + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} DRY_RUN) endif() if(RANDO_DEBUG) - add_compile_definitions(RANDO_DEBUG) + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} RANDO_DEBUG) endif() if(LOGIC_TESTS) message("Configuring for Logic Tests") - add_compile_definitions(LOGIC_TESTS) + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} LOGIC_TESTS) if(TEST_COUNT) message("Test Count: " ${TEST_COUNT}) - add_compile_definitions(TEST_COUNT=${TEST_COUNT}) + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} TEST_COUNT=${TEST_COUNT}) endif() - add_compile_definitions(SETTINGS_PATH="${RANDO_SAVE_PATH}randomizer_settings.yaml.test" PREFERENCES_PATH="${RANDO_SAVE_PATH}randomizer_preferences.yaml.test") + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} SETTINGS_PATH="${RANDO_SAVE_PATH}randomizer_settings.yaml.test" PREFERENCES_PATH="${RANDO_SAVE_PATH}randomizer_preferences.yaml.test") else() - add_compile_definitions(SETTINGS_PATH="${RANDO_SAVE_PATH}randomizer_settings.yaml" PREFERENCES_PATH="${RANDO_SAVE_PATH}randomizer_preferences.yaml") + set(GAME_COMPILE_DEFS ${GAME_COMPILE_DEFS} SETTINGS_PATH="${RANDO_SAVE_PATH}randomizer_settings.yaml" PREFERENCES_PATH="${RANDO_SAVE_PATH}randomizer_preferences.yaml") endif() -string(LENGTH "${CMAKE_SOURCE_DIR}/" SOURCE_PATH_SIZE) -add_compile_definitions(SOURCE_PATH_SIZE=${SOURCE_PATH_SIZE}) - -# Put data files together for easier manipulation -file(COPY "./data/" DESTINATION "${CMAKE_BINARY_DIR}/randomizer/data/" REGEX "^.*example.*$" EXCLUDE) # World, macros, and location info - message(STATUS "randomizer: Fetching yaml-cpp") FetchContent_Declare( yaml-cpp @@ -72,6 +66,12 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(zlib-ng) -file(GLOB_RECURSE CODE_SOURCES CONFIGURE_DEPENDS "*.cpp" "*.hpp") -add_library(randomizer OBJECT ${CODE_SOURCES}) -target_link_libraries(randomizer yaml-cpp::yaml-cpp zlib base64pp) \ No newline at end of file + +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 zlib base64pp) + +# 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 + +