def _addGoalsReAvatar(self, avId): # add goals that have to do with a particular avatar av = self.pet.air.doId2do.get(avId) """assert av is not None, ( '%s._addGoalsReAvatar: %s not in doId2do' % (self.pet.doId, avId)) """ if av is None: PetBrain.notify.warning('%s._addGoalsReAvatar: %s not in doId2do' % (self.pet.doId, avId)) return # add goals related to this avatar if avId not in self.doId2goals: goals = [ PetGoal.ChaseAvatar(av), PetGoal.FleeFromAvatar(av), ] """ if isinstance(av, DistributedToonAI.DistributedToonAI): goals += [ ] """ self.doId2goals[avId] = goals self.lastInteractTime.setdefault(avId, 0) for goal in self.doId2goals[avId]: self.goalMgr.addGoal(goal)
def _addGoalsReAvatar(self, avId): av = self.pet.air.doId2do.get(avId) if av is None: PetBrain.notify.warning('%s._addGoalsReAvatar: %s not in doId2do' % (self.pet.doId, avId)) return if avId not in self.doId2goals: goals = [PetGoal.ChaseAvatar(av), PetGoal.FleeFromAvatar(av)] self.doId2goals[avId] = goals self.lastInteractTime.setdefault(avId, 0) for goal in self.doId2goals[avId]: self.goalMgr.addGoal(goal)
def start(self): PetBrain.notify.debug('start: %s' % self.pet.doId) self.lookers = {} self.lookees = {} self.accept(PetLookerAI.getStartLookedAtByOtherEvent( self.pet.doId), self._handleLookedAtByOtherStart) self.accept(PetLookerAI.getStopLookedAtByOtherEvent( self.pet.doId), self._handleLookedAtByOtherStop) self.accept(PetLookerAI.getStartLookingAtOtherEvent( self.pet.doId), self._handleLookingAtOtherStart) self.accept(PetLookerAI.getStopLookingAtOtherEvent( self.pet.doId), self._handleLookingAtOtherStop) self.globalGoals = [PetGoal.Wander()] for goal in self.globalGoals: self.goalMgr.addGoal(goal) for doId in self.pet._getNearbyAvatarDict(): self._handleAvatarArrive(doId) self.tLastLonelinessUpdate = globalClock.getFrameTime() taskMgr.doMethodLater( simbase.petThinkPeriod * random.random(), self._think, self.getThinkTaskName()) self.started = 1
def _handleDoTrick(trickId, avId, self=self): avatar = simbase.air.doId2do.get(avId) if avatar: if self.lookedAtBy(avatar.doId): if not self.goalMgr.hasTrickGoal(): if not self.pet._willDoTrick(trickId): self.pet.trickFailLogger.addEvent(trickId) trickId = PetTricks.Tricks.BALK trickGoal = PetGoal.DoTrick(avatar, trickId) self.goalMgr.addGoal(trickGoal)
def toggleLeash(self, avId): if self.leashMode: self.leashMode = 0 self.leashAvId = None self.brain.goalMgr.removeGoal(self.leashGoal) del self.leashGoal response = 'leash OFF' else: self.leashMode = 1 self.leashAvId = avId self.leashGoal = PetGoal.ChaseAvatarLeash(avId) self.brain.goalMgr.addGoal(self.leashGoal) response = 'leash ON' return response
def _handleDoTrick(trickId, avId, self=self): # av is telling us to do a trick avatar = simbase.air.doId2do.get(avId) if avatar: if self.lookedAtBy(avatar.doId): # there should only be one DoTrick goal at a time if not self.goalMgr.hasTrickGoal(): # will the pet do the trick? if not self.pet._willDoTrick(trickId): self.pet.trickFailLogger.addEvent(trickId) trickId = PetTricks.Tricks.BALK # add a goal of doing the trick trickGoal = PetGoal.DoTrick(avatar, trickId) self.goalMgr.addGoal(trickGoal)