diff options
Diffstat (limited to 'behaviors/Flasher.py')
-rw-r--r-- | behaviors/Flasher.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/behaviors/Flasher.py b/behaviors/Flasher.py new file mode 100644 index 0000000..4a2dad4 --- /dev/null +++ b/behaviors/Flasher.py @@ -0,0 +1,41 @@ +# Implements a pulsing/flashing behavior. +# Jim Salem: jsalem@gmail.com +# +# Args: +# Factor - The speed of flashing. Must be b/w 0 and 1. Default is .95 +# + +from operationscore.Behavior import * +import util.ColorOps as colorops +import pdb +class Flasher(Behavior): + def processResponse(self, sensorInputs, recursiveInputs): + ret = [] + for response in sensorInputs: + # Get the multiplier + if self['Factor'] != None: + factor = self['Factor'] + else: + factor = 0.95 + # Initialize the first time + if not 'FireflyStartColor' in response: + response['FireflyValue'] = 1.0 + response['FireflyDir'] = 1 + response['FireflyStartColor'] = response['Color']; + else: + # Update the current value + if response['FireflyDir'] == 1: + response['FireflyValue'] = response['FireflyValue'] * factor + if response['FireflyValue'] <= 0.01: + response['FireflyValue'] = 0.01 + response['FireflyDir'] = 0 + else: + response['FireflyValue'] = response['FireflyValue'] / factor + if response['FireflyValue'] >= 1.0: + response['FireflyValue'] = 1.0 + response['FireflyDir'] = 1 + + # Compute the color + response['Color'] = colorops.multiplyColor(response['FireflyStartColor'], response['FireflyValue']) + ret.append(response) + return (ret, []) #no direct ouput |