Browse Source

add stuff to layers (will move in sub projects)

Bastien Sevajol 6 years ago
parent
commit
3473c5d9af
3 changed files with 30 additions and 4 deletions
  1. 3 0
      synergine2_cocos2d/layer.py
  2. 8 0
      synergine2_cocos2d/middleware.py
  3. 19 4
      synergine2_xyz/map.py

+ 3 - 0
synergine2_cocos2d/layer.py View File

@@ -146,17 +146,20 @@ class LayerManager(object):
146 146
         self.scrolling_manager.add(self.main_layer, z=0)
147 147
         self.main_scene.add(self.edit_layer)
148 148
 
149
+        self.interior_sprite = self.middleware.get_interior_sprite()
149 150
         self.background_sprite = self.middleware.get_background_sprite()
150 151
         self.ground_layer = self.middleware.get_ground_layer()
151 152
         self.subject_layer = SubjectLayer()
152 153
         self.top_layer = self.middleware.get_top_layer()
153 154
 
155
+        self.main_layer.add(self.interior_sprite)
154 156
         self.main_layer.add(self.background_sprite)
155 157
         self.main_layer.add(self.ground_layer)
156 158
         self.main_layer.add(self.subject_layer)
157 159
         self.main_layer.add(self.top_layer)
158 160
 
159 161
     def center(self):
162
+        self.interior_sprite.position = 0 + (self.interior_sprite.width/2), 0 + (self.interior_sprite.height/2)
160 163
         self.background_sprite.position = 0 + (self.background_sprite.width/2), 0 + (self.background_sprite.height/2)
161 164
         self.ground_layer.set_view(0, 0, self.ground_layer.px_width, self.ground_layer.px_height)
162 165
         self.subject_layer.position = 0, 0

+ 8 - 0
synergine2_cocos2d/middleware.py View File

@@ -52,11 +52,19 @@ class MapMiddleware(object):
52 52
 
53 53
 class TMXMiddleware(MapMiddleware):
54 54
     def get_background_sprite(self) -> cocos.sprite.Sprite:
55
+        # TODO: Extract it from tmx
55 56
         return cocos.sprite.Sprite(os.path.join(
56 57
             self.map_dir_path,
57 58
             'background.png',
58 59
         ))
59 60
 
61
+    def get_interior_sprite(self) -> cocos.sprite.Sprite:
62
+        # TODO: Extract it from tmx
63
+        return cocos.sprite.Sprite(os.path.join(
64
+            self.map_dir_path,
65
+            'background_interiors.png',
66
+        ))
67
+
60 68
     def get_ground_layer(self) -> cocos.tiles.RectMapLayer:
61 69
         assert self.tmx
62 70
         return self.tmx['ground']

+ 19 - 4
synergine2_xyz/map.py View File

@@ -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