Bastien Sevajol 6 years ago
parent
commit
76ce137aa0
1 changed files with 23 additions and 1 deletions
  1. 23 1
      synergine2_cocos2d/actor.py

+ 23 - 1
synergine2_cocos2d/actor.py View File

1
 # coding: utf-8
1
 # coding: utf-8
2
+import io
3
+import os
2
 import typing
4
 import typing
5
+import ntpath
3
 
6
 
4
 import pyglet
7
 import pyglet
5
 
8
 
32
     ):
35
     ):
33
         # Note: Parameter required, but we want to modify little as possible parent init
36
         # Note: Parameter required, but we want to modify little as possible parent init
34
         assert config, "Config is a required parameter"
37
         assert config, "Config is a required parameter"
38
+        self.config = config
35
         self.path_manager = PathManager(config.resolve('global.include_path.graphics'))
39
         self.path_manager = PathManager(config.resolve('global.include_path.graphics'))
36
-        image = pyglet.resource.image(self.path_manager.path(image_path))
40
+        default_image_path = self.build_default_image(
41
+            subject.id,
42
+            self.path_manager.path(image_path),
43
+        )
44
+        image = pyglet.image.load(os.path.abspath(default_image_path))
37
         self.animation_images = {}  # type: typing.Dict[str, typing.List[pyglet.image.TextureRegion]]  # nopep8
45
         self.animation_images = {}  # type: typing.Dict[str, typing.List[pyglet.image.TextureRegion]]  # nopep8
38
         super().__init__(
46
         super().__init__(
39
             image,
47
             image,
54
         self.properties = properties or {}
62
         self.properties = properties or {}
55
         self._freeze = False
63
         self._freeze = False
56
 
64
 
65
+    def build_default_image(self, subject_id: int, base_image_path: str) -> str:
66
+        cache_dir = self.config.resolve('global.cache_dir_path')
67
+        with open(base_image_path, 'rb') as base_image_file:
68
+
69
+            final_name = '_'.join([
70
+                str(subject_id),
71
+                ntpath.basename(base_image_path),
72
+            ])
73
+            final_path = os.path.join(cache_dir, final_name)
74
+            with open(final_path, 'wb+') as built_image_file:
75
+                built_image_file.write(base_image_file.read())
76
+
77
+        return final_path
78
+
57
     def freeze(self) -> None:
79
     def freeze(self) -> None:
58
         """
80
         """
59
         Set object to freeze mode: No visual modification can be done anymore
81
         Set object to freeze mode: No visual modification can be done anymore