mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-05-27 15:50:02 -07:00
Lingo: Remove unnecessary player_logic parameters (#3054)
A world's player_logic is accessible from the LingoWorld object, so it's not necessary to also pass the LingoPlayerLogic object through every function that uses both.
This commit is contained in:
committed by
GitHub
parent
7e660dbd23
commit
11073dfdac
+17
-21
@@ -4,7 +4,6 @@ from BaseClasses import Entrance, ItemClassification, Region
|
||||
from .datatypes import Room, RoomAndDoor
|
||||
from .items import LingoItem
|
||||
from .locations import LingoLocation
|
||||
from .player_logic import LingoPlayerLogic
|
||||
from .rules import lingo_can_use_entrance, make_location_lambda
|
||||
from .static_logic import ALL_ROOMS, PAINTINGS
|
||||
|
||||
@@ -12,14 +11,14 @@ if TYPE_CHECKING:
|
||||
from . import LingoWorld
|
||||
|
||||
|
||||
def create_region(room: Room, world: "LingoWorld", player_logic: LingoPlayerLogic) -> Region:
|
||||
def create_region(room: Room, world: "LingoWorld") -> Region:
|
||||
new_region = Region(room.name, world.player, world.multiworld)
|
||||
for location in player_logic.locations_by_room.get(room.name, {}):
|
||||
for location in world.player_logic.locations_by_room.get(room.name, {}):
|
||||
new_location = LingoLocation(world.player, location.name, location.code, new_region)
|
||||
new_location.access_rule = make_location_lambda(location, world, player_logic)
|
||||
new_location.access_rule = make_location_lambda(location, world)
|
||||
new_region.locations.append(new_location)
|
||||
if location.name in player_logic.event_loc_to_item:
|
||||
event_name = player_logic.event_loc_to_item[location.name]
|
||||
if location.name in world.player_logic.event_loc_to_item:
|
||||
event_name = world.player_logic.event_loc_to_item[location.name]
|
||||
event_item = LingoItem(event_name, ItemClassification.progression, None, world.player)
|
||||
new_location.place_locked_item(event_item)
|
||||
|
||||
@@ -27,22 +26,21 @@ def create_region(room: Room, world: "LingoWorld", player_logic: LingoPlayerLogi
|
||||
|
||||
|
||||
def connect_entrance(regions: Dict[str, Region], source_region: Region, target_region: Region, description: str,
|
||||
door: Optional[RoomAndDoor], world: "LingoWorld", player_logic: LingoPlayerLogic):
|
||||
door: Optional[RoomAndDoor], world: "LingoWorld"):
|
||||
connection = Entrance(world.player, description, source_region)
|
||||
connection.access_rule = lambda state: lingo_can_use_entrance(state, target_region.name, door, world, player_logic)
|
||||
connection.access_rule = lambda state: lingo_can_use_entrance(state, target_region.name, door, world)
|
||||
|
||||
source_region.exits.append(connection)
|
||||
connection.connect(target_region)
|
||||
|
||||
if door is not None:
|
||||
effective_room = target_region.name if door.room is None else door.room
|
||||
if door.door not in player_logic.item_by_door.get(effective_room, {}):
|
||||
for region in player_logic.calculate_door_requirements(effective_room, door.door, world).rooms:
|
||||
if door.door not in world.player_logic.item_by_door.get(effective_room, {}):
|
||||
for region in world.player_logic.calculate_door_requirements(effective_room, door.door, world).rooms:
|
||||
world.multiworld.register_indirect_condition(regions[region], connection)
|
||||
|
||||
|
||||
def connect_painting(regions: Dict[str, Region], warp_enter: str, warp_exit: str, world: "LingoWorld",
|
||||
player_logic: LingoPlayerLogic) -> None:
|
||||
def connect_painting(regions: Dict[str, Region], warp_enter: str, warp_exit: str, world: "LingoWorld") -> None:
|
||||
source_painting = PAINTINGS[warp_enter]
|
||||
target_painting = PAINTINGS[warp_exit]
|
||||
|
||||
@@ -50,11 +48,10 @@ def connect_painting(regions: Dict[str, Region], warp_enter: str, warp_exit: str
|
||||
source_region = regions[source_painting.room]
|
||||
|
||||
entrance_name = f"{source_painting.room} to {target_painting.room} ({source_painting.id} Painting)"
|
||||
connect_entrance(regions, source_region, target_region, entrance_name, source_painting.required_door, world,
|
||||
player_logic)
|
||||
connect_entrance(regions, source_region, target_region, entrance_name, source_painting.required_door, world)
|
||||
|
||||
|
||||
def create_regions(world: "LingoWorld", player_logic: LingoPlayerLogic) -> None:
|
||||
def create_regions(world: "LingoWorld") -> None:
|
||||
regions = {
|
||||
"Menu": Region("Menu", world.player, world.multiworld)
|
||||
}
|
||||
@@ -64,7 +61,7 @@ def create_regions(world: "LingoWorld", player_logic: LingoPlayerLogic) -> None:
|
||||
|
||||
# Instantiate all rooms as regions with their locations first.
|
||||
for room in ALL_ROOMS:
|
||||
regions[room.name] = create_region(room, world, player_logic)
|
||||
regions[room.name] = create_region(room, world)
|
||||
|
||||
# Connect all created regions now that they exist.
|
||||
for room in ALL_ROOMS:
|
||||
@@ -80,18 +77,17 @@ def create_regions(world: "LingoWorld", player_logic: LingoPlayerLogic) -> None:
|
||||
else:
|
||||
entrance_name += f" (through {room.name} - {entrance.door.door})"
|
||||
|
||||
connect_entrance(regions, regions[entrance.room], regions[room.name], entrance_name, entrance.door, world,
|
||||
player_logic)
|
||||
connect_entrance(regions, regions[entrance.room], regions[room.name], entrance_name, entrance.door, world)
|
||||
|
||||
# Add the fake pilgrimage.
|
||||
connect_entrance(regions, regions["Outside The Agreeable"], regions["Pilgrim Antechamber"], "Pilgrimage",
|
||||
RoomAndDoor("Pilgrim Antechamber", "Pilgrimage"), world, player_logic)
|
||||
RoomAndDoor("Pilgrim Antechamber", "Pilgrimage"), world)
|
||||
|
||||
if early_color_hallways:
|
||||
regions["Starting Room"].connect(regions["Outside The Undeterred"], "Early Color Hallways")
|
||||
|
||||
if painting_shuffle:
|
||||
for warp_enter, warp_exit in player_logic.painting_mapping.items():
|
||||
connect_painting(regions, warp_enter, warp_exit, world, player_logic)
|
||||
for warp_enter, warp_exit in world.player_logic.painting_mapping.items():
|
||||
connect_painting(regions, warp_enter, warp_exit, world)
|
||||
|
||||
world.multiworld.regions += regions.values()
|
||||
|
||||
Reference in New Issue
Block a user