LttP: fix patching crash if old always_apply adjuster settings were applied
This commit is contained in:
parent
e9f8b1ed28
commit
c9f217943e
|
@ -44,7 +44,7 @@ class ArgumentDefaultsHelpFormatter(argparse.RawTextHelpFormatter):
|
|||
return textwrap.dedent(action.help)
|
||||
|
||||
|
||||
def main():
|
||||
def get_argparser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
|
||||
|
||||
parser.add_argument('rom', nargs="?", default='AP_LttP.sfc', help='Path to an ALttP rom to adjust.')
|
||||
|
@ -85,9 +85,6 @@ def main():
|
|||
parser.add_argument('--ow_palettes', default='default',
|
||||
choices=['default', 'random', 'blackout', 'puke', 'classic', 'grayscale', 'negative', 'dizzy',
|
||||
'sick'])
|
||||
# parser.add_argument('--link_palettes', default='default',
|
||||
# choices=['default', 'random', 'blackout', 'puke', 'classic', 'grayscale', 'negative', 'dizzy',
|
||||
# 'sick'])
|
||||
parser.add_argument('--shield_palettes', default='default',
|
||||
choices=['default', 'random', 'blackout', 'puke', 'classic', 'grayscale', 'negative', 'dizzy',
|
||||
'sick'])
|
||||
|
@ -115,6 +112,11 @@ def main():
|
|||
''')
|
||||
parser.add_argument('--names', default='', type=str)
|
||||
parser.add_argument('--update_sprites', action='store_true', help='Update Sprite Database, then exit.')
|
||||
return parser
|
||||
|
||||
|
||||
def main():
|
||||
parser = get_argparser()
|
||||
args = parser.parse_args()
|
||||
args.music = not args.disablemusic
|
||||
# set up logger
|
||||
|
|
|
@ -579,19 +579,27 @@ class ALTTPSNIClient(SNIClient):
|
|||
|
||||
|
||||
def get_alttp_settings(romfile: str):
|
||||
lastSettings = Utils.get_adjuster_settings(GAME_ALTTP)
|
||||
adjustedromfile = ''
|
||||
if lastSettings:
|
||||
choice = 'no'
|
||||
if not hasattr(lastSettings, 'auto_apply') or 'ask' in lastSettings.auto_apply:
|
||||
import LttPAdjuster
|
||||
|
||||
whitelist = {"music", "menuspeed", "heartbeep", "heartcolor", "ow_palettes", "quickswap",
|
||||
"uw_palettes", "sprite", "sword_palettes", "shield_palettes", "hud_palettes",
|
||||
"reduceflashing", "deathlink", "allowcollect"}
|
||||
printed_options = {name: value for name, value in vars(lastSettings).items() if name in whitelist}
|
||||
if hasattr(lastSettings, "sprite_pool"):
|
||||
last_settings = Utils.get_adjuster_settings(GAME_ALTTP)
|
||||
base_settings = LttPAdjuster.get_argparser().parse_known_args(args=[])[0]
|
||||
allow_list = {"music", "menuspeed", "heartbeep", "heartcolor", "ow_palettes", "quickswap",
|
||||
"uw_palettes", "sprite", "sword_palettes", "shield_palettes", "hud_palettes",
|
||||
"reduceflashing", "deathlink", "allowcollect", "oof"}
|
||||
|
||||
for option_name in allow_list:
|
||||
# set new defaults since last_settings were created
|
||||
if not hasattr(last_settings, option_name):
|
||||
setattr(last_settings, option_name, getattr(base_settings, option_name))
|
||||
|
||||
adjustedromfile = ''
|
||||
if last_settings:
|
||||
choice = 'no'
|
||||
if not hasattr(last_settings, 'auto_apply') or 'ask' in last_settings.auto_apply:
|
||||
printed_options = {name: value for name, value in vars(last_settings).items() if name in allow_list}
|
||||
if hasattr(last_settings, "sprite_pool"):
|
||||
sprite_pool = {}
|
||||
for sprite in lastSettings.sprite_pool:
|
||||
for sprite in last_settings.sprite_pool:
|
||||
if sprite in sprite_pool:
|
||||
sprite_pool[sprite] += 1
|
||||
else:
|
||||
|
@ -663,35 +671,35 @@ def get_alttp_settings(romfile: str):
|
|||
choice = 'yes'
|
||||
elif choice and "never" in choice:
|
||||
choice = 'no'
|
||||
lastSettings.auto_apply = 'never'
|
||||
Utils.persistent_store("adjuster", GAME_ALTTP, lastSettings)
|
||||
last_settings.auto_apply = 'never'
|
||||
Utils.persistent_store("adjuster", GAME_ALTTP, last_settings)
|
||||
elif choice and "always" in choice:
|
||||
choice = 'yes'
|
||||
lastSettings.auto_apply = 'always'
|
||||
Utils.persistent_store("adjuster", GAME_ALTTP, lastSettings)
|
||||
last_settings.auto_apply = 'always'
|
||||
Utils.persistent_store("adjuster", GAME_ALTTP, last_settings)
|
||||
else:
|
||||
choice = 'no'
|
||||
elif 'never' in lastSettings.auto_apply:
|
||||
elif 'never' in last_settings.auto_apply:
|
||||
choice = 'no'
|
||||
elif 'always' in lastSettings.auto_apply:
|
||||
elif 'always' in last_settings.auto_apply:
|
||||
choice = 'yes'
|
||||
|
||||
if 'yes' in choice:
|
||||
from worlds.alttp.Rom import get_base_rom_path
|
||||
lastSettings.rom = romfile
|
||||
lastSettings.baserom = get_base_rom_path()
|
||||
lastSettings.world = None
|
||||
last_settings.rom = romfile
|
||||
last_settings.baserom = get_base_rom_path()
|
||||
last_settings.world = None
|
||||
|
||||
if hasattr(lastSettings, "sprite_pool"):
|
||||
if hasattr(last_settings, "sprite_pool"):
|
||||
from LttPAdjuster import AdjusterWorld
|
||||
lastSettings.world = AdjusterWorld(getattr(lastSettings, "sprite_pool"))
|
||||
last_settings.world = AdjusterWorld(getattr(last_settings, "sprite_pool"))
|
||||
|
||||
adjusted = True
|
||||
import LttPAdjuster
|
||||
_, adjustedromfile = LttPAdjuster.adjust(lastSettings)
|
||||
_, adjustedromfile = LttPAdjuster.adjust(last_settings)
|
||||
|
||||
if hasattr(lastSettings, "world"):
|
||||
delattr(lastSettings, "world")
|
||||
if hasattr(last_settings, "world"):
|
||||
delattr(last_settings, "world")
|
||||
else:
|
||||
adjusted = False
|
||||
if adjusted:
|
||||
|
|
Loading…
Reference in New Issue