From c1b1a14359305583bb6c47b240097fc0fb5cf6c4 Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Sat, 10 Sep 2016 00:43:32 +0200 Subject: [PATCH] Also pulsate intensity. --- data/stations/station-alpha.json | 4 +++- tabakrolletjie/lights.py | 39 +++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/data/stations/station-alpha.json b/data/stations/station-alpha.json index 7692adc..e8e9619 100644 --- a/data/stations/station-alpha.json +++ b/data/stations/station-alpha.json @@ -49,8 +49,10 @@ { "type": "pulsatinglamp", "colour": "cyan", - "pulse_range": [20, 100], + "pulse_range": [20, 90], "pulse_velocity": 1, + "intensity_range": [0.1, 0.8], + "intensity_velocity": 0.01, "position": [250, 450], "intensity": 0.5 } diff --git a/tabakrolletjie/lights.py b/tabakrolletjie/lights.py index 2365220..3c25188 100644 --- a/tabakrolletjie/lights.py +++ b/tabakrolletjie/lights.py @@ -105,6 +105,7 @@ class BaseLight(object): "blue": (0, 0, 255), "cyan": (0, 255, 255), "yellow": (255, 255, 0), + "magenta": (255, 0, 255), "white": (255, 255, 255), } @@ -258,24 +259,36 @@ class MultiColourLamp(BaseLight): class PulsatingLamp(BaseLight): FITTING_IMG = "lamp.png" - DEFAULT_RANGE = (20, 100) - DEFAULT_VELOCITY = 2 + DEFAULT_PULSE_RANGE = (20, 100) + DEFAULT_PULSE_VELOCITY = 2 + DEFAULT_INTENSITY_RANGE = (0.0, 0.9) + DEFAULT_INTENSITY_VELOCITY = 0.1 def __init__(self, **kw): - self.pulse_range = kw.pop("pulse_range", self.DEFAULT_RANGE) - self.pulse_velocity = kw.pop("pulse_velocity", self.DEFAULT_VELOCITY) + self.pulse_range = kw.pop("pulse_range", self.DEFAULT_PULSE_RANGE) + self.pulse_velocity = kw.pop( + "pulse_velocity", self.DEFAULT_PULSE_VELOCITY) + self.intensity_range = kw.pop( + "intensity_range", self.DEFAULT_INTENSITY_RANGE) + self.intensity_velocity = kw.pop( + "intensity_velocity", self.DEFAULT_INTENSITY_VELOCITY) super(PulsatingLamp, self).__init__(**kw) + def _update_range(self, value, velocity, value_range): + value += velocity + if value < value_range[0]: + value = value_range[0] + velocity = -velocity + elif value > value_range[1]: + value = value_range[1] + velocity = -velocity + return value, velocity + 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 + self.ray_manager.max_radius, self.pulse_velocity = self._update_range( + self.ray_manager.max_radius, self.pulse_velocity, self.pulse_range) + self.intensity, self.intensity_velocity = self._update_range( + self.intensity, self.intensity_velocity, self.intensity_range) class SpotLight(BaseLight): -- 2.34.1