from direct.directnotify import DirectNotifyGlobal from direct.showbase.PythonUtil import list2dict, Enum from toontown.pets import PetTricks import types notify = DirectNotifyGlobal.directNotify.newCategory('PetObserve') def getEventName(zoneId): return 'PetObserve-%s' % zoneId def send(zoneIds, petObserve): if petObserve.isValid(): if type(zoneIds) not in (types.ListType, types.TupleType): zoneIds = [zoneIds] for zoneId in zoneIds: messenger.send(getEventName(zoneId), [petObserve]) Phrases = Enum('HI, BYE, YES, NO, SOOTHE, PRAISE, CRITICISM, HAPPY,SAD, ANGRY, HURRY, QUESTION, FRIENDLY, LETS_PLAY,COME, FOLLOW_ME, STAY, NEED_LAFF, NEED_GAGS, NEED_JB,GO_AWAY, DO_TRICK,') Actions = Enum('FEED, SCRATCH,ATTENDED_START, ATTENDED_STOP,ATTENDING_START, ATTENDING_STOP,CHANGE_ZONE, LOGOUT,GARDEN') class PetObserve: def isValid(self): return 1 def isForgettable(self): return 0 def _influence(self, petBrain): petBrain._handleGenericObserve(self) def __repr__(self): return '%s()' % self.__class__.__name__ class PetActionObserve(PetObserve): def __init__(self, action, avId, data = None): self.action = action self.avId = avId self.data = data def getAction(self): return self.action def getAvId(self): return self.avId def getData(self): return self.data def _influence(self, petBrain): petBrain._handleActionObserve(self) def __repr__(self): return '%s(%s,%s)' % (self.__class__.__name__, Actions.getString(self.action), self.avId) class PetPhraseObserve(PetObserve): def __init__(self, petPhrase, avId): self.petPhrase = petPhrase self.avId = avId def getPetPhrase(self): return self.petPhrase def getAvId(self): return self.avId def isForgettable(self): return 1 def _influence(self, petBrain): petBrain._handlePhraseObserve(self) def __repr__(self): return '%s(%s,%s)' % (self.__class__.__name__, Phrases.getString(self.petPhrase), self.avId) class SCObserve(PetPhraseObserve): def __init__(self, msgId, petPhrase, avId): self.msgId = msgId PetPhraseObserve.__init__(self, petPhrase, avId) def isValid(self): return self.petPhrase is not None class TrickRequestObserve(PetPhraseObserve): def __init__(self, trickId, avId): self.trickId = trickId PetPhraseObserve.__init__(self, Phrases.DO_TRICK, avId) def isForgettable(self): return 0 def getTrickId(self): return self.trickId OP = Phrases _scPhrase2petPhrase = {1: OP.YES, 2: OP.NO, 3: OP.SOOTHE, 100: OP.HI, 101: OP.HI, 102: OP.HI, 103: OP.HI, 104: OP.HI, 105: OP.HI, 107: OP.HI, 108: OP.HI, 200: OP.BYE, 201: OP.BYE, 202: OP.BYE, 203: OP.BYE, 204: OP.BYE, 205: OP.BYE, 206: OP.BYE, 207: OP.BYE, 300: OP.HAPPY, 301: OP.HAPPY, 302: OP.HAPPY, 303: OP.HAPPY, 304: OP.HAPPY, 305: OP.HAPPY, 306: OP.HAPPY, 307: OP.HAPPY, 308: OP.HAPPY, 309: OP.HAPPY, 310: OP.HAPPY, 311: OP.HAPPY, 312: OP.HAPPY, 313: OP.HAPPY, 314: OP.HAPPY, 315: OP.HAPPY, 400: OP.SAD, 401: OP.SAD, 402: OP.SAD, 403: OP.SAD, 404: OP.SAD, 405: OP.SAD, 406: OP.SAD, 407: OP.NO, 410: OP.NEED_LAFF, 500: OP.FRIENDLY, 505: OP.PRAISE, 506: OP.HAPPY, 507: OP.FRIENDLY, 508: OP.FRIENDLY, 509: OP.FRIENDLY, 510: OP.QUESTION, 511: OP.QUESTION, 513: OP.QUESTION, 514: OP.NEED_LAFF, 600: OP.PRAISE, 601: OP.PRAISE, 602: OP.PRAISE, 603: OP.PRAISE, 700: OP.PRAISE, 701: OP.PRAISE, 900: OP.CRITICISM, 901: OP.CRITICISM, 902: OP.CRITICISM, 903: OP.CRITICISM, 904: OP.CRITICISM, 905: OP.CRITICISM, 1006: OP.FOLLOW_ME, 1007: OP.STAY, 1010: OP.STAY, 1015: OP.STAY, 1201: OP.CRITICISM, 1300: OP.NEED_LAFF, 1400: OP.HURRY, 1404: OP.PRAISE, 1405: OP.PRAISE, 1413: OP.NEED_GAGS, 1414: OP.NEED_LAFF, 1601: OP.NEED_JB, 1603: OP.HURRY, 1605: OP.LETS_PLAY, 1606: OP.LETS_PLAY, 21000: OP.COME, 21001: OP.COME, 21002: OP.STAY, 21003: OP.PRAISE, 21004: OP.PRAISE, 21005: OP.PRAISE} for scId in PetTricks.ScId2trickId: _scPhrase2petPhrase[scId] = OP.DO_TRICK del OP def getSCObserve(msgId, speakerDoId): phrase = _scPhrase2petPhrase.get(msgId) if phrase == Phrases.DO_TRICK: trickId = PetTricks.ScId2trickId[msgId] return TrickRequestObserve(trickId, speakerDoId) return SCObserve(msgId, phrase, speakerDoId)