62 lines
2.1 KiB
Bash
62 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
# Build the ONI Agent Bridge Mod
|
|
# Requires: mono-complete (for mcs compiler)
|
|
# Requires: ONI game installed to get reference DLLs
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
MOD_DIR="$PROJECT_DIR/mod"
|
|
OUTPUT_DIR="$MOD_DIR/bin"
|
|
|
|
ONI_PATH="${ONI_PATH:-}"
|
|
if [ -z "$ONI_PATH" ]; then
|
|
for candidate in \
|
|
"$HOME/.steam/steam/steamapps/common/OxygenNotIncluded" \
|
|
"$HOME/.local/share/Steam/steamapps/common/OxygenNotIncluded" \
|
|
"/c/Program Files (x86)/Steam/steamapps/common/OxygenNotIncluded" \
|
|
"/mnt/c/Program Files (x86)/Steam/steamapps/common/OxygenNotIncluded"; do
|
|
MANAGED="$candidate/OxygenNotIncluded_Data/Managed"
|
|
if [ -d "$MANAGED" ]; then
|
|
ONI_PATH="$MANAGED"
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ -z "$ONI_PATH" ]; then
|
|
echo "[!] ONI installation not found."
|
|
echo " Set ONI_PATH to the Managed directory:"
|
|
echo ' export ONI_PATH="/path/to/OxygenNotIncluded_Data/Managed"'
|
|
exit 1
|
|
fi
|
|
|
|
echo "[Build] ONI: $ONI_PATH"
|
|
|
|
for dll in "$ONI_PATH/Assembly-CSharp.dll" "$ONI_PATH/UnityEngine.dll" \
|
|
"$ONI_PATH/UnityEngine.CoreModule.dll" "$ONI_PATH/0Harmony.dll"; do
|
|
if [ ! -f "$dll" ]; then echo "[!] Missing: $dll"; exit 1; fi
|
|
done
|
|
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
REFS=""
|
|
for dll in "$ONI_PATH/Assembly-CSharp.dll" "$ONI_PATH/UnityEngine.dll" \
|
|
"$ONI_PATH/UnityEngine.CoreModule.dll" "$ONI_PATH/0Harmony.dll"; do
|
|
REFS="$REFS -reference:\"$dll\""
|
|
done
|
|
if [ -f "$ONI_PATH/Assembly-CSharp-firstpass.dll" ]; then
|
|
REFS="$REFS -reference:\"$ONI_PATH/Assembly-CSharp-firstpass.dll\""
|
|
fi
|
|
|
|
echo "[Build] Compiling..."
|
|
eval mcs -target:library -out:"$OUTPUT_DIR/ONIAgentBridge.dll" $REFS -recurse:"$MOD_DIR/*.cs"
|
|
|
|
echo "[Build] SUCCESS: $OUTPUT_DIR/ONIAgentBridge.dll"
|
|
echo ""
|
|
echo "Install (Linux):"
|
|
echo " MOD_DIR=~/.config/unity3d/Klei/OxygenNot\\ Included/mods/local/ONIAgentBridge"
|
|
echo " mkdir -p \"\$MOD_DIR\""
|
|
echo " cp $OUTPUT_DIR/ONIAgentBridge.dll $MOD_DIR/mod_info.yaml \"\$MOD_DIR/\""
|
|
echo " # Then enable mod in ONI > Mods > ONI Agent Bridge"
|