diff --git a/.github/actions/canary-ndk/action.yml b/.github/actions/canary-ndk/action.yml deleted file mode 100644 index 6454ad5..0000000 --- a/.github/actions/canary-ndk/action.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: "Setup canary ndk" -description: "Sets up canary ndk" -outputs: - ndk-path: - value: ${{ steps.path.outputs.path }} - description: "Output path of the ndk" - cache-hit: - value: ${{ steps.cache.outputs.cache-hit }} - description: "Whether a cache hit occurred for the ndk" -runs: - using: "composite" - steps: - - name: NDK cache - id: cache - uses: actions/cache@v3 - with: - path: ${HOME}/android-ndk-r27-canary/ - key: ${{ runner.os }}-ndk-r27-canary - - - name: Download canary ndk - if: ${{ !steps.cache.outputs.cache-hit }} - env: - CANARY_URL: https://github.com/QuestPackageManager/ndk-canary-archive/releases/download/27.0.1/android-ndk-10883340-linux-x86_64.zip - run: wget ${CANARY_URL} -O ${HOME}/ndk.zip - shell: bash - - - name: Unzip ndk - if: ${{ !steps.cache.outputs.cache-hit }} - run: 7z x "${HOME}/ndk.zip" -o"${HOME}/" - shell: bash - - - name: Set output - id: path - shell: bash - run: echo "path=${HOME}/android-ndk-r27-canary" >> ${GITHUB_OUTPUT} \ No newline at end of file diff --git a/.github/workflows/build-ndk.yml b/.github/workflows/build-ndk.yml index dcd6605..a830b4c 100644 --- a/.github/workflows/build-ndk.yml +++ b/.github/workflows/build-ndk.yml @@ -5,6 +5,7 @@ on: push: branches: - 'master' + - 'dev' paths-ignore: - '**.yml' - '!.github/workflows/build-ndk.yml' @@ -38,14 +39,9 @@ jobs: - uses: seanmiddleditch/gha-setup-ninja@v3 - # Use canary NDK to avoid lesser known compile bugs - - name: Setup canary NDK - id: setup-ndk - uses: ./.github/actions/canary-ndk - - name: Create ndkpath.txt run: | - echo ${{ steps.setup-ndk.outputs.ndk-path }} > ${GITHUB_WORKSPACE}/ndkpath.txt + echo $ANDROID_NDK_HOME > ${GITHUB_WORKSPACE}/ndkpath.txt cat ${GITHUB_WORKSPACE}/ndkpath.txt # get version from pushed tag @@ -79,21 +75,21 @@ jobs: echo "NAME=${files[0]}" >> $GITHUB_OUTPUT - name: Upload non-debug artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: ${{ steps.libname.outputs.NAME }} path: ./build/${{ steps.libname.outputs.NAME }} if-no-files-found: error - name: Upload debug artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: debug_${{ steps.libname.outputs.NAME }} path: ./build/debug/${{ steps.libname.outputs.NAME }} if-no-files-found: error - name: Upload qmod artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: ${{env.qmodName}}.qmod path: ./${{ env.qmodName }}.qmod diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a44dcff..da567c6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -22,14 +22,9 @@ jobs: - uses: seanmiddleditch/gha-setup-ninja@v3 - # Use canary NDK to avoid lesser known compile bugs - - name: Setup canary NDK - id: setup-ndk - uses: ./.github/actions/canary-ndk - - name: Create ndkpath.txt run: | - echo ${{ steps.setup-ndk.outputs.ndk-path }} > ${GITHUB_WORKSPACE}/ndkpath.txt + echo $ANDROID_NDK_HOME > ${GITHUB_WORKSPACE}/ndkpath.txt cat ${GITHUB_WORKSPACE}/ndkpath.txt # get version from pushed tag diff --git a/.gitignore b/.gitignore index 2e76105..9d7352d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .vs/ +.cache/ # Prerequisites *.d diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e05481..25c265a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,12 @@ # include some defines automatically made by qpm include(qpm_defines.cmake) -include(${EXTERN_DIR}/includes/kaleb/shared/cmake/assets.cmake) -add_definitions(-DCP_SDK_BMBF) -add_definitions(-DPAPER_DISABLE_SOURCE_LOC) +cmake_minimum_required(VERSION 3.22) +project(${COMPILE_ID}) -# override mod id -set(MOD_ID "QBeatSaberPlus-GameTweaker") +# c++ standard +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED 20) # Enable link time optimization # In my experience, this can be highly unstable but it nets a huge size optimization and likely performance @@ -14,25 +14,18 @@ set(MOD_ID "QBeatSaberPlus-GameTweaker") # As always, test thoroughly # - Fern # set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) - -cmake_minimum_required(VERSION 3.21) -project(${COMPILE_ID}) - # export compile commands for significantly better intellisense set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -# c++ standard -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED 20) - # define that stores the actual source directory set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set(SHARED_DIR ${CMAKE_CURRENT_SOURCE_DIR}/shared) +# stop symbol leaking +#add_link_options(-Wl,--exclude-libs,ALL) # compile options used -add_compile_options(-frtti -fexceptions) -add_compile_options(-O3) +add_compile_options(-frtti -fPIE -fPIC -fexceptions -fdeclspec -fvisibility=hidden -Wno-extra-qualification -O3) # get git info execute_process(COMMAND git config user.name OUTPUT_VARIABLE GIT_USER) @@ -50,69 +43,72 @@ message(STATUS "GIT_BRANCH: ${GIT_BRANCH}") message(STATUS "GIT_COMMIT: 0x${GIT_COMMIT}") message(STATUS "GIT_MODIFIED: ${GIT_MODIFIED}") -# set git defines -add_compile_definitions(GIT_USER=\"${GIT_USER}\") -add_compile_definitions(GIT_BRANCH=\"${GIT_BRANCH}\") -add_compile_definitions(GIT_COMMIT=0x${GIT_COMMIT}) -add_compile_definitions(GIT_MODIFIED=${GIT_MODIFIED}) + +# Check for file presence and read current contents +set(GIT_INFO_H_PATH "${CMAKE_CURRENT_SOURCE_DIR}/include/git_info.h") +if(EXISTS "${GIT_INFO_H_PATH}") + file(READ "${GIT_INFO_H_PATH}" GIT_INFO_H_CURRENT) +else() + set(GIT_INFO_H_CURRENT "") +endif() + +# Define new git info content +set(GIT_INFO_H "#pragma once +#define GIT_USER \"${GIT_USER}\" +#define GIT_BRANCH \"${GIT_BRANCH}\" +#define GIT_COMMIT 0x${GIT_COMMIT} +#define GIT_MODIFIED ${GIT_MODIFIED} +") + +# Write git info to file if the contents have changed +if(NOT "${GIT_INFO_H}" STREQUAL "${GIT_INFO_H_CURRENT}") + file(WRITE "${GIT_INFO_H_PATH}" "${GIT_INFO_H}") +endif() + # compile definitions used add_compile_definitions(VERSION=\"${MOD_VERSION}\") add_compile_definitions(MOD_ID=\"${MOD_ID}\") +add_compile_definitions(UNITY_2021) +add_compile_definitions(CORDL_RUNTIME_FIELD_NULL_CHECKS) +add_compile_definitions(__USE_LARGEFILE64) + +# compile options used +add_compile_definitions(CP_SDK_BMBF) + +string(LENGTH "${CMAKE_CURRENT_LIST_DIR}/" FOLDER_LENGTH) +add_compile_definitions("PAPER_ROOT_FOLDER_LENGTH=${FOLDER_LENGTH}") # recursively get all src files -RECURSE_FILES(h_file_lista ${INCLUDE_DIR}/*.hpp) -RECURSE_FILES(h_file_listb ${SHARED_DIR}/*.hpp) -RECURSE_FILES(hpp_file_lista ${INCLUDE_DIR}/*.hpp) -RECURSE_FILES(hpp_file_listb ${SHARED_DIR}/*.hpp) -RECURSE_FILES(cpp_file_list ${SOURCE_DIR}/*.cpp) -RECURSE_FILES(c_file_list ${SOURCE_DIR}/*.c) +recurse_files(cpp_file_list ${SOURCE_DIR}/*.cpp) +recurse_files(c_file_list ${SOURCE_DIR}/*.c) + +recurse_files(inline_hook_c ${EXTERN_DIR}/includes/beatsaber-hook/shared/inline-hook/*.c) +recurse_files(inline_hook_cpp ${EXTERN_DIR}/includes/beatsaber-hook/shared/inline-hook/*.cpp) # add all src files to compile add_library( - ${COMPILE_ID} - SHARED - ${h_file_lista} - ${h_file_listb} - ${hpp_file_lista} - ${hpp_file_listb} - ${cpp_file_list} - ${c_file_list} + ${COMPILE_ID} SHARED ${cpp_file_list} ${c_file_list} ${inline_hook_c} ${inline_hook_cpp} ) -# Add any assets -#add_assets(assets_${COMPILE_ID} STATIC ${CMAKE_CURRENT_LIST_DIR}/assets ${INCLUDE_DIR}/assets.hpp) - -# get the vcpkg dir from env variables -if(EXISTS $ENV{VCPKG_ROOT}) - set(VCPKG_ROOT $ENV{VCPKG_ROOT}) -else() - MESSAGE(ERROR "Please define the environment variable VCPKG_ROOT with the root to your vcpkg install!") -endif() - -target_include_directories(${COMPILE_ID} PRIVATE .) - # add src dir as include dir target_include_directories(${COMPILE_ID} PRIVATE ${SOURCE_DIR}) # add include dir as include dir target_include_directories(${COMPILE_ID} PRIVATE ${INCLUDE_DIR}) # add shared dir as include dir target_include_directories(${COMPILE_ID} PUBLIC ${SHARED_DIR}) -# codegen includes -target_include_directories(${COMPILE_ID} PRIVATE ${EXTERN_DIR}/includes/${CODEGEN_ID}/include) # chatplex-sdk-bs includes target_include_directories(${COMPILE_ID} PRIVATE ${EXTERN_DIR}/includes/chatplex-sdk-bs/shared) -target_link_libraries(${COMPILE_ID} PRIVATE -llog) -#target_link_libraries(${COMPILE_ID} PRIVATE assets_${COMPILE_ID}) +target_link_libraries(${COMPILE_ID} PRIVATE -llog -lz) # add extern stuff like libs and other includes include(extern.cmake) add_custom_command(TARGET ${COMPILE_ID} POST_BUILD - COMMAND ${CMAKE_STRIP} -d --strip-all - "lib${COMPILE_ID}.so" -o "stripped_lib${COMPILE_ID}.so" - COMMENT "Strip debug symbols done on final binary.") + COMMAND ${CMAKE_STRIP} -g -S -d --strip-all + "lib${COMPILE_ID}.so" -o "stripped_lib${COMPILE_ID}.so" + COMMENT "Strip debug symbols done on final binary.") add_custom_command(TARGET ${COMPILE_ID} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory debug @@ -120,32 +116,32 @@ add_custom_command(TARGET ${COMPILE_ID} POST_BUILD ) add_custom_command(TARGET ${COMPILE_ID} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E rename lib${COMPILE_ID}.so debug/lib${COMPILE_ID}.so - COMMENT "Rename the lib to debug_ since it has debug symbols" - ) + COMMAND ${CMAKE_COMMAND} -E rename lib${COMPILE_ID}.so debug/lib${COMPILE_ID}.so + COMMENT "Rename the lib to debug_ since it has debug symbols" + ) -# strip debug symbols from the .so and all dependencies add_custom_command(TARGET ${COMPILE_ID} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E rename stripped_lib${COMPILE_ID}.so lib${COMPILE_ID}.so - COMMENT "Rename the stripped lib to regular" - ) - foreach(so_file ${so_list}) - cmake_path(GET so_file FILENAME file) + COMMAND ${CMAKE_COMMAND} -E rename stripped_lib${COMPILE_ID}.so lib${COMPILE_ID}.so + COMMENT "Rename the stripped lib to regular" + ) - add_custom_command(TARGET ${COMPILE_ID} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${so_file} debug/${file} - COMMENT "Copy so files for ndk stack" - ) +foreach(so_file ${so_list}) + cmake_path(GET so_file FILENAME file) + + add_custom_command(TARGET ${COMPILE_ID} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${so_file} debug/${file} + COMMENT "Copy so files for ndk stack" + ) - add_custom_command(TARGET ${COMPILE_ID} POST_BUILD - COMMAND ${CMAKE_STRIP} -g -S -d --strip-all ${so_file} -o ${file} - COMMENT "Strip debug symbols from the dependencies") - endforeach() + add_custom_command(TARGET ${COMPILE_ID} POST_BUILD + COMMAND ${CMAKE_STRIP} -g -S -d --strip-all ${so_file} -o ${file} + COMMENT "Strip debug symbols from the dependencies") +endforeach() - foreach(a_file ${a_list}) - cmake_path(GET a_file FILENAME file) +foreach(a_file ${a_list}) +cmake_path(GET a_file FILENAME file) - add_custom_command(TARGET ${COMPILE_ID} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${a_file} debug/${file} - COMMENT "Copy a files for ndk stack") - endforeach() +add_custom_command(TARGET ${COMPILE_ID} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${a_file} debug/${file} + COMMENT "Copy a files for ndk stack") +endforeach() diff --git a/include/git_info.h b/include/git_info.h new file mode 100644 index 0000000..8f5ee7b --- /dev/null +++ b/include/git_info.h @@ -0,0 +1,5 @@ +#pragma once +#define GIT_USER "HardCPP" +#define GIT_BRANCH "dev" +#define GIT_COMMIT 0xa983814 +#define GIT_MODIFIED 1 diff --git a/mod.json b/mod.json index f552b63..8f5380c 100644 --- a/mod.json +++ b/mod.json @@ -1,38 +1,42 @@ { + "$schema": "https://raw.githubusercontent.com/Lauriethefish/QuestPatcher.QMod/refs/heads/main/QuestPatcher.QMod/Resources/qmod.schema.json", "_QPVersion": "0.1.1", "name": "QBeatSaberPlus-GameTweaker", "id": "qbeatsaberplus-gametweaker", "modloader": "Scotland2", "author": "HardCPP", - "version": "6.3.2", + "version": "6.4.0", "packageId": "com.beatgames.beatsaber", - "packageVersion": "1.37.0_9064817954", + "packageVersion": "1.40.4_5283", "description": "Feel good!", "coverImage": "cover.png", "dependencies": [ { - "version": "^0.17.8", + "version": "^6.4.1", + "id": "beatsaber-hook", + "downloadIfMissing": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v6.4.1/beatsaber-hook.qmod" + }, + { + "version": "^0.18.2", "id": "custom-types", - "downloadIfMissing": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.17.10/CustomTypes.qmod" + "downloadIfMissing": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.18.2/CustomTypes.qmod" }, { - "version": "^3.6.3", - "id": "paper", - "downloadIfMissing": "https://github.com/Fernthedev/paperlog/releases/download/v3.6.4/paperlog.qmod" + "version": "^4.6.1", + "id": "paper2_scotland2", + "downloadIfMissing": "https://github.com/Fernthedev/paperlog/releases/download/v4.6.3/paper2_scotland2.qmod" }, { - "version": "^6.3.2", + "version": "^6.4.0", "id": "chatplex-sdk-bs", - "downloadIfMissing": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.3.2/ChatPlexSDK-BS.qmod" + "downloadIfMissing": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.4.0/ChatPlexSDK-BS.qmod" } ], - "modFiles": [], - "lateModFiles": [ + "modFiles": [ "libqbeatsaberplus-gametweaker.so" ], - "libraryFiles": [ - "libbeatsaber-hook_5_1_9.so" - ], + "lateModFiles": [], + "libraryFiles": [], "fileCopies": [], "copyExtensions": [] } \ No newline at end of file diff --git a/mod.template.json b/mod.template.json index 2547f03..5af37ad 100644 --- a/mod.template.json +++ b/mod.template.json @@ -7,11 +7,11 @@ "author": "HardCPP", "version": "${version}", "packageId": "com.beatgames.beatsaber", - "packageVersion": "1.37.0_9064817954", + "packageVersion": "1.40.4_5283", "description": "Feel good!", "coverImage": "cover.png", "dependencies": [], - "modFiles": [], + "modFiles": ["${binary}"], "libraryFiles": [], "fileCopies": [], "copyExtensions": [] diff --git a/qpm.json b/qpm.json index e7480de..07beaf9 100644 --- a/qpm.json +++ b/qpm.json @@ -1,11 +1,11 @@ { - "version": "0.1.0", + "version": "0.4.0", "sharedDir": "shared", "dependenciesDir": "extern", "info": { "name": "QBeatSaberPlus-GameTweaker", "id": "qbeatsaberplus-gametweaker", - "version": "6.3.2", + "version": "6.4.0", "url": "https://github.com/hardcpp/QBeatSaberPlus-GameTweaker", "additionalData": { "overrideSoName": "libqbeatsaberplus-gametweaker.so", @@ -35,27 +35,34 @@ "qpm qmod build", "pwsh ./createqmod.ps1 -clean" ] - } + }, + "ndk": "^27.2.12479018", + "qmodIncludeDirs": [ + "build", + "extern/libs" + ], + "qmodIncludeFiles": [], + "qmodOutput": "./QBeatSaberPlus-GameTweaker.qmod" }, "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^5.1.9", + "versionRange": "^6.4.1", "additionalData": {} }, { "id": "bs-cordl", - "versionRange": "^3700.*", + "versionRange": "^4004.0.0", "additionalData": {} }, { "id": "custom-types", - "versionRange": "^0.17.8", + "versionRange": "^0.18.2", "additionalData": {} }, { "id": "scotland2", - "versionRange": "^0.1.4", + "versionRange": "^0.1.6", "additionalData": { "includeQmod": false, "private": true @@ -63,12 +70,12 @@ }, { "id": "libil2cpp", - "versionRange": "^0.3.1", + "versionRange": "^0.4.0", "additionalData": {} }, { - "id": "paper", - "versionRange": "^3.6.3", + "id": "paper2_scotland2", + "versionRange": "^4.6.1", "additionalData": {} }, { @@ -78,7 +85,7 @@ }, { "id": "chatplex-sdk-bs", - "versionRange": "^6.3.2", + "versionRange": "^6.4.0", "additionalData": { "private": true } diff --git a/qpm.shared.json b/qpm.shared.json index c275c13..85974c6 100644 --- a/qpm.shared.json +++ b/qpm.shared.json @@ -1,12 +1,13 @@ { + "$schema": "https://raw.githubusercontent.com/QuestPackageManager/QPM.Package/refs/heads/main/qpm.shared.schema.json", "config": { - "version": "0.1.0", + "version": "0.4.0", "sharedDir": "shared", "dependenciesDir": "extern", "info": { "name": "QBeatSaberPlus-GameTweaker", "id": "qbeatsaberplus-gametweaker", - "version": "6.3.2", + "version": "6.4.0", "url": "https://github.com/hardcpp/QBeatSaberPlus-GameTweaker", "additionalData": { "overrideSoName": "libqbeatsaberplus-gametweaker.so", @@ -37,29 +38,33 @@ "pwsh ./createqmod.ps1 -clean" ] }, - "qmodIncludeDirs": [], + "ndk": "^27.2.12479018", + "qmodIncludeDirs": [ + "build", + "extern/libs" + ], "qmodIncludeFiles": [], - "qmodOutput": null + "qmodOutput": "./QBeatSaberPlus-GameTweaker.qmod" }, "dependencies": [ { "id": "beatsaber-hook", - "versionRange": "^5.1.9", + "versionRange": "^6.4.1", "additionalData": {} }, { "id": "bs-cordl", - "versionRange": "3700.*", + "versionRange": "^4004.0.0", "additionalData": {} }, { "id": "custom-types", - "versionRange": "^0.17.8", + "versionRange": "^0.18.2", "additionalData": {} }, { "id": "scotland2", - "versionRange": "^0.1.4", + "versionRange": "^0.1.6", "additionalData": { "includeQmod": false, "private": true @@ -67,12 +72,12 @@ }, { "id": "libil2cpp", - "versionRange": "^0.3.1", + "versionRange": "^0.4.0", "additionalData": {} }, { - "id": "paper", - "versionRange": "^3.6.3", + "id": "paper2_scotland2", + "versionRange": "^4.6.1", "additionalData": {} }, { @@ -82,7 +87,7 @@ }, { "id": "chatplex-sdk-bs", - "versionRange": "^6.3.2", + "versionRange": "^6.4.0", "additionalData": { "private": true } @@ -92,14 +97,13 @@ "restoredDependencies": [ { "dependency": { - "id": "paper", - "versionRange": "=3.6.4", + "id": "paper2_scotland2", + "versionRange": "=4.6.3", "additionalData": { - "soLink": "https://github.com/Fernthedev/paperlog/releases/download/v3.6.4/libpaperlog.so", - "debugSoLink": "https://github.com/Fernthedev/paperlog/releases/download/v3.6.4/debug_libpaperlog.so", - "overrideSoName": "libpaperlog.so", - "modLink": "https://github.com/Fernthedev/paperlog/releases/download/v3.6.4/paperlog.qmod", - "branchName": "version/v3_6_4", + "soLink": "https://github.com/Fernthedev/paperlog/releases/download/v4.6.3/libpaper2_scotland2.so", + "overrideSoName": "libpaper2_scotland2.so", + "modLink": "https://github.com/Fernthedev/paperlog/releases/download/v4.6.3/paper2_scotland2.qmod", + "branchName": "version/v4_6_3", "compileOptions": { "systemIncludes": [ "shared/utfcpp/source" @@ -108,44 +112,49 @@ "cmake": false } }, - "version": "3.6.4" + "version": "4.6.3" }, { "dependency": { "id": "libil2cpp", - "versionRange": "=0.3.2", + "versionRange": "=0.4.0", "additionalData": { "headersOnly": true, - "cmake": false + "compileOptions": { + "systemIncludes": [ + "il2cpp/external/baselib/Include", + "il2cpp/external/baselib/Platforms/Android/Include" + ] + } } }, - "version": "0.3.2" + "version": "0.4.0" }, { "dependency": { "id": "chatplex-sdk-bs", - "versionRange": "=6.3.2", + "versionRange": "=6.4.0", "additionalData": { - "soLink": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.3.2/libchatplex-sdk-bs.so", - "debugSoLink": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.3.2/debug_libchatplex-sdk-bs.so", + "soLink": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.4.0/libchatplex-sdk-bs.so", + "debugSoLink": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.4.0/debug_libchatplex-sdk-bs.so", "overrideSoName": "libchatplex-sdk-bs.so", - "modLink": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.3.2/ChatPlexSDK-BS.qmod", - "branchName": "version/v6_3_2", + "modLink": "https://github.com/hardcpp/QuestChatPlexSDK-BS/releases/download/v6.4.0/ChatPlexSDK-BS.qmod", + "branchName": "version/v6_4_0", "cmake": true } }, - "version": "6.3.2" + "version": "6.4.0" }, { "dependency": { "id": "custom-types", - "versionRange": "=0.17.10", + "versionRange": "=0.18.2", "additionalData": { - "soLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.17.10/libcustom-types.so", - "debugSoLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.17.10/debug_libcustom-types.so", + "soLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.18.2/libcustom-types.so", + "debugSoLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.18.2/debug_libcustom-types.so", "overrideSoName": "libcustom-types.so", - "modLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.17.10/CustomTypes.qmod", - "branchName": "version/v0_17_10", + "modLink": "https://github.com/QuestPackageManager/Il2CppQuestTypePatching/releases/download/v0.18.2/CustomTypes.qmod", + "branchName": "version/v0_18_2", "compileOptions": { "cppFlags": [ "-Wno-invalid-offsetof" @@ -154,15 +163,15 @@ "cmake": true } }, - "version": "0.17.10" + "version": "0.18.2" }, { "dependency": { "id": "bs-cordl", - "versionRange": "=3700.0.0", + "versionRange": "=4004.0.0", "additionalData": { "headersOnly": true, - "branchName": "version/v3700_0_0", + "branchName": "version/v4004_0_0", "compileOptions": { "includePaths": [ "include" @@ -172,46 +181,49 @@ "-DNEED_UNSAFE_CSHARP", "-fdeclspec", "-DUNITY_2021", - "-DHAS_CODEGEN" + "-DHAS_CODEGEN", + "-Wno-invalid-offsetof" ] } } }, - "version": "3700.0.0" + "version": "4004.0.0" }, { "dependency": { "id": "beatsaber-hook", - "versionRange": "=5.1.9", + "versionRange": "=6.4.1", "additionalData": { - "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v5.1.9/libbeatsaber-hook_5_1_9.so", - "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v5.1.9/debug_libbeatsaber-hook_5_1_9.so", - "branchName": "version/v5_1_9", + "soLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v6.4.1/libbeatsaber-hook.so", + "debugSoLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v6.4.1/debug_libbeatsaber-hook.so", + "overrideSoName": "libbeatsaber-hook.so", + "modLink": "https://github.com/QuestPackageManager/beatsaber-hook/releases/download/v6.4.1/beatsaber-hook.qmod", + "branchName": "version/v6_4_1", "cmake": true } }, - "version": "5.1.9" + "version": "6.4.1" }, { "dependency": { "id": "scotland2", - "versionRange": "=0.1.4", + "versionRange": "=0.1.6", "additionalData": { - "soLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.4/libsl2.so", - "debugSoLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.4/debug_libsl2.so", + "soLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.6/libsl2.so", + "debugSoLink": "https://github.com/sc2ad/scotland2/releases/download/v0.1.6/debug_libsl2.so", "overrideSoName": "libsl2.so", - "branchName": "version/v0_1_4" + "branchName": "version/v0_1_6" } }, - "version": "0.1.4" + "version": "0.1.6" }, { "dependency": { "id": "fmt", - "versionRange": "=10.0.0", + "versionRange": "=11.0.2", "additionalData": { "headersOnly": true, - "branchName": "version/v10_0_0", + "branchName": "version/v11_0_2", "compileOptions": { "systemIncludes": [ "fmt/include/" @@ -222,7 +234,7 @@ } } }, - "version": "10.0.0" + "version": "11.0.2" }, { "dependency": { diff --git a/src/GameTweaker.cpp b/src/GameTweaker.cpp index b09a68f..8a9047e 100644 --- a/src/GameTweaker.cpp +++ b/src/GameTweaker.cpp @@ -163,10 +163,10 @@ namespace QBeatSaberPlus_GameTweaker { Patches::Lights::PLightsPatches::SetFromConfig(); Patches::PNoteDebrisSpawner::SetFromConfig(); - if (GTConfig::Instance()->Environment->RemoveMusicBandLogo && p_LevelData && p_LevelData->Data && p_LevelData->Data->___environmentInfo) + if (GTConfig::Instance()->Environment->RemoveMusicBandLogo && p_LevelData && p_LevelData->Data && p_LevelData->Data->targetEnvironmentInfo) { - if ( p_LevelData->Data->___environmentInfo->____serializedName == "BTSEnvironment" - || p_LevelData->Data->___environmentInfo->____serializedName == "LinkinParkEnvironment") + if ( p_LevelData->Data->targetEnvironmentInfo->____serializedName == "BTSEnvironment" + || p_LevelData->Data->targetEnvironmentInfo->____serializedName == "LinkinParkEnvironment") { GameObject::New_ctor("BeatSaberPlus_MusicBandLogoRemover")->AddComponent(); } diff --git a/src/Managers/CustomMenuLightManager.cpp b/src/Managers/CustomMenuLightManager.cpp index 4037f60..4f487cc 100644 --- a/src/Managers/CustomMenuLightManager.cpp +++ b/src/Managers/CustomMenuLightManager.cpp @@ -108,6 +108,7 @@ namespace QBeatSaberPlus_GameTweaker::Managers { { m_MenuLightsManager->____preset = m_DefaultPreset.Ptr(); m_MenuLightsManager->set_enabled(true); + m_MenuLightsManager->RefreshColors(); } } catch (const std::exception&) @@ -127,6 +128,7 @@ namespace QBeatSaberPlus_GameTweaker::Managers { { m_MenuLightsManager->____preset = m_DefaultPreset.Ptr(); m_MenuLightsManager->set_enabled(true); + m_MenuLightsManager->RefreshColors(); } } catch (const std::exception&) @@ -146,6 +148,7 @@ namespace QBeatSaberPlus_GameTweaker::Managers { { m_MenuLightsManager->____preset = m_LevelClearedPreset.Ptr(); m_MenuLightsManager->set_enabled(true); + m_MenuLightsManager->RefreshColors(); } } catch (const std::exception&) @@ -165,6 +168,7 @@ namespace QBeatSaberPlus_GameTweaker::Managers { { m_MenuLightsManager->____preset = m_LevelFailedPreset.Ptr(); m_MenuLightsManager->set_enabled(true); + m_MenuLightsManager->RefreshColors(); } } catch (const std::exception&) diff --git a/src/Patches/PLevelListTableCell.cpp b/src/Patches/PLevelListTableCell.cpp index f4cd7c5..d9dbc10 100644 --- a/src/Patches/PLevelListTableCell.cpp +++ b/src/Patches/PLevelListTableCell.cpp @@ -21,9 +21,9 @@ namespace QBeatSaberPlus_GameTweaker::Patches { LevelListTableCell_SetDataFromLevelAsync, &LevelListTableCell::SetDataFromLevelAsync, void, LevelListTableCell* __Instance, - BeatmapLevel* __a, bool __b, bool __c, bool __d) + BeatmapLevel* __a, bool __b, bool __c, bool __d, bool __e) { - LevelListTableCell_SetDataFromLevelAsync(__Instance, __a, __b, __c, __d); + LevelListTableCell_SetDataFromLevelAsync(__Instance, __a, __b, __c, __d, __e); auto l_Config = GTConfig::Instance(); if (l_Config->Enabled && l_Config->LevelSelection->HighlightEnabled) diff --git a/src/Patches/PMenuLightsManager.cpp b/src/Patches/PMenuLightsManager.cpp index fa669c3..afa7556 100644 --- a/src/Patches/PMenuLightsManager.cpp +++ b/src/Patches/PMenuLightsManager.cpp @@ -14,9 +14,9 @@ namespace QBeatSaberPlus_GameTweaker::Patches { MenuLightsManager_SetColorPreset, &MenuLightsManager::SetColorPreset, void, MenuLightsManager* __Instance, - MenuLightsPresetSO* __a, bool __b) + MenuLightsPresetSO* __a, bool __b, float __c) { - MenuLightsManager_SetColorPreset(__Instance, Managers::CustomMenuLightManager::GetPresetForPatch(__a), __b); + MenuLightsManager_SetColorPreset(__Instance, Managers::CustomMenuLightManager::GetPresetForPatch(__a), __b, __c); } } ///< namespace QBeatSaberPlus_GameTweaker::Patches \ No newline at end of file diff --git a/src/Patches/PMusicPackPromoBanner.cpp b/src/Patches/PMusicPackPromoBanner.cpp index 2414315..b7634a9 100644 --- a/src/Patches/PMusicPackPromoBanner.cpp +++ b/src/Patches/PMusicPackPromoBanner.cpp @@ -38,7 +38,7 @@ namespace QBeatSaberPlus_GameTweaker::Patches { MusicPackPromoBanner_Setup, &MusicPackPromoBanner::Setup, void, MusicPackPromoBanner* __Instance, - __DlcPromoPanelModel__PromoInfo* __a, bool __b) + DlcPromoPanelModel_PromoInfo* __a, bool __b) { MusicPackPromoBanner_Setup(__Instance, __a, __b); diff --git a/src/main.cpp b/src/main.cpp index b62ecdf..627b4ff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,3 +1,4 @@ +#include "git_info.h" #include "Logger.hpp" #include "GameTweaker.hpp" @@ -10,7 +11,7 @@ static modloader::ModInfo s_ModInfo{"QBeatSaberPlus-GameTweaker", VERSION, GIT_COMMIT}; // Called at the early stages of game loading -extern "C" void setup(CModInfo* p_ModInfo) +extern "C" __attribute__((visibility("default"))) void setup(CModInfo* p_ModInfo) { p_ModInfo->id = s_ModInfo.id.c_str(); p_ModInfo->version = s_ModInfo.version.c_str(); @@ -30,7 +31,7 @@ extern "C" void setup(CModInfo* p_ModInfo) //////////////////////////////////////////////////////////////////////////// // Called later on in the game loading - a good time to install function hooks -extern "C" void late_load() +extern "C" __attribute__((visibility("default"))) void late_load() { il2cpp_functions::Init();