change how randomizer is included

This commit is contained in:
gymnast86
2026-04-09 00:29:16 -07:00
parent ab7d3a5e03
commit 0ebab8bad3
3 changed files with 96 additions and 21 deletions
+3 -2
View File
@@ -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
+74
View File
@@ -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
)
@@ -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)
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