summaryrefslogtreecommitdiff
path: root/defaults/assets/fgmod.sh
diff options
context:
space:
mode:
Diffstat (limited to 'defaults/assets/fgmod.sh')
-rwxr-xr-xdefaults/assets/fgmod.sh27
1 files changed, 19 insertions, 8 deletions
diff --git a/defaults/assets/fgmod.sh b/defaults/assets/fgmod.sh
index 7aa62bb..9864ca1 100755
--- a/defaults/assets/fgmod.sh
+++ b/defaults/assets/fgmod.sh
@@ -24,10 +24,11 @@ error_exit() {
bundle_root="${HOME}/fgmod"
managed_dir_name="optiscaler-managed"
manifest_name="manifest.env"
-proxy_name="${OPTISCALER_PROXY:-${DLL:-winmm}}"
+default_proxy="winmm"
+proxy_name="${OPTISCALER_PROXY:-${DLL:-}}"
proxy_name="${proxy_name%.dll}"
-proxy_dll="${proxy_name}.dll"
-backup_dll="${proxy_name}-original.dll"
+proxy_dll=""
+backup_dll=""
support_files=(
"libxess.dll"
@@ -44,11 +45,6 @@ support_files=(
"fakenvapi.ini"
)
-case "$proxy_name" in
- winmm|dxgi|version|dbghelp|winhttp|wininet|d3d12) ;;
- *) error_exit "Unsupported OPTISCALER_PROXY '$proxy_name'." ;;
-esac
-
[[ -d "$bundle_root" ]] || error_exit "OptiScaler runtime not installed at $bundle_root"
[[ -n "${STEAM_COMPAT_DATA_PATH:-}" ]] || error_exit "STEAM_COMPAT_DATA_PATH is required. Use this wrapper from a Steam/Proton launch option."
[[ $# -ge 1 ]] || error_exit "Usage: $0 program [program_arguments...]"
@@ -85,12 +81,26 @@ cleanup_stage_files() {
mkdir -p "$system32_path" "$managed_root" "$managed_plugins"
existing_proxy=""
+preferred_proxy=""
if [[ -f "$manifest_path" ]]; then
# shellcheck disable=SC1090
source "$manifest_path"
existing_proxy="${MANAGED_PROXY:-}"
+ preferred_proxy="${PREFERRED_PROXY:-}"
+fi
+
+if [[ -z "$proxy_name" ]]; then
+ proxy_name="${preferred_proxy:-$default_proxy}"
fi
+case "$proxy_name" in
+ winmm|dxgi|version|dbghelp|winhttp|wininet|d3d12) ;;
+ *) error_exit "Unsupported OPTISCALER_PROXY '$proxy_name'." ;;
+esac
+
+proxy_dll="${proxy_name}.dll"
+backup_dll="${proxy_name}-original.dll"
+
if [[ -n "$existing_proxy" && "$existing_proxy" != "$proxy_name" ]]; then
log "Switching managed proxy from $existing_proxy to $proxy_name"
cleanup_stage_files "$existing_proxy"
@@ -149,6 +159,7 @@ fi
cat > "$manifest_path" <<EOF
MANAGED_PROXY="$proxy_name"
+PREFERRED_PROXY="$preferred_proxy"
BUNDLE_ROOT="$bundle_root"
BUNDLE_VERSION="$runtime_version"
SYSTEM32_PATH="$system32_path"