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