[cli/utils] Add Cyberpunk 2077 language pack hack

This commit is contained in:
derrod 2020-12-08 06:43:43 +01:00
parent 1640a47d6a
commit 80153d07b5
2 changed files with 47 additions and 0 deletions

View file

@ -24,6 +24,7 @@ from legendary.models.game import SaveGameStatus, VerifyResult
from legendary.utils.cli import get_boolean_choice from legendary.utils.cli import get_boolean_choice
from legendary.utils.custom_parser import AliasedSubParsersAction from legendary.utils.custom_parser import AliasedSubParsersAction
from legendary.utils.lfs import validate_files from legendary.utils.lfs import validate_files
from legendary.utils.game_workarounds import cyber_prompt_2077
# todo custom formatter for cli logger (clean info, highlighted error/warning) # todo custom formatter for cli logger (clean info, highlighted error/warning)
logging.basicConfig( logging.basicConfig(
@ -577,6 +578,16 @@ class LegendaryCLI:
else: else:
logger.info(f'Using existing repair file: {repair_file}') logger.info(f'Using existing repair file: {repair_file}')
# Workaround for Cyberpunk 2077 preload
if game.app_name.startswith('Ginger'):
if not self.core.is_installed(game.app_name):
args.install_tag = cyber_prompt_2077()
if game.app_name not in self.core.lgd.config:
self.core.lgd.config[game.app_name] = dict()
self.core.lgd.config.set(game.app_name, 'install_tags', ','.join(args.install_tag))
else:
args.install_tag = self.core.lgd.config.get(game.app_name, 'install_tags', fallback='').split(',')
logger.info('Preparing download...') logger.info('Preparing download...')
# todo use status queue to print progress from CLI # todo use status queue to print progress from CLI
# This has become a little ridiculous hasn't it? # This has become a little ridiculous hasn't it?

View file

@ -8,3 +8,39 @@ _optimize_default = {
def is_opt_enabled(app_name): def is_opt_enabled(app_name):
return app_name.lower() in _optimize_default return app_name.lower() in _optimize_default
_cyberpunk_sdl = {
'de': {'tags': ['voice_de_de'], 'name': 'Deutsch'},
'es': {'tags': ['voice_es_es'], 'name': 'español (España)'},
'fr': {'tags': ['voice_fr_fr'], 'name': 'français'},
'it': {'tags': ['voice_it_it'], 'name': 'italiano'},
'ja': {'tags': ['voice_ja_jp'], 'name': '日本語'},
'ko': {'tags': ['voice_ko_kr'], 'name': '한국어'},
'pl': {'tags': ['voice_pl_pl'], 'name': 'polski'},
'pt': {'tags': ['voice_pt_br'], 'name': 'português brasileiro'},
'ru': {'tags': ['voice_ru_ru'], 'name': 'русский'},
'zh': {'tags': ['voice_zh_cn'], 'name': '中文(中国)'}
}
def cyber_prompt_2077():
print('You are about to install Cyberpunk 2077, this game supports selective downloads for langauge packs.')
print('The following language packs are available:')
for tag, info in _cyberpunk_sdl.items():
print(' *', tag, '-', info['name'])
print('Please enter a comma-separated list of language packs to install (leave blank for english only)')
choices = input('Additional languages [e.g. de,fr]: ')
if not choices:
return ['']
tags = ['']
for c in choices.split(','):
c = c.strip()
if c in _cyberpunk_sdl:
tags.extend(_cyberpunk_sdl[c]['tags'])
else:
print('Invalid tag:', c)
return tags