From 4e4a59dd9a6c0f37f4dd0b8de635a32f09e8a48c Mon Sep 17 00:00:00 2001 From: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> Date: Tue, 17 Sep 2024 11:24:10 -0400 Subject: [PATCH] Create OptionGroups. --- worlds/jakanddaxter/Client.py | 2 +- .../{JakAndDaxterOptions.py => Options.py} | 0 worlds/jakanddaxter/Regions.py | 2 +- worlds/jakanddaxter/Rules.py | 18 +++++----- worlds/jakanddaxter/__init__.py | 33 +++++++++++++++---- worlds/jakanddaxter/regs/BoggySwampRegions.py | 3 +- worlds/jakanddaxter/regs/FireCanyonRegions.py | 3 +- .../regs/ForbiddenJungleRegions.py | 3 +- worlds/jakanddaxter/regs/GeyserRockRegions.py | 3 +- .../regs/GolAndMaiasCitadelRegions.py | 3 +- worlds/jakanddaxter/regs/LavaTubeRegions.py | 3 +- .../regs/LostPrecursorCityRegions.py | 3 +- .../jakanddaxter/regs/MistyIslandRegions.py | 3 +- .../jakanddaxter/regs/MountainPassRegions.py | 3 +- .../regs/PrecursorBasinRegions.py | 3 +- .../jakanddaxter/regs/RockVillageRegions.py | 3 +- .../regs/SandoverVillageRegions.py | 3 +- .../jakanddaxter/regs/SentinelBeachRegions.py | 3 +- .../jakanddaxter/regs/SnowyMountainRegions.py | 3 +- worlds/jakanddaxter/regs/SpiderCaveRegions.py | 3 +- .../regs/VolcanicCraterRegions.py | 3 +- 21 files changed, 69 insertions(+), 34 deletions(-) rename worlds/jakanddaxter/{JakAndDaxterOptions.py => Options.py} (100%) diff --git a/worlds/jakanddaxter/Client.py b/worlds/jakanddaxter/Client.py index 23ead2baf7..3b770327dc 100644 --- a/worlds/jakanddaxter/Client.py +++ b/worlds/jakanddaxter/Client.py @@ -13,7 +13,7 @@ from pymem.exception import ProcessNotFound import Utils from NetUtils import ClientStatus from CommonClient import ClientCommandProcessor, CommonContext, logger, server_loop, gui_enabled -from .JakAndDaxterOptions import EnableOrbsanity +from .Options import EnableOrbsanity from .GameID import jak1_name from .client.ReplClient import JakAndDaxterReplClient diff --git a/worlds/jakanddaxter/JakAndDaxterOptions.py b/worlds/jakanddaxter/Options.py similarity index 100% rename from worlds/jakanddaxter/JakAndDaxterOptions.py rename to worlds/jakanddaxter/Options.py diff --git a/worlds/jakanddaxter/Regions.py b/worlds/jakanddaxter/Regions.py index 6ddcf9f4cb..c1a72b1ef8 100644 --- a/worlds/jakanddaxter/Regions.py +++ b/worlds/jakanddaxter/Regions.py @@ -3,7 +3,7 @@ import typing from Options import OptionError from . import JakAndDaxterWorld from .Items import item_table -from .JakAndDaxterOptions import EnableOrbsanity, CompletionCondition +from .Options import EnableOrbsanity, CompletionCondition from .Rules import can_reach_orbs_global from .locs import CellLocations as Cells, ScoutLocations as Scouts from .regs import (GeyserRockRegions as GeyserRock, diff --git a/worlds/jakanddaxter/Rules.py b/worlds/jakanddaxter/Rules.py index c9b36cae50..6dbeda537f 100644 --- a/worlds/jakanddaxter/Rules.py +++ b/worlds/jakanddaxter/Rules.py @@ -2,15 +2,15 @@ import typing from BaseClasses import MultiWorld, CollectionState from Options import OptionError from . import JakAndDaxterWorld -from .JakAndDaxterOptions import (JakAndDaxterOptions, - EnableOrbsanity, - GlobalOrbsanityBundleSize, - PerLevelOrbsanityBundleSize, - FireCanyonCellCount, - MountainPassCellCount, - LavaTubeCellCount, - CitizenOrbTradeAmount, - OracleOrbTradeAmount) +from .Options import (JakAndDaxterOptions, + EnableOrbsanity, + GlobalOrbsanityBundleSize, + PerLevelOrbsanityBundleSize, + FireCanyonCellCount, + MountainPassCellCount, + LavaTubeCellCount, + CitizenOrbTradeAmount, + OracleOrbTradeAmount) from .locs import CellLocations as Cells from .Locations import location_table from .Levels import level_table diff --git a/worlds/jakanddaxter/__init__.py b/worlds/jakanddaxter/__init__.py index 86b4b8ceb5..7ebf10e75a 100644 --- a/worlds/jakanddaxter/__init__.py +++ b/worlds/jakanddaxter/__init__.py @@ -2,6 +2,7 @@ from typing import Dict, Any, ClassVar, Tuple, Callable, Optional, Union, List from math import ceil import Utils import settings +from Options import OptionGroup from Utils import local_path from BaseClasses import (Item, @@ -9,7 +10,7 @@ from BaseClasses import (Item, Tutorial, CollectionState) from .GameID import jak1_id, jak1_name, jak1_max -from .JakAndDaxterOptions import JakAndDaxterOptions, EnableOrbsanity, CompletionCondition +from . import Options from .Locations import (JakAndDaxterLocation, location_table, cell_location_table, @@ -74,6 +75,24 @@ class JakAndDaxterWebWorld(WebWorld): tutorials = [setup_en] + option_groups = [ + OptionGroup("Orbsanity", [ + Options.EnableOrbsanity, + Options.GlobalOrbsanityBundleSize, + Options.PerLevelOrbsanityBundleSize, + ]), + OptionGroup("Power Cell Counts", [ + Options.EnableOrderedCellCounts, + Options.FireCanyonCellCount, + Options.MountainPassCellCount, + Options.LavaTubeCellCount, + ]), + OptionGroup("Orb Trade Counts", [ + Options.CitizenOrbTradeAmount, + Options.OracleOrbTradeAmount, + ]), + ] + class JakAndDaxterWorld(World): """ @@ -91,8 +110,8 @@ class JakAndDaxterWorld(World): # Options settings: ClassVar[JakAndDaxterSettings] - options_dataclass = JakAndDaxterOptions - options: JakAndDaxterOptions + options_dataclass = Options.JakAndDaxterOptions + options: Options.JakAndDaxterOptions # Web world web = JakAndDaxterWebWorld() @@ -166,10 +185,10 @@ class JakAndDaxterWorld(World): verify_orb_trade_amounts(self) # Cache the orb bundle size and item name for quicker reference. - if self.options.enable_orbsanity == EnableOrbsanity.option_per_level: + if self.options.enable_orbsanity == Options.EnableOrbsanity.option_per_level: self.orb_bundle_size = self.options.level_orbsanity_bundle_size.value self.orb_bundle_item_name = orb_item_table[self.orb_bundle_size] - elif self.options.enable_orbsanity == EnableOrbsanity.option_global: + elif self.options.enable_orbsanity == Options.EnableOrbsanity.option_global: self.orb_bundle_size = self.options.global_orbsanity_bundle_size.value self.orb_bundle_item_name = orb_item_table[self.orb_bundle_size] else: @@ -204,7 +223,7 @@ class JakAndDaxterWorld(World): prog_count = max(self.power_cell_thresholds[:3]) non_prog_count = 101 - prog_count - if self.options.jak_completion_condition == CompletionCondition.option_open_100_cell_door: + if self.options.jak_completion_condition == Options.CompletionCondition.option_open_100_cell_door: counts_and_classes.append((100, ItemClass.progression_skip_balancing)) counts_and_classes.append((1, ItemClass.filler)) else: @@ -268,7 +287,7 @@ class JakAndDaxterWorld(World): # If it is OFF, don't add any orb bundles to the item pool, period. # If it is ON, don't add any orb bundles that don't match the chosen option. if (item_name in self.item_name_groups["Precursor Orbs"] - and (self.options.enable_orbsanity == EnableOrbsanity.option_off + and (self.options.enable_orbsanity == Options.EnableOrbsanity.option_off or item_name != self.orb_bundle_item_name)): continue diff --git a/worlds/jakanddaxter/regs/BoggySwampRegions.py b/worlds/jakanddaxter/regs/BoggySwampRegions.py index 0f55bf15ec..85e9d722f6 100644 --- a/worlds/jakanddaxter/regs/BoggySwampRegions.py +++ b/worlds/jakanddaxter/regs/BoggySwampRegions.py @@ -2,7 +2,8 @@ from typing import List from BaseClasses import CollectionState from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/FireCanyonRegions.py b/worlds/jakanddaxter/regs/FireCanyonRegions.py index 70a6e25809..21872385fe 100644 --- a/worlds/jakanddaxter/regs/FireCanyonRegions.py +++ b/worlds/jakanddaxter/regs/FireCanyonRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_reach_orbs_level from ..locs import CellLocations as Cells, ScoutLocations as Scouts diff --git a/worlds/jakanddaxter/regs/ForbiddenJungleRegions.py b/worlds/jakanddaxter/regs/ForbiddenJungleRegions.py index 07e7d9157c..9210dcbbf9 100644 --- a/worlds/jakanddaxter/regs/ForbiddenJungleRegions.py +++ b/worlds/jakanddaxter/regs/ForbiddenJungleRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/GeyserRockRegions.py b/worlds/jakanddaxter/regs/GeyserRockRegions.py index 8376e89ce8..adeba39b08 100644 --- a/worlds/jakanddaxter/regs/GeyserRockRegions.py +++ b/worlds/jakanddaxter/regs/GeyserRockRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_reach_orbs_level from ..locs import ScoutLocations as Scouts diff --git a/worlds/jakanddaxter/regs/GolAndMaiasCitadelRegions.py b/worlds/jakanddaxter/regs/GolAndMaiasCitadelRegions.py index bfcbce606c..eb5ac00aae 100644 --- a/worlds/jakanddaxter/regs/GolAndMaiasCitadelRegions.py +++ b/worlds/jakanddaxter/regs/GolAndMaiasCitadelRegions.py @@ -2,7 +2,8 @@ from typing import List from BaseClasses import CollectionState from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld, CompletionCondition +from ..Options import EnableOrbsanity, CompletionCondition +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/LavaTubeRegions.py b/worlds/jakanddaxter/regs/LavaTubeRegions.py index 383ea524d5..e26cb8eb4e 100644 --- a/worlds/jakanddaxter/regs/LavaTubeRegions.py +++ b/worlds/jakanddaxter/regs/LavaTubeRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_reach_orbs_level from ..locs import CellLocations as Cells, ScoutLocations as Scouts diff --git a/worlds/jakanddaxter/regs/LostPrecursorCityRegions.py b/worlds/jakanddaxter/regs/LostPrecursorCityRegions.py index 4d3a5e68d0..e02b07733c 100644 --- a/worlds/jakanddaxter/regs/LostPrecursorCityRegions.py +++ b/worlds/jakanddaxter/regs/LostPrecursorCityRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/MistyIslandRegions.py b/worlds/jakanddaxter/regs/MistyIslandRegions.py index 5c7ba031d5..512649c6b8 100644 --- a/worlds/jakanddaxter/regs/MistyIslandRegions.py +++ b/worlds/jakanddaxter/regs/MistyIslandRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/MountainPassRegions.py b/worlds/jakanddaxter/regs/MountainPassRegions.py index 23314a0dc4..0e45bf7451 100644 --- a/worlds/jakanddaxter/regs/MountainPassRegions.py +++ b/worlds/jakanddaxter/regs/MountainPassRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_reach_orbs_level from ..locs import ScoutLocations as Scouts from worlds.generic.Rules import add_rule diff --git a/worlds/jakanddaxter/regs/PrecursorBasinRegions.py b/worlds/jakanddaxter/regs/PrecursorBasinRegions.py index 6fbdcee3d0..0cb5483bad 100644 --- a/worlds/jakanddaxter/regs/PrecursorBasinRegions.py +++ b/worlds/jakanddaxter/regs/PrecursorBasinRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_reach_orbs_level from ..locs import CellLocations as Cells, ScoutLocations as Scouts diff --git a/worlds/jakanddaxter/regs/RockVillageRegions.py b/worlds/jakanddaxter/regs/RockVillageRegions.py index 706c44bc16..1fc7a83d1c 100644 --- a/worlds/jakanddaxter/regs/RockVillageRegions.py +++ b/worlds/jakanddaxter/regs/RockVillageRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/SandoverVillageRegions.py b/worlds/jakanddaxter/regs/SandoverVillageRegions.py index a42e3a0b2b..0c7697eed6 100644 --- a/worlds/jakanddaxter/regs/SandoverVillageRegions.py +++ b/worlds/jakanddaxter/regs/SandoverVillageRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/SentinelBeachRegions.py b/worlds/jakanddaxter/regs/SentinelBeachRegions.py index 7d43fe18fb..61fb2bdc6e 100644 --- a/worlds/jakanddaxter/regs/SentinelBeachRegions.py +++ b/worlds/jakanddaxter/regs/SentinelBeachRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/SnowyMountainRegions.py b/worlds/jakanddaxter/regs/SnowyMountainRegions.py index d0bc64292b..0f72c8b8bd 100644 --- a/worlds/jakanddaxter/regs/SnowyMountainRegions.py +++ b/worlds/jakanddaxter/regs/SnowyMountainRegions.py @@ -2,7 +2,8 @@ from typing import List from BaseClasses import CollectionState from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/SpiderCaveRegions.py b/worlds/jakanddaxter/regs/SpiderCaveRegions.py index fe641c2cbc..589703facb 100644 --- a/worlds/jakanddaxter/regs/SpiderCaveRegions.py +++ b/worlds/jakanddaxter/regs/SpiderCaveRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_fight, can_reach_orbs_level diff --git a/worlds/jakanddaxter/regs/VolcanicCraterRegions.py b/worlds/jakanddaxter/regs/VolcanicCraterRegions.py index 11934aa703..63ef898d15 100644 --- a/worlds/jakanddaxter/regs/VolcanicCraterRegions.py +++ b/worlds/jakanddaxter/regs/VolcanicCraterRegions.py @@ -1,7 +1,8 @@ from typing import List from .RegionBase import JakAndDaxterRegion -from .. import EnableOrbsanity, JakAndDaxterWorld +from ..Options import EnableOrbsanity +from .. import JakAndDaxterWorld from ..Rules import can_free_scout_flies, can_reach_orbs_level from ..locs import ScoutLocations as Scouts