コード例 #1
0
 def announceZoneChange(self, newZoneId, oldZoneId):
     DistributedPetAI.notify.debug('%s.announceZoneChange: %s->%s' % (self.doId, oldZoneId, newZoneId))
     broadcastZones = list2dict([newZoneId, oldZoneId])
     self.estateOwnerId = simbase.air.estateManager.getOwnerFromZone(newZoneId)
     if self.estateOwnerId:
         self.inEstate = 1
         self.estateZones = simbase.air.estateManager.getEstateZones(self.estateOwnerId)
     else:
         self.inEstate = 0
         self.estateZones = []
     PetObserve.send(broadcastZones.keys(), PetObserve.PetActionObserve(PetObserve.Actions.CHANGE_ZONE, self.doId, (oldZoneId, newZoneId)))
コード例 #2
0
 def announceZoneChange(self, newZoneId, oldZoneId):
     DistributedPetAI.notify.debug('%s.announceZoneChange: %s->%s' %
                                   (self.doId, oldZoneId, newZoneId))
     broadcastZones = list2dict([newZoneId, oldZoneId])
     self.estateOwnerId = simbase.air.estateManager.getOwnerFromZone(
         newZoneId)
     if self.estateOwnerId:
         self.inEstate = 1
         self.estateZones = simbase.air.estateManager.getEstateZones(
             self.estateOwnerId)
     else:
         self.inEstate = 0
         self.estateZones = []
     PetObserve.send(
         broadcastZones.keys(),
         PetObserve.PetActionObserve(PetObserve.Actions.CHANGE_ZONE,
                                     self.doId, (oldZoneId, newZoneId)))
コード例 #3
0
 def _handleLookedAtByOtherStop(self, avId):
     if avId not in self.lookers:
         PetBrain.notify.warning('%s: av %s not looking at me' %
                                 (self.pet.doId, avId))
         return
     del self.lookers[avId]
     self.observe(
         PetObserve.PetActionObserve(PetObserve.Actions.ATTENDED_STOP,
                                     avId))
コード例 #4
0
 def _handleLookedAtByOtherStart(self, avId):
     if avId in self.lookers:
         PetBrain.notify.warning('%s: av %s already looking at me' %
                                 (self.pet.doId, avId))
         return
     self.lookers[avId] = avId
     self.observe(
         PetObserve.PetActionObserve(PetObserve.Actions.ATTENDED_START,
                                     avId))
コード例 #5
0
 def _handleLookingAtOtherStop(self, avId):
     if avId not in self.lookees:
         PetBrain.notify.warning('%s: not looking at av %s' %
                                 (self.pet.doId, avId))
         return
     del self.lookees[avId]
     self.observe(
         PetObserve.PetActionObserve(PetObserve.Actions.ATTENDING_STOP,
                                     avId))
コード例 #6
0
 def _handleLookingAtOtherStart(self, avId):
     if avId in self.lookees:
         PetBrain.notify.warning('%s: already looking at av %s' %
                                 (self.pet.doId, avId))
         return
     self.lookees[avId] = avId
     self.observe(
         PetObserve.PetActionObserve(PetObserve.Actions.ATTENDING_START,
                                     avId))
コード例 #7
0
    def announceGenerate(self):
        DistributedSmoothNodeAI.DistributedSmoothNodeAI.announceGenerate(self)
        self._hasCleanedUp = False
        self.setHasRequestedDelete(False)
        self.b_setParent(ToontownGlobals.SPHidden)
        self.lockedDown = 0
        self.leashMode = 0
        self.leashAvId = None
        self.leashGoal = None
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        if not hasattr(self, '_beingCreatedInDB'):
            for i in xrange(len(self.traitList)):
                value = self.traitList[i]
                if value == 0.0:
                    traitName = PetTraits.getTraitNames()[i]
                    traitValue = self.traits.getTraitValue(traitName)
                    DistributedPetAI.notify.info("%s: initializing new trait '%s' to %s, seed=%s" % (self.doId,
                     traitName,
                     traitValue,
                     self.traitSeed))
                    setterName = self.getSetterName(traitName, 'b_set')
                    self.__dict__[setterName](traitValue)

        self.mood = PetMood.PetMood(self)
        if not self.active:
            return
        self.activated = 1
        self.announceZoneChange(self.zoneId, ToontownGlobals.QuietZone)
        self.b_setParent(ToontownGlobals.SPRender)
        self.setPos(randFloat(-20, 20), randFloat(-20, 20), 0)
        self.setH(randFloat(360))
        if self.initialDNA:
            self.setDNA(self.initialDNA)
        for mood, value in self.requiredMoodComponents.items():
            self.mood.setComponent(mood, value, announce=0)

        self.requiredMoodComponents = {}
        self.brain = PetBrain.PetBrain(self)
        self.mover = PetMoverAI(self)
        self.enterPetLook()
        self.actionFSM = PetActionFSM.PetActionFSM(self)
        self.teleportIn()
        self.handleMoodChange(distribute=0)
        taskMgr.doMethodLater(simbase.petMovePeriod * random.random(), self.move, self.getMoveTaskName())
        self.startPosHprBroadcast()
        self.accept(PetObserve.getEventName(self.zoneId), self.brain.observe)
        self.accept(self.mood.getMoodChangeEvent(), self.handleMoodChange)
        self.mood.start()
        self.brain.start()
        return
コード例 #8
0
    def announceGenerate(self):
        DistributedSmoothNodeAI.DistributedSmoothNodeAI.announceGenerate(self)
        self._hasCleanedUp = False
        self.setHasRequestedDelete(False)
        self.b_setParent(ToontownGlobals.SPHidden)
        self.lockedDown = 0
        self.leashMode = 0
        self.leashAvId = None
        self.leashGoal = None
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        if not hasattr(self, '_beingCreatedInDB'):
            for i in xrange(len(self.traitList)):
                value = self.traitList[i]
                if value == 0.0:
                    traitName = PetTraits.getTraitNames()[i]
                    traitValue = self.traits.getTraitValue(traitName)
                    DistributedPetAI.notify.info(
                        "%s: initializing new trait '%s' to %s, seed=%s" %
                        (self.doId, traitName, traitValue, self.traitSeed))
                    setterName = self.getSetterName(traitName, 'b_set')
                    self.__dict__[setterName](traitValue)

        self.mood = PetMood.PetMood(self)
        if not self.active:
            return
        self.activated = 1
        self.announceZoneChange(self.zoneId, ToontownGlobals.QuietZone)
        self.b_setParent(ToontownGlobals.SPRender)
        self.setPos(randFloat(-20, 20), randFloat(-20, 20), 0)
        self.setH(randFloat(360))
        if self.initialDNA:
            self.setDNA(self.initialDNA)
        for mood, value in self.requiredMoodComponents.items():
            self.mood.setComponent(mood, value, announce=0)

        self.requiredMoodComponents = {}
        self.brain = PetBrain.PetBrain(self)
        self.mover = PetMoverAI(self)
        self.enterPetLook()
        self.actionFSM = PetActionFSM.PetActionFSM(self)
        self.teleportIn()
        self.handleMoodChange(distribute=0)
        taskMgr.doMethodLater(simbase.petMovePeriod * random.random(),
                              self.move, self.getMoveTaskName())
        self.startPosHprBroadcast()
        self.accept(PetObserve.getEventName(self.zoneId), self.brain.observe)
        self.accept(self.mood.getMoodChangeEvent(), self.handleMoodChange)
        self.mood.start()
        self.brain.start()
        return
コード例 #9
0
 def handleZoneChange(self, newZoneId, oldZoneId):
     DistributedSmoothNodeAI.DistributedSmoothNodeAI.handleZoneChange(self, newZoneId, oldZoneId)
     self.ignore(PetObserve.getEventName(oldZoneId))
     self.accept(PetObserve.getEventName(newZoneId), self.brain.observe)
コード例 #10
0
 def handleShoo(self, avatar):
     self.brain.observe(
         PetObserve.PetPhraseObserve(PetObserve.Phrases.GO_AWAY,
                                     avatar.doId))
コード例 #11
0
 def handleStay(self, avatar):
     self.brain.observe(
         PetObserve.PetPhraseObserve(PetObserve.Phrases.STAY, avatar.doId))
コード例 #12
0
 def scratch(self, avatar):
     self.startLockPetMove(avatar.doId)
     self.brain.observe(
         PetObserve.PetActionObserve(PetObserve.Actions.SCRATCH,
                                     avatar.doId))
コード例 #13
0
 def feed(self, avatar):
     if avatar.takeMoney(PetConstants.FEED_AMOUNT):
         self.startLockPetMove(avatar.doId)
         self.brain.observe(
             PetObserve.PetActionObserve(PetObserve.Actions.FEED,
                                         avatar.doId))
コード例 #14
0
 def call(self, avatar):
     self.brain.observe(
         PetObserve.PetPhraseObserve(PetObserve.Phrases.COME, avatar.doId))
     self.__petMovieStart(avatar.doId)
コード例 #15
0
 def handleZoneChange(self, newZoneId, oldZoneId):
     DistributedSmoothNodeAI.DistributedSmoothNodeAI.handleZoneChange(
         self, newZoneId, oldZoneId)
     self.ignore(PetObserve.getEventName(oldZoneId))
     self.accept(PetObserve.getEventName(newZoneId), self.brain.observe)