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
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
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
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)