|
@@ -41,14 +41,6 @@ from opencombat.simulation.event import DieEvent
|
41
|
41
|
|
42
|
42
|
|
43
|
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
|
44
|
def _on_key_press(self, k, m):
|
53
|
45
|
if self.selection:
|
54
|
46
|
if k == key.M:
|
|
@@ -62,19 +54,35 @@ class EditLayer(BaseEditLayer):
|
62
|
54
|
|
63
|
55
|
def draw(self) -> None:
|
64
|
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
|
73
|
self.draw_interiors()
|
66
|
74
|
|
67
|
75
|
def draw_interiors(self):
|
68
|
|
- # TODO BS 20171213: Into other layer !
|
69
|
76
|
now = time.time()
|
70
|
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
|
80
|
subject_grid_positions = [
|
74
|
81
|
a.subject.position for a
|
75
|
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
|
87
|
if interiors:
|
80
|
88
|
# FIXME: hardcoded
|
|
@@ -83,7 +91,7 @@ class EditLayer(BaseEditLayer):
|
83
|
91
|
# FIXME: tile height/width !
|
84
|
92
|
self.interior_manager.update_image_for_interiors(image, interiors, 8, 8)
|
85
|
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
|
95
|
'new_background.png',
|
88
|
96
|
file=image_fake_file,
|
89
|
97
|
)
|
|
@@ -105,7 +113,7 @@ class TileLayerManager(LayerManager):
|
105
|
113
|
interaction_manager,
|
106
|
114
|
gui,
|
107
|
115
|
)
|
108
|
|
- self.background_sprite = None # type: cocos.sprite.Sprite
|
|
116
|
+ self.background_layer = None # type: BackgroundLayer
|
109
|
117
|
self.interior_sprite = None # type: cocos.sprite.Sprite
|
110
|
118
|
self.ground_layer = None # type: cocos.tiles.RectMapLayer
|
111
|
119
|
self.top_layer = None # type: cocos.tiles.RectMapLayer
|
|
@@ -113,23 +121,32 @@ class TileLayerManager(LayerManager):
|
113
|
121
|
def init(self) -> None:
|
114
|
122
|
super().init()
|
115
|
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
|
127
|
self.ground_layer = self.middleware.get_ground_layer()
|
118
|
128
|
self.top_layer = self.middleware.get_top_layer()
|
119
|
129
|
|
120
|
130
|
def connect_layers(self) -> None:
|
121
|
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
|
133
|
self.main_layer.add(self.ground_layer)
|
124
|
134
|
super().connect_layers()
|
125
|
135
|
self.main_layer.add(self.top_layer)
|
126
|
136
|
|
127
|
137
|
def center(self) -> None:
|
128
|
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
|
152
|
# TODO: Move into synergine2cocos2d
|