Logic additions for basic+experimental

This commit is contained in:
aerinon
2020-02-21 16:26:18 -07:00
parent 6f3040415d
commit 7064b1de77
8 changed files with 122 additions and 63 deletions

View File

@@ -19,6 +19,10 @@ class Hook(Enum):
South = 2
East = 3
Stairs = 4
NEdge = 5
SEdge = 6
WEdge = 7
EEdge = 8
class GraphPiece:
@@ -518,11 +522,29 @@ def opposite_h_type(h_type):
Hook.South: Hook.North,
Hook.West: Hook.East,
Hook.East: Hook.West,
Hook.NEdge: Hook.SEdge,
Hook.SEdge: Hook.NEdge,
Hook.EEdge: Hook.WEdge,
Hook.WEdge: Hook.EEdge,
}
return type_map[h_type]
edge_map = {
Direction.North: Hook.NEdge,
Direction.South: Hook.SEdge,
Direction.West: Hook.WEdge,
Direction.East: Hook.EEdge,
}
edge_map_back = {
Direction.North: Hook.SEdge,
Direction.South: Hook.NEdge,
Direction.West: Hook.EEdge,
Direction.East: Hook.WEdge,
}
def hook_from_door(door):
if door.type == DoorType.SpiralStairs:
return Hook.Stairs
@@ -534,6 +556,8 @@ def hook_from_door(door):
Direction.East: Hook.East,
}
return dir[door.direction]
if door.type == DoorType.Open:
return edge_map[door.direction]
return None
@@ -548,16 +572,18 @@ def hanger_from_door(door):
Direction.East: Hook.West,
}
return dir[door.direction]
if door.type == DoorType.Open:
return edge_map_back[door.direction]
return None
def connect_doors(a, b):
# Return on unsupported types.
if a.type in [DoorType.Open, DoorType.StraightStairs, DoorType.Hole, DoorType.Warp, DoorType.Ladder,
if a.type in [DoorType.StraightStairs, DoorType.Hole, DoorType.Warp, DoorType.Ladder,
DoorType.Interior, DoorType.Logical]:
return
# Connect supported types
if a.type == DoorType.Normal or a.type == DoorType.SpiralStairs:
if a.type == DoorType.Normal or a.type == DoorType.SpiralStairs or a.type == DoorType.Open:
if a.blocked:
connect_one_way(b.entrance, a.entrance)
elif b.blocked: