def __init__(self, doneEvent, petSeed, petNameIndex): zoneId = ZoneUtil.getCanonicalSafeZoneId(base.localAvatar.getZoneId()) name, dna, traitSeed = PetUtil.getPetInfoFromSeed(petSeed, zoneId) name = PetNameGenerator.PetNameGenerator().getName(petNameIndex) cost = PetUtil.getPetCostFromSeed(petSeed, zoneId) model = loader.loadModel('phase_4/models/gui/AdoptPet') modelPos = (0, 0, -0.3) modelScale = 0.055 DirectFrame.__init__(self, relief=None, state='normal', geom=model, geom_color=ToontownGlobals.GlobalDialogColor, geom_scale=modelScale, frameSize=(-1, 1, -1, 1), pos=modelPos, text=TTLocalizer.PetshopAdoptConfirm % (name, cost), text_wordwrap=12, text_scale=0.05, text_pos=(0, 0.55), text_fg=text0Color) self.initialiseoptions(PetshopGUI.AdoptPetDlg) self.petView = self.attachNewNode('petView') self.petView.setPos(-0.13, 0, 0.8) self.petModel = Pet.Pet(forGui=1) self.petModel.setDNA(dna) self.petModel.fitAndCenterHead(0.395, forGui=1) self.petModel.reparentTo(self.petView) self.petModel.setH(130) self.petModel.enterNeutralHappy() self.moneyDisplay = DirectLabel(parent=self, relief=None, text=str(base.localAvatar.getTotalMoney()), text_scale=0.075, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0.225, 0.33), text_font=ToontownGlobals.getSignFont()) self.accept(localAvatar.uniqueName('moneyChange'), self.__moneyChange) self.accept(localAvatar.uniqueName('bankMoneyChange'), self.__moneyChange) okImageList = (model.find('**/CheckButtonUp'), model.find('**/CheckButtonDown'), model.find('**/CheckButtonRollover')) cancelImageList = (model.find('**/CancelButtonUp'), model.find('**/CancelButtonDown'), model.find('**/CancelRollover')) cancelIcon = model.find('**/CancelIcon') checkIcon = model.find('**/CheckIcon') self.cancelButton = DirectButton(parent=self, relief=None, image=cancelImageList, geom=cancelIcon, scale=modelScale, text=('', TTLocalizer.PetshopGoBack), text_pos=(-5.8, 4.4), text_scale=0.7, pressEffect=False, command=lambda : messenger.send(doneEvent, [0])) self.okButton = DirectButton(parent=self, relief=None, image=okImageList, geom=checkIcon, scale=modelScale, text=('', TTLocalizer.PetshopAdopt), text_pos=(5.8, 4.4), text_scale=0.7, pressEffect=False, command=lambda : messenger.send(doneEvent, [1])) model.removeNode() return
def getPetInfoFromSeed(seed, safezoneId): S = random.getstate() random.seed(seed) dnaArray = PetDNA.getRandomPetDNA(safezoneId) gender = PetDNA.getGender(dnaArray) nameString = PetNameGenerator.PetNameGenerator().randomName(gender=gender, seed=seed + safezoneId) traitSeed = PythonUtil.randUint31() random.setstate(S) return (nameString, dnaArray, traitSeed)
def __init__(self, doneEvent, petSeed, gender): zoneId = ZoneUtil.getCanonicalSafeZoneId(base.localAvatar.getZoneId()) name, dna, traitSeed = PetUtil.getPetInfoFromSeed(petSeed, zoneId) self.gui = loader.loadModel('phase_4/models/gui/PetNamePanel') self.guiScale = 0.09 DirectFrame.__init__(self, relief=None, geom=self.gui, geom_scale=self.guiScale, state='normal', frameSize=(-1, 1, -1, 1)) self.initialiseoptions(PetshopGUI.NamePicker) self.petView = self.attachNewNode('petView') self.petView.setPos(-0.21, 0, -0.04) self.petModel = Pet.Pet(forGui=1) self.petModel.setDNA(dna) self.petModel.fitAndCenterHead(0.435, forGui=1) self.petModel.reparentTo(self.petView) self.petModel.setH(225) self.petModel.enterNeutralHappy() self.ng = PetNameGenerator.PetNameGenerator() if gender == 1: self.allNames = self.ng.boyFirsts else: self.allNames = self.ng.girlFirsts self.allNames += self.ng.neutralFirsts self.allNames.sort() self.checkNames() self.letters = [] for name in self.allNames: if name[0:TTLocalizer.PGUIcharLength] not in self.letters: self.letters.append(name[0:TTLocalizer.PGUIcharLength]) self.curLetter = self.letters[0] self.curNames = [] self.curName = '' self.alphabetList = self.makeScrollList(self.gui, (-0.012, 0, -0.075), (1, 0.8, 0.8, 1), self.letters, self.makeLabel, [TextNode.ACenter, 'alphabet'], 6) self.nameList = None self.rebuildNameList() self.randomButton = DirectButton(parent=self, relief=None, image=(self.gui.find('**/RandomUpButton'), self.gui.find('**/RandomDownButton'), self.gui.find('**/RandomRolloverButton')), scale=self.guiScale, text=TTLocalizer.RandomButton, text_pos=(-0.8, -5.7), text_scale=0.8, text_fg=text2Color, pressEffect=False, command=self.randomName) self.nameResult = DirectLabel(parent=self, relief=None, scale=self.guiScale, text='', text_align=TextNode.ACenter, text_pos=(-1.85, 2.6), text_fg=text0Color, text_scale=0.6, text_wordwrap=8) self.submitButton = DirectButton(parent=self, relief=None, image=(self.gui.find('**/SubmitUpButton'), self.gui.find('**/SubmitDownButton'), self.gui.find('**/SubmitRolloverButton')), scale=self.guiScale, text=TTLocalizer.PetshopAdopt, text_pos=(3.3, -5.7), text_scale=TTLocalizer.PGUIsubmitButton, text_fg=text0Color, pressEffect=False, command=lambda : messenger.send(doneEvent, [self.ng.returnUniqueID(self.curName)])) model = loader.loadModel('phase_4/models/gui/PetShopInterface') modelScale = 0.1 cancelImageList = (model.find('**/CancelButtonUp'), model.find('**/CancelButtonDown'), model.find('**/CancelButtonRollover')) cancelIcon = model.find('**/CancelIcon') self.cancelButton = DirectButton(parent=self, relief=None, pos=(-0.04, 0, -0.47), image=cancelImageList, geom=cancelIcon, scale=modelScale, pressEffect=False, command=lambda : messenger.send(doneEvent, [-1])) self.randomName() return
def createPet(self): self.nameGen = PetNameGenerator.PetNameGenerator() self.name = self.nameGen.getName(self.nameIndex) print 'TRAIT SEED IS: %s' % (self.traitSeed) self.air.dbInterface.createObject( self.air.dbId, self.air.dclassesByName['DistributedPetAI'], { 'setOwnerId': [self.avId], 'setPetName': [self.name], 'setTraitSeed': [self.traitSeed], 'setSafeZone': [self.zoneId], 'setForgetfulness': [0], 'setBoredomThreshold': [0], # TODO 'setRestlessnessThreshold': [0], # TODO 'setPlayfulnessThreshold': [0], # TODO 'setLonelinessThreshold': [0], # TODO 'setSadnessThreshold': [0], # TODO 'setFatigueThreshold': [0], # TODO 'setHungerThreshold': [0], # TODO 'setExcitementThreshold': [0], # TODO 'setAngerThreshold': [0], # TODO 'setSurpriseThreshold': [0], # TODO 'setAffectionThreshold': [0], # TODO 'setHead': [self.dna[0]], 'setEars': [self.dna[1]], 'setNose': [self.dna[2]], 'setTail': [self.dna[3]], 'setBodyTexture': [self.dna[4]], 'setColor': [self.dna[5]], 'setColorScale': [self.dna[6]], 'setEyeColor': [self.dna[7]], 'setGender': [self.dna[8]], 'setLastSeenTimestamp': [0], 'setExcitement': [0], 'setBoredom': [0], 'setRestlessness': [0], 'setPlayfulness': [0], 'setLoneliness': [0], 'setSadness': [0], 'setAffection': [0], 'setHunger': [0], 'setAnger': [0], 'setTrickAptitudes': [[0, 0, 0, 0, 0, 0, 0]] }, self._handleCreate)
def __init__(self, air): self.air = air self.cacheFile = '%spets_%d.json' % (self.cachePath, self.air.districtId) if not os.path.exists(self.cachePath): os.makedirs(self.cachePath) if os.path.isfile(self.cacheFile): with open(self.cacheFile, 'rb') as (f): data = f.read() self.seeds = json.loads(data) if self.seeds.get('day', -1) != getDayId() or len( self.seeds.get(ToontownGlobals.ToontownCentral, [])) != self.NUM_DAILY_PETS: self.generateSeeds() else: self.generateSeeds() self.nameGen = PetNameGenerator.PetNameGenerator()
def handlePetGenerated(success, pet): if success: name, dna, traitSeed = PetUtil.getPetInfoFromSeed( seed, safeZoneId) if gender != -1: #make sure the size of the dna array hasn't changed assert (len(dna) == 9) dna[8] = gender if nameIndex != -1: name = PetNameGenerator.PetNameGenerator().getName( nameIndex) pet._initDBVals(toonId, name, traitSeed, dna, safeZoneId) self.assignPetToToon(petId, toonId) message = '%s|%s|%s|%s|%s' % ( petId, name, pet.getSafeZone(), dna, pet.traits.getValueList()) self.air.writeServerEvent('adoptPet', toonId, message) pet.requestDelete() else: self.notify.warning('error summoning pet %s' % petId)