ya2 · news · projects · code · about

new item
[pmachines.git] / pmachines / items / item.py
index 37e653268c9674703a809dbe542447ae1b16bfb6..3519801a410dde290d1a0b0d27c5510559af1684 100644 (file)
@@ -13,13 +13,16 @@ class Command:
         self.rot = rot
 
 
-class FixedStrategy:
+class ItemStrategy: pass
+
+
+class FixedStrategy(ItemStrategy):
 
     def win_condition(self):
         return True
 
 
-class StillStrategy:
+class StillStrategy(ItemStrategy):
 
     def __init__(self, np):
         self._np = np
@@ -218,7 +221,7 @@ class Item(DirectObject):
     def on_click_l(self, pos):
         if self._paused: return
         if self.__editing:
-            messenger.send('editor-item-click-l', [self])
+            messenger.send('editor-item-click', [self])
         self._start_drag_pos = pos, self._np.get_pos()
         loader.load_sfx('assets/audio/sfx/grab.ogg').play()
         if not self._instantiated:
@@ -245,6 +248,8 @@ class Item(DirectObject):
 
     def on_click_r(self, pos):
         if self._paused or not self._instantiated: return
+        if self.__editing:
+            messenger.send('editor-item-click', [self])
         self._prev_rot_info = pos, self._np.get_pos(), self._np.get_r()
         loader.load_sfx('assets/audio/sfx/grab.ogg').play()
 
@@ -374,7 +379,7 @@ class Item(DirectObject):
 
     @property
     def position(self):
-        return self._
+        return self._np.get_pos()
 
     @position.setter
     def position(self, val):
@@ -399,6 +404,32 @@ class Item(DirectObject):
         self._np.set_scale(val)
         self.json['model_scale'] = val
 
+    @property
+    def id(self):
+        if 'id' in self.json:
+            return self.json['id']
+        return None
+
+    @id.setter
+    def id(self, val):
+        self.json['id'] = val
+
+    @property
+    def strategy_json(self):
+        return self.json['strategy']
+
+    @strategy_json.setter
+    def strategy_json(self, val):
+        self.json['strategy'] = val
+
+    @property
+    def strategy_args_json(self):
+        return self.json['strategy_args']
+
+    @strategy_args_json.setter
+    def strategy_args_json(self, val):
+        self.json['strategy_args'] = val.split(' ')
+
     def destroy(self):
         self._np.remove_node()
         taskMgr.remove(self._box_tsk)