Archipelago/worlds/generic/__init__.py

51 lines
1.3 KiB
Python
Raw Normal View History

2021-01-03 13:32:32 +00:00
from typing import NamedTuple, Union
import logging
2021-01-03 13:32:32 +00:00
from BaseClasses import Item
from ..AutoWorld import World
class GenericWorld(World):
game = "Archipelago"
topology_present = False
item_name_to_id = {
"Nothing": -1
}
location_name_to_id = {
"Cheat Console" : -1,
"Server": -2
}
hidden = True
2021-07-12 11:54:47 +00:00
def create_item(self, name: str) -> Item:
if name == "Nothing":
return Item(name, False, -1, self.player)
raise KeyError(name)
2021-01-03 13:32:32 +00:00
class PlandoItem(NamedTuple):
item: str
location: str
world: Union[bool, str] = False # False -> own world, True -> not own world
from_pool: bool = True # if item should be removed from item pool
force: str = 'silent' # false -> warns if item not successfully placed. true -> errors out on failure to place item.
def warn(self, warning: str):
if self.force in ['true', 'fail', 'failure', 'none', 'false', 'warn', 'warning']:
logging.warning(f'{warning}')
else:
logging.debug(f'{warning}')
def failed(self, warning: str, exception=Exception):
if self.force in ['true', 'fail', 'failure']:
raise exception(warning)
else:
self.warn(warning)
2021-01-03 13:32:32 +00:00
class PlandoConnection(NamedTuple):
entrance: str
exit: str
direction: str # entrance, exit or both