Docs: add docstrings to the World class
This commit is contained in:
parent
f3bdf0c5ed
commit
7cad53c31a
|
@ -131,54 +131,69 @@ class World(metaclass=AutoWorldRegister):
|
||||||
"""A World object encompasses a game's Items, Locations, Rules and additional data or functionality required.
|
"""A World object encompasses a game's Items, Locations, Rules and additional data or functionality required.
|
||||||
A Game should have its own subclass of World in which it defines the required data structures."""
|
A Game should have its own subclass of World in which it defines the required data structures."""
|
||||||
|
|
||||||
option_definitions: ClassVar[Dict[str, AssembleOptions]] = {} # link your Options mapping
|
option_definitions: ClassVar[Dict[str, AssembleOptions]] = {}
|
||||||
game: ClassVar[str] # name the game
|
"""link your Options mapping"""
|
||||||
topology_present: ClassVar[bool] = False # indicate if world type has any meaningful layout/pathing
|
game: ClassVar[str]
|
||||||
|
"""name the game"""
|
||||||
|
topology_present: ClassVar[bool] = False
|
||||||
|
"""indicate if world type has any meaningful layout/pathing"""
|
||||||
|
|
||||||
# gets automatically populated with all item and item group names
|
|
||||||
all_item_and_group_names: ClassVar[FrozenSet[str]] = frozenset()
|
all_item_and_group_names: ClassVar[FrozenSet[str]] = frozenset()
|
||||||
|
"""gets automatically populated with all item and item group names"""
|
||||||
|
|
||||||
# map names to their IDs
|
|
||||||
item_name_to_id: ClassVar[Dict[str, int]] = {}
|
item_name_to_id: ClassVar[Dict[str, int]] = {}
|
||||||
|
"""map item names to their IDs"""
|
||||||
location_name_to_id: ClassVar[Dict[str, int]] = {}
|
location_name_to_id: ClassVar[Dict[str, int]] = {}
|
||||||
|
"""map location names to their IDs"""
|
||||||
|
|
||||||
# maps item group names to sets of items. Example: "Weapons" -> {"Sword", "Bow"}
|
|
||||||
item_name_groups: ClassVar[Dict[str, Set[str]]] = {}
|
item_name_groups: ClassVar[Dict[str, Set[str]]] = {}
|
||||||
|
"""maps item group names to sets of items. Example: {"Weapons": {"Sword", "Bow"}}"""
|
||||||
|
|
||||||
# increment this every time something in your world's names/id mappings changes.
|
|
||||||
# While this is set to 0 in *any* AutoWorld, the entire DataPackage is considered in testing mode and will be
|
|
||||||
# retrieved by clients on every connection.
|
|
||||||
data_version: ClassVar[int] = 1
|
data_version: ClassVar[int] = 1
|
||||||
|
"""
|
||||||
|
increment this every time something in your world's names/id mappings changes.
|
||||||
|
While this is set to 0, this world's DataPackage is considered in testing mode and will be inserted to the multidata
|
||||||
|
and retrieved by clients on every connection.
|
||||||
|
"""
|
||||||
|
|
||||||
# override this if changes to a world break forward-compatibility of the client
|
|
||||||
# The base version of (0, 1, 6) is provided for backwards compatibility and does *not* need to be updated in the
|
|
||||||
# future. Protocol level compatibility check moved to MultiServer.min_client_version.
|
|
||||||
required_client_version: Tuple[int, int, int] = (0, 1, 6)
|
required_client_version: Tuple[int, int, int] = (0, 1, 6)
|
||||||
|
"""
|
||||||
|
override this if changes to a world break forward-compatibility of the client
|
||||||
|
The base version of (0, 1, 6) is provided for backwards compatibility and does *not* need to be updated in the
|
||||||
|
future. Protocol level compatibility check moved to MultiServer.min_client_version.
|
||||||
|
"""
|
||||||
|
|
||||||
# update this if the resulting multidata breaks forward-compatibility of the server
|
|
||||||
required_server_version: Tuple[int, int, int] = (0, 2, 4)
|
required_server_version: Tuple[int, int, int] = (0, 2, 4)
|
||||||
|
"""update this if the resulting multidata breaks forward-compatibility of the server"""
|
||||||
|
|
||||||
hint_blacklist: ClassVar[FrozenSet[str]] = frozenset() # any names that should not be hintable
|
hint_blacklist: ClassVar[FrozenSet[str]] = frozenset()
|
||||||
|
"""any names that should not be hintable"""
|
||||||
|
|
||||||
# Hide World Type from various views. Does not remove functionality.
|
|
||||||
hidden: ClassVar[bool] = False
|
hidden: ClassVar[bool] = False
|
||||||
|
"""Hide World Type from various views. Does not remove functionality."""
|
||||||
|
|
||||||
# see WebWorld for options
|
|
||||||
web: ClassVar[WebWorld] = WebWorld()
|
web: ClassVar[WebWorld] = WebWorld()
|
||||||
|
"""see WebWorld for options"""
|
||||||
|
|
||||||
# autoset on creation:
|
|
||||||
multiworld: "MultiWorld"
|
multiworld: "MultiWorld"
|
||||||
|
"""autoset on creation. The MultiWorld object for the currently generating multiworld."""
|
||||||
player: int
|
player: int
|
||||||
|
"""autoset on creation. The player number for this World"""
|
||||||
|
|
||||||
# automatically generated
|
|
||||||
item_id_to_name: ClassVar[Dict[int, str]]
|
item_id_to_name: ClassVar[Dict[int, str]]
|
||||||
|
"""automatically generated reverse lookup of item id to name"""
|
||||||
location_id_to_name: ClassVar[Dict[int, str]]
|
location_id_to_name: ClassVar[Dict[int, str]]
|
||||||
|
"""automatically generated reverse lookup of location id to name"""
|
||||||
|
|
||||||
item_names: ClassVar[Set[str]] # set of all potential item names
|
item_names: ClassVar[Set[str]]
|
||||||
location_names: ClassVar[Set[str]] # set of all potential location names
|
"""set of all potential item names"""
|
||||||
|
location_names: ClassVar[Set[str]]
|
||||||
|
"""set of all potential location names"""
|
||||||
|
|
||||||
zip_path: ClassVar[Optional[pathlib.Path]] = None # If loaded from a .apworld, this is the Path to it.
|
zip_path: ClassVar[Optional[pathlib.Path]] = None
|
||||||
__file__: ClassVar[str] # path it was loaded from
|
"""If loaded from a .apworld, this is the Path to it."""
|
||||||
|
__file__: ClassVar[str]
|
||||||
|
"""path it was loaded from"""
|
||||||
|
|
||||||
def __init__(self, multiworld: "MultiWorld", player: int):
|
def __init__(self, multiworld: "MultiWorld", player: int):
|
||||||
self.multiworld = multiworld
|
self.multiworld = multiworld
|
||||||
|
@ -196,18 +211,32 @@ class World(metaclass=AutoWorldRegister):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def generate_early(self) -> None:
|
def generate_early(self) -> None:
|
||||||
|
"""
|
||||||
|
Run before any general steps of the MultiWorld other than options. Useful for getting and adjusting option
|
||||||
|
results and determining layouts for entrance rando etc. start inventory gets pushed after this step.
|
||||||
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def create_regions(self) -> None:
|
def create_regions(self) -> None:
|
||||||
|
"""Method for creating and connecting regions for the World."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def create_items(self) -> None:
|
def create_items(self) -> None:
|
||||||
|
"""
|
||||||
|
Method for creating and submitting items to the itempool. Items and Regions should *not* be created and submitted
|
||||||
|
to the MultiWorld after this step. If items need to be placed during pre_fill use `get_prefill_items`.
|
||||||
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def set_rules(self) -> None:
|
def set_rules(self) -> None:
|
||||||
|
"""Method for setting the rules on the World's regions and locations."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def generate_basic(self) -> None:
|
def generate_basic(self) -> None:
|
||||||
|
"""
|
||||||
|
Useful for randomizing things that don't affect logic but are better to be determined before the output stage.
|
||||||
|
i.e. checking what the player has marked as priority or randomizing enemies
|
||||||
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def pre_fill(self) -> None:
|
def pre_fill(self) -> None:
|
||||||
|
|
Loading…
Reference in New Issue