def __init(self, x, y, owner): self.owner = owner class Tmp(fife.InstanceActionListener): pass self.InstanceActionListener = Tmp() self.InstanceActionListener.onInstanceActionFinished = \ WeakMethod(self.onInstanceActionFinished) self.InstanceActionListener.onInstanceActionCancelled = \ WeakMethod(self.onInstanceActionCancelled) self.InstanceActionListener.onInstanceActionFrame = lambda *args: None self.InstanceActionListener.thisown = 0 # fife will claim ownership of this self._instance = self.session.view.layers[ LAYERS.OBJECTS].createInstance( self.__class__._fife_object, fife.ModelCoordinate(int(x), int(y), 0), str(self.worldid)) fife.InstanceVisual.create(self._instance) location = fife.Location(self._instance.getLocation().getLayer()) location.setExactLayerCoordinates( fife.ExactModelCoordinate(x + x, y + y, 0)) self.act(self._action, location, True) self._instance.addActionListener(self.InstanceActionListener) self.loading_area = self.position self._health_displayed = False if self.has_component(HealthComponent): self.get_component(HealthComponent).add_damage_dealt_listener( self._on_damage)
def append(self, callback): """Just like list.append, except it can also handle lists and discards None-values""" if callback is None: pass elif callable(callback): list.append(self, WeakMethod(callback)) elif isinstance(callback, list, tuple): for i in callback: self.append(i) else: assert False
def __contains__(self, elem): if isinstance(elem, WeakMethod): return list.__contains__(self, elem) else: return WeakMethod(elem) in self
def remove(self, elem): if not isinstance(elem, WeakMethod): elem = WeakMethod(elem) list.remove(self, elem)