removed LogicGateAI
This commit is contained in:
parent
a45a3e6980
commit
d8f3a308ac
|
|
@ -1,7 +1,7 @@
|
|||
"""EntityCreatorAI module: contains the EntityCreatorAI class"""
|
||||
|
||||
import EntityCreatorBase
|
||||
import LogicGateAI
|
||||
import LogicGate
|
||||
import EditMgrAI
|
||||
import LevelMgrAI
|
||||
import ZoneEntityAI
|
||||
|
|
@ -49,7 +49,7 @@ class EntityCreatorAI(EntityCreatorBase.EntityCreatorBase):
|
|||
'entityGroup': nothing,
|
||||
'entrancePoint': nothing,
|
||||
'levelMgr': Functor(cLE, LevelMgrAI.LevelMgrAI),
|
||||
'logicGate': Functor(cLE, LogicGateAI.LogicGateAI),
|
||||
'logicGate': Functor(cLE, LogicGate.LogicGate),
|
||||
'model' : nothing,
|
||||
'nodepath': nothing,
|
||||
'path': nothing,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,143 @@
|
|||
"""
|
||||
LogicGate.py
|
||||
|
||||
Logic Gates:
|
||||
|
||||
and: 0 0 = 0 or: 0 0 = 0 xor: 0 0 = 0
|
||||
0 1 = 0 0 1 = 1 0 1 = 1
|
||||
1 0 = 0 1 0 = 1 1 0 = 1
|
||||
1 1 = 1 1 1 = 1 1 1 = 0
|
||||
|
||||
nand: 0 0 = 1 nor: 0 0 = 1 xnor: 0 0 = 1
|
||||
0 1 = 1 0 1 = 0 0 1 = 0
|
||||
1 0 = 1 1 0 = 0 1 0 = 0
|
||||
1 1 = 0 1 1 = 0 1 1 = 1
|
||||
|
||||
In the following:
|
||||
1: send a true message
|
||||
0: send a false message
|
||||
-: don't send a message
|
||||
|
||||
a b and or xor nand nor xnor
|
||||
(0 0) (0) (0) (0) (1) (1) (1) <--- initial state
|
||||
1 0 - 1 1 - 0 0
|
||||
0 0 - 0 0 - 1 1
|
||||
1 0 - 1 1 - 0 0
|
||||
1 1 1 - 0 0 - 1
|
||||
0 1 0 - 1 1 - 0
|
||||
1 1 1 - 0 0 - 1
|
||||
0 1 0 - 1 1 - 0
|
||||
0 0 - 0 0 - 1 1
|
||||
"""
|
||||
|
||||
import PandaObject
|
||||
import DirectNotifyGlobal
|
||||
import Entity
|
||||
|
||||
|
||||
import LogicGateAI
|
||||
def andTest(self, a, b):
|
||||
assert(self.debugPrint("andTest(a=%s, b=%s)"%(a, b)))
|
||||
if b:
|
||||
messenger.send(self.getName(), [a])
|
||||
|
||||
class LogicGate(LogicGateAI.LogicGateAI):
|
||||
"""
|
||||
"""
|
||||
pass
|
||||
def orTest(self, a, b):
|
||||
assert(self.debugPrint("orTest(a=%s, b=%s)"%(a, b)))
|
||||
if not b:
|
||||
messenger.send(self.getName(), [a])
|
||||
# else: ...we already sent the messege when b was set.
|
||||
|
||||
def xorTest(self, a, b):
|
||||
assert(self.debugPrint("xorTest(a=%s, b=%s)"%(a, b)))
|
||||
messenger.send(self.getName(), [(not (a and b)) and (a or b)])
|
||||
|
||||
def nandTest(self, a, b):
|
||||
assert(self.debugPrint("nandTest(a=%s, b=%s)"%(a, b)))
|
||||
if b:
|
||||
messenger.send(self.getName(), [not (a and b)])
|
||||
|
||||
def norTest(self, a, b):
|
||||
assert(self.debugPrint("norTest(a=%s, b=%s)"%(a, b)))
|
||||
if not b:
|
||||
messenger.send(self.getName(), [not (a or b)])
|
||||
# else: ...we already sent the messege when b was set.
|
||||
|
||||
def xnorTest(self, a, b):
|
||||
assert(self.debugPrint("xnorTest(a=%s, b=%s)"%(a, b)))
|
||||
messenger.send(self.getName(), [(a and b) or (not (a or b))])
|
||||
|
||||
|
||||
class LogicGate(Entity.Entity, PandaObject.PandaObject):
|
||||
if __debug__:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory(
|
||||
'LogicGate')
|
||||
logicTests={
|
||||
"and": andTest,
|
||||
"or": orTest,
|
||||
"xor": xorTest,
|
||||
"nand": nandTest,
|
||||
"nor": norTest,
|
||||
"xnor": xnorTest,
|
||||
}
|
||||
|
||||
def __init__(self, level, entId):
|
||||
"""entId: """
|
||||
assert(self.debugPrint(
|
||||
"LogicGate(entId=%s)"
|
||||
%(entId)))
|
||||
self.input1Event = None
|
||||
self.input2Event = None
|
||||
PandaObject.PandaObject.__init__(self)
|
||||
Entity.Entity.__init__(self, level, entId)
|
||||
self.setLogicType(self.logicType)
|
||||
self.setIsInput1(self.isInput1)
|
||||
self.setIsInput2(self.isInput2)
|
||||
self.setInput1Event(self.input1Event)
|
||||
self.setInput2Event(self.input2Event)
|
||||
|
||||
def destroy(self):
|
||||
assert(self.debugPrint("destroy()"))
|
||||
self.ignore(self.input1Event)
|
||||
self.input1Event = None
|
||||
self.ignore(self.input2Event)
|
||||
self.input2Event = None
|
||||
Entity.Entity.destroy(self)
|
||||
|
||||
def setLogicType(self, logicType):
|
||||
assert(self.debugPrint("setLogicType(logicType=%s)"%(logicType,)))
|
||||
self.logicType=logicType
|
||||
assert self.logicTests[logicType]
|
||||
self.logicTest=self.logicTests[logicType]
|
||||
|
||||
def setIsInput1(self, isTrue):
|
||||
assert(self.debugPrint("setIsInput1(isTrue=%s)"%(isTrue,)))
|
||||
if 1 or (not isTrue) != (not self.input1Event):
|
||||
# ...the logical state of self.input1Event has changed.
|
||||
self.isInput1=isTrue
|
||||
self.logicTest(self, isTrue, self.isInput2)
|
||||
|
||||
def setIsInput2(self, isTrue):
|
||||
assert(self.debugPrint("setIsInput2(isTrue=%s)"%(isTrue,)))
|
||||
if 1 or (not isTrue) != (not self.input2Event):
|
||||
# ...the logical state of self.input2Event has changed.
|
||||
self.isInput2=isTrue
|
||||
self.logicTest(self, isTrue, self.isInput1)
|
||||
|
||||
def setInput1Event(self, event):
|
||||
assert(self.debugPrint("setInput1Event(event=%s)"%(event,)))
|
||||
if self.input1Event:
|
||||
self.ignore(self.input1Event)
|
||||
self.input1Event = "switch-%s"%(event,)
|
||||
if self.input1Event:
|
||||
self.accept(self.input1Event, self.setIsInput1)
|
||||
|
||||
def setInput2Event(self, event):
|
||||
assert(self.debugPrint("setInput2Event(event=%s)"%(event,)))
|
||||
if self.input2Event:
|
||||
self.ignore(self.input2Event)
|
||||
self.input2Event = "switch-%s"%(event,)
|
||||
if self.input2Event:
|
||||
self.accept(self.input2Event, self.setIsInput2)
|
||||
|
||||
def getName(self):
|
||||
#return "logicGate-%s"%(self.entId,)
|
||||
return "switch-%s"%(self.entId,)
|
||||
|
|
|
|||
|
|
@ -1,143 +0,0 @@
|
|||
"""
|
||||
LogicGateAI.py
|
||||
|
||||
Logic Gates:
|
||||
|
||||
and: 0 0 = 0 or: 0 0 = 0 xor: 0 0 = 0
|
||||
0 1 = 0 0 1 = 1 0 1 = 1
|
||||
1 0 = 0 1 0 = 1 1 0 = 1
|
||||
1 1 = 1 1 1 = 1 1 1 = 0
|
||||
|
||||
nand: 0 0 = 1 nor: 0 0 = 1 xnor: 0 0 = 1
|
||||
0 1 = 1 0 1 = 0 0 1 = 0
|
||||
1 0 = 1 1 0 = 0 1 0 = 0
|
||||
1 1 = 0 1 1 = 0 1 1 = 1
|
||||
|
||||
In the following:
|
||||
1: send a true message
|
||||
0: send a false message
|
||||
-: don't send a message
|
||||
|
||||
a b and or xor nand nor xnor
|
||||
(0 0) (0) (0) (0) (1) (1) (1) <--- initial state
|
||||
1 0 - 1 1 - 0 0
|
||||
0 0 - 0 0 - 1 1
|
||||
1 0 - 1 1 - 0 0
|
||||
1 1 1 - 0 0 - 1
|
||||
0 1 0 - 1 1 - 0
|
||||
1 1 1 - 0 0 - 1
|
||||
0 1 0 - 1 1 - 0
|
||||
0 0 - 0 0 - 1 1
|
||||
"""
|
||||
|
||||
import PandaObject
|
||||
import DirectNotifyGlobal
|
||||
import Entity
|
||||
|
||||
|
||||
def andTest(self, a, b):
|
||||
assert(self.debugPrint("andTest(a=%s, b=%s)"%(a, b)))
|
||||
if b:
|
||||
messenger.send(self.getName(), [a])
|
||||
|
||||
def orTest(self, a, b):
|
||||
assert(self.debugPrint("orTest(a=%s, b=%s)"%(a, b)))
|
||||
if not b:
|
||||
messenger.send(self.getName(), [a])
|
||||
# else: ...we already sent the messege when b was set.
|
||||
|
||||
def xorTest(self, a, b):
|
||||
assert(self.debugPrint("xorTest(a=%s, b=%s)"%(a, b)))
|
||||
messenger.send(self.getName(), [(not (a and b)) and (a or b)])
|
||||
|
||||
def nandTest(self, a, b):
|
||||
assert(self.debugPrint("nandTest(a=%s, b=%s)"%(a, b)))
|
||||
if b:
|
||||
messenger.send(self.getName(), [not (a and b)])
|
||||
|
||||
def norTest(self, a, b):
|
||||
assert(self.debugPrint("norTest(a=%s, b=%s)"%(a, b)))
|
||||
if not b:
|
||||
messenger.send(self.getName(), [not (a or b)])
|
||||
# else: ...we already sent the messege when b was set.
|
||||
|
||||
def xnorTest(self, a, b):
|
||||
assert(self.debugPrint("xnorTest(a=%s, b=%s)"%(a, b)))
|
||||
messenger.send(self.getName(), [(a and b) or (not (a or b))])
|
||||
|
||||
|
||||
class LogicGateAI(Entity.Entity, PandaObject.PandaObject):
|
||||
if __debug__:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory(
|
||||
'LogicGateAI')
|
||||
logicTests={
|
||||
"and": andTest,
|
||||
"or": orTest,
|
||||
"xor": xorTest,
|
||||
"nand": nandTest,
|
||||
"nor": norTest,
|
||||
"xnor": xnorTest,
|
||||
}
|
||||
|
||||
def __init__(self, level, entId):
|
||||
"""entId: """
|
||||
assert(self.debugPrint(
|
||||
"LogicGateAI(entId=%s)"
|
||||
%(entId)))
|
||||
self.input1Event = None
|
||||
self.input2Event = None
|
||||
PandaObject.PandaObject.__init__(self)
|
||||
Entity.Entity.__init__(self, level, entId)
|
||||
self.setLogicType(self.logicType)
|
||||
self.setIsInput1(self.isInput1)
|
||||
self.setIsInput2(self.isInput2)
|
||||
self.setInput1Event(self.input1Event)
|
||||
self.setInput2Event(self.input2Event)
|
||||
|
||||
def destroy(self):
|
||||
assert(self.debugPrint("destroy()"))
|
||||
self.ignore(self.input1Event)
|
||||
self.input1Event = None
|
||||
self.ignore(self.input2Event)
|
||||
self.input2Event = None
|
||||
Entity.Entity.destroy(self)
|
||||
|
||||
def setLogicType(self, logicType):
|
||||
assert(self.debugPrint("setLogicType(logicType=%s)"%(logicType,)))
|
||||
self.logicType=logicType
|
||||
assert self.logicTests[logicType]
|
||||
self.logicTest=self.logicTests[logicType]
|
||||
|
||||
def setIsInput1(self, isTrue):
|
||||
assert(self.debugPrint("setIsInput1(isTrue=%s)"%(isTrue,)))
|
||||
if 1 or (not isTrue) != (not self.input1Event):
|
||||
# ...the logical state of self.input1Event has changed.
|
||||
self.isInput1=isTrue
|
||||
self.logicTest(self, isTrue, self.isInput2)
|
||||
|
||||
def setIsInput2(self, isTrue):
|
||||
assert(self.debugPrint("setIsInput2(isTrue=%s)"%(isTrue,)))
|
||||
if 1 or (not isTrue) != (not self.input2Event):
|
||||
# ...the logical state of self.input2Event has changed.
|
||||
self.isInput2=isTrue
|
||||
self.logicTest(self, isTrue, self.isInput1)
|
||||
|
||||
def setInput1Event(self, event):
|
||||
assert(self.debugPrint("setInput1Event(event=%s)"%(event,)))
|
||||
if self.input1Event:
|
||||
self.ignore(self.input1Event)
|
||||
self.input1Event = "switch-%s"%(event,)
|
||||
if self.input1Event:
|
||||
self.accept(self.input1Event, self.setIsInput1)
|
||||
|
||||
def setInput2Event(self, event):
|
||||
assert(self.debugPrint("setInput2Event(event=%s)"%(event,)))
|
||||
if self.input2Event:
|
||||
self.ignore(self.input2Event)
|
||||
self.input2Event = "switch-%s"%(event,)
|
||||
if self.input2Event:
|
||||
self.accept(self.input2Event, self.setIsInput2)
|
||||
|
||||
def getName(self):
|
||||
#return "logicGate-%s"%(self.entId,)
|
||||
return "switch-%s"%(self.entId,)
|
||||
Loading…
Reference in New Issue