|
@@ -29,6 +29,11 @@ class TMXMap(object):
|
29
|
29
|
xyz_tile_class = XYZTile
|
30
|
30
|
transform_zero_y_to_bottom = True
|
31
|
31
|
|
|
32
|
+ """
|
|
33
|
+ Define default tileset name for layer. key: layer name, value: tileset name
|
|
34
|
+ """
|
|
35
|
+ default_layer_tilesets = {} # type: typing.Dict[str, str]
|
|
36
|
+
|
32
|
37
|
def __init__(self, map_file_path: str) -> None:
|
33
|
38
|
self.tmx_map = tmx.TileMap.load(map_file_path)
|
34
|
39
|
self.tmx_layers = {} # type: typing.Dict[str, tmx.Layer]
|
|
@@ -48,8 +53,18 @@ class TMXMap(object):
|
48
|
53
|
def get_default_tileset(self) -> tmx.Tileset:
|
49
|
54
|
return list(self.tmx_tilesets.values())[0]
|
50
|
55
|
|
51
|
|
- def get_default_tile(self) -> XYZTile:
|
52
|
|
- tileset = self.get_default_tileset()
|
|
56
|
+ def get_default_tile(self, layer_name: str=None) -> XYZTile:
|
|
57
|
+ """
|
|
58
|
+ Return thirst tile of default tileset or thirst tile of given layer default tileset.
|
|
59
|
+ :param layer: if layer given, thirst tile of it's default tileset will be returned
|
|
60
|
+ :return: a Tile
|
|
61
|
+ """
|
|
62
|
+ if layer_name and layer_name in self.default_layer_tilesets:
|
|
63
|
+ tileset_name = self.default_layer_tilesets[layer_name]
|
|
64
|
+ tileset = self.tileset(tileset_name)
|
|
65
|
+ else:
|
|
66
|
+ tileset = self.get_default_tileset()
|
|
67
|
+
|
53
|
68
|
return self.xyz_tile_class(tileset.tiles[0])
|
54
|
69
|
|
55
|
70
|
def _load(self) -> None:
|
|
@@ -89,10 +104,10 @@ class TMXMap(object):
|
89
|
104
|
position_key = '{}.{}'.format(x, y)
|
90
|
105
|
|
91
|
106
|
if not layer_tile.gid:
|
92
|
|
- tile = self.get_default_tile()
|
|
107
|
+ tile = self.get_default_tile(layer_name=layer_name)
|
93
|
108
|
elif not layer_tile.gid in self.tmx_tiles:
|
94
|
109
|
# tile = UnconstructedTile()
|
95
|
|
- tile = self.get_default_tile()
|
|
110
|
+ tile = self.get_default_tile(layer_name=layer_name)
|
96
|
111
|
else:
|
97
|
112
|
tile = self.tmx_tiles[layer_tile.gid]
|
98
|
113
|
|