Bastien Sevajol 6 anos atrás
pai
commit
ce202dac6f

+ 1 - 0
cocos Ver arquivo

@@ -0,0 +1 @@
1
+../cocos/cocos

+ 1 - 0
sandbox/tiledstrategy/__init__.py Ver arquivo

@@ -0,0 +1 @@
1
+# coding: utf-8

+ 1 - 0
sandbox/tiledstrategy/gui/__init__.py Ver arquivo

@@ -0,0 +1 @@
1
+# coding: utf-8

+ 30 - 0
sandbox/tiledstrategy/gui/base.py Ver arquivo

@@ -0,0 +1,30 @@
1
+# coding: utf-8
2
+import cocos
3
+import pyglet
4
+
5
+from synergine2_cocos2d.gui import Gui
6
+from synergine2_cocos2d.gui import MainLayer
7
+from synergine2_cocos2d.layer import LayerManager
8
+from synergine2_cocos2d.middleware import TMXMiddleware
9
+
10
+
11
+class Game(Gui):
12
+    def __init__(self, *args, map_dir_path: str, **kwargs):
13
+        super().__init__(*args, **kwargs)
14
+        self.map_dir_path = map_dir_path
15
+        self.layer_manager = LayerManager(
16
+            self.config,
17
+            self.logger,
18
+            middleware=TMXMiddleware(
19
+                self.config,
20
+                self.logger,
21
+                self.map_dir_path,
22
+            ),
23
+        )
24
+        self.layer_manager.init()
25
+
26
+        pyglet.clock.schedule_interval(
27
+            lambda *_, **__: self.terminal.read(),
28
+            1 / 60.0,
29
+        )
30
+        cocos.director.director.run(self.layer_manager.main_scene)

Diferenças do arquivo suprimidas por serem muito extensas
+ 12 - 0
sandbox/tiledstrategy/maps/001.tmx


BIN
sandbox/tiledstrategy/maps/002/background.png Ver arquivo


Diferenças do arquivo suprimidas por serem muito extensas
+ 22 - 0
sandbox/tiledstrategy/maps/002/map.tmx


BIN
sandbox/tiledstrategy/maps/002/trees_64x64.png Ver arquivo


+ 4 - 0
sandbox/tiledstrategy/maps/002/trees_64x64.tsx Ver arquivo

@@ -0,0 +1,4 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<tileset name="trees_64x64" tilewidth="64" tileheight="64" tilecount="9" columns="3">
3
+ <image source="trees_64x64.png" width="192" height="192"/>
4
+</tileset>

Diferenças do arquivo suprimidas por serem muito extensas
+ 17 - 0
sandbox/tiledstrategy/maps/003/003.tmx


BIN
sandbox/tiledstrategy/maps/003/background.png Ver arquivo


BIN
sandbox/tiledstrategy/maps/003/man.png Ver arquivo


BIN
sandbox/tiledstrategy/maps/003/trees_64x64.png Ver arquivo


+ 4 - 0
sandbox/tiledstrategy/maps/003/trees_64x64.tsx Ver arquivo

@@ -0,0 +1,4 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<tileset name="trees_64x64" tilewidth="64" tileheight="64" tilecount="9" columns="3">
3
+ <image source="trees_64x64.png" width="192" height="192"/>
4
+</tileset>

BIN
sandbox/tiledstrategy/maps/background.png Ver arquivo


BIN
sandbox/tiledstrategy/maps/forest_tiles.png Ver arquivo


BIN
sandbox/tiledstrategy/maps/man.png Ver arquivo


+ 4 - 0
sandbox/tiledstrategy/maps/tileset.tsx Ver arquivo

@@ -0,0 +1,4 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<tileset name="forest_tiles" tilewidth="32" tileheight="32" tilecount="256" columns="16">
3
+ <image source="forest_tiles.png" width="512" height="512"/>
4
+</tileset>

+ 60 - 0
sandbox/tiledstrategy/run.py Ver arquivo

@@ -0,0 +1,60 @@
1
+# coding: utf-8
2
+import argparse
3
+import os
4
+import sys
5
+import logging
6
+from random import seed
7
+
8
+synergine2_path = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../'))
9
+sys.path.append(synergine2_path)
10
+
11
+from sandbox.tiledstrategy.simulation.base import TiledStrategySimulation, TiledStrategySubjects
12
+from synergine2.log import get_default_logger
13
+from synergine2.config import Config
14
+from sandbox.tiledstrategy.terminal.base import CocosTerminal
15
+from synergine2.core import Core
16
+from synergine2.cycle import CycleManager
17
+from synergine2.terminals import TerminalManager
18
+
19
+
20
+def main(seed_value: int=42):
21
+    seed(seed_value)
22
+
23
+    config = Config()
24
+    config.load_files(['sandbox/engulf/config.yaml'])
25
+    logger = get_default_logger(level=logging.DEBUG)
26
+
27
+    simulation = TiledStrategySimulation(config)
28
+    subjects = TiledStrategySubjects(simulation=simulation)
29
+    # TODO: Create subjects
30
+    simulation.subjects = subjects
31
+
32
+    core = Core(
33
+        config=config,
34
+        logger=logger,
35
+        simulation=simulation,
36
+        cycle_manager=CycleManager(
37
+            config=config,
38
+            logger=logger,
39
+            simulation=simulation,
40
+        ),
41
+        terminal_manager=TerminalManager(
42
+            config=config,
43
+            logger=logger,
44
+            terminals=[CocosTerminal(
45
+                config,
46
+                logger,
47
+                asynchronous=False,
48
+            )]
49
+        ),
50
+        cycles_per_seconds=1 / config.core.cycle_duration,
51
+    )
52
+    core.run()
53
+
54
+if __name__ == '__main__':
55
+    parser = argparse.ArgumentParser(description='Run TiledStrategy')
56
+    parser.add_argument('--seed', dest='seed', default=42)
57
+
58
+    args = parser.parse_args()
59
+
60
+    main(seed_value=args.seed)

+ 1 - 0
sandbox/tiledstrategy/simulation/__init__.py Ver arquivo

@@ -0,0 +1 @@
1
+# coding: utf-8

+ 13 - 0
sandbox/tiledstrategy/simulation/base.py Ver arquivo

@@ -0,0 +1,13 @@
1
+# coding: utf-8
2
+from synergine2.xyz import XYZSimulation
3
+from synergine2.xyz import XYZSubjects
4
+
5
+
6
+class TiledStrategySimulation(XYZSimulation):
7
+    behaviours_classes = [
8
+
9
+    ]
10
+
11
+
12
+class TiledStrategySubjects(XYZSubjects):
13
+    pass

+ 1 - 0
sandbox/tiledstrategy/terminal/__init__.py Ver arquivo

@@ -0,0 +1 @@
1
+# coding: utf-8

+ 25 - 0
sandbox/tiledstrategy/terminal/base.py Ver arquivo

@@ -0,0 +1,25 @@
1
+# coding: utf-8
2
+
3
+from synergine2.terminals import Terminal
4
+
5
+
6
+class CocosTerminal(Terminal):
7
+    subscribed_events = [
8
+
9
+    ]
10
+
11
+    def __init__(self, *args, asynchronous: bool, map_dir_path: str, **kwargs):
12
+        super().__init__(*args, **kwargs)
13
+        self.asynchronous = asynchronous
14
+        self.gui = None
15
+        self.map_dir_path = map_dir_path
16
+
17
+    def run(self):
18
+        from sandbox.tiledstrategy.gui.base import Game
19
+        self.gui = Game(
20
+            self.config,
21
+            self.logger,
22
+            self,
23
+            map_dir_path=self.map_dir_path,
24
+        )
25
+        self.gui.run()

+ 1 - 1
synergine2/core.py Ver arquivo

@@ -18,7 +18,7 @@ class Core(BaseObject):
18 18
         simulation: Simulation,
19 19
         cycle_manager: CycleManager,
20 20
         terminal_manager: TerminalManager=None,
21
-        cycles_per_seconds: int=1,
21
+        cycles_per_seconds: float=1.0,
22 22
     ):
23 23
         self.config = config
24 24
         self.logger = logger

+ 54 - 0
synergine2_cocos2d/layer.py Ver arquivo

@@ -0,0 +1,54 @@
1
+# coding: utf-8
2
+import typing
3
+
4
+import cocos
5
+from synergine2.config import Config
6
+from synergine2.log import SynergineLogger
7
+from synergine2_cocos2d.gui import MainLayer
8
+from synergine2_cocos2d.middleware import MapMiddleware
9
+
10
+
11
+class LayerManager(object):
12
+    def __init__(
13
+        self,
14
+        config: Config,
15
+        logger: SynergineLogger,
16
+        middleware: MapMiddleware,
17
+    ) -> None:
18
+        self.config = config
19
+        self.logger = logger
20
+        self.middleware = middleware
21
+
22
+        self.main_scene = None  # type: cocos.scene.Scene
23
+        self.main_layer = None  # type: cocos.layer.Layer
24
+        self.background_layers = []  # type: typing.List[cocos.layer.Layer]
25
+        self.subject_layers = []  # type: typing.List[cocos.layer.Layer]
26
+        self.decoration_layers = []  # type: typing.List[cocos.layer.Layer]
27
+
28
+    @property
29
+    def background(self) -> cocos.layer.Layer:
30
+        return self.background_layers[0]
31
+
32
+    @property
33
+    def subject(self) -> cocos.layer.Layer:
34
+        return self.background_layers[0]
35
+
36
+    @property
37
+    def decoration(self) -> cocos.layer.Layer:
38
+        return self.background_layers[0]
39
+
40
+    def init(self) -> None:
41
+        self.main_layer = MainLayer()  # self.terminal) TODO: Ne plus donner le terminal
42
+
43
+        self.background_layers.extend(self.middleware.get_background_layers())
44
+        self.subject_layers.append(cocos.layer.Layer())
45
+        self.decoration_layers.extend(self.middleware.get_decoration_layers())
46
+
47
+        for layer in self.background_layers:
48
+            self.main_layer.add(layer)
49
+
50
+        for layer in self.subject_layers:
51
+            self.main_layer.add(layer)
52
+
53
+        for layer in self.decoration_layers:
54
+            self.main_layer.add(layer)

+ 44 - 0
synergine2_cocos2d/middleware.py Ver arquivo

@@ -0,0 +1,44 @@
1
+# coding: utf-8
2
+from synergine2.config import Config
3
+from synergine2.log import SynergineLogger
4
+
5
+
6
+class MapMiddleware(object):
7
+    def __init__(
8
+        self,
9
+        config: Config,
10
+        logger: SynergineLogger,
11
+        map_dir_path: str,
12
+    ) -> None:
13
+        self.config = config
14
+        self.logger = logger
15
+        self.map_dir_path = map_dir_path
16
+
17
+
18
+class TMXMiddleware(MapMiddleware):
19
+    pass  # TODO
20
+
21
+tmx = cocos.tiles.load('maps/003/003.tmx')
22
+
23
+background = cocos.sprite.Sprite('background.png')
24
+level0 = tmx['level0']
25
+level1 = tmx['level1']
26
+
27
+layer = MainLayer(self.terminal)
28
+layer.add(background, 0)
29
+layer.add(level0, 1)
30
+layer.add(level1, 2)
31
+
32
+main_scene = cocos.scene.Scene(layer)
33
+
34
+background.set_position(0 + (background.width / 2), 0 + (background.height / 2))
35
+level0.set_view(0, 0, level0.px_width, level0.px_height)
36
+level1.set_view(0, 0, level1.px_width, level1.px_height)
37
+
38
+main_scene.position = 0, 0
39
+
40
+man = cocos.sprite.Sprite('man.png')
41
+level0.add(man)
42
+man.position = 0, 0
43
+move = cocos.actions.MoveTo((80, 80), 2)
44
+man.do(move)