new ~ud support

This commit is contained in:
Zachary Pavlov 2008-02-05 00:10:51 +00:00
parent 005bc25282
commit 396c40dcb0
5 changed files with 54 additions and 0 deletions

View File

@ -466,3 +466,6 @@ class DistributedObject(DistributedObjectBase):
def isGridParent(self):
# If this distributed object is a DistributedGrid return 1. 0 by default
return 0
def execCommand(self, string, mwMgrId, avId, zoneId):
pass

View File

@ -555,3 +555,7 @@ class DistributedObjectAI(DistributedObjectBase):
def isGridParent(self):
# If this distributed object is a DistributedGrid return 1. 0 by default
return 0
def execCommand(self, string, mwMgrId, avId, zoneId):
pass

View File

@ -21,3 +21,4 @@ class DistributedObjectGlobal(DistributedObject):
DistributedObject.__init__(self, cr)
self.parentId = 0
self.zoneId = 0

View File

@ -3,6 +3,7 @@
from DistributedObjectUD import DistributedObjectUD
from direct.directnotify.DirectNotifyGlobal import directNotify
import sys
class DistributedObjectGlobalUD(DistributedObjectUD):
notify = directNotify.newCategory('DistributedObjectGlobalUD')
@ -12,6 +13,7 @@ class DistributedObjectGlobalUD(DistributedObjectUD):
def __init__(self, air):
DistributedObjectUD.__init__(self, air)
self.ExecNamespace = {"self":self}
def announceGenerate(self):
self.air.registerForChannel(self.doId)
@ -21,3 +23,44 @@ class DistributedObjectGlobalUD(DistributedObjectUD):
self.air.unregisterForChannel(self.doId)
## self.air.removeDOFromTables(self)
DistributedObjectUD.delete(self)
def execCommand(self, command, mwMgrId, avId, zoneId):
text = self.__execMessage(command)
print text
dclass = uber.air.dclassesByName.get("PiratesMagicWordManagerAI")
dg = dclass.aiFormatUpdate(
"setMagicWordResponse", mwMgrId, (1<<32)+avId, uber.air.ourChannel, [text])
uber.air.send(dg)
def __execMessage(self, message):
if not self.ExecNamespace:
# Import some useful variables into the ExecNamespace initially.
exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
#self.importExecNamespace()
# Now try to evaluate the expression using ChatInputNormal.ExecNamespace as
# the local namespace.
try:
return str(eval(message, globals(), self.ExecNamespace))
except SyntaxError:
# Maybe it's only a statement, like "x = 1", or
# "import math". These aren't expressions, so eval()
# fails, but they can be exec'ed.
try:
exec message in globals(), self.ExecNamespace
return 'ok'
except:
exception = sys.exc_info()[0]
extraInfo = sys.exc_info()[1]
if extraInfo:
return str(extraInfo)
else:
return str(exception)
except:
exception = sys.exc_info()[0]
extraInfo = sys.exc_info()[1]
if extraInfo:
return str(extraInfo)
else:
return str(exception)

View File

@ -488,3 +488,6 @@ class DistributedObjectUD(DistributedObjectBase):
def isGridParent(self):
# If this distributed object is a DistributedGrid return 1. 0 by default
return 0
def execCommand(self, string, mwMgrId, avId, zoneId):
pass