mirror of
https://github.com/derrod/legendary.git
synced 2024-12-22 17:55:27 +00:00
[core/utils] Add automatic exe overrides to workarounds
This commit is contained in:
parent
b7f4a9f45a
commit
a3bc07e15a
|
@ -38,7 +38,7 @@ from legendary.utils.crossover import *
|
||||||
from legendary.utils.egl_crypt import decrypt_epic_data
|
from legendary.utils.egl_crypt import decrypt_epic_data
|
||||||
from legendary.utils.env import is_windows_mac_or_pyi
|
from legendary.utils.env import is_windows_mac_or_pyi
|
||||||
from legendary.utils.eos import EOSOverlayApp, query_registry_entries
|
from legendary.utils.eos import EOSOverlayApp, query_registry_entries
|
||||||
from legendary.utils.game_workarounds import is_opt_enabled, update_workarounds
|
from legendary.utils.game_workarounds import is_opt_enabled, update_workarounds, get_exe_override
|
||||||
from legendary.utils.savegame_helper import SaveGameHelper
|
from legendary.utils.savegame_helper import SaveGameHelper
|
||||||
from legendary.utils.selective_dl import games as sdl_games
|
from legendary.utils.selective_dl import games as sdl_games
|
||||||
from legendary.utils.manifests import combine_manifests
|
from legendary.utils.manifests import combine_manifests
|
||||||
|
@ -1432,10 +1432,17 @@ class LegendaryCore:
|
||||||
|
|
||||||
if file_install_tag is None:
|
if file_install_tag is None:
|
||||||
file_install_tag = []
|
file_install_tag = []
|
||||||
|
|
||||||
|
# Override exe at an install level to avoid breaking existing config overrides
|
||||||
|
executable = new_manifest.meta.launch_exe
|
||||||
|
if exe_override := get_exe_override(app_name=game.app_name):
|
||||||
|
self.log.info(f'Launch exe will be changed from "{executable}" to "{exe_override}" for compatibility')
|
||||||
|
executable = exe_override
|
||||||
|
|
||||||
igame = InstalledGame(app_name=game.app_name, title=game.app_title,
|
igame = InstalledGame(app_name=game.app_name, title=game.app_title,
|
||||||
version=new_manifest.meta.build_version, prereq_info=prereq,
|
version=new_manifest.meta.build_version, prereq_info=prereq,
|
||||||
manifest_path=override_manifest, base_urls=base_urls,
|
manifest_path=override_manifest, base_urls=base_urls,
|
||||||
install_path=install_path, executable=new_manifest.meta.launch_exe,
|
install_path=install_path, executable=executable,
|
||||||
launch_parameters=new_manifest.meta.launch_command,
|
launch_parameters=new_manifest.meta.launch_command,
|
||||||
can_run_offline=offline == 'true', requires_ot=ot == 'true',
|
can_run_offline=offline == 'true', requires_ot=ot == 'true',
|
||||||
is_dlc=base_game is not None, install_size=anlres.install_size,
|
is_dlc=base_game is not None, install_size=anlres.install_size,
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
|
from sys import platform
|
||||||
|
|
||||||
# games where the download order optimizations are enabled by default
|
# games where the download order optimizations are enabled by default
|
||||||
# a set() of versions can be specified, empty set means all versions.
|
# a set() of versions can be specified, empty set means all versions.
|
||||||
_optimize_default = {
|
_optimize_default = {
|
||||||
|
@ -11,6 +13,15 @@ _optimize_default = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Some games use launchers that don't work with Legendary, these are overriden here
|
||||||
|
_exe_overrides = {
|
||||||
|
'kinglet': {
|
||||||
|
'darwin': 'Base/Binaries/Win64EOS/CivilizationVI.exe',
|
||||||
|
'linux': 'Base/Binaries/Win64EOS/CivilizationVI.exe',
|
||||||
|
'win32': 'LaunchPad/LaunchPad.exe'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def is_opt_enabled(app_name, version):
|
def is_opt_enabled(app_name, version):
|
||||||
if (versions := _optimize_default.get(app_name.lower())) is not None:
|
if (versions := _optimize_default.get(app_name.lower())) is not None:
|
||||||
|
@ -19,8 +30,15 @@ def is_opt_enabled(app_name, version):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def get_exe_override(app_name):
|
||||||
|
return _exe_overrides.get(app_name.lower(), {}).get(platform, None)
|
||||||
|
|
||||||
|
|
||||||
def update_workarounds(api_data):
|
def update_workarounds(api_data):
|
||||||
if 'reorder_optimization' in api_data:
|
if 'reorder_optimization' in api_data:
|
||||||
_optimize_default.clear()
|
_optimize_default.clear()
|
||||||
_optimize_default.update(api_data['reorder_optimization'])
|
_optimize_default.update(api_data['reorder_optimization'])
|
||||||
|
if 'executable_override' in api_data:
|
||||||
|
_exe_overrides.clear()
|
||||||
|
_exe_overrides.update(api_data['executable_override'])
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue