Use OptionSet for blacklist

This commit is contained in:
CaitSith2 2021-12-02 15:27:00 -08:00
parent a15689e380
commit efb4e5a7b3
2 changed files with 3 additions and 11 deletions

View File

@ -123,7 +123,7 @@ def generate_mod(world, output_directory: str):
if getattr(multiworld, "satellite")[player].value == Options.Satellite.option_randomize_recipe:
template_data["free_sample_blacklist"]["satellite"] = 1
template_data["free_sample_blacklist"].update(multiworld.free_sample_blacklist[player].value)
template_data["free_sample_blacklist"].update({item: 1 for item in multiworld.free_sample_blacklist[player].value})
control_code = control_template.render(**template_data)
data_template_code = data_template.render(**template_data)

View File

@ -1,7 +1,7 @@
from __future__ import annotations
import typing
from Options import Choice, OptionDict, ItemDict, Option, DefaultOnToggle, Range, DeathLink
from Options import Choice, OptionDict, OptionSet, ItemDict, Option, DefaultOnToggle, Range, DeathLink
from schema import Schema, Optional, And, Or
# schema helpers
@ -154,17 +154,9 @@ class FactorioStartItems(ItemDict):
default = {"burner-mining-drill": 19, "stone-furnace": 19}
class FactorioFreeSampleBlacklist(OptionDict):
"""any non-zero value means that item is blacklisted from free samples. zero overrides the built-in blacklist"""
class FactorioFreeSampleBlacklist(OptionSet):
displayname = "Free Sample Blacklist"
def __init__(self, value: typing.Dict[str, int]):
self.value = value or {}
if any(type(value) not in [int, bool] for value in self.value.values()):
raise Exception("Cannot have non-number blacklist options")
for key in self.value.keys():
self.value[key] = 1 if self.value[key] else 0
class TrapCount(Range):
range_end = 4