class Hoverboard(Vehicle): def __init__(self): super(Hoverboard, self).__init__('2300ad/hoverboard') self.obey_gravity = False self.use_pixel_collisions = True self.float_effect = FloatEffect(self) self.grab_changed.connect(self.on_grab_changed) self.player = None def should_adjust_position_with(self, obj, dx, dy): return obj != self.player or self.player.vehicle != self def on_added(self, layer): self.player = layer.area.level.engine.player self.float_effect.start() def on_removed(self, layer): self.float_effect.stop() def on_grab_changed(self): if self.grabbed: self.float_effect.start() else: self.float_effect.stop()
class FloatingSprite(Sprite): def __init__(self, name): super(FloatingSprite, self).__init__(name) self.float_effect = FloatEffect(self) def on_added(self, layer): self.float_effect.start()
class Teleporter1NE(Door): def __init__(self, *args, **kwargs): super(Teleporter1NE, self).__init__(*args, **kwargs) self.float_effect = FloatEffect(self) def on_added(self, layer): super(Teleporter1NE, self).on_added(layer) self.float_effect.start()
class Artifact(Item): def __init__(self, area, num): super(Artifact, self).__init__('artifact%s' % num) self.obey_gravity = False self.float_effect = FloatEffect(self) self.grab_changed.connect(self.on_grab_changed) self.float_effect.start() self.floating = True def on_grab_changed(self): if self.floating: self.float_effect.stop() self.floating = False def should_adjust_position_with(self, obj, dx, dy): return False