diff --git a/.gitignore b/.gitignore
index b8763f9..765d9a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,9 @@
Docs/_site/*
Docs/api/*
+# Local symlink/folder for automations
+/Game
+
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
@@ -354,8 +357,7 @@ ASALocalRun/
# Local History for Visual Studio
.localhistory/
-# BeatPulse healthcheck temp database
-healthchecksdb
+/
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
@@ -366,4 +368,3 @@ MigrationBackup/
# Fody - auto-generated XML schema
FodyWeavers.xsd
-/Resonite
diff --git a/Directory.Build.props b/Directory.Build.props
index 5271db1..0d36ae3 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -12,11 +12,8 @@
true
-
- $(MSBuildThisFileDirectory)Resonite
- C:\Program Files (x86)\Steam\steamapps\common\Resonite
- $(HOME)/.steam/steam/steamapps/common/Resonite
- D:/Files/Games/Resonite/app
+
+ $(MSBuildThisFileDirectory)Game
diff --git a/MonkeyLoader/MonkeyLoader.csproj b/MonkeyLoader/MonkeyLoader.csproj
index 79ea556..6d27e7d 100644
--- a/MonkeyLoader/MonkeyLoader.csproj
+++ b/MonkeyLoader/MonkeyLoader.csproj
@@ -27,7 +27,8 @@
-
+
@@ -46,31 +47,83 @@
-
-
+
+
-
-
+
+
+
+
+
+
+ $(BaseOutputPath)zip-creation
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+ True
+
+
+ False
+
+
+ True
+
+
+ True
+
+ False
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+ True
+
+
+ True
+
$(PkgZio)\lib\netstandard2.0\Zio.dll
+ True
+
+
+
+
+
+
+
+
+
diff --git a/MonkeyLoader/vendor/.doorstop_version b/MonkeyLoader/vendor/.doorstop_version
new file mode 100644
index 0000000..99eba4d
--- /dev/null
+++ b/MonkeyLoader/vendor/.doorstop_version
@@ -0,0 +1 @@
+4.1.0
\ No newline at end of file
diff --git a/MonkeyLoader/vendor/doorstop_config.ini b/MonkeyLoader/vendor/doorstop_config.ini
new file mode 100644
index 0000000..00212a3
--- /dev/null
+++ b/MonkeyLoader/vendor/doorstop_config.ini
@@ -0,0 +1,45 @@
+# General options for Unity Doorstop
+[General]
+
+# Enable Doorstop?
+enabled=true
+
+# Path to the assembly to load and execute
+# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
+target_assembly=MonkeyLoader/MonkeyLoader.dll
+
+# If true, Unity's output log is redirected to \output_log.txt
+redirect_output_log=false
+
+# If enabled, DOORSTOP_DISABLE env var value is ignored
+# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
+ignore_disable_switch=false
+
+
+# Options specific to running under Unity Mono runtime
+[UnityMono]
+
+# Overrides default Mono DLL search path
+# Sometimes it is needed to instruct Mono to seek its assemblies from a different path
+# (e.g. mscorlib is stripped in original game)
+# This option causes Mono to seek mscorlib and core libraries from a different folder before Managed
+# Original Managed folder is added as a secondary folder in the search path
+dll_search_path_override=
+
+# If true, Mono debugger server will be enabled
+debug_enabled=false
+
+# When debug_enabled is true, specifies the address to use for the debugger server
+debug_address=127.0.0.1:10000
+
+# If true and debug_enabled is true, Mono debugger server will suspend the game execution until a debugger is attached
+debug_suspend=false
+
+# Options sepcific to running under Il2Cpp runtime
+[Il2Cpp]
+
+# Path to coreclr.dll that contains the CoreCLR runtime
+coreclr_path=
+
+# Path to the directory containing the managed core libraries for CoreCLR (mscorlib, System, etc.)
+corlib_dir=
diff --git a/MonkeyLoader/vendor/libdoorstop.so b/MonkeyLoader/vendor/libdoorstop.so
new file mode 100644
index 0000000..9f95b03
Binary files /dev/null and b/MonkeyLoader/vendor/libdoorstop.so differ
diff --git a/MonkeyLoader/vendor/run_monkeyloader.sh b/MonkeyLoader/vendor/run_monkeyloader.sh
new file mode 100644
index 0000000..9055ac1
--- /dev/null
+++ b/MonkeyLoader/vendor/run_monkeyloader.sh
@@ -0,0 +1,263 @@
+#!/bin/sh
+# Doorstop start script
+#
+# Run the script to start the game with Doorstop enabled
+#
+# There are two ways to use this script
+#
+# 1. Via CLI: Run ./run.sh [doorstop arguments] [game arguments]
+# 2. Via config: edit the options below and run ./run.sh without any arguments
+
+# 0 is false, 1 is true
+
+# LINUX: name of Unity executable
+# MACOS: name of the .app directory
+executable_name="Resonite.x86_64"
+
+# All of the below can be overriden with command line args
+
+# General Config Options
+
+# Enable Doorstop?
+enabled="1"
+
+# Path to the assembly to load and execute
+# NOTE: The entrypoint must be of format `static void Doorstop.Entrypoint.Start()`
+target_assembly="MonkeyLoader/MonkeyLoader.dll"
+
+# If enabled, DOORSTOP_DISABLE env var value is ignored
+# USE THIS ONLY WHEN ASKED TO OR YOU KNOW WHAT THIS MEANS
+ignore_disable_switch="0"
+
+# Mono Options
+
+# Overrides default Mono DLL search path
+# Sometimes it is needed to instruct Mono to seek its assemblies from a different path
+# (e.g. mscorlib is stripped in original game)
+# This option causes Mono to seek mscorlib and core libraries from a different folder before Managed
+# Original Managed folder is added as a secondary folder in the search path
+dll_search_path_override=""
+
+# If 1, Mono debugger server will be enabled
+debug_enable="0"
+
+# When debug_enabled is 1, specifies the address to use for the debugger server
+debug_address="127.0.0.1:10000"
+
+# If 1 and debug_enabled is 1, Mono debugger server will suspend the game execution until a debugger is attached
+debug_suspend="0"
+
+# CoreCLR options (IL2CPP)
+
+# Path to coreclr shared library WITHOUT THE EXTENSION that contains the CoreCLR runtime
+coreclr_path=""
+
+# Path to the directory containing the managed core libraries for CoreCLR (mscorlib, System, etc.)
+corlib_dir=""
+
+################################################################################
+# Everything past this point is the actual script
+
+# Special case: program is launched via Steam
+# In that case rerun the script via their bootstrapper to ensure Steam overlay works
+if [ "$2" = "SteamLaunch" ]; then
+ steam="$1 $2 $3 $4 $0 $5"
+ shift 5
+ $steam "$@"
+ exit
+fi
+
+# Handle first param being executable name
+if [ -x "$1" ] ; then
+ executable_name="$1"
+ echo "Target executable: $1"
+ shift
+fi
+
+if [ -z "${executable_name}" ] || [ ! -x "${executable_name}" ]; then
+ echo "Please set executable_name to a valid name in a text editor or as the first command line parameter"
+ exit 1
+fi
+
+# Use POSIX-compatible way to get the directory of the executable
+a="/$0"; a=${a%/*}; a=${a#/}; a=${a:-.}; BASEDIR=$(cd "$a" || exit; pwd -P)
+
+arch=""
+executable_path=""
+lib_extension=""
+
+# Set executable path and the extension to use for the libdoorstop shared object
+os_type="$(uname -s)"
+case ${os_type} in
+ Linux*)
+ executable_path="${executable_name}"
+ # Handle relative paths
+ if ! echo "$executable_path" | grep "^/.*$"; then
+ executable_path="${BASEDIR}/${executable_path}"
+ fi
+ lib_extension="so"
+ ;;
+ Darwin*)
+ real_executable_name="${executable_name}"
+
+ # Handle relative directories
+ if ! echo "$real_executable_name" | grep "^/.*$"; then
+ real_executable_name="${BASEDIR}/${real_executable_name}"
+ fi
+
+ # If we're not even an actual executable, check .app Info for actual executable
+ if ! echo "$real_executable_name" | grep "^.*\.app/Contents/MacOS/.*"; then
+ # Add .app to the end if not given
+ if ! echo "$real_executable_name" | grep "^.*\.app$"; then
+ real_executable_name="${real_executable_name}.app"
+ fi
+ inner_executable_name=$(defaults read "${real_executable_name}/Contents/Info" CFBundleExecutable)
+ executable_path="${real_executable_name}/Contents/MacOS/${inner_executable_name}"
+ else
+ executable_path="${executable_name}"
+ fi
+ lib_extension="dylib"
+ ;;
+ *)
+ # alright whos running games on freebsd
+ echo "Unknown operating system ($(uname -s))"
+ echo "Make an issue at https://github.com/NeighTools/UnityDoorstop"
+ exit 1
+ ;;
+esac
+
+abs_path() {
+ echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
+}
+
+_readlink() {
+ # relative links with readlink (without -f) do not preserve the path info
+ ab_path="$(abs_path "$1")"
+ link="$(readlink "${ab_path}")"
+ case $link in
+ /*);;
+ *) link="$(dirname "$ab_path")/$link";;
+ esac
+ echo "$link"
+}
+
+
+resolve_executable_path () {
+ e_path="$(abs_path "$1")"
+
+ while [ -L "${e_path}" ]; do
+ e_path=$(_readlink "${e_path}");
+ done
+ echo "${e_path}"
+}
+
+# Get absolute path of executable and show to user
+executable_path=$(resolve_executable_path "${executable_path}")
+echo "${executable_path}"
+
+# Figure out the arch of the executable with file
+file_out="$(LD_PRELOAD="" file -b "${executable_path}")"
+case "${file_out}" in
+ *64-bit*)
+ arch="x64"
+ ;;
+ *32-bit*)
+ arch="x86"
+ ;;
+ *)
+ echo "The executable \"${executable_path}\" is not compiled for x86 or x64 (might be ARM?)"
+ echo "If you think this is a mistake (or would like to encourage support for other architectures)"
+ echo "Please make an issue at https://github.com/NeighTools/UnityDoorstop"
+ echo "Got: ${file_out}"
+ exit 1
+ ;;
+esac
+
+# Helper to convert common boolean strings into just 0 and 1
+doorstop_bool() {
+ case "$1" in
+ TRUE|true|t|T|1|Y|y|yes)
+ echo "1"
+ ;;
+ FALSE|false|f|F|0|N|n|no)
+ echo "0"
+ ;;
+ esac
+}
+
+# Read from command line
+while :; do
+ case "$1" in
+ --doorstop_enabled)
+ enabled="$(doorstop_bool "$2")"
+ shift
+ ;;
+ --doorstop_target_assembly)
+ target_assembly="$2"
+ shift
+ ;;
+ --doorstop-mono-dll-search-path-override)
+ dll_search_path_override="$2"
+ shift
+ ;;
+ --doorstop-mono-debug-enabled)
+ debug_enable="$(doorstop_bool "$2")"
+ shift
+ ;;
+ --doorstop-mono-debug-suspend)
+ debug_suspend="$(doorstop_bool "$2")"
+ shift
+ ;;
+ --doorstop-mono-debug-address)
+ debug_address="$2"
+ shift
+ ;;
+ --doorstop-clr-runtime-coreclr-path)
+ coreclr_path="$2"
+ shift
+ ;;
+ --doorstop-clr-corlib-dir)
+ corlib_dir="$2"
+ shift
+ ;;
+ *)
+ if [ -z "$1" ]; then
+ break
+ fi
+ rest_args="$rest_args $1"
+ ;;
+ esac
+ shift
+done
+
+# Move variables to environment
+export DOORSTOP_ENABLED="$enabled"
+export DOORSTOP_TARGET_ASSEMBLY="$target_assembly"
+export DOORSTOP_IGNORE_DISABLED_ENV="$ignore_disable_switch"
+export DOORSTOP_MONO_DLL_SEARCH_PATH_OVERRIDE="$dll_search_path_override"
+export DOORSTOP_MONO_DEBUG_ENABLED="$debug_enable"
+export DOORSTOP_MONO_DEBUG_ADDRESS="$debug_address"
+export DOORSTOP_MONO_DEBUG_SUSPEND="$debug_suspend"
+export DOORSTOP_CLR_RUNTIME_CORECLR_PATH="$coreclr_path.$lib_extension"
+export DOORSTOP_CLR_CORLIB_DIR="$corlib_dir"
+
+# Final setup
+doorstop_directory="${BASEDIR}/"
+doorstop_name="libdoorstop.${lib_extension}"
+
+export LD_LIBRARY_PATH="${doorstop_directory}:${corlib_dir}:${LD_LIBRARY_PATH}"
+if [ -z "$LD_PRELOAD" ]; then
+ export LD_PRELOAD="${doorstop_name}"
+else
+ export LD_PRELOAD="${doorstop_name}:${LD_PRELOAD}"
+fi
+
+export DYLD_LIBRARY_PATH="${doorstop_directory}:${DYLD_LIBRARY_PATH}"
+if [ -z "$DYLD_INSERT_LIBRARIES" ]; then
+ export DYLD_INSERT_LIBRARIES="${doorstop_name}"
+else
+ export DYLD_INSERT_LIBRARIES="${doorstop_name}:${DYLD_INSERT_LIBRARIES}"
+fi
+
+# shellcheck disable=SC2086
+exec "$executable_path" $rest_args
diff --git a/MonkeyLoader/vendor/winhttp.dll b/MonkeyLoader/vendor/winhttp.dll
new file mode 100644
index 0000000..f67865e
Binary files /dev/null and b/MonkeyLoader/vendor/winhttp.dll differ