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.trickLogger = ServerEventBuffer.ServerEventMultiAccumulator(
            self.air, 'petTricksPerformed', self.doId)
        self.trickFailLogger = ServerEventBuffer.ServerEventMultiAccumulator(
            self.air, 'petTricksFailed', self.doId)
        self.feedLogger = ServerEventBuffer.ServerEventAccumulator(
            self.air, 'petFeedings', self.doId)
        self.scratchLogger = ServerEventBuffer.ServerEventAccumulator(
            self.air, 'petScratchings', self.doId)
        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 = Mover.Mover(self)
        self.lockMover = Mover.Mover(self)
        self.createImpulses()
        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
Exemplo n.º 2
0
    def announceGenerate(self):
        DistributedPet.notify.debug('announceGenerate(), fake=%s' % self.bFake)
        DistributedSmoothNode.DistributedSmoothNode.announceGenerate(self)
        if hasattr(self, 'petName'):
            Pet.Pet.setName(self, self.petName)

        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        self.mood = PetMood.PetMood(self)
        for (mood, value) in self.requiredMoodComponents.items():
            self.mood.setComponent(mood, value, announce=0)

        self.requiredMoodComponents = {}
        DistributedPet.notify.debug('time since last seen: %s' %
                                    self.getTimeSinceLastSeen())
        self.setDNA([
            self.head, self.ears, self.nose, self.tail, self.bodyTexture,
            self.color, self.colorScale, self.eyeColor, self.gender
        ])
        av = self.cr.doId2do.get(self.ownerId)
        if av:
            av.petDNA = self.style

        if self.bFake:
            self.lastKnownMood = self.mood.makeCopy()
            self.updateOfflineMood()
        else:
            self._DistributedPet__initCollisions()
            self.startSmooth()
            self.setActiveShadow(1)
        self.setPetName(self.petName)
        if not self.bFake:
            self.addActive()
            self.startBlink()
            if not self.swallowSfx:
                self.swallowSfx = loader.loadSfx(
                    'phase_5.5/audio/sfx/beg_eat_swallow.mp3')

            if not self.callSfx:
                self.callSfx = loader.loadSfx(
                    'phase_5.5/audio/sfx/call_pet.mp3')

            if not self.petSfx:
                self.petSfx = loader.loadSfx(
                    'phase_5.5/audio/sfx/pet_the_pet.mp3')

            self.handleMoodChange()
            self.accept(self.mood.getDominantMoodChangeEvent(),
                        self.handleMoodChange)
            self.accept(self.mood.getMoodChangeEvent(),
                        self.moodComponentChanged)
    def announceGenerate(self):
        DistributedObject.DistributedObject.announceGenerate(self)
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        print self.traits.traits
        self.mood = PetMood.PetMood(self)
        self.lastKnownMood = self.mood.makeCopy()
        for mood, value in self.requiredMoodComponents.items():
            self.mood.setComponent(mood, value, announce=0)

        self.requiredMoodComponents = {}
        self.style = [
            self.head, self.ears, self.nose, self.tail, self.bodyTexture,
            self.color, self.colorScale, self.eyeColor, self.gender
        ]
        self.setLastSeenTimestamp(self.lastSeenTimestamp)
        self.updateOfflineMood()
        self.sendGenerateMessage = 1
Exemplo n.º 4
0
    def announceGenerate(self):
        # don't use the trait values from the DB, this should circumvent
        # the corrupted doodle problem
        DistributedObject.DistributedObject.announceGenerate(self)
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        print self.traits.traits
        """
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone,
                                          traitValueList=self.traitList)
                                          """

        # create our mood manager. we need to have self.traits first.
        self.mood = PetMood.PetMood(self)
        self.lastKnownMood = self.mood.makeCopy()

        # pass in the cached required mood component values
        for mood, value in self.requiredMoodComponents.items():
            self.mood.setComponent(mood, value, announce=0)
        self.requiredMoodComponents = {}

        DistributedPetProxy.notify.debug('time since last seen: %s' %
                                         self.getTimeSinceLastSeen())

        self.style = [
            self.head,
            self.ears,
            self.nose,
            self.tail,
            self.bodyTexture,
            self.color,
            self.colorScale,
            self.eyeColor,
            self.gender,
        ]

        self.setLastSeenTimestamp(self.lastSeenTimestamp)
        self.updateOfflineMood()

        # Throw the event that pet info is available
        #proxyGenerateMessage = "petProxy-%d-generated" % self.doId
        #messenger.send(proxyGenerateMessage)
        self.sendGenerateMessage = 1
Exemplo n.º 5
0
    def generate(self):
        DistributedObjectAI.DistributedObjectAI.generate(self)

        # calculate our traits
        # don't use the trait values from the DB, this should circumvent
        # the corrupted doodle problem
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        print(self.traits.traits)
        """
        self.traits = PetTraits.PetTraits(
            self.traitSeed, self.safeZone,
            traitValueList=copy.copy(self.traitList))
            """


        # if there are any new traits, we need to set their generated value in
        # the DB.
        for i in range(len(self.traitList)):
            value = self.traitList[i]
            if value == 0.:
                traitName = PetTraits.getTraitNames()[i]
                traitValue = self.traits.getTraitValue(traitName)
                DistributedPetProxyAI.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)

        # create our mood manager. we need to have self.traits first.
        self.mood = PetMood.PetMood(self)

        # pass in the cached required mood component values
        for mood, value in list(self.requiredMoodComponents.items()):
            self.mood.setComponent(mood, value, announce=0)
        self.requiredMoodComponents = {}

        # listen for mood changes
        self.accept(self.mood.getMoodChangeEvent(),
                    self.handleMoodChange)

        self.mood.start()
    def generate(self):
        DistributedObjectAI.DistributedObjectAI.generate(self)
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        for i in xrange(len(self.traitList)):
            value = self.traitList[i]
            if value == 0.0:
                traitName = PetTraits.getTraitNames()[i]
                traitValue = self.traits.getTraitValue(traitName)
                DistributedPetProxyAI.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)
        for mood, value in self.requiredMoodComponents.items():
            self.mood.setComponent(mood, value, announce=0)

        self.requiredMoodComponents = {}
        self.accept(self.mood.getMoodChangeEvent(), self.handleMoodChange)
        self.mood.start()
    def announceGenerate(self):
        DistributedPet.notify.debug('announceGenerate(), fake=%s' % self.bFake)
        DistributedSmoothNode.DistributedSmoothNode.announceGenerate(self)
        if hasattr(self, "petName"):
            Pet.Pet.setName(self, self.petName)

        # don't use the trait values from the DB, this should circumvent
        # the corrupted doodle problem
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone)
        """
        self.traits = PetTraits.PetTraits(self.traitSeed, self.safeZone,
                                          traitValueList=self.traitList)
                                          """

        # create our mood manager. we need to have self.traits first.
        self.mood = PetMood.PetMood(self)

        # pass in the cached required mood component values
        for mood, value in list(self.requiredMoodComponents.items()):
            self.mood.setComponent(mood, value, announce=0)
        self.requiredMoodComponents = {}

        DistributedPet.notify.debug('time since last seen: %s' %
                                    self.getTimeSinceLastSeen())

        self.setDNA([
            self.head,
            self.ears,
            self.nose,
            self.tail,
            self.bodyTexture,
            self.color,
            self.colorScale,
            self.eyeColor,
            self.gender,
        ])

        # Locally store a copy of the pet's DNA on its owner, for
        # convenience.  Really this is just for the catalog system for
        # now, but maybe there will be other applications later.
        av = self.cr.doId2do.get(self.ownerId)
        if av:
            av.petDNA = self.style

        if self.bFake:
            # store a copy of the 'last known' mood state
            self.lastKnownMood = self.mood.makeCopy()
            # and calculate the current mood
            self.updateOfflineMood()
        else:
            self.__initCollisions()
            self.startSmooth()
            self.setActiveShadow(1)

        # make sure the nametag is up-to-date
        self.setPetName(self.petName)
        if not self.bFake:
            self.addActive()

            # start the blink task again because disable stops it
            self.startBlink()

            # only load the sounds for 'real' pets
            if not self.swallowSfx:
                self.swallowSfx = loader.loadSfx(
                    'phase_5.5/audio/sfx/beg_eat_swallow.mp3')
            if not self.callSfx:
                self.callSfx = loader.loadSfx(
                    'phase_5.5/audio/sfx/call_pet.mp3')
            if not self.petSfx:
                self.petSfx = loader.loadSfx(
                    'phase_5.5/audio/sfx/pet_the_pet.mp3')

            # kick-start the emote display
            self.handleMoodChange()
            # and listen for changes
            self.accept(self.mood.getDominantMoodChangeEvent(),
                        self.handleMoodChange)
            # listen for every mood change for debug display
            self.accept(self.mood.getMoodChangeEvent(),
                        self.moodComponentChanged)