From d545b788033ba6fd1e04377b8f94ede3b6742230 Mon Sep 17 00:00:00 2001 From: CaitSith2 Date: Sun, 24 Dec 2023 17:30:17 -0800 Subject: [PATCH] Clique: Use options_dataclass --- worlds/clique/Items.py | 4 ++-- worlds/clique/Locations.py | 4 ++-- worlds/clique/Options.py | 15 +++++++++------ worlds/clique/Rules.py | 4 ++-- worlds/clique/__init__.py | 5 +++-- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/worlds/clique/Items.py b/worlds/clique/Items.py index 12ce2e28d5..9f7a800bd6 100644 --- a/worlds/clique/Items.py +++ b/worlds/clique/Items.py @@ -1,7 +1,7 @@ from typing import Callable, Dict, NamedTuple, Optional from BaseClasses import Item, ItemClassification -from Options import PerGameCommonOptions +from .Options import CliqueOptions class CliqueItem(Item): @@ -11,7 +11,7 @@ class CliqueItem(Item): class CliqueItemData(NamedTuple): code: Optional[int] = None type: ItemClassification = ItemClassification.filler - can_create: Callable[[PerGameCommonOptions], bool] = lambda options: True + can_create: Callable[[CliqueOptions], bool] = lambda options: True item_data_table: Dict[str, CliqueItemData] = { diff --git a/worlds/clique/Locations.py b/worlds/clique/Locations.py index 4f7872843e..e8932f2e28 100644 --- a/worlds/clique/Locations.py +++ b/worlds/clique/Locations.py @@ -1,7 +1,7 @@ from typing import Callable, Dict, NamedTuple, Optional from BaseClasses import Location -from Options import PerGameCommonOptions +from .Options import CliqueOptions @@ -12,7 +12,7 @@ class CliqueLocation(Location): class CliqueLocationData(NamedTuple): region: str address: Optional[int] = None - can_create: Callable[[PerGameCommonOptions], bool] = lambda options: True + can_create: Callable[[CliqueOptions], bool] = lambda options: True locked_item: Optional[str] = None diff --git a/worlds/clique/Options.py b/worlds/clique/Options.py index 7976dcb621..6424f426fe 100644 --- a/worlds/clique/Options.py +++ b/worlds/clique/Options.py @@ -1,6 +1,7 @@ from typing import Dict -from Options import Choice, Option, Toggle +from Options import Choice, Option, Toggle, PerGameCommonOptions +from dataclasses import dataclass class HardMode(Toggle): @@ -25,10 +26,12 @@ class ButtonColor(Choice): option_black = 11 -clique_options: Dict[str, type(Option)] = { - "color": ButtonColor, - "hard_mode": HardMode, + +@dataclass +class CliqueOptions(PerGameCommonOptions): + color: ButtonColor + hard_mode: HardMode # DeathLink is always on. Always. - # "death_link": DeathLink, -} + # death_link: DeathLink + diff --git a/worlds/clique/Rules.py b/worlds/clique/Rules.py index bcb276217d..40a21cc741 100644 --- a/worlds/clique/Rules.py +++ b/worlds/clique/Rules.py @@ -1,10 +1,10 @@ from typing import Callable from BaseClasses import CollectionState -from Options import PerGameCommonOptions +from .Options import CliqueOptions -def get_button_rule(options: PerGameCommonOptions, player: int) -> Callable[[CollectionState], bool]: +def get_button_rule(options: CliqueOptions, player: int) -> Callable[[CollectionState], bool]: if getattr(options, "hard_mode"): return lambda state: state.has("Button Activation", player) diff --git a/worlds/clique/__init__.py b/worlds/clique/__init__.py index 0e0eb38113..456951932f 100644 --- a/worlds/clique/__init__.py +++ b/worlds/clique/__init__.py @@ -4,7 +4,7 @@ from BaseClasses import Region, Tutorial from worlds.AutoWorld import WebWorld, World from .Items import CliqueItem, item_data_table, item_table from .Locations import CliqueLocation, location_data_table, location_table, locked_locations -from .Options import clique_options +from .Options import CliqueOptions from .Regions import region_data_table from .Rules import get_button_rule @@ -29,7 +29,8 @@ class CliqueWorld(World): game = "Clique" data_version = 3 web = CliqueWebWorld() - option_definitions = clique_options + options = CliqueOptions + options_dataclass = CliqueOptions location_name_to_id = location_table item_name_to_id = item_table