from __future__ import annotations from typing import TYPE_CHECKING from BaseClasses import ItemClassification, Location from . import items if TYPE_CHECKING: from .world import NodecamesWorld GREEN_COUNT_PER_WORLD = [6, 9, 9, 12, 16, 16, 20, 25, 25, 30, 36, 36] def worldName(index): return f"{(index//3)+1}-{(index%3)+1}" LOCATION_NAME_TO_ID = {} LOCATION_NAME_FROM_WORLD = {} id = 0 for w in range(len(GREEN_COUNT_PER_WORLD)): LOCATION_NAME_FROM_WORLD[w] = [] for i in range(1, GREEN_COUNT_PER_WORLD[w]): name = f"World {worldName(w)} word {i}" id += 1 LOCATION_NAME_FROM_WORLD[w].append(name) LOCATION_NAME_TO_ID[name] = id name = f"Complete {worldName(w)}" id += 1 LOCATION_NAME_FROM_WORLD[w].append(name) LOCATION_NAME_TO_ID[name] = id class NodecamesLocation(Location): game = "Nodecames" def create_all_locations(world: NodecamesWorld) -> None: create_world_locations(world) create_events(world) def create_world_locations(world: NodecamesWorld) -> None: overworld = world.get_region("Overworld") for w in LOCATION_NAME_FROM_WORLD: for l in range(len(LOCATION_NAME_FROM_WORLD[w])-1): name = LOCATION_NAME_FROM_WORLD[w][l] loc = NodecamesLocation( world.player, name, LOCATION_NAME_TO_ID[name], overworld, ) overworld.locations.append(loc) def all_completion_items(world: NodecamesWorld) -> list[str]: return [LOCATION_NAME_FROM_WORLD[w][-1]+" item" for w in LOCATION_NAME_FROM_WORLD] def create_events(world: NodecamesWorld) -> None: overworld = world.get_region("Overworld") for w in LOCATION_NAME_FROM_WORLD: overworld.add_event( LOCATION_NAME_FROM_WORLD[w][-1], LOCATION_NAME_FROM_WORLD[w][-1]+" item", location_type = NodecamesLocation, item_type = items.NodecamesItem)