Browse Source

move interior management in background layer

Bastien Sevajol 7 years ago
parent
commit
d029b1746e
1 changed files with 37 additions and 20 deletions
  1. 37 20
      opencombat/gui/base.py

+ 37 - 20
opencombat/gui/base.py View File

41
 
41
 
42
 
42
 
43
 class EditLayer(BaseEditLayer):
43
 class EditLayer(BaseEditLayer):
44
-    def __init__(self, *args, **kwargs) -> None:
45
-        super().__init__(*args, **kwargs)
46
-
47
-        # TODO BS 20171213: Into other layer !
48
-        self.last_interior_draw = 0
49
-        # FIXME BS: hardcoded (move into other layer)
50
-        self.interior_manager = InteriorManager(TileMap('opencombat/maps/003/003.tmx'))
51
-
52
     def _on_key_press(self, k, m):
44
     def _on_key_press(self, k, m):
53
         if self.selection:
45
         if self.selection:
54
             if k == key.M:
46
             if k == key.M:
62
 
54
 
63
     def draw(self) -> None:
55
     def draw(self) -> None:
64
         super().draw()
56
         super().draw()
57
+
58
+
59
+class BackgroundLayer(cocos.layer.Layer):
60
+    def __init__(
61
+        self,
62
+        layer_manager: LayerManager,
63
+        background_sprite: cocos.sprite.Sprite,
64
+    ) -> None:
65
+        super().__init__()
66
+        self.layer_manager = layer_manager
67
+        self.background_sprite = background_sprite
68
+        self.last_interior_draw_timestamp = 0
69
+        self.interior_manager = InteriorManager(TileMap('opencombat/maps/003/003.tmx'))
70
+
71
+    def draw(self, *args, **kwargs):
72
+        super().draw(*args, **kwargs)
65
         self.draw_interiors()
73
         self.draw_interiors()
66
 
74
 
67
     def draw_interiors(self):
75
     def draw_interiors(self):
68
-        # TODO BS 20171213: Into other layer !
69
         now = time.time()
76
         now = time.time()
70
         # FIXME: config
77
         # FIXME: config
71
-        if now - self.last_interior_draw > 2:
72
-            self.last_interior_draw = now
78
+        if now - self.last_interior_draw_timestamp > 2:
79
+            self.last_interior_draw_timestamp = now
73
             subject_grid_positions = [
80
             subject_grid_positions = [
74
                 a.subject.position for a
81
                 a.subject.position for a
75
                 in self.layer_manager.subject_layer.subjects_index.values()
82
                 in self.layer_manager.subject_layer.subjects_index.values()
76
             ]
83
             ]
77
-            interiors = self.interior_manager.get_interiors(where_positions=subject_grid_positions)
84
+            interiors = self.interior_manager.get_interiors(
85
+                where_positions=subject_grid_positions)
78
 
86
 
79
             if interiors:
87
             if interiors:
80
                 # FIXME: hardcoded
88
                 # FIXME: hardcoded
83
                 # FIXME: tile height/width !
91
                 # FIXME: tile height/width !
84
                 self.interior_manager.update_image_for_interiors(image, interiors, 8, 8)
92
                 self.interior_manager.update_image_for_interiors(image, interiors, 8, 8)
85
                 image.save(image_fake_file, format='PNG')
93
                 image.save(image_fake_file, format='PNG')
86
-                self.layer_manager.background_sprite.image = pyglet.image.load(
94
+                self.background_sprite.image = pyglet.image.load(
87
                     'new_background.png',
95
                     'new_background.png',
88
                     file=image_fake_file,
96
                     file=image_fake_file,
89
                 )
97
                 )
105
             interaction_manager,
113
             interaction_manager,
106
             gui,
114
             gui,
107
         )
115
         )
108
-        self.background_sprite = None  # type: cocos.sprite.Sprite
116
+        self.background_layer = None  # type: BackgroundLayer
109
         self.interior_sprite = None  # type: cocos.sprite.Sprite
117
         self.interior_sprite = None  # type: cocos.sprite.Sprite
110
         self.ground_layer = None  # type: cocos.tiles.RectMapLayer
118
         self.ground_layer = None  # type: cocos.tiles.RectMapLayer
111
         self.top_layer = None  # type: cocos.tiles.RectMapLayer
119
         self.top_layer = None  # type: cocos.tiles.RectMapLayer
113
     def init(self) -> None:
121
     def init(self) -> None:
114
         super().init()
122
         super().init()
115
         self.interior_sprite = self.middleware.get_interior_sprite()
123
         self.interior_sprite = self.middleware.get_interior_sprite()
116
-        self.background_sprite = self.middleware.get_background_sprite()
124
+        background_sprite = self.middleware.get_background_sprite()
125
+        self.background_layer = BackgroundLayer(self, background_sprite)
126
+        self.background_layer.add(background_sprite)
117
         self.ground_layer = self.middleware.get_ground_layer()
127
         self.ground_layer = self.middleware.get_ground_layer()
118
         self.top_layer = self.middleware.get_top_layer()
128
         self.top_layer = self.middleware.get_top_layer()
119
 
129
 
120
     def connect_layers(self) -> None:
130
     def connect_layers(self) -> None:
121
         self.main_layer.add(self.interior_sprite)
131
         self.main_layer.add(self.interior_sprite)
122
-        self.main_layer.add(self.background_sprite)
132
+        self.main_layer.add(self.background_layer)
123
         self.main_layer.add(self.ground_layer)
133
         self.main_layer.add(self.ground_layer)
124
         super().connect_layers()
134
         super().connect_layers()
125
         self.main_layer.add(self.top_layer)
135
         self.main_layer.add(self.top_layer)
126
 
136
 
127
     def center(self) -> None:
137
     def center(self) -> None:
128
         super().center()
138
         super().center()
129
-        self.interior_sprite.position = 0 + (self.interior_sprite.width / 2), 0 + (self.interior_sprite.height / 2)  # nopep8
130
-        self.background_sprite.position = 0 + (self.background_sprite.width / 2), 0 + (self.background_sprite.height/2)  # nopep8
131
-        self.ground_layer.set_view(0, 0, self.ground_layer.px_width, self.ground_layer.px_height,)  # nopep8
132
-        self.top_layer.set_view(0, 0, self.top_layer.px_width, self.top_layer.px_height)
139
+        self.interior_sprite.position = \
140
+            0 + (self.interior_sprite.width / 2), 0 + (self.interior_sprite.height / 2)
141
+        self.background_layer.background_sprite.position = \
142
+            0 + (self.background_layer.background_sprite.width / 2), 0 +\
143
+            (self.background_layer.background_sprite.height/2)
144
+        self.ground_layer.set_view(
145
+            0, 0, self.ground_layer.px_width, self.ground_layer.px_height,
146
+        )
147
+        self.top_layer.set_view(
148
+            0, 0, self.top_layer.px_width, self.top_layer.px_height,
149
+        )
133
 
150
 
134
 
151
 
135
 # TODO: Move into synergine2cocos2d
152
 # TODO: Move into synergine2cocos2d