Add pulsating lamp.
[tabakrolletjie.git] / tabakrolletjie / lights.py
index 6f39b70876b475e1fe34c3ad3982838f822d6493..2365220ea0099474d668d470dc29d500cfc306e6 100644 (file)
@@ -255,6 +255,29 @@ class MultiColourLamp(BaseLight):
         self.invalidate_fitting_image()
 
 
+class PulsatingLamp(BaseLight):
+
+    FITTING_IMG = "lamp.png"
+    DEFAULT_RANGE = (20, 100)
+    DEFAULT_VELOCITY = 2
+
+    def __init__(self, **kw):
+        self.pulse_range = kw.pop("pulse_range", self.DEFAULT_RANGE)
+        self.pulse_velocity = kw.pop("pulse_velocity", self.DEFAULT_VELOCITY)
+        super(PulsatingLamp, self).__init__(**kw)
+
+    def tick(self):
+        radius = self.ray_manager.max_radius
+        radius += self.pulse_velocity
+        if radius < self.pulse_range[0]:
+            radius = self.pulse_range[0]
+            self.pulse_velocity = -self.pulse_velocity
+        elif radius > self.pulse_range[1]:
+            radius = self.pulse_range[1]
+            self.pulse_velocity = -self.pulse_velocity
+        self.ray_manager.max_radius = radius
+
+
 class SpotLight(BaseLight):
 
     FITTING_IMG = "spotlight.png"