def place_passages(self): if not self.passages: return False passages = {} for which, passage in self.passages.items(): where, pos = passage if not pos: dist = r1d(self.size/2) + self.size/2 - 4 pos = Hexagon.perimeter(self.center, dist, random.choice(0, Hexagon.get_max_index(dist))).next() assert False, "Pos: %s" % str(pos) coords = Point(pos) self.cells[coords] = (dist, Stairs(which, where)) else: coords = Point(pos) self.cells[coords] = (None, Stairs(which, where)) passages[which] = self.cells[coords][1] # The terrain above self.passages = passages
def place_passages(self): """Place random stairs, then set their positions in a dict.""" if not self.passages: return False passages = {} perimeter = random.sample([h for h in Hexagon.perimeter(self.center, self.size - self.wall_width)], len(self.passages)) for which, passage in self.passages.items(): where, pos = passage if not pos: index, coords = perimeter.pop() # Block off the immediate surroundings. for rank, index, coords in Hexagon.area(coords): self.cells[coords] = (None, None) passages[which] = Path(which, where) self.cells[coords] = (None, passages[which]) self.passages = passages