瀏覽代碼

Fixes https://github.com/buxx/OpenCombat/issues/36

Bastien Sevajol 6 年之前
父節點
當前提交
fd0cfceb55
共有 1 個文件被更改,包括 7 次插入2 次删除
  1. 7 2
      synergine2/share.py

+ 7 - 2
synergine2/share.py 查看文件

@@ -31,7 +31,8 @@ class SharedDataIndex(object):
31 31
 
32 32
 class SharedData(object):
33 33
     def __init__(
34
-        self, key: str,
34
+        self,
35
+        key: str,
35 36
         self_type: bool=False,
36 37
         default: typing.Any=None,
37 38
     ) -> None:
@@ -44,6 +45,7 @@ class SharedData(object):
44 45
         self.self_type = self_type
45 46
         self._default = default
46 47
         self.is_special_type = isinstance(self.default_value, (list, dict))
48
+        self.type = type(self.default_value)
47 49
         if self.is_special_type:
48 50
             if isinstance(self.default_value, list):
49 51
                 self.special_type = TrackedList
@@ -227,7 +229,10 @@ class SharedDataManager(object):
227 229
             except UnknownSharedData:
228 230
                 pass  # If no shared data, no previous value to remove
229 231
 
230
-            self.set(final_key, value_)
232
+            if not shared_data.is_special_type:
233
+                self.set(final_key, value_)
234
+            else:
235
+                self.set(final_key, shared_data.type(value_))
231 236
 
232 237
             for index in indexes:
233 238
                 index.add(value_)