X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Flights.py;h=ac6f08e38c279ec39d2847e2b181ca43b5a5eb6a;hb=5ee3a75030e3e36aed530aa89394982cfe711da2;hp=44c93871c805b34b5fc70761e4be500f3b461957;hpb=e2d9bd69b3e6e21c432be2321e3ce81f11b0e987;p=tabakrolletjie.git diff --git a/tabakrolletjie/lights.py b/tabakrolletjie/lights.py index 44c9387..ac6f08e 100644 --- a/tabakrolletjie/lights.py +++ b/tabakrolletjie/lights.py @@ -142,6 +142,17 @@ def seed_cost(light_config, num_colours): cls = BaseLight.find_cls(light_config["type"]) return cls.BASE_COST + int(cls.find_cost(light_config) / 10) + num_colours +def light_info(light_config): + """Generate info about a light to go in the tooltip. """ + cls = BaseLight.find_cls(light_config["type"]) + return cls.get_info(light_config) + + +def light_name(light_config): + """Find formatted light name. """ + cls = BaseLight.find_cls(light_config["type"]) + return cls.NAME + class BaseLight(object): """ Common light functionality. """ @@ -151,6 +162,7 @@ class BaseLight(object): FITTING_IMG = None FITTING_RADIUS = 24.0 BASE_COST = 0 + NAME = "light" # cached surfaces _surface_cache = {} @@ -216,6 +228,10 @@ class BaseLight(object): cost = 5 * config["intensity"] return cost + @classmethod + def get_info(cls, config): + return ["intensity: %g" % config["intensity"]] + def add(self, space): if self.body.space is not None: space.remove(self.body, *self.body.shapes) @@ -326,6 +342,7 @@ class Lamp(BaseLight): FITTING_IMG = "lamp.png" BASE_COST = 1 + NAME = "lamp" class PulsatingLamp(BaseLight): @@ -336,6 +353,7 @@ class PulsatingLamp(BaseLight): DEFAULT_INTENSITY_RANGE = (0.0, 0.9) DEFAULT_INTENSITY_VELOCITY = 0.1 BASE_COST = 3 + NAME = "pulsating lamp" def __init__(self, **kw): self.pulse_range = kw.pop("pulse_range", self.DEFAULT_PULSE_RANGE) @@ -382,11 +400,23 @@ class PulsatingLamp(BaseLight): cost += 5 * (ir[1] - ir[0]) return cost + @classmethod + def get_info(cls, config): + pr = config.get("pulse_range", cls.DEFAULT_PULSE_RANGE) + pv = config.get("pulse_velocity", cls.DEFAULT_PULSE_VELOCITY) + ir = config.get("intensity_range", cls.DEFAULT_INTENSITY_RANGE) + iv = config.get("intensity_velocity", cls.DEFAULT_INTENSITY_VELOCITY) + return [ + "intensity: %g - %g, velocity %g" % (ir[0], ir[1], iv), + "pulse: %d - %d, velocity %g" % (pr[0], pr[1], pv), + ] + class SpotLight(BaseLight): FITTING_IMG = "spotlight.png" BASE_COST = 5 + NAME = "spotlight" def __init__(self, **kw): self.angular_velocity = kw.pop("angular_velocity", None) @@ -417,4 +447,18 @@ class SpotLight(BaseLight): def find_cost(cls, config): cost = super(SpotLight, cls).find_cost(config) cost += config.get("angular_velocity", 0) + cost += config["spread"] / 10 + rl = config["radius_limits"] + cost += (rl[1] - rl[0]) / 10 return cost + + @classmethod + def get_info(cls, config): + info = super(SpotLight, cls).get_info(config) + rl = config["radius_limits"] + info.extend([ + "spread: %d" % config["spread"], + "length: %d" % (rl[1] - rl[0]), + "angular velocity: %g" % config.get("angular_velocity", 0), + ]) + return info