From f45b5e262c394cf00ef88f7fca1eab1b4de0fec9 Mon Sep 17 00:00:00 2001 From: Russell Cohen Date: Thu, 20 Jan 2011 14:57:43 -0500 Subject: Rewrite of Behavior parent class to suck less. Lots of bug fixes. Added 'RestrictLocation' which allows events to fire based on their location. --- operationscore/Behavior.py | 29 ++++++++--------------------- operationscore/PixelEvent.py | 1 + 2 files changed, 9 insertions(+), 21 deletions(-) (limited to 'operationscore') diff --git a/operationscore/Behavior.py b/operationscore/Behavior.py index d48c1d5..882a290 100644 --- a/operationscore/Behavior.py +++ b/operationscore/Behavior.py @@ -22,21 +22,19 @@ class Behavior(SmootCoreObject): self.behaviorInit() def behaviorInit(self): pass + def addMapper(fn): + def withmap(fn): + return self.addMapperToResponse(fn()) + return withmap def processResponse(self, sensorInputs, recursiveInputs): - pass + raise Exception('ProcessResponse not defined!') def addInput(self, sensorInput): self.sensorResponseQueue.append(sensorInput) #used for behavior chaining def immediateProcessInput(self, sensorInputs, recursiveInputs=[]): - try: - (output,recursions) = self.processResponse(sensorInputs, \ + (outputs,recursions) = self.processResponse(sensorInputs, \ recursiveInputs) - if type(output) != type([]): - output = [output] - return self.addMapperToResponse((output, recursions)) #TODO: use a decorator for this? - except: #deal with behaviors that don't return a tuple. - responses = self.processResponse(sensorInputs, recursiveInputs) - return (self.processResponse(sensorInputs, recursiveInputs),[]) + return self.addMapperToResponse((outputs,recursions)) def addInputs(self, sensorInputs): if type(sensorInputs) == type([]): [self.addInput(sensorInput) for sensorInput in sensorInputs] @@ -54,19 +52,8 @@ class Behavior(SmootCoreObject): return responses return responses def timeStep(self): #TODO: type checking. clean this up - responses = self.processResponse(self.sensorResponseQueue, \ + (outputs, recursions) = self.processResponse(self.sensorResponseQueue, \ self.recursiveResponseQueue) - if type(responses) == type(tuple()) and len(responses) == 2: - (outputs, recursions) = responses - else: - outputs = responses - recursions = [] self.sensorResponseQueue = [] self.recursiveResponseQueue = recursions - if type(outputs) != type([]): - outputs = [outputs] - try: - return self.addMapperToResponse(outputs) #TODO: WTF is up with this? - except: - pass return self.addMapperToResponse(outputs) diff --git a/operationscore/PixelEvent.py b/operationscore/PixelEvent.py index 6b0812f..80d3b9e 100644 --- a/operationscore/PixelEvent.py +++ b/operationscore/PixelEvent.py @@ -2,6 +2,7 @@ #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): -- cgit v1.2.3