From 938e3aa31644f28113c543ed39c17894acd54147 Mon Sep 17 00:00:00 2001 From: esiayo <41133734+vapidinfinity@users.noreply.github.com> Date: Wed, 15 Jan 2025 22:13:50 +0800 Subject: [PATCH] refactor: backend game launch logic + dxvk hud implementation --- .../Legendary/LegendaryInterface.swift | 17 ++++++++++++----- Mythic/Utilities/Local/LocalGames.swift | 14 +++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Mythic/Utilities/Legendary/LegendaryInterface.swift b/Mythic/Utilities/Legendary/LegendaryInterface.swift index 337619b..8f4909b 100644 --- a/Mythic/Utilities/Legendary/LegendaryInterface.swift +++ b/Mythic/Utilities/Legendary/LegendaryInterface.swift @@ -404,19 +404,26 @@ final class Legendary { needsUpdate(game: game) ? "--skip-version-check" : nil ] .compactMap { $0 } - var environmentVariables = ["MTL_HUD_ENABLED": container.settings.metalHUD ? "1" : "0"] + var environmentVariables: [String: String] = .init() if case .windows = game.platform { arguments += ["--wine", Engine.directory.appending(path: "wine/bin/wine64").path] + // required for launching w/ legendary environmentVariables["WINEPREFIX"] = container.url.path(percentEncoded: false) - environmentVariables["WINEMSYNC"] = "\(container.settings.msync.numericalValue)" - environmentVariables["ROSETTA_ADVERTISE_AVX"] = "\(container.settings.avx2.numericalValue)" + + environmentVariables["WINEMSYNC"] = container.settings.msync.numericalValue.description + environmentVariables["ROSETTA_ADVERTISE_AVX"] = container.settings.avx2.numericalValue.description if container.settings.dxvk { environmentVariables["WINEDLLOVERRIDES"] = "d3d10core,d3d11=n,b" + environmentVariables["DXVK_ASYNC"] = container.settings.dxvkAsync.numericalValue.description + } - if container.settings.dxvkAsync { - environmentVariables["DXVK_ASYNC"] = "1" + if container.settings.metalHUD { + if container.settings.dxvk { + environmentVariables["DXVK_HUD"] = "full" + } else { + environmentVariables["MTL_HUD_ENABLED"] = "1" } } } diff --git a/Mythic/Utilities/Local/LocalGames.swift b/Mythic/Utilities/Local/LocalGames.swift index c695994..9d03fea 100644 --- a/Mythic/Utilities/Local/LocalGames.swift +++ b/Mythic/Utilities/Local/LocalGames.swift @@ -79,16 +79,20 @@ final class LocalGames { let container = try Wine.getContainerObject(url: containerURL) var environmentVariables = [ - "MTL_HUD_ENABLED": "\(container.settings.metalHUD.numericalValue)", - "WINEMSYNC": "\(container.settings.msync.numericalValue)", - "ROSETTA_ADVERTISE_AVX": "\(container.settings.avx2.numericalValue)" + "WINEMSYNC": container.settings.msync.numericalValue.description, + "ROSETTA_ADVERTISE_AVX": container.settings.avx2.numericalValue.description ] if container.settings.dxvk { environmentVariables["WINEDLLOVERRIDES"] = "d3d10core,d3d11=n,b" + environmentVariables["DXVK_ASYNC"] = container.settings.dxvkAsync.numericalValue.description + } - if container.settings.dxvkAsync { - environmentVariables["DXVK_ASYNC"] = "1" + if container.settings.metalHUD { + if container.settings.dxvk { + environmentVariables["DXVK_HUD"] = "full" + } else { + environmentVariables["MTL_HUD_ENABLED"] = "1" } }