def place_tile(self, point: Point, label: TileType, region: int): tile = Tile.from_label(point, label) x, y = point self.dungeon.label_grid[x, y] = label.value self.dungeon.walkable[x, y] = tile.walkable self.dungeon.transparent[x, y] = tile.transparent self.dungeon.region_grid[x, y] = region
def carve(self, point: Point, region: int, label: TileType = TileType.FLOOR): tile = Tile.from_label(point, label) self.dungeon.place(point, tile, region)
def get_tile(self, point: Point, fov_map: tcod.map.Map) -> Optional[Tile]: if not self.in_bounds(point): return None label = TileType(self.tile_map[point.x, point.y]) tile = Tile.from_label(point=point, label=label) tile.visible = fov_map.fov[point.x, point.y] return tile
def tiles(self) -> Iterator[Tile]: for i in range(self.height): for j in range(self.width): point = Point(x=j, y=i) if self.cave_map[j, i]: label = TileType.CAVE else: label = TileType.FLOOR tile = Tile.from_label(point=point, label=label) yield tile
def from_json(cls, json_data) -> GameMap: game_map = cls(width=json_data["width"], height=json_data["height"]) for i in range(game_map.height): for j in range(game_map.width): point = Point(x=j, y=i) label = TileType(int(json_data["tile_map"][j][i])) tile = Tile.from_label(point=point, label=label) game_map.place_tile(point=point, tile=tile) if json_data["explored"][j][i]: game_map.explore(point) game_map.dungeon_level = json_data["dungeon_level"] return game_map
def set_tile(self, point: Point, label: TileType): self.tile_grid[point.y, point.x] = Tile.from_label(point, label)
def test_tile_from_label(zeros, wall, empty, cave, floor): assert wall == Tile.from_label(point=zeros, label=TileType.WALL) assert empty == Tile.from_label(point=zeros, label=TileType.EMPTY) assert cave == Tile.from_label(point=zeros, label=TileType.CAVE) assert floor == Tile.from_label(point=zeros, label=TileType.FLOOR)