|
@@ -1,13 +1,21 @@
|
1
|
1
|
# coding: utf-8
|
|
2
|
+import io
|
2
|
3
|
import os
|
3
|
4
|
import random
|
4
|
5
|
import typing
|
5
|
6
|
|
6
|
7
|
import pyglet
|
|
8
|
+import time
|
|
9
|
+
|
|
10
|
+import tmx
|
|
11
|
+from PIL import Image
|
7
|
12
|
from pyglet.window import key
|
8
|
13
|
|
9
|
14
|
from cocos.actions import MoveTo as BaseMoveTo
|
10
|
15
|
from cocos.audio.pygame.mixer import Sound
|
|
16
|
+
|
|
17
|
+from opencc.simulation.interior import InteriorManager
|
|
18
|
+from opencc.simulation.tmx import TileMap
|
11
|
19
|
from opencc.user_action import UserAction
|
12
|
20
|
from synergine2.config import Config
|
13
|
21
|
from synergine2.log import SynergineLogger
|
|
@@ -34,6 +42,11 @@ class EditLayer(BaseEditLayer):
|
34
|
42
|
def __init__(self, *args, **kwargs) -> None:
|
35
|
43
|
super().__init__(*args, **kwargs)
|
36
|
44
|
|
|
45
|
+ # TODO BS 20171213: Into other layer !
|
|
46
|
+ self.last_interior_draw = 0
|
|
47
|
+ # FIXME BS: hardcoded (move into other layer)
|
|
48
|
+ self.interior_manager = InteriorManager(TileMap('opencc/maps/003/003.tmx'))
|
|
49
|
+
|
37
|
50
|
def _on_key_press(self, k, m):
|
38
|
51
|
if self.selection:
|
39
|
52
|
if k == key.M:
|
|
@@ -45,6 +58,34 @@ class EditLayer(BaseEditLayer):
|
45
|
58
|
if k == key.F:
|
46
|
59
|
self.user_action_pending = UserAction.ORDER_FIRE
|
47
|
60
|
|
|
61
|
+ def draw(self) -> None:
|
|
62
|
+ super().draw()
|
|
63
|
+ self.draw_interiors()
|
|
64
|
+
|
|
65
|
+ def draw_interiors(self):
|
|
66
|
+ # TODO BS 20171213: Into other layer !
|
|
67
|
+ now = time.time()
|
|
68
|
+ # FIXME: config
|
|
69
|
+ if now - self.last_interior_draw > 2:
|
|
70
|
+ self.last_interior_draw = now
|
|
71
|
+ subject_grid_positions = [
|
|
72
|
+ a.subject.position for a
|
|
73
|
+ in self.layer_manager.subject_layer.subjects_index.values()
|
|
74
|
+ ]
|
|
75
|
+ interiors = self.interior_manager.get_interiors(where_positions=subject_grid_positions)
|
|
76
|
+
|
|
77
|
+ if interiors:
|
|
78
|
+ # FIXME: hardcoded
|
|
79
|
+ image = Image.open('opencc/maps/003/background.png')
|
|
80
|
+ image_fake_file = io.BytesIO()
|
|
81
|
+ # FIXME: tile height/width !
|
|
82
|
+ self.interior_manager.update_image_for_interiors(image, interiors, 8, 8)
|
|
83
|
+ image.save(image_fake_file, format='PNG')
|
|
84
|
+ self.layer_manager.background_sprite.image = pyglet.image.load(
|
|
85
|
+ 'new_background.png',
|
|
86
|
+ file=image_fake_file,
|
|
87
|
+ )
|
|
88
|
+
|
48
|
89
|
|
49
|
90
|
class TileLayerManager(LayerManager):
|
50
|
91
|
edit_layer_class = EditLayer
|