"""PixelEvent is a class defining a light response.  Inheriting classes should define state,
which should return a color, or None if the response is complete.  Consider
requiring a generate event."""
from operationscore.SmootCoreObject import *
from pixelevents.StepEvent import *
import util.ColorOps as color
class PixelEvent(SmootCoreObject):
    def init(self):
        self.validateArgs('PixelEvent.params')
        self.initEvent()
    def initEvent(self):
        pass
    #Returns  a new PixelEvent, but with a response scaled by c.
    def scale(self,c):
        if c == 1:
            return self
        newDict = dict(self.argDict) 
        newDict['Color'] = color.multiplyColor(newDict['Color'], c)
        return self.__class__(newDict)
    def state(self,timeDelay):
        pass
    @staticmethod 
    def addPixelEventIfMissing(responseDict):
        if not 'PixelEvent' in responseDict:
            if 'Color' in responseDict:
                color = responseDict['Color']
            else:
                raise Exception('Need Color.  Probably')
            responseDict['PixelEvent'] = StepEvent.generate(300, color)
        
