diff --git a/LttPAdjuster.py b/LttPAdjuster.py index 608ce67a..d1c03bd4 100644 --- a/LttPAdjuster.py +++ b/LttPAdjuster.py @@ -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 diff --git a/worlds/alttp/Client.py b/worlds/alttp/Client.py index f81222e2..30100f57 100644 --- a/worlds/alttp/Client.py +++ b/worlds/alttp/Client.py @@ -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: