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

+ 8 - 0
synergine2_cocos2d/middleware.py View File

52
 
52
 
53
 class TMXMiddleware(MapMiddleware):
53
 class TMXMiddleware(MapMiddleware):
54
     def get_background_sprite(self) -> cocos.sprite.Sprite:
54
     def get_background_sprite(self) -> cocos.sprite.Sprite:
55
+        # TODO: Extract it from tmx
55
         return cocos.sprite.Sprite(os.path.join(
56
         return cocos.sprite.Sprite(os.path.join(
56
             self.map_dir_path,
57
             self.map_dir_path,
57
             'background.png',
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
     def get_ground_layer(self) -> cocos.tiles.RectMapLayer:
68
     def get_ground_layer(self) -> cocos.tiles.RectMapLayer:
61
         assert self.tmx
69
         assert self.tmx
62
         return self.tmx['ground']
70
         return self.tmx['ground']

+ 19 - 4
synergine2_xyz/map.py View File

29
     xyz_tile_class = XYZTile
29
     xyz_tile_class = XYZTile
30
     transform_zero_y_to_bottom = True
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
     def __init__(self, map_file_path: str) -> None:
37
     def __init__(self, map_file_path: str) -> None:
33
         self.tmx_map = tmx.TileMap.load(map_file_path)
38
         self.tmx_map = tmx.TileMap.load(map_file_path)
34
         self.tmx_layers = {}  # type: typing.Dict[str, tmx.Layer]
39
         self.tmx_layers = {}  # type: typing.Dict[str, tmx.Layer]
48
     def get_default_tileset(self) -> tmx.Tileset:
53
     def get_default_tileset(self) -> tmx.Tileset:
49
         return list(self.tmx_tilesets.values())[0]
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
         return self.xyz_tile_class(tileset.tiles[0])
68
         return self.xyz_tile_class(tileset.tiles[0])
54
 
69
 
55
     def _load(self) -> None:
70
     def _load(self) -> None:
89
                 position_key = '{}.{}'.format(x, y)
104
                 position_key = '{}.{}'.format(x, y)
90
 
105
 
91
                 if not layer_tile.gid:
106
                 if not layer_tile.gid:
92
-                    tile = self.get_default_tile()
107
+                    tile = self.get_default_tile(layer_name=layer_name)
93
                 elif not layer_tile.gid in self.tmx_tiles:
108
                 elif not layer_tile.gid in self.tmx_tiles:
94
                     # tile = UnconstructedTile()
109
                     # tile = UnconstructedTile()
95
-                    tile = self.get_default_tile()
110
+                    tile = self.get_default_tile(layer_name=layer_name)
96
                 else:
111
                 else:
97
                     tile = self.tmx_tiles[layer_tile.gid]
112
                     tile = self.tmx_tiles[layer_tile.gid]
98
 
113