def _RoguesGallery__makeSuit(self, dept, type, name=None): dna = AvatarDNA.AvatarDNA() if name != None: dna.newSuit(name) else: dna.newSuitRandom(type + 1, dept) suit = Suit.Suit() suit.setStyle(dna) suit.generateSuit() suit.pose('neutral', 30) ll = Point3() ur = Point3() suit.update() suit.calcTightBounds(ll, ur) suitWidth = ur[0] - ll[0] suitDepth = ur[1] - ll[1] suitHeight = ur[2] - ll[2] self.rowWidth += suitWidth + suitDepth self.rowHeight = max(self.rowHeight, suitHeight) suit.reparentTo(self.gallery) suit.setHpr(180.0, 0.0, 0.0) profile = Suit.Suit() profile.setStyle(dna) profile.generateSuit() profile.pose('neutral', 30) profile.reparentTo(self.gallery) profile.setHpr(90.0, 0.0, 0.0) self.suitRow.append((type, suitWidth, suit, suitDepth, profile)) self.actors.append(suit) self.actors.append(profile)
def popupChangeClothesGUI(self, task): self.notify.debug('popupChangeClothesGUI') self.purchaseDoneEvent = self.uniqueName('purchaseDone') self.swapEvent = self.uniqueName('swap') self.cancelEvent = self.uniqueName('cancel') self.accept(self.purchaseDoneEvent, self.__proceedToCheckout) self.accept(self.swapEvent, self.__handleSwap) self.accept(self.cancelEvent, self.__handleCancel) self.deleteEvent = self.uniqueName('delete') if self.isOwner: self.accept(self.deleteEvent, self.__handleDelete) self.closetGUI = ClosetGUI.ClosetGUI(self.isOwner, self.purchaseDoneEvent, self.cancelEvent, self.swapEvent, self.deleteEvent, self.topList, self.botList) self.closetGUI.load() if self.gender != self.ownerGender: self.closetGUI.setGender(self.ownerGender) self.closetGUI.enter(toonbase.localToon) self.closetGUI.showButtons() if toonbase.localToon.getHeight() > 3.5: self.closetGUI.topLButton.setZ(0.1) self.closetGUI.topRButton.setZ(0.1) self.closetGUI.bottomLButton.setZ(-0.3) self.closetGUI.bottomRButton.setZ(-0.3) else: self.closetGUI.topLButton.setZ(0) self.closetGUI.topRButton.setZ(0) self.closetGUI.bottomLButton.setZ(-0.4) self.closetGUI.bottomRButton.setZ(-0.4) style = self.av.getStyle() self.oldStyle = AvatarDNA.AvatarDNA() self.oldStyle.makeFromNetString(style.makeNetString()) return Task.done
def load(self): SafeZoneLoader.SafeZoneLoader.load(self) self.seagullSound = base.loadSfx('phase_6/audio/sfx/SZ_DD_Seagull.mp3') self.underwaterSound = base.loadSfx( 'phase_4/audio/sfx/AV_ambient_water.mp3') self.swimSound = base.loadSfx( 'phase_4/audio/sfx/AV_swim_single_stroke.mp3') self.submergeSound = base.loadSfx( 'phase_5.5/audio/sfx/AV_jump_in_water.mp3') water = self.geom.find('**/water') water.setTransparency(1) water.setColor(1, 1, 1, 0.8) boat = self.geom.find('**/donalds_boat') if boat.isEmpty(): self.notify.error('Boat not found') else: toonbase.tcr.token2nodePath[ToontownGlobals.SPDonaldsBoat] = boat wheel = boat.find('**/wheel') if wheel.isEmpty(): self.notify.warning('Wheel not found') else: wheel.hide() boat.stash() dna = AvatarDNA.AvatarDNA() dna.newChar('dw') self.donald = Char.Char() self.donald.setDNA(dna) self.dockSound = base.loadSfx('phase_6/audio/sfx/SZ_DD_dockcreak.mp3') self.foghornSound = base.loadSfx('phase_5/audio/sfx/SZ_DD_foghorn.mp3') self.bellSound = base.loadSfx('phase_6/audio/sfx/SZ_DD_shipbell.mp3') self.waterSound = base.loadSfx('phase_6/audio/sfx/SZ_DD_waterlap.mp3')
def createNPC(air, npcId, desc, zoneId, posIndex=0, questCallback=None): import DistributedNPCToonAI import DistributedNPCClerkAI import DistributedNPCTailorAI import DistributedNPCBlockerAI (zoneId, name, dnaType, gender, protected, type) = desc if type == NPC_REGULAR: npc = DistributedNPCToonAI.DistributedNPCToonAI( air, npcId, questCallback=questCallback) elif type == NPC_HQ: npc = DistributedNPCToonAI.DistributedNPCToonAI( air, npcId, questCallback=questCallback, hq=1) elif type == NPC_CLERK: npc = DistributedNPCClerkAI.DistributedNPCClerkAI(air, npcId) elif type == NPC_TAILOR: npc = DistributedNPCTailorAI.DistributedNPCTailorAI(air, npcId) elif type == NPC_BLOCKER: npc = DistributedNPCBlockerAI.DistributedNPCBlockerAI(air, npcId) else: print 'createNPC() error!!!' npc.setName(name) dna = AvatarDNA.AvatarDNA() if dnaType == 'r': dnaList = getRandomDNA(npcId, gender) else: dnaList = dnaType dna.newToonFromProperties(*dnaList) npc.setDNAString(dna.makeNetString()) npc.setHp(15) npc.setMaxHp(15) npc.setPositionIndex(posIndex) npc.generateWithRequired(zoneId) npc.d_setAnimState('neutral', 1.0) return npc
def playTutorialReward_3(self, value): self.tutRewardDialog_2.cleanup() import Toon, AvatarDNA def doneChat1(page, elapsed=0): self.track2.start() def doneChat2(elapsed): self.track2.pause() self.track3.start() def uniqueName(hook): return 'TutorialTom-' + hook self.tutorialTom = Toon.Toon() dna = AvatarDNA.AvatarDNA() dnaList = ('dls', 'ms', 'm', 'm', 7, 0, 7, 7, 2, 6, 2, 6, 2, 16) dna.newToonFromProperties(*dnaList) self.tutorialTom.setDNA(dna) self.tutorialTom.setName(Localizer.NPCToonNames[20000]) self.tutorialTom.uniqueName = uniqueName questList = self.rewardPanel.getQuestIntervalList(toonbase.localToon, [ 0, 1]) if questList: self.track1 = Sequence(Wait(1.0), Func(self.rewardPanel.initQuestFrame, toonbase.localToon, copy.deepcopy(toonbase.localToon.quests)), Wait(1.0), Sequence(questList), Wait(1.0), Func(self.rewardPanel.hide), Func(camera.setPosHpr, render, 34, 19.88, 3.48, 270.0, 60.0, 297.64), Func(toonbase.localToon.animFSM.request, 'neutral'), Func(toonbase.localToon.setPosHpr, 40.31, 22.0, -0.47, 150.0, 360.0, 0.0), Wait(0.5), Func(self.tutorialTom.reparentTo, render), Func(self.tutorialTom.show), Func(self.tutorialTom.setPosHpr, 40.29, 17.9, -0.47, 11.31, 0.0, 0.07), Func(self.tutorialTom.animFSM.request, 'TeleportIn'), Wait(1.517), Func(self.tutorialTom.animFSM.request, 'neutral'), Func(self.acceptOnce, self.tutorialTom.uniqueName('doneChatPage'), doneChat1), Func(self.tutorialTom.addActive), Func(self.tutorialTom.setLocalPageChat, Localizer.MovieTutorialReward3, None), name='tutorial-reward-3a') self.track2 = Sequence(Func(self.acceptOnce, self.tutorialTom.uniqueName('doneChatPage'), doneChat2), Func(self.tutorialTom.setLocalPageChat, Localizer.MovieTutorialReward4, 1), Func(self.tutorialTom.setPlayRate, 1.5, 'right-hand-start'), Func(self.tutorialTom.play, 'right-hand-start'), Wait(self.tutorialTom.getDuration('right-hand-start') / 1.5), Func(self.tutorialTom.loop, 'right-hand'), name='tutorial-reward-3b') self.track3 = Parallel(Sequence(Func(self.tutorialTom.setPlayRate, -1.8, 'right-hand-start'), Func(self.tutorialTom.play, 'right-hand-start'), Wait(self.tutorialTom.getDuration('right-hand-start') / 1.8), Func(self.tutorialTom.animFSM.request, 'neutral'), name='tutorial-reward-3ca'), Sequence(Wait(0.5), Func(self.tutorialTom.setChatAbsolute, Localizer.MovieTutorialReward5, CFSpeech | CFTimeout), Wait(1.0), Func(self.tutorialTom.animFSM.request, 'TeleportOut'), Wait(self.tutorialTom.getDuration('teleport')), Wait(1.0), Func(self.playTutorialReward_4, 0), name='tutorial-reward-3cb'), name='tutorial-reward-3c') self.track1.start() else: self.playTutorialReward_4(0) return return
def buildFrame(self, name, dnaTuple): frame = loader.loadModelCopy('phase_3.5/models/modules/trophy_frame') dna = AvatarDNA.AvatarDNA() apply(dna.newToonFromProperties, dnaTuple) head = ToonHead.ToonHead() head.setupHead(dna) head.setPosHprScale(0, -0.05, -0.05, 180, 0, 0, 0.55, 0.02, 0.55) if dna.head[0] == 'r': head.setZ(-0.15) else: if dna.head[0] == 'h': head.setZ(0.05) else: if dna.head[0] == 'm': head.setScale(0.45, 0.02, 0.45) head.reparentTo(frame) nameText = TextNode('trophy') nameText.setFont(ToontownGlobals.getToonFont()) nameText.setAlign(TextNode.ACenter) nameText.setTextColor(0, 0, 0, 1) nameText.setWordwrap(5.36 * FrameScale) nameText.setText(name) namePath = frame.attachNewNode(nameText.generate()) namePath.setPos(0, -0.03, -0.6) namePath.setScale(0.186 / FrameScale) frame.setScale(FrameScale, 1.0, FrameScale) return frame
def addSuitHead(self, panel, suitName): panelIndex = self.panels.index(panel) shadow = panel.attachNewNode('shadow') shadowModel = self.shadowModels[panelIndex] shadowModel.copyTo(shadow) coords = SHADOW_SCALE_POS[panelIndex] shadow.setScale(coords[0]) shadow.setPos(coords[1], coords[2], coords[3]) panel.shadow = shadow suitDNA = AvatarDNA.AvatarDNA() suitDNA.newSuit(suitName) suit = Suit.Suit() suit.setDNA(suitDNA) headParts = suit.getHeadParts() head = panel.attachNewNode('head') for part in headParts: copyPart = part.copyTo(head) copyPart.setDepthTest(1) copyPart.setDepthWrite(1) suit.delete() suit = None p1 = Point3() p2 = Point3() head.calcTightBounds(p1, p2) d = p2 - p1 biggest = max(d[0], d[2]) column = panelIndex % AvatarDNA.suitsPerDept s = (0.2 + column / 100.0) / biggest pos = -0.14 + (AvatarDNA.suitsPerDept - column - 1) / 135.0 head.setPosHprScale(0, 10.0, pos, 180, 0, 0, s, s, s) panel.head = head return
def parseLoadSuit(self, line): (token, name, suitType) = line suit = Suit.Suit() dna = AvatarDNA.AvatarDNA() dna.newSuit(suitType) suit.setDNA(dna) self.setVar(name, suit)
def setDNAString(self, dnaString): if not self.dna: if self.notify.getDebug(): self.notify.debug('setting dna string for %d...' % self.getDoId()) self.dna = AvatarDNA.AvatarDNA() self.dna.makeFromNetString(dnaString) self.setDNA(self.dna) return None return
def createSuit(self): self.suit = Suit.Suit() suitDNA = AvatarDNA.AvatarDNA() suitDNA.newSuit('f') self.suit.setDNA(suitDNA) self.suit.loop('neutral') self.suit.setPosHpr(-20, 8, 0, 0, 0, 0) self.suit.reparentTo(self.interior) self.suitWalkTrack = Sequence(self.suit.hprInterval(0.1, Vec3(0, 0, 0)), Func(self.suit.loop, 'walk'), self.suit.posInterval(2, Point3(-20, 20, 0)), Func(self.suit.loop, 'neutral'), Wait(1.0), self.suit.hprInterval(0.1, Vec3(180, 0, 0)), Func(self.suit.loop, 'walk'), self.suit.posInterval(2, Point3(-20, 10, 0)), Func(self.suit.loop, 'neutral'), Wait(1.0)) self.suitWalkTrack.loop()
def __init__(self, cr, name, dnaName): try: self.DistributedCCharBase_initialized except: self.DistributedCCharBase_initialized = 1 DistributedChar.DistributedChar.__init__(self, cr) dna = AvatarDNA.AvatarDNA() dna.newChar(dnaName) self.setDNA(dna) self.setName(name) self.__initCollisions()
def createNpcToonHead(self, toNpcId): npcInfo = NPCToons.NPCToonDict[toNpcId] dnaList = npcInfo[2] gender = npcInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(toNpcId, gender) dna = AvatarDNA.AvatarDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui=1) self.fitGeometry(head, fFlip=1) return head
def parseLoadChar(self, line): (token, name, charType) = line char = Char.Char() dna = AvatarDNA.AvatarDNA() dna.newChar(charType) char.setDNA(dna) if charType == 'mk' or charType == 'mn': char.startEarTask() char.nametag.manage(toonbase.marginManager) char.addActive() char.hideName() self.setVar(name, char)
def __init__(self, serialNum, maze, randomNumGen, cellWalkPeriod, difficulty): self.serialNum = serialNum self.maze = maze self.rng = RandomNumGen.RandomNumGen(randomNumGen) self.difficulty = difficulty self.suit = Suit.Suit() d = AvatarDNA.AvatarDNA() d.newSuit('f') self.suit.setDNA(d) self.ticPeriod = int(cellWalkPeriod) self.cellWalkDuration = float(self.ticPeriod) / float( MazeGameGlobals.SUIT_TIC_FREQ) self.turnDuration = 0.6 * self.cellWalkDuration
def inviteeFriendQuery(self, inviterId, inviterName, inviterDna, context): dna = AvatarDNA.AvatarDNA() dna.makeFromNetString(inviterDna) self.notify.debug('Client: inviteeFriendQuery(%d, %s, dna, %d)' % (inviterId, inviterName, context)) if inviterId in toonbase.localToon.ignoreList: self.up_inviteeFriendConsidering(4, context) return if not toonbase.localToon.acceptingNewFriends: self.up_inviteeFriendConsidering(6, context) return self.up_inviteeFriendConsidering(self.__available, context) if self.__available: messenger.send('friendInvitation', [inviterId, inviterName, dna, context])
def parseLoadClassicChar(self, line): (token, name) = line char = Char.Char() dna = AvatarDNA.AvatarDNA() if self.toon.getStyle().gender == 'm': charType = 'mk' else: charType = 'mn' dna.newChar(charType) char.setDNA(dna) char.startEarTask() char.nametag.manage(toonbase.marginManager) char.addActive() char.hideName() self.setVar(name, char)
def createSuitHead(self, suitName): suitDNA = AvatarDNA.AvatarDNA() suitDNA.newSuit(suitName) suit = Suit.Suit() suit.setDNA(suitDNA) headParts = suit.getHeadParts() head = hidden.attachNewNode('head') for part in headParts: copyPart = part.copyTo(head) copyPart.setDepthTest(1) copyPart.setDepthWrite(1) self.fitGeometry(head, fFlip = 1) suit.delete() suit = None return head
def resetCloset(self): self.ignoreAll() taskMgr.remove(self.uniqueName('popupChangeClothesGUI')) taskMgr.remove(self.uniqueName('lerpCamera')) taskMgr.remove(self.uniqueName('lerpToon')) if self.closetGUI: self.closetGUI.hideButtons() self.closetGUI.exit() self.closetGUI.unload() self.closetGUI = None del self.av self.av = toonbase.localToon style = self.av.getStyle() self.oldStyle = AvatarDNA.AvatarDNA() self.oldStyle.makeFromNetString(style.makeNetString()) self.topDeleted = 0 self.bottomDeleted = 0 return Task.done return
def __handleDelete(self, t_or_b): if t_or_b == ClosetGlobals.SHIRT: itemList = self.closetGUI.tops trashIndex = self.closetGUI.topChoice swapFunc = self.closetGUI.swapTop removeFunc = self.closetGUI.removeTop self.topDeleted = self.topDeleted | 1 def setItemChoice(i): self.closetGUI.topChoice = i else: itemList = self.closetGUI.bottoms trashIndex = self.closetGUI.bottomChoice swapFunc = self.closetGUI.swapBottom removeFunc = self.closetGUI.removeBottom self.bottomDeleted = self.bottomDeleted | 1 def setItemChoice(i): self.closetGUI.bottomChoice = i if len(itemList) > 1: trashDNA = AvatarDNA.AvatarDNA() trashItem = self.av.getStyle().makeNetString() trashDNA.makeFromNetString(trashItem) if trashIndex == 0: swapFunc(1) else: swapFunc(-1) removeFunc(trashIndex) self.sendUpdate('removeItem', [trashItem, t_or_b]) swapFunc(0) self.closetGUI.updateTrashButtons() else: self.notify.warning( "cant delete this item(type = %s), since we don't have a replacement" % t_or_b)
def load(self): gui = loader.loadModelOnce('phase_3/models/gui/create_a_toon_gui') self.guiTopBar = DirectFrame(relief = None, image = gui.find('**/CrtATn_TopBar'), text = Localizer.CreateYourToon, text_font = ToontownGlobals.getSignFont(), text_fg = (0.0, 0.65000000000000002, 0.34999999999999998, 1), text_scale = 0.17999999999999999, text_pos = (0, -0.029999999999999999), pos = (0, 0, 0.85999999999999999)) self.guiTopBar.hide() self.guiBottomBar = DirectFrame(relief = None, image = gui.find('**/CrtATn_BtmBar'), image_scale = (1.25, 1, 1), pos = (0.01, 0, -0.85999999999999999)) self.guiBottomBar.hide() self.guiCheckButton = DirectButton(parent = self.guiBottomBar, relief = None, image = (gui.find('**/CrtAtoon_Btn1_UP'), gui.find('**/CrtAtoon_Btn1_DOWN'), gui.find('**/CrtAtoon_Btn1_RLLVR')), pos = (1.165, 0, -0.017999999999999999), command = self._MakeAToon__handleNext, text = ('', Localizer.MakeAToonDone, Localizer.MakeAToonDone), text_font = ToontownGlobals.getInterfaceFont(), text_scale = 0.080000000000000002, text_pos = (0, -0.029999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1)) self.guiCheckButton.hide() self.guiCancelButton = DirectButton(parent = self.guiBottomBar, relief = None, image = (gui.find('**/CrtAtoon_Btn2_UP'), gui.find('**/CrtAtoon_Btn2_DOWN'), gui.find('**/CrtAtoon_Btn2_RLLVR')), pos = (-1.179, 0, -0.010999999999999999), command = self._MakeAToon__handleCancel, text = ('', Localizer.MakeAToonCancel, Localizer.MakeAToonCancel), text_font = ToontownGlobals.getInterfaceFont(), text_scale = 0.080000000000000002, text_pos = (0, -0.029999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1)) self.guiCancelButton.hide() self.guiNextButton = DirectButton(parent = self.guiBottomBar, relief = None, image = (gui.find('**/CrtAtoon_Btn3_UP'), gui.find('**/CrtAtoon_Btn3_DN'), gui.find('**/CrtAtoon_Btn3_RLVR')), pos = (1.165, 0, -0.017999999999999999), command = self._MakeAToon__handleNext, text = ('', Localizer.MakeAToonNext, Localizer.MakeAToonNext), text_font = ToontownGlobals.getInterfaceFont(), text_scale = 0.080000000000000002, text_pos = (0, -0.029999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1)) self.guiNextButton.hide() self.guiLastButton = DirectButton(parent = self.guiBottomBar, relief = None, image = (gui.find('**/CrtAtoon_Btn3_UP'), gui.find('**/CrtAtoon_Btn3_DN'), gui.find('**/CrtAtoon_Btn3_RLVR')), image_scale = (-1.0, 1, 1), pos = (0.82499999999999996, 0, -0.017999999999999999), command = self._MakeAToon__handleLast, text = ('', Localizer.MakeAToonLast, Localizer.MakeAToonLast), text_font = ToontownGlobals.getInterfaceFont(), text_scale = 0.080000000000000002, text_pos = (0, -0.029999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1)) self.guiLastButton.hide() gui.removeNode() self.room = loader.loadModel('phase_3/models/gui/create_a_toon') self.roomWalls = self.room.find('**/wall_floor') self.draftingTable = self.room.find('**/drafting_table') self.easel = self.room.find('**/easel') self.sewingMachine = self.room.find('**/sewing_machine') ee = DirectFrame(pos = (-1, 1, 1), frameSize = (-0.01, 0.01, -0.01, 0.01), frameColor = (0, 0, 0, 0.050000000000000003), state = 'normal') ee.bind(B1PRESS, lambda x, ee = ee: self.toggleSlide()) self.eee = ee self.stool = self.room.find('**/stool') self.stool.hide() self.draftingTable.hide() self.easel.hide() self.sewingMachine.hide() if not (self.warp): self.dna = AvatarDNA.AvatarDNA() animal = whrandom.choice(AvatarDNA.toonHeadAnimalIndices) head = AvatarDNA.toonHeadTypes[animal] torso = whrandom.choice(AvatarDNA.toonTorsoTypes[-3:]) leg = whrandom.choice(AvatarDNA.toonLegTypes) self.dna.newToon((head, torso, leg, 'm')) else: self.dna = AvatarDNA.AvatarDNA() self.dna.makeFromNetString(self.namelessPotAv.dna) self.toon = Toon.Toon() self.toon.setDNA(self.dna) self.toon.useLOD(1000) self.toon.setNameVisible(0) self.toon.startBlink() self.toon.startLookAround() self.mickey = Char.Char() mickeyDNA = AvatarDNA.AvatarDNA() mickeyDNA.newChar('mk') self.mickey.setDNA(mickeyDNA) self.mickey.addActive() self.mickey.startEarTask() self.mickey.setNametagScale(0.80000000000000004) self.mickey.hideName() self.mickey.setPickable(1) self.mickey.nametag.getNametag3d().setChatWordwrap(8) self.minnie = Char.Char() minnieDNA = AvatarDNA.AvatarDNA() minnieDNA.newChar('mn') self.minnie.setDNA(minnieDNA) self.minnie.addActive() self.minnie.startEarTask() self.minnie.setNametagScale(0.80000000000000004) self.minnie.hideName() self.minnie.setPickable(1) self.minnie.nametag.getNametag3d().setChatWordwrap(8) self.gs.load() self.bs.load() self.cos.load() self.cls.load() self.ns.load() self.music = base.loadMusic('phase_3/audio/bgm/create_a_toon.mid') self.soundBack = base.loadSfx('phase_3/audio/sfx/GUI_create_toon_back.mp3') return None
def __init__(self, av=None, position=0, paid=0): DirectButton.__init__(self, relief=None, text='', text_font=ToontownGlobals.getSignFont()) self.initialiseoptions(AvatarChoice) self.hasPaid = paid if not av: self.create = 1 self.name = '' self.dna = None else: self.create = 0 self.name = av.name self.dna = AvatarDNA.AvatarDNA(av.dna) self.wantName = av.wantName self.approvedName = av.approvedName self.rejectedName = av.rejectedName self.allowedName = av.allowedName self.position = position self.doneEvent = 'avChoicePanel-' + str(self.position) self.deleteWithPasswordFrame = None self.pickAToonGui = loader.loadModelOnce( 'phase_3/models/gui/pick_a_toon_gui') self['image'] = self.pickAToonGui.find('**/av-chooser_Square_UP') self.setScale(1.01) if self.create: self['command'] = self._AvatarChoice__handleCreate self['text'] = (Localizer.AvatarChoiceMakeAToon, ) self['text_pos'] = (0, 0) self['text0_scale'] = 0.10000000000000001 self['text1_scale'] = 0.12 self['text2_scale'] = 0.12 self['text0_fg'] = (0, 1, 0.80000000000000004, 0.5) self['text1_fg'] = (0, 1, 0.80000000000000004, 1) self['text2_fg'] = (0.29999999999999999, 1, 0.90000000000000002, 1) else: self['command'] = self._AvatarChoice__handleChoice self['text'] = ('', Localizer.AvatarChoicePlayThisToon, Localizer.AvatarChoicePlayThisToon) self['text_scale'] = 0.12 self['text_fg'] = (1, 0.90000000000000002, 0.10000000000000001, 1) self.nameText = DirectLabel( parent=self, relief=None, scale=0.089999999999999997, pos=(0, 0, 0.27000000000000002), text=self.name, text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_wordwrap=7.5, text_font=ToontownGlobals.getToonFont(), state=DISABLED) if self.approvedName != '': self.nameText['text'] = self.approvedName guiButton = loader.loadModelOnce('phase_3/models/gui/quit_button') self.nameYourToonButton = DirectButton( parent=self, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), text=(Localizer.AvatarChoiceNameYourToon, Localizer.AvatarChoiceNameYourToon, Localizer.AvatarChoiceNameYourToon), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=0.14999999999999999, text_pos=(0, 0.029999999999999999), text_font=ToontownGlobals.getInterfaceFont(), pos=(-0.20000000000000001, 0, -0.29999999999999999), scale=0.45000000000000001, image_scale=(2, 1, 3), command=self._AvatarChoice__handleNameYourToon) guiButton.removeNode() self.statusText = DirectLabel( parent=self, relief=None, scale=0.089999999999999997, pos=(0, 0, -0.23999999999999999), text='', text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_wordwrap=7.5, text_font=ToontownGlobals.getToonFont(), state=DISABLED) if self.wantName != '': self.nameYourToonButton.hide() self.statusText['text'] = Localizer.AvatarChoiceNameReview elif self.approvedName != '': self.nameYourToonButton.hide() self.statusText['text'] = Localizer.AvatarChoiceNameApproved elif self.rejectedName != '': self.nameYourToonButton.hide() self.statusText['text'] = Localizer.AvatarChoiceNameRejected elif self.allowedName == 1 and toonbase.tcr.allowFreeNames( ) or self.hasPaid: self.nameYourToonButton.show() self.statusText['text'] = '' else: self.nameYourToonButton.hide() self.statusText['text'] = '' self.head = hidden.attachNewNode('head') self.head.setPosHprScale(0, 5, -0.10000000000000001, 180, 0, 0, 0.23999999999999999, 0.23999999999999999, 0.23999999999999999) self.head.reparentTo(self.stateNodePath[0], 20) self.head.instanceTo(self.stateNodePath[1], 20) self.head.instanceTo(self.stateNodePath[2], 20) self.headModel = ToonHead.ToonHead() self.headModel.setupHead(self.dna, forGui=1) self.headModel.reparentTo(self.head) self.headModel.startBlink() self.headModel.startLookAround() trashcanGui = loader.loadModelOnce( 'phase_3/models/gui/trashcan_gui') self.deleteButton = DirectButton( parent=self, image=(trashcanGui.find('**/TrashCan_CLSD'), trashcanGui.find('**/TrashCan_OPEN'), trashcanGui.find('**/TrashCan_RLVR')), text=('', Localizer.AvatarChoiceDelete, Localizer.AvatarChoiceDelete), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=0.14999999999999999, text_pos=(0, -0.10000000000000001), text_font=ToontownGlobals.getInterfaceFont(), relief=None, pos=(0.27000000000000002, 0, -0.25), scale=0.45000000000000001, command=self._AvatarChoice__handleDelete) trashcanGui.removeNode() self.resetFrameSize() return None
def setDNAString(self, dnaString): newDNA = AvatarDNA.AvatarDNA() newDNA.makeFromNetString(dnaString) self.setDNA(newDNA)
def getRandomDNA(seed, gender): randomDNA = AvatarDNA.AvatarDNA() randomDNA.newToonRandom(seed, gender) return randomDNA.asTuple()
def setMovie(self, mode, npcId, avId, timestamp): timeStamp = ClockDelta.globalClockDelta.localElapsedTime(timestamp) self.remain = NPCToons.CLERK_COUNTDOWN_TIME - timeStamp self.npcId = npcId self.isLocalToon = avId == toonbase.localToon.doId if mode == NPCToons.PURCHASE_MOVIE_CLEAR: return if mode == NPCToons.PURCHASE_MOVIE_TIMEOUT: taskMgr.remove(self.uniqueName('lerpCamera')) if self.isLocalToon: self.ignore(self.purchaseDoneEvent) self.ignore(self.swapEvent) if self.popupInfo: self.popupInfo.reparentTo(hidden) if self.clothesGUI: self.clothesGUI.resetClothes(self.oldStyle) self.__handlePurchaseDone(timeout=1) self.setChatAbsolute(Localizer.STOREOWNER_TOOKTOOLONG, CFSpeech | CFTimeout) self.resetTailor() else: if mode == NPCToons.PURCHASE_MOVIE_START or mode == NPCToons.PURCHASE_MOVIE_START_BROWSE or mode == NPCToons.PURCHASE_MOVIE_START_NOROOM: if mode == NPCToons.PURCHASE_MOVIE_START: self.browsing = 0 self.roomAvailable = 1 else: if mode == NPCToons.PURCHASE_MOVIE_START_BROWSE: self.browsing = 1 self.roomAvailable = 1 else: if mode == NPCToons.PURCHASE_MOVIE_START_NOROOM: self.browsing = 0 self.roomAvailable = 0 self.av = toonbase.tcr.doId2do.get(avId) style = self.av.getStyle() self.oldStyle = AvatarDNA.AvatarDNA() self.oldStyle.makeFromNetString(style.makeNetString()) if self.av is None: self.notify.warning('Avatar %d not found in doId' % avId) return else: self.accept(self.av.uniqueName('disable'), self.__handleUnexpectedExit) self.setupAvatars(self.av) if self.isLocalToon: camera.wrtReparentTo(render) camera.lerpPosHpr(-5, 9, self.getHeight() - 0.5, -150, -2, 0, 1, other=self, blendType='easeOut', task=self.uniqueName('lerpCamera')) if self.browsing == 0: if self.roomAvailable == 0: self.setChatAbsolute(Localizer.STOREOWNER_NOROOM, CFSpeech | CFTimeout) else: self.setChatAbsolute(Localizer.STOREOWNER_GREETING, CFSpeech | CFTimeout) else: self.setChatAbsolute(Localizer.STOREOWNER_BROWSING, CFSpeech | CFTimeout) if self.isLocalToon: taskMgr.doMethodLater(3.0, self.popupPurchaseGUI, self.uniqueName('popupPurchaseGUI')) else: if mode == NPCToons.PURCHASE_MOVIE_COMPLETE: self.setChatAbsolute(Localizer.STOREOWNER_GOODBYE, CFSpeech | CFTimeout) self.resetTailor() else: if mode == NPCToons.PURCHASE_MOVIE_NO_MONEY: self.notify.warning( 'PURCHASE_MOVIE_NO_MONEY should not be called') self.resetTailor() return return
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.timer = ToontownTimer.ToontownTimer() self.timer.posInTopRightCorner() self.timer.hide() self.room = loader.loadModel('phase_4/models/minigames/matching_room') self.buttonSounds = [] for soundName in self.ButtonSoundNames: self.buttonSounds.append(base.loadSfx(soundName)) self.correctSound = base.loadSfx('phase_4/audio/sfx/MG_pos_buzzer.wav') self.incorrectSound = base.loadSfx( 'phase_4/audio/sfx/MG_neg_buzzer.wav') self.perfectSound = base.loadSfx('phase_4/audio/sfx/MG_win.mp3') self.fallSound = base.loadSfx('phase_4/audio/sfx/Mg_Tag_A.mp3') self.music = base.loadMusic(self.bgm) self.waitingText = DirectLabel(text=self.strPleaseWait, text_fg=(0.9, 0.9, 0.9, 1.0), frameColor=(1, 1, 1, 0), text_font=ToontownGlobals.getSignFont(), pos=(0, 0, -0.78), scale=0.12) self.roundText = DirectLabel(text='Round 1!', text_fg=self.normalTextColor, frameColor=(1, 1, 1, 0), text_font=ToontownGlobals.getSignFont(), pos=(0.014, 0, -0.84), scale=0.12) self.roundText.hide() self.waitingText.hide() matchingGameGui = loader.loadModel( 'phase_3.5/models/gui/matching_game_gui') minnieArrow = matchingGameGui.find('**/minnieArrow') minnieX = matchingGameGui.find('**/minnieX') minnieCircle = matchingGameGui.find('**/minnieCircle') self.arrows = [None] * 5 for x in range(0, 5): self.arrows[x] = minnieArrow.copyTo(hidden) self.arrows[x].hide() self.xs = [None] * 5 for x in range(0, 5): self.xs[x] = minnieX.copyTo(hidden) self.xs[x].hide() self.statusBalls = [] self.totalMoves = PatternGameGlobals.INITIAL_ROUND_LENGTH + PatternGameGlobals.ROUND_LENGTH_INCREMENT * ( PatternGameGlobals.NUM_ROUNDS - 1) for x in range(0, 4): self.statusBalls.append([None] * self.totalMoves) for x in range(0, 4): for y in range(0, self.totalMoves): self.statusBalls[x][y] = minnieCircle.copyTo(hidden) self.statusBalls[x][y].hide() minnieArrow.removeNode() minnieX.removeNode() minnieCircle.removeNode() matchingGameGui.removeNode() self.minnie = Char.Char() m = self.minnie dna = AvatarDNA.AvatarDNA() dna.newChar('mn') m.setDNA(dna) m.setName(Localizer.Minnie) m.reparentTo(hidden) self.backRowHome = Point3(3, 11, 0) self.backRowXSpacing = 1.8 self.frontRowHome = Point3(0, 18, 0) self.frontRowXSpacing = 3.0 self.stdNumDanceStepPingFrames = self.minnie.getNumFrames( self.minnieAnimNames[0]) self.stdNumDanceStepPingPongFrames = self.__numPingPongFrames( self.stdNumDanceStepPingFrames) self.buttonPressDelayPercent = (self.stdNumDanceStepPingFrames - 1.0 ) / self.stdNumDanceStepPingPongFrames self.animPlayRates = [] animPlayRate = 1.4 animPlayRateMult = 1.06 for i in range(PatternGameGlobals.NUM_ROUNDS): self.animPlayRates.append(animPlayRate) animPlayRate *= animPlayRateMult return