Bastien Sevajol преди 8 години
родител
ревизия
95c0dd7ba1
променени са 3 файла, в които са добавени 39 реда и са изтрити 11 реда
  1. 13 10
      sandbox/life_game/gui.py
  2. 1 1
      sandbox/life_game/run.py
  3. 25 0
      synergine2/gui.py

+ 13 - 10
sandbox/life_game/gui.py Целия файл

@@ -4,6 +4,7 @@ from cocos.actions import Repeat, ScaleBy, Reverse
4 4
 
5 5
 from sandbox.life_game.simulation import CellDieEvent
6 6
 from sandbox.life_game.simulation import CellBornEvent
7
+from synergine2.gui import Gui
7 8
 from synergine2.simulation import Event
8 9
 from synergine2.terminals import TerminalPackage
9 10
 from synergine2.terminals import Terminal
@@ -25,23 +26,25 @@ class HelloWorld(cocos.layer.Layer):
25 26
         self.add(self.label)
26 27
 
27 28
 
28
-class Gui(object):
29
-    def __init__(self, terminal: Terminal):
30
-        self.terminal = terminal
31
-        self.terminal.register_event_handler(CellDieEvent, self.on_cell_die)
32
-        self.terminal.register_event_handler(CellBornEvent, self.on_cell_born)
29
+class LifeGameGui(Gui):
30
+    def __init__(
31
+            self,
32
+            terminal: Terminal,
33
+            read_queue_interval: float = 1 / 60.0,
34
+    ):
35
+        super().__init__(terminal, read_queue_interval)
33 36
 
34
-        cocos.director.director.init()
35 37
         self.hello_layer = HelloWorld()
36 38
         self.main_scene = cocos.scene.Scene(self.hello_layer)
37 39
 
40
+        self.terminal.register_event_handler(CellDieEvent, self.on_cell_die)
41
+        self.terminal.register_event_handler(CellBornEvent, self.on_cell_born)
42
+
38 43
         self.born = 0
39 44
         self.die = 0
40 45
 
41
-        pyglet.clock.schedule_interval(lambda *_, **__: self.terminal.read(), 1 / 60.0)
42
-
43
-    def run(self):
44
-        cocos.director.director.run(self.main_scene)
46
+    def get_main_scene(self) -> HelloWorld:
47
+        return self.main_scene
45 48
 
46 49
     def before_received(self, package: TerminalPackage):
47 50
         self.born = 0

+ 1 - 1
sandbox/life_game/run.py Целия файл

@@ -80,7 +80,7 @@ class CocosTerminal(Terminal):
80 80
 
81 81
     def run(self):
82 82
         from sandbox.life_game import gui
83
-        self.gui = gui.Gui(self)
83
+        self.gui = gui.LifeGameGui(self)
84 84
         self.gui.run()
85 85
 
86 86
 

+ 25 - 0
synergine2/gui.py Целия файл

@@ -0,0 +1,25 @@
1
+import cocos
2
+import pyglet
3
+
4
+from synergine2.terminals import Terminal
5
+
6
+
7
+class Gui(object):
8
+    def __init__(
9
+            self,
10
+            terminal: Terminal,
11
+            read_queue_interval: float= 1/60.0,
12
+    ):
13
+        self._read_queue_interval = read_queue_interval
14
+        self.terminal = terminal
15
+        cocos.director.director.init()
16
+
17
+    def run(self):
18
+        pyglet.clock.schedule_interval(
19
+            lambda *_, **__: self.terminal.read(),
20
+            self._read_queue_interval,
21
+        )
22
+        cocos.director.director.run(self.get_main_scene())
23
+
24
+    def get_main_scene(self) -> cocos.cocosnode.CocosNode:
25
+        raise NotImplementedError()