def create_tile_set(qty_of_tiles): tile_set = objects.TileSet(None, None) if qty_of_tiles == 0: return tile_set tiles = {} for tile_id in range(qty_of_tiles): tiles[tile_id] = objects.Tile(id_=tile_id) tile_set.tiles = tiles return tile_set
def create_tile_set(qty_of_tiles): """ Create tile set of specific size. """ tile_set = objects.TileSet(None, None) if qty_of_tiles == 0: return tile_set tiles = {} for tile_id in range(qty_of_tiles): tiles[tile_id] = objects.Tile(id_=tile_id) tile_set.tiles = tiles return tile_set
def _parse_tile_set(tile_set_element: etree.Element) -> objects.TileSet: """Parses a tile set that is embedded into a TMX. Args: tile_set_element: Element to be parsed. Returns: objects.TileSet: Tile Set from element. """ # get all basic attributes name = tile_set_element.attrib["name"] max_tile_width = int(tile_set_element.attrib["tilewidth"]) max_tile_height = int(tile_set_element.attrib["tileheight"]) max_tile_size = objects.Size(max_tile_width, max_tile_height) spacing = None try: spacing = int(tile_set_element.attrib["spacing"]) except KeyError: pass margin = None try: margin = int(tile_set_element.attrib["margin"]) except KeyError: pass tile_count = None try: tile_count = int(tile_set_element.attrib["tilecount"]) except KeyError: pass columns = None try: columns = int(tile_set_element.attrib["columns"]) except KeyError: pass tile_offset = None tileoffset_element = tile_set_element.find("./tileoffset") if tileoffset_element is not None: tile_offset_x = int(tileoffset_element.attrib["x"]) tile_offset_y = int(tileoffset_element.attrib["y"]) tile_offset = objects.OrderedPair(tile_offset_x, tile_offset_y) grid = None grid_element = tile_set_element.find("./grid") if grid_element is not None: grid_orientation = grid_element.attrib["orientation"] grid_width = int(grid_element.attrib["width"]) grid_height = int(grid_element.attrib["height"]) grid = objects.Grid(grid_orientation, grid_width, grid_height) properties = None properties_element = tile_set_element.find("./properties") if properties_element is not None: properties = _parse_properties_element(properties_element) terrain_types: Optional[List[objects.Terrain]] = None terrain_types_element = tile_set_element.find("./terraintypes") if terrain_types_element is not None: terrain_types = [] for terrain in terrain_types_element.findall("./terrain"): name = terrain.attrib["name"] terrain_tile = int(terrain.attrib["tile"]) terrain_types.append(objects.Terrain(name, terrain_tile)) image = None image_element = tile_set_element.find("./image") if image_element is not None: image = _parse_image_element(image_element) tile_element_list = tile_set_element.findall("./tile") tiles = _parse_tiles(tile_element_list) tileset = objects.TileSet( name, max_tile_size, spacing, margin, tile_count, columns, tile_offset, grid, properties, image, terrain_types, tiles, ) # Go back and create a circular link so tiles know what tileset they are # part of. Needed for animation. for id_, tile in tiles.items(): tile.tileset = tileset return tileset