38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from typing import Callable, Dict, NamedTuple, Optional, TYPE_CHECKING
|
|
|
|
from BaseClasses import Location
|
|
|
|
if TYPE_CHECKING:
|
|
from . import CliqueWorld
|
|
|
|
|
|
class CliqueLocation(Location):
|
|
game = "Clique"
|
|
|
|
|
|
class CliqueLocationData(NamedTuple):
|
|
region: str
|
|
address: Optional[int] = None
|
|
can_create: Callable[["CliqueWorld"], bool] = lambda world: True
|
|
locked_item: Optional[str] = None
|
|
|
|
|
|
location_data_table: Dict[str, CliqueLocationData] = {
|
|
"The Big Red Button": CliqueLocationData(
|
|
region="The Button Realm",
|
|
address=69696969,
|
|
),
|
|
"The Item on the Desk": CliqueLocationData(
|
|
region="The Button Realm",
|
|
address=69696968,
|
|
can_create=lambda world: world.options.hard_mode,
|
|
),
|
|
"In the Player's Mind": CliqueLocationData(
|
|
region="The Button Realm",
|
|
locked_item="The Urge to Push",
|
|
),
|
|
}
|
|
|
|
location_table = {name: data.address for name, data in location_data_table.items() if data.address is not None}
|
|
locked_locations = {name: data for name, data in location_data_table.items() if data.locked_item}
|