def showPet(self): self.nameLabel = DirectLabel(parent=self, pos=(0, 0, 1.35), relief=None, text=self.petName[self.curPet], text_fg=Vec4(0.45, 0, 0.61, 1), text_pos=(0, 0), text_scale=0.08, text_shadow=(1, 1, 1, 1)) self.petModel = Pet.Pet(forGui=1) self.petModel.setDNA(self.petDNA[self.curPet]) self.petModel.fitAndCenterHead(0.57, forGui=1) self.petModel.reparentTo(self.petView) self.petModel.setH(130) self.petModel.enterNeutralHappy() self.descLabel = DirectLabel( parent=self, pos=(-0.4, 0, 0.72), relief=None, scale=0.05, text=self.petDesc[self.curPet], text_align=TextNode.ALeft, text_wordwrap=TTLocalizer.PGUIwordwrap, text_scale=TTLocalizer.PGUIdescLabel) if self.petCost[self.curPet] > base.localAvatar.getTotalMoney(): self.okButton['state'] = DGG.DISABLED else: self.okButton['state'] = DGG.NORMAL return
def showDialog(avatar): avatar.announceGenerate() avatar.postGenerateMessage() model = loader.loadModel('phase_4/models/gui/ReturnPet') modelPos = (0, 0, -0.3) modelScale = (0.055, 0.055, 0.055) base.r = self DirectFrame.__init__(self, relief=None, state='normal', geom=model, geom_scale=modelScale, frameSize=(-1, 1, -1, 1), pos=modelPos, text=TTLocalizer.PetshopReturnConfirm % avatar.getName(), text_wordwrap=12, text_scale=TTLocalizer.PGUIreturnConfirm, text_pos=(0, 0.45), text_fg=text2Color) self.initialiseoptions(PetshopGUI.ReturnPetDlg) okImageList = (model.find('**/CheckButtonUp'), model.find('**/CheckButtonDown'), model.find('**/CheckRollover')) 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.PetshopReturn), text_pos=(5.8, 4.4), text_scale=0.7, pressEffect=False, command=lambda : messenger.send(doneEvent, [1])) self.petView = self.attachNewNode('petView') self.petView.setPos(-0.15, 0, 0.8) self.petModel = Pet.Pet(forGui=1) self.petModel.setDNA(avatar.getDNA()) self.petModel.fitAndCenterHead(0.395, forGui=1) self.petModel.reparentTo(self.petView) self.petModel.setH(130) self.petModel.enterNeutralSad() model.removeNode() self.initialized = True return
def __fillPetInfo(self, avatar): self.notify.debug('__fillPetInfo(): doId=%s' % avatar.doId) self.petView = self.frame.attachNewNode('petView') self.petView.setPos(0, 0, 5.4) if hasattr(avatar, 'announceGenerate'): avatar.announceGenerate() self.petModel = Pet.Pet(forGui=1) self.petModel.setDNA(avatar.getDNA()) self.petModel.fitAndCenterHead(3.575, forGui=1) self.petModel.reparentTo(self.petView) self.petModel.setScale(0.6) self.petModel.enterNeutralHappy() self.petModel.startBlink() self.nameLabel = DirectLabel(parent=self.frame, pos=(0, 0, 5.2), relief=None, text=avatar.getName(), text_font=avatar.getFont(), text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.4, text_wordwrap=7.5, text_shadow=(1, 1, 1, 1)) self.stateLabel = DirectLabel( parent=self.frame, pos=TTLocalizer.PAPstateLabelPos, relief=None, text='', text_font=avatar.getFont(), text_fg=Vec4(0, 0, 0, 1), text_scale=TTLocalizer.PAPstateLabel, text_wordwrap=TTLocalizer.PAPstateLabelWordwrap, text_shadow=(1, 1, 1, 1)) self.__refreshPetInfo(avatar)
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 __fillPetInfo(self, avatar): self.notify.debug('__fillPetInfo(): doId=%s' % avatar.doId) if self.nameLabel == None: self.petView = self.frame.attachNewNode('petView') self.petView.setPos(0, 0, 5.4) self.petModel = Pet.Pet(forGui=1) self.petModel.setDNA(avatar.getDNA()) self.petModel.fitAndCenterHead(3.575, forGui=1) self.petModel.reparentTo(self.petView) self.petModel.enterNeutralHappy() self.petModel.startBlink() self.nameLabel = DirectLabel(parent=self.frame, pos=(0, 0, 5.2), relief=None, text=avatar.getName(), text_font=avatar.getFont(), text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.4, text_wordwrap=7.5, text_shadow=(1, 1, 1, 1)) self.stateLabel = DirectLabel(parent=self.frame, pos=(0.7, 0, 3.5), relief=None, text='', text_font=avatar.getFont(), text_fg=Vec4(0, 0, 0, 1), text_scale=0.4, text_wordwrap=7.5, text_shadow=(1, 1, 1, 1)) self.__refreshPetInfo(avatar) return
def load(self): SafeZoneLoader.load(self) self.flippy = NPCToons.createLocalNPC(2001) self.flippy.reparentTo(render) self.flippy.setPickable(0) self.flippy.setPos(188, -260, 11.187) self.flippy.setH(108.411) self.flippy.initializeBodyCollisions('toon') self.flippy.addActive() self.flippy.startBlink() # Just keeping things relevant to 2.5.2, keeping away from TTR and TTO phrases... self.flippyBlatherSequence = Sequence(Wait(10), Func(self.flippy.setChatAbsolute, 'Hello and welcome Toons, far and wide!', CFSpeech | CFTimeout), Func(self.flippy.play, 'wave'), Func(self.flippy.loop, 'neutral'), Wait(12), Func(self.flippy.setChatAbsolute, "It's been a great time at Toontown, with you helping us stop the Cogs from ruining the experience with their destructive bugs, and we're glad you could join us!", CFSpeech | CFTimeout), Wait(10), Func(self.flippy.setChatAbsolute, "Oh, don't mind the little guy back there. That's my new-found lovable yet mysterious pet, Fluffy. That's what he calls himself.", CFSpeech | CFTimeout), Wait(8), Func(self.flippy.setChatAbsolute, "He came out of nowhere...", CFSpeech | CFTimeout), Wait(13), Func(self.flippy.setChatAbsolute, "Just when I thought Toontown couldn't be any sillier! He's a real rascal, but he already has the Cog-fighting down to a science!", CFSpeech | CFTimeout), Wait(12), Func(self.flippy.setChatAbsolute, 'Doctor Surlee says he\'s some sort of creature called a "Doodle". Funny name, right?', CFSpeech | CFTimeout), Wait(16), Func(self.flippy.setChatAbsolute, "He also says Fluffy might have some friends and we may learn more about them soon.", CFSpeech | CFTimeout), Wait(8), Func(self.flippy.setChatAbsolute, 'Anyway, what are you waiting for?', CFSpeech | CFTimeout), Wait(8), Func(self.flippy.setChatAbsolute, 'Grab some pies and go for a spin. ToonFest is in full swing!', CFSpeech | CFTimeout), Wait(13), Func(self.flippy.setChatAbsolute, 'Buddy over there has made a few mistakes at the office so I have asked him to manage the balloon ride.', CFSpeech | CFTimeout), Wait(13), Func(self.flippy.setChatAbsolute, 'Hop in the balloon with Buddy and have a ride.', CFSpeech | CFTimeout)) self.flippyBlatherSequence.loop() self.fluffy = Pet.Pet() self.fluffy.addActive() self.flippy.startBlink() self.fluffy.setDNA(PetDNA.getRandomPetDNA()) self.fluffy.setName('Fluffy') self.fluffy.setPickable(0) self.fluffy.reparentTo(render) self.fluffy.setPos(191, -263, 11.382) self.fluffy.setH(829) self.fluffy.enterNeutralHappy() self.fluffy.initializeBodyCollisions('pet') try: self.towerGeom = self.geom.find('**/toonfest_tower_DNARoot') self.base1 = self.towerGeom.find('**/base1') self.base2 = self.towerGeom.find('**/base2') self.base3 = self.towerGeom.find('**/base3') except: self.notify.warning('Something messed up loading the tower bases!')
def createDoodle(name, head, ears, nose, tail, body, color, colorScale, eyes, gender, x=0, y=0, z=0, h=0, p=0, r=0, parent=render, coll=True): doodle = Pet.Pet() doodle.setDNA( [head, ears, nose, tail, body, color, colorScale, eyes, gender]) doodle.setName(name) doodle.setPickable(0) doodle.reparentTo(parent) doodle.setPosHpr(x, y, z, h, p, r) doodle.enterNeutralHappy() if coll: doodle.initializeBodyCollisions('pet') return doodle
def getPicture(self, avatar): from toontown.pets import PetDNA, Pet pet = Pet.Pet(forGui=1) dna = PetDNA.getRandomPetDNA() pet.setDNA(dna) pet.setH(180) model, ival = self.makeFrameModel(pet, 0) pet.setScale(2.0) pet.setP(-40) track = PetTricks.getTrickIval(pet, self.trickId) name = 'petTrick-item-%s' % self.sequenceNumber CatalogPetTrickItem.sequenceNumber += 1 if track is not None: track = Sequence( Sequence(track), ActorInterval( pet, 'neutral', duration=2), name=name) else: pet.animFSM.request('neutral') track = Sequence(Wait(4), name=name) self.petPicture = pet self.hasPicture = True return model, track
def __healJuggle(heal): """ __healJuggle(heal) """ petProxyId = heal['petId'] pet = Pet.Pet() gender = 0 if base.cr.doId2do.has_key(petProxyId): petProxy = base.cr.doId2do[petProxyId] if (petProxy == None): return pet.setDNA(petProxy.style) pet.setName(petProxy.petName) gender = petProxy.gender else: pet.setDNA([-1, 0, 0, -1, 2, 0, 4, 0, 1]) pet.setName('Smiley') targets = heal['target'] ineffective = heal['sidestep'] level = heal['level'] # Make a 'sandwich' around the track specific interval track = Sequence(__teleportIn(heal, pet)) # Do the trick (or not) if ineffective: trickTrack = Parallel(Wait(1.0), Func(pet.loop, 'neutralSad'), Func(pet.showMood, 'confusion') ) else: trickTrack = PetTricks.getTrickIval(pet, level) track.append(trickTrack) delay = 4.0 first = 1 targetTrack = Sequence() for target in targets: targetToon = target['toon'] hp = target['hp'] callerToonId = heal['toonId'] reactIval = Func(__healToon, targetToon, hp, gender, callerToonId, ineffective) if (first == 1): #targetTrack.append(Wait(delay)) first = 0 targetTrack.append(reactIval) mtrack = Parallel(Wait(2.0), targetTrack) track.append(mtrack) track.append(Sequence(Func(pet.clearMood))) track.append(__teleportOut(heal, pet)) for target in targets: targetToon = target['toon'] track.append(Func(targetToon.clearChat)) track.append(Func(pet.delete)) return track
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 __doPetSOS(heal): petProxyId = heal['petId'] pet = Pet.Pet() gender = 0 if petProxyId in base.cr.doId2do: petProxy = base.cr.doId2do[petProxyId] if petProxy == None: return pet.setDNA(petProxy.style) pet.setName(petProxy.petName) gender = petProxy.gender else: pet.setDNA([-1, 0, 0, -1, 2, 0, 4, 0, 1]) pet.setName(TTLocalizer.DefaultDoodleName) targets = heal['target'] ineffective = heal['sidestep'] level = heal['level'] track = Sequence(__teleportIn(heal, pet)) if ineffective: trickTrack = Parallel(Wait(1.0), Func(pet.loop, 'neutralSad'), Func(pet.showMood, 'confusion')) else: trickTrack = PetTricks.getTrickIval(pet, level) track.append(trickTrack) delay = 4.0 first = 1 targetTrack = Sequence() for target in targets: targetToon = target['toon'] hp = target['hp'] callerToonId = heal['toonId'] reactIval = Func(__healToon, targetToon, hp, gender, callerToonId, ineffective) if first == 1: first = 0 targetTrack.append(reactIval) mtrack = Parallel(Wait(2.0), targetTrack) track.append(mtrack) track.append(Sequence(Func(pet.clearMood))) track.append(__teleportOut(heal, pet)) for target in targets: targetToon = target['toon'] track.append(Func(targetToon.clearChat)) track.append(Func(pet.delete)) return track
def getPicture(self, avatar): # Returns a (DirectWidget, Interval) pair to draw and animate a # little representation of the item, or (None, None) if the # item has no representation. This method is only called on # the client. # Don't import this at the top of the file, since this code # must run on the AI. from toontown.pets import PetDNA, Pet pet = Pet.Pet(forGui = 1) # We use the avatar's own pet if he/she has a pet (and we know # its DNA), otherwise use a random pet. dna = avatar.petDNA if dna == None: dna = PetDNA.getRandomPetDNA() pet.setDNA(dna) pet.setH(180) model, ival = self.makeFrameModel(pet, 0) pet.setScale(2.0) pet.setP(-40) # Discard the ival from makeFrameModel, since we don't want to # spin. track = PetTricks.getTrickIval(pet, self.trickId) name = "petTrick-item-%s" % (self.sequenceNumber) CatalogPetTrickItem.sequenceNumber += 1 if track != None: track = Sequence(Sequence(track), ActorInterval(pet, 'neutral', duration = 2), name = name) else: pet.animFSM.request('neutral') track = Sequence(Wait(4), name = name) self.petPicture = pet assert (not self.hasPicture) self.hasPicture=True return (model, track)
def __fillPetInfo(self, avatar): self.notify.debug("__fillPetInfo(): doId=%s" % avatar.doId) #add the view of the pet if self.nameLabel == None: self.petView = self.frame.attachNewNode('petView') self.petView.setPos(0, 0, 5.4) self.petModel = Pet.Pet(forGui = 1) self.petModel.setDNA(avatar.getDNA()) self.petModel.fitAndCenterHead(3.575, forGui = 1) self.petModel.reparentTo(self.petView) self.petModel.enterNeutralHappy() self.petModel.startBlink() # Put the avatar's name across the top. self.nameLabel = DirectLabel( parent = self.frame, pos = (0, 0, 5.2), relief = None, text = avatar.getName(), text_font = avatar.getFont(), text_fg = Vec4(0,0,0,1), text_pos = (0, 0), text_scale = 0.4, text_wordwrap = 7.5, text_shadow = (1, 1, 1, 1), ) # Put the avatar's 'state' (biggest need) self.stateLabel = DirectLabel( parent = self.frame, pos = (0.7, 0, 3.5), relief = None, text = "", text_font = avatar.getFont(), text_fg = Vec4(0,0,0,1), text_scale = 0.4, text_wordwrap = 7.5, text_shadow = (1, 1, 1, 1), ) self.__refreshPetInfo(avatar)