aboutsummaryrefslogtreecommitdiff
path: root/operationscore
diff options
context:
space:
mode:
authorGravatar Russell Cohen <rcoh@mit.edu>2011-01-20 14:57:43 -0500
committerGravatar Russell Cohen <rcoh@mit.edu>2011-01-20 14:57:43 -0500
commitf45b5e262c394cf00ef88f7fca1eab1b4de0fec9 (patch)
tree0f513d55c859773e27f1f615f3160ef1f66124ce /operationscore
parent0af38d1882291523d0d290a638e88be793f27678 (diff)
Rewrite of Behavior parent class to suck less. Lots of bug fixes. Added
'RestrictLocation' which allows events to fire based on their location.
Diffstat (limited to 'operationscore')
-rw-r--r--operationscore/Behavior.py29
-rw-r--r--operationscore/PixelEvent.py1
2 files changed, 9 insertions, 21 deletions
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):