Browse Source

reorganize gui

Bastien Sevajol 8 years ago
parent
commit
95c0dd7ba1
3 changed files with 39 additions and 11 deletions
  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 View File

4
 
4
 
5
 from sandbox.life_game.simulation import CellDieEvent
5
 from sandbox.life_game.simulation import CellDieEvent
6
 from sandbox.life_game.simulation import CellBornEvent
6
 from sandbox.life_game.simulation import CellBornEvent
7
+from synergine2.gui import Gui
7
 from synergine2.simulation import Event
8
 from synergine2.simulation import Event
8
 from synergine2.terminals import TerminalPackage
9
 from synergine2.terminals import TerminalPackage
9
 from synergine2.terminals import Terminal
10
 from synergine2.terminals import Terminal
25
         self.add(self.label)
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
         self.hello_layer = HelloWorld()
37
         self.hello_layer = HelloWorld()
36
         self.main_scene = cocos.scene.Scene(self.hello_layer)
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
         self.born = 0
43
         self.born = 0
39
         self.die = 0
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
     def before_received(self, package: TerminalPackage):
49
     def before_received(self, package: TerminalPackage):
47
         self.born = 0
50
         self.born = 0

+ 1 - 1
sandbox/life_game/run.py View File

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

+ 25 - 0
synergine2/gui.py View File

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()