LttP: fix adjuster partial settings store crash

This commit is contained in:
Fabian Dill 2022-05-22 17:20:24 +02:00 committed by KonoTyran
parent 9eb237b3af
commit e901a87afd
2 changed files with 26 additions and 20 deletions

View File

@ -513,25 +513,29 @@ def get_rom_frame(parent=None):
def get_rom_options_frame(parent=None): def get_rom_options_frame(parent=None):
adjuster_settings = get_adjuster_settings(GAME_ALTTP) adjuster_settings = get_adjuster_settings(GAME_ALTTP)
defaults = {
"auto_apply": 'ask',
"music": True,
"reduceflashing": True,
"deathlink": False,
"sprite": None,
"quickswap": True,
"menuspeed": 'normal',
"heartcolor": 'red',
"heartbeep": 'normal',
"ow_palettes": 'default',
"uw_palettes": 'default',
"hud_palettes": 'default',
"sword_palettes": 'default',
"shield_palettes": 'default',
"sprite_pool": [],
"allowcollect": False,
}
if not adjuster_settings: if not adjuster_settings:
adjuster_settings = Namespace() adjuster_settings = Namespace()
adjuster_settings.auto_apply = 'ask' for key, defaultvalue in defaults.items():
adjuster_settings.music = True if not hasattr(adjuster_settings, key):
adjuster_settings.reduceflashing = True setattr(adjuster_settings, key, defaultvalue)
adjuster_settings.deathlink = False
adjuster_settings.allowcollect = False
adjuster_settings.sprite = None
adjuster_settings.quickswap = True
adjuster_settings.menuspeed = 'normal'
adjuster_settings.heartcolor = 'red'
adjuster_settings.heartbeep = 'normal'
adjuster_settings.ow_palettes = 'default'
adjuster_settings.uw_palettes = 'default'
adjuster_settings.hud_palettes = 'default'
adjuster_settings.sword_palettes = 'default'
adjuster_settings.shield_palettes = 'default'
if not hasattr(adjuster_settings, 'sprite_pool'):
adjuster_settings.sprite_pool = []
romOptionsFrame = LabelFrame(parent, text="Rom options") romOptionsFrame = LabelFrame(parent, text="Rom options")
romOptionsFrame.columnconfigure(0, weight=1) romOptionsFrame.columnconfigure(0, weight=1)

View File

@ -62,7 +62,9 @@ def get_yaml_data(file) -> Union[Dict[str, str], str]:
return options return options
def roll_options(options: Dict[str, Union[dict, str]], plando_options: set = {"bosses", "items", "connections", "texts"}) -> Tuple[Dict[str, Union[str, bool]], Dict[str, dict]]: def roll_options(options: Dict[str, Union[dict, str]],
plando_options: Set[str] = frozenset({"bosses", "items", "connections", "texts"})) -> \
Tuple[Dict[str, Union[str, bool]], Dict[str, dict]]:
plando_options = set(plando_options) plando_options = set(plando_options)
results = {} results = {}
rolled_results = {} rolled_results = {}
@ -78,11 +80,11 @@ def roll_options(options: Dict[str, Union[dict, str]], plando_options: set = {"b
try: try:
if len(yaml_datas) == 1: if len(yaml_datas) == 1:
rolled_results[filename] = roll_settings(yaml_datas[0], rolled_results[filename] = roll_settings(yaml_datas[0],
plando_options=plando_options) plando_options=plando_options)
else: else:
for i, yaml_data in enumerate(yaml_datas): for i, yaml_data in enumerate(yaml_datas):
rolled_results[f"{filename}/{i + 1}"] = roll_settings(yaml_data, rolled_results[f"{filename}/{i + 1}"] = roll_settings(yaml_data,
plando_options=plando_options) plando_options=plando_options)
except Exception as e: except Exception as e:
results[filename] = f"Failed to generate mystery in {filename}: {e}" results[filename] = f"Failed to generate mystery in {filename}: {e}"
else: else: