def setupButtons(self): gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_mainGui') arrowImage = (gui.find('**/tt_t_gui_mat_shuffleArrowUp'), gui.find('**/tt_t_gui_mat_shuffleArrowDown')) buttonImage = (gui.find('**/tt_t_gui_mat_shuffleUp'), gui.find('**/tt_t_gui_mat_shuffleDown')) self.title = DirectLabel(aspect2d, relief=None, text=TTLocalizer.GloveGuiTitle, text_fg=(0, 1, 0, 1), text_scale=0.15, text_font=ToontownGlobals.getSignFont(), pos=(0, 0, -0.30), text_shadow=(1, 1, 1, 1)) self.notice = DirectLabel(aspect2d, relief=None, text='', text_fg=(1, 0, 0, 1), text_scale=0.11, text_font=ToontownGlobals.getSignFont(), pos=(0, 0, -0.45), text_shadow=(1, 1, 1, 1)) self.color = DirectLabel(aspect2d, relief=None, text='', text_scale=0.11, text_font=ToontownGlobals.getSignFont(), pos=(0, 0, -0.70), text_shadow=(1, 1, 1, 1)) self.buyButton = DirectButton(aspect2d, relief=None, image=buttonImage, text=TTLocalizer.GloveGuiBuy, text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.11, text_pos=(0, -0.02), pos=(-0.60, 0, -0.90), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), command=self.__exit, extraArgs=[GloveNPCGlobals.CHANGE]) self.cancelButton = DirectButton(aspect2d, relief=None, image=buttonImage, text=TTLocalizer.lCancel, text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.11, text_pos=(0, -0.02), pos=(0.60, 0, -0.90), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), command=self.__exit, extraArgs=[GloveNPCGlobals.USER_CANCEL]) self.downArrow = DirectButton(aspect2d, relief=None, image=arrowImage, pos=(-0.60, 0, -0.66)) self.upArrow = DirectButton(aspect2d, relief=None, image=arrowImage, pos=(0.60, 0, -0.66), scale=-1) gui.removeNode()
def createGui(self): self.title = DirectLabel(aspect2d, relief=None, text=TTLocalizer.GloveGuiTitle, text_fg=(0, 1, 0, 1), text_scale=0.15, text_font=ToontownGlobals.getSignFont(), pos=(0, 0, -0.30), text_shadow=(1, 1, 1, 1)) self.notice = DirectLabel(aspect2d, relief=None, text=TTLocalizer.GloveGuiNotice % ToontownGlobals.GloveCost, text_fg=(1, 0, 0, 1), text_scale=0.11, text_font=ToontownGlobals.getSignFont(), pos=(0, 0, -0.45), text_shadow=(1, 1, 1, 1)) self.color = DirectLabel(aspect2d, relief=None, text='', text_scale=0.11, text_font=ToontownGlobals.getSignFont(), pos=(0, 0, -0.70), text_shadow=(1, 1, 1, 1)) self.buyButton = DirectButton(aspect2d, relief=None, image=(self.shuffleUp, self.shuffleDown), text=TTLocalizer.GloveGuiBuy, text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.11, text_pos=(0, -0.02), pos=(-0.60, 0, -0.90), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), command=self.handleBuy) self.cancelButton = DirectButton(aspect2d, relief=None, image=(self.shuffleUp, self.shuffleDown), text=TTLocalizer.GloveGuiCancel, text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.11, text_pos=(0, -0.02), pos=(0.60, 0, -0.90), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), command=self.leave) self.leftButton = DirectButton(aspect2d, relief=None, image=(self.shuffleArrowUp, self.shuffleArrowDown), pos=(-0.60, 0, -0.66), command=self.handleSetIndex, extraArgs=[-1]) self.rightButton = DirectButton(aspect2d, relief=None, image=(self.shuffleArrowUp, self.shuffleArrowDown), pos=(0.60, 0, -0.66), scale=-1, command=self.handleSetIndex, extraArgs=[1]) self.updateGuiByIndex()
def loadGUI(self): self.gui = loader.loadModel("phase_13/models/parties/trampolineGUI") self.gui.reparentTo(base.a2dTopLeft) self.gui.setPos(0.115, 0, -1) self.gui.hide() self.toonIndicator = self.gui.find("**/trampolineGUI_MovingBar") jumpLineLocator = self.gui.find("**/jumpLine_locator") guiBean = self.gui.find("**/trampolineGUI_GreenJellyBean") self.gui.find("**/trampolineGUI_GreenJellyBean").stash() self.guiBeans = [ guiBean.instanceUnderNode(jumpLineLocator, self.uniqueName("guiBean%d" % i)) for i in range(self.numJellyBeans) ] self.guiBeans[-1].setScale(1.5) heightTextNode = TextNode(self.uniqueName("TrampolineActivity.heightTextNode")) heightTextNode.setFont(ToontownGlobals.getSignFont()) heightTextNode.setAlign(TextNode.ALeft) heightTextNode.setText("0.0") heightTextNode.setShadow(0.05, 0.05) heightTextNode.setShadowColor(0.0, 0.0, 0.0, 1.0) heightTextNode.setTextColor(1.0, 1.0, 1.0, 1.0) self.heightText = jumpLineLocator.attachNewNode(heightTextNode) self.heightText.setX(0.15) self.heightText.setScale(0.1) self.heightText.setAlphaScale(0.0) self.quitEarlyButtonModels = loader.loadModel("phase_3.5/models/gui/inventory_gui") quitEarlyUp = self.quitEarlyButtonModels.find("**//InventoryButtonUp") quitEarlyDown = self.quitEarlyButtonModels.find("**/InventoryButtonDown") quitEarlyRollover = self.quitEarlyButtonModels.find("**/InventoryButtonRollover") self.quitEarlyButton = DirectButton( parent=base.a2dTopRight, relief=None, text=TTLocalizer.PartyTrampolineQuitEarlyButton, text_fg=(1, 1, 0.65, 1), text_pos=(0, -0.23), text_scale=0.7, image=(quitEarlyUp, quitEarlyDown, quitEarlyRollover), image_color=(1, 0, 0, 1), image_scale=(20, 1, 11), pos=(-0.183, 0, -0.4), scale=0.09, command=self.leaveTrampoline, ) self.quitEarlyButton.stash() self.flashText = OnscreenText( text="", pos=(0.0, -0.45), scale=0.2, fg=(1.0, 1.0, 0.65, 1.0), align=TextNode.ACenter, font=ToontownGlobals.getSignFont(), mayChange=True, ) self.timer = PartyUtils.getNewToontownTimer() self.timer.posInTopRightCorner() return
def loadNextGameTimer(self): self.nextGame = DirectLabel(parent=self, relief=None, text='', text_font=ToontownGlobals.getSignFont(), text_scale=TTLocalizer.BCGnextGame * BG.CardImageScale[2], text_fg=(1.0, 1.0, 1.0, 1), pos=(BG.GridXOffset, 0, 4 * BG.CardImageScale[2])) self.nextGameTimer = ToontownTimer.ToontownTimer() self.nextGameTimer.reparentTo(self.nextGame) self.nextGameTimer.setPos(0, 0, -5 * BG.CardImageScale[2]) self.nextGameTimer.setProp('image', None) self.nextGameTimer.setProp('text_font', ToontownGlobals.getSignFont()) self.nextGameTimer.setProp('text_scale', 0.2 * BG.CardImageScale[2]) self.nextGameTimer.setFontColor(Vec4(1.0, 1.0, 1.0, 1)) return
def enableRaceMode(self): self.enableSpeedometer() self.render2dRoot.show() self.raceModeRoot.show() self.maxLapHit = min(self.maxLapHit, self.race.lapCount - 1) for x in xrange(self.maxLapHit + 1): for y in self.timeLabels[x]: y.configure(text_font=ToontownGlobals.getSignFont()) y.show() for y in self.timeLabels[self.maxLapHit]: y.configure(text_font=ToontownGlobals.getSignFont())
def showHitScore(self, number, scale = 1): if number <= 0: return if self.hpText: self.hideHitScore() self.HpTextGenerator.setFont(ToontownGlobals.getSignFont()) if number < 0: self.HpTextGenerator.setText(str(number)) else: self.HpTextGenerator.setText('+' + str(number)) self.HpTextGenerator.clearShadow() self.HpTextGenerator.setAlign(TextNode.ACenter) r = 1 g = 1 b = 0 a = 1 self.HpTextGenerator.setTextColor(r, g, b, a) self.hpTextNode = self.HpTextGenerator.generate() self.hpText = render.attachNewNode(self.hpTextNode) self.hpText.setScale(scale) self.hpText.setBillboardPointEye() self.hpText.setBin('fixed', 100) self.hpText.setPos(self.root, 0, 0, self.height / 2) seq = Task.sequence(self.hpText.lerpPos(Point3(self.root.getX(render), self.root.getY(render), self.root.getZ(render) + self.height + 1.0), 0.25, blendType='easeOut'), Task.pause(0.25), self.hpText.lerpColor(Vec4(r, g, b, a), Vec4(r, g, b, 0), 0.1), Task.Task(self.__hideHitScoreTask)) taskMgr.add(seq, 'PartyCogHpText' + str(self.id))
def flipText( flip, label=self.entryList[ place - 1][3], timeStr=timeStr, recStr=TTLocalizer.KartRace_Record): self.entryList[place - 1][3].configure(text_scale=0.06) self.entryList[ place - 1][3].configure( text_fg=( 0.95, 0.0, 0.0, 1.0)) if flip: self.entryList[ place - 1][3].configure( text_font=DGG.getDefaultFont()) self.entryList[place - 1][3]['text'] = timeStr else: self.entryList[ place - 1][3].configure( text_font=ToontownGlobals.getSignFont()) self.entryList[place - 1][3]['text'] = recStr
def __init__(self, cr): DistributedMinigame.__init__(self, cr) self.gameFSM = ClassicFSM.ClassicFSM( "DistributedCogThiefGame", [ State.State("off", self.enterOff, self.exitOff, ["play"]), State.State("play", self.enterPlay, self.exitPlay, ["cleanup"]), State.State("cleanup", self.enterCleanup, self.exitCleanup, []), ], "off", "cleanup", ) self.addChildGameFSM(self.gameFSM) self.cameraTopView = (0, 0, 55, 0, -90.0, 0) self.barrels = [] self.cogInfo = {} self.lastTimeControlPressed = 0 self.stolenBarrels = [] self.useOrthoWalk = base.config.GetBool("cog-thief-ortho", 1) self.resultIval = None self.gameIsEnding = False self.__textGen = TextNode("cogThiefGame") self.__textGen.setFont(ToontownGlobals.getSignFont()) self.__textGen.setAlign(TextNode.ACenter) return
def __init__(self): self.__expectedCount = 0 self.__count = 0 self.gui = loader.loadModel('phase_3/models/gui/progress-background') self.banner = loader.loadModel('phase_3/models/gui/toon_council').find('**/scroll') self.banner.reparentTo(self.gui) self.banner.setScale(0.4, 0.4, 0.4) self.tip = DirectLabel(guiId='ToontownLoadingScreenTip', parent=self.banner, relief=None, text='', text_scale=TTLocalizer.TLStip, textMayChange=1, pos=(-1.2, 0.0, 0.1), text_fg=(0.4, 0.3, 0.2, 1), text_wordwrap=13, text_align=TextNode.ALeft) self.title = DirectLabel(guiId='ToontownLoadingScreenTitle', parent=self.gui, relief=None, pos=(-1.06, 0, -0.77), text='', textMayChange=1, text_scale=0.08, text_fg=(0, 0, 0.5, 1), text_align=TextNode.ALeft) self.waitBar = DirectWaitBar(guiId='ToontownLoadingScreenWaitBar', parent=self.gui, frameSize=(-1.06, 1.06, -0.03, 0.03), pos=(0, 0, -0.85), text='') self.logo = OnscreenImage('phase_3/maps/toontown-logo.png') self.logo.reparentTo(self.gui) self.logo.setScale(self.gui, (0.5625)) self.logo.setTransparency(TransparencyAttrib.MAlpha) self.logo.setZ(0.73) self.airplane = loader.loadModel('phase_4/models/props/airplane.bam') self.airplane.setScale(4) self.airplane.setPos(0, 0, 1) self.banner = self.airplane.find('**/*banner') bannerText = TextNode('bannerText') bannerText.setTextColor(1, 0, 0, 1) bannerText.setAlign(bannerText.ACenter) bannerText.setFont(ToontownGlobals.getSignFont()) bannerText.setText('Cog invasion!!!') self.bn = self.banner.attachNewNode(bannerText.generate()) self.bn.setHpr(180, 0, 0) self.bn.setPos(-1.8, 0.1, 0) self.bn.setScale(0.35) self.banner.hide() return
def __init__(self, beanAmount): if not ScavengerHuntEffect.images: ScavengerHuntEffect.images = loader.loadModel('phase_4/models/props/tot_jar') self.npRoot = DirectFrame(parent=aspect2d, relief=None, scale=0.75, pos=(0, 0, 0.6)) if beanAmount > 0: self.npRoot.setColorScale(VBase4(1, 1, 1, 0)) self.jar = DirectFrame(parent=self.npRoot, relief=None, image=ScavengerHuntEffect.images.find('**/tot_jar')) self.jar.hide() self.eventImage = NodePath('EventImage') self.eventImage.reparentTo(self.npRoot) self.countLabel = DirectLabel(parent=self.jar, relief=None, text='+0', text_pos=(0.02, -0.2), text_scale=0.25, text_fg=(0.95, 0.0, 0, 1), text_font=ToontownGlobals.getSignFont()) def countUp(t, startVal, endVal): beanCountStr = startVal + t * (endVal - startVal) self.countLabel['text'] = '+' + `(int(beanCountStr))` def setCountColor(color): self.countLabel['text_fg'] = color self.track = Sequence(LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 1), startColorScale=VBase4(1, 1, 1, 0)), Wait(1), Func(self.jar.show), LerpColorScaleInterval(self.eventImage, 1, colorScale=VBase4(1, 1, 1, 0), startColorScale=VBase4(1, 1, 1, 1)), Parallel(LerpScaleInterval(self.npRoot, 1, scale=0.5, startScale=0.75), LerpPosInterval(self.npRoot, 1, pos=VBase3(-0.9, 0, -0.83))), LerpFunc(countUp, duration=2, extraArgs=[0, beanAmount]), Func(setCountColor, VBase4(0.95, 0.95, 0, 1)), Wait(3), Func(self.destroy)) else: self.npRoot.setColorScale(VBase4(1, 1, 1, 0)) self.attemptFailedMsg() self.track = Sequence(LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 1), startColorScale=VBase4(1, 1, 1, 0)), Wait(5), LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 0), startColorScale=VBase4(1, 1, 1, 1)), Func(self.destroy))
def showHitScore(self, number, scale = 1): if number <= 0: return if self.hpText: self.hideHitScore() self.HpTextGenerator.setFont(ToontownGlobals.getSignFont()) if number < 0: self.HpTextGenerator.setText(str(number)) else: self.HpTextGenerator.setText('+' + str(number)) self.HpTextGenerator.clearShadow() self.HpTextGenerator.setAlign(TextNode.ACenter) r = 1 g = 1 b = 0 a = 1 self.HpTextGenerator.setTextColor(r, g, b, a) self.hpTextNode = self.HpTextGenerator.generate() self.hpText = render.attachNewNode(self.hpTextNode) self.hpText.setScale(scale) self.hpText.setBillboardPointEye() self.hpText.setBin('fixed', 100) self.hpText.setPos(self.root, 0, 0, self.height / 2) seq = Sequence(self.hpText.posInterval(0.25, Point3(self.root.getX(render), self.root.getY(render), self.root.getZ(render) + self.height + 1.0), blendType='easeOut'), Wait(0.25), self.hpText.colorInterval(0.1, Vec4(r, g, b, 0)), Func(self.__hideHitScore)) seq.start()
def doSpawnTitleText(self, text): return self.titleColor = (1.0, 0.5, 0.4, 1.0) self.titleText = OnscreenText.OnscreenText( text, fg=self.titleColor, font=ToontownGlobals.getSignFont(), pos=(0, -0.5), scale=0.16, drawOrder=0, mayChange=1, wordwrap=16, ) self.titleText.setText(text) self.titleText.show() self.titleText.setColor(Vec4(*self.titleColor)) self.titleText.clearColorScale() self.titleText.setFg(self.titleColor) seq = Sequence( Wait(0.1), Wait(6.0), self.titleText.colorScaleInterval(0.5, Vec4(1.0, 1.0, 1.0, 0.0)), Task(self.hideTitleText), ) seq.start()
def loadGUI(self): self.gui = loader.loadModel('phase_13/models/parties/trampolineGUI') self.gui.setX(-1.15) self.gui.reparentTo(self.screenPlaneElements) self.toonIndicator = self.gui.find('**/trampolineGUI_MovingBar') jumpLineLocator = self.gui.find('**/jumpLine_locator') guiBean = self.gui.find('**/trampolineGUI_GreenJellyBean') self.gui.find('**/trampolineGUI_GreenJellyBean').stash() self.guiBeans = [ guiBean.instanceUnderNode(jumpLineLocator, self.uniqueName('guiBean%d' % i)) for i in range(self.numJellyBeans) ] self.guiBeans[-1].setScale(1.5) heightTextNode = TextNode(self.uniqueName('TrampolineActivity.heightTextNode')) heightTextNode.setFont(ToontownGlobals.getSignFont()) heightTextNode.setAlign(TextNode.ALeft) heightTextNode.setText('0.0') heightTextNode.setShadow(0.05, 0.05) heightTextNode.setShadowColor(0.0, 0.0, 0.0, 1.0) heightTextNode.setTextColor(1.0, 1.0, 1.0, 1.0) self.heightText = jumpLineLocator.attachNewNode(heightTextNode) self.heightText.setX(0.15) self.heightText.setScale(0.1) self.heightText.setAlphaScale(0.0) self.quitEarlyButtonModels = loader.loadModel('phase_3.5/models/gui/inventory_gui') quitEarlyUp = self.quitEarlyButtonModels.find('**//InventoryButtonUp') quitEarlyDown = self.quitEarlyButtonModels.find('**/InventoryButtonDown') quitEarlyRollover = self.quitEarlyButtonModels.find('**/InventoryButtonRollover') self.quitEarlyButton = DirectButton(parent=self.screenPlaneElements, relief=None, text=TTLocalizer.PartyTrampolineQuitEarlyButton, text_fg=(1, 1, 0.65, 1), text_pos=(0, -0.23), text_scale=0.7, image=(quitEarlyUp, quitEarlyDown, quitEarlyRollover), image_color=(1, 0, 0, 1), image_scale=(20, 1, 11), pos=(1.15, 0, 0.6), scale=0.09, command=self.leaveTrampoline) self.quitEarlyButton.stash() self.flashText = OnscreenText(text='', pos=(0.0, -0.45), scale=0.2, fg=(1.0, 1.0, 0.65, 1.0), align=TextNode.ACenter, font=ToontownGlobals.getSignFont(), mayChange=True) self.timer = PartyUtils.getNewToontownTimer() self.timer.reparentTo(self.screenPlaneElements) return
def load(self, purchaseModels=None): if purchaseModels == None: purchaseModels = loader.loadModel("phase_4/models/gui/purchase_gui") self.music = base.loadMusic("phase_4/audio/bgm/FF_safezone.mid") self.jarImage = purchaseModels.find("**/Jar") self.jarImage.reparentTo(hidden) self.frame = DirectFrame(relief=None) self.frame.hide() self.title = DirectLabel( parent=self.frame, relief=None, pos=(0.0, 0.0, 0.82999999999999996), scale=1.2, image=purchaseModels.find("**/Goofys_Sign"), text=TTLocalizer.GagShopName, text_fg=(0.59999999999999998, 0.20000000000000001, 0, 1), text_scale=0.089999999999999997, text_wordwrap=10, text_pos=(0, 0.025000000000000001, 0), text_font=ToontownGlobals.getSignFont(), ) self.pointDisplay = DirectLabel( parent=self.frame, relief=None, pos=(-1.1499999999999999, 0.0, 0.16), text=str(self.toon.getMoney()), text_scale=0.20000000000000001, text_fg=(0.94999999999999996, 0.94999999999999996, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0, -0.10000000000000001, 0), image=self.jarImage, text_font=ToontownGlobals.getSignFont(), ) self.statusLabel = DirectLabel( parent=self.frame, relief=None, pos=(-0.25, 0, 0.625), text=TTLocalizer.GagShopYouHave % self.toon.getMoney(), text_scale=TTLocalizer.PBstatusLabel, text_fg=(0.050000000000000003, 0.14000000000000001, 0.40000000000000002, 1), ) if self.toon.getMoney() == 1: self.statusLabel["text"] = TTLocalizer.GagShopYouHaveOne self.isBroke = 0 self._teaserPanel = None
def loadDnaStore(self): if not hasattr(self, 'dnaStore'): self.dnaStore = DNAStorage() loader.loadDNAFile(self.dnaStore, 'phase_4/dna/storage.dna') self.dnaStore.storeFont('humanist', ToontownGlobals.getInterfaceFont()) self.dnaStore.storeFont('mickey', ToontownGlobals.getSignFont()) self.dnaStore.storeFont('suit', ToontownGlobals.getSuitFont()) loader.loadDNAFile(self.dnaStore, 'phase_3.5/dna/storage_interior.dna')
def loadDnaStore(self): if not hasattr(self, "dnaStore"): self.dnaStore = DNAStorage() loader.loadDNAFile(self.dnaStore, "phase_4/dna/storage.dna") self.dnaStore.storeFont("humanist", ToontownGlobals.getInterfaceFont()) self.dnaStore.storeFont("mickey", ToontownGlobals.getSignFont()) self.dnaStore.storeFont("suit", ToontownGlobals.getSuitFont()) loader.loadDNAFile(self.dnaStore, "phase_3.5/dna/storage_interior.dna")
def _DistributedRingGame__initTallyDisplay(self): self._DistributedRingGame__tallyTextNode = TextNode('tally') self._DistributedRingGame__tallyTextNode.setFont(ToontownGlobals.getSignFont()) self._DistributedRingGame__tallyTextNode.setAlign(TextNode.ACenter) self.tallyMarkers = [ None] * self._DistributedRingGame__numRingGroups for i in range(0, self._DistributedRingGame__numRingGroups): self._DistributedRingGame__createTallyMarker(i, self.RT_UNKNOWN)
def __init__(self, cr): DistributedObject.DistributedObject.__init__(self, cr) self.lastCamEnterRoom = 0 self.titleColor = (1, 1, 1, 1) self.titleText = OnscreenText.OnscreenText('', fg=self.titleColor, shadow=(0, 0, 0, 1), font=ToontownGlobals.getSignFont(), pos=(0, -0.5), scale=0.1, drawOrder=0, mayChange=1) self.titleSequence = None return
def loadDnaStore(self): if not hasattr(self, 'dnaStore'): self.dnaStore = DNAStorage() files = ('phase_4/dna/storage.pdna', 'phase_3.5/dna/storage_interior.pdna') dnaBulk = DNABulkLoader(self.dnaStore, files) dnaBulk.loadDNAFiles() self.dnaStore.storeFont('humanist', ToontownGlobals.getInterfaceFont()) self.dnaStore.storeFont('mickey', ToontownGlobals.getSignFont()) self.dnaStore.storeFont('suit', ToontownGlobals.getSuitFont())
def loadDnaStore(self): if not hasattr(self, "dnaStore"): self.dnaStore = DNAStorage() files = ("phase_4/dna/storage.pdna", "phase_3.5/dna/storage_interior.pdna") dnaBulk = DNABulkLoader(self.dnaStore, files) dnaBulk.loadDNAFiles() self.dnaStore.storeFont("humanist", ToontownGlobals.getInterfaceFont()) self.dnaStore.storeFont("mickey", ToontownGlobals.getSignFont()) self.dnaStore.storeFont("suit", ToontownGlobals.getSuitFont())
def __init__(self, description, needed, icon): NodePath.__init__(self, 'objective-%s' % id(self)) self.needed = needed self.visible = False self.fadeInTrack = None self.fadeOutTrack = None gui = loader.loadModel('phase_5/models/cogdominium/tt_m_gui_csa_flyThru') self.background = gui.find('**/*background').copyTo(self) self.background.setScale(2.5) gui.removeNode() self.icon = icon.copyTo(self.background) self.icon.setScale(0.08) self.icon.setPos(-0.167, 0, -0.002) text = TextNode('challenge') text.setText('Challenge') text.setFont(ToontownGlobals.getSignFont()) text.setTextColor(0.95, 0.95, 0, 1) self.objText = self.background.attachNewNode(text) self.objText.setScale(0.03) self.objText.setPos(-0.04, 0.0, 0.02) text = TextNode('description') text.setText(description) text.setFont(ToontownGlobals.getSignFont()) text.setTextColor(0.95, 0.95, 0, 1) text.setAlign(TextNode.ACenter) self.objText = self.background.attachNewNode(text) self.objText.setScale(0.015) self.objText.setPos(0.048, 0.0, -0.009) self.progressBar = DirectWaitBar(guiId='ChallengeProgressBar', parent=self.background, frameSize=(-0.11, 0.11, -0.007, 0.007), pos=(0.048, 0, -0.0338), text='') self.progressBar['range'] = needed self.progressText = DirectLabel(guiId='ChallengeProgressText', parent=self.progressBar, relief=None, pos=(0, 0, -0.0048), text='', textMayChange=1, text_scale=0.014, text_fg=(0.03, 0.83, 0, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getSignFont()) self.updateProgress(0) self.reparentTo(base.a2dBottomLeft) self.stash()
def getSignTextNodes(self, nodeName, font=ToontownGlobals.getSignFont()): signTextNode = TextNode(nodeName) signTextNode.setFont(font) signTextNode.setAlign(TextNode.ACenter) signTextNode.setTextColor(0.5, 0.5, 0.5, 1) signTextNodepath = self.tunnelSign.attachNewNode(signTextNode) signTextNodepath.setPos(0, 0.25, 0) signTextNodepath.setH(165.0) signTextNodepath.setDepthWrite(0) return signTextNode, signTextNodepath
def startCountdownClock(self, countdownTime, ts): self.clockNode = TextNode('elevatorClock') self.clockNode.setFont(ToontownGlobals.getSignFont()) self.clockNode.setAlign(TextNode.ACenter) self.clockNode.setTextColor(0.5, 0.5, 0.5, 1) self.clockNode.setText(str(int(countdownTime))) self.clock = self.getElevatorModel().attachNewNode(self.clockNode) self.clock.setPosHprScale(0, 2.0, 7.5, 0, 0, 0, 2.0, 2.0, 2.0) if ts < countdownTime: self.countdown(countdownTime - ts)
def startTimer(self): self.clockNode = TextNode('elevatorClock') self.clockNode.setFont(ToontownGlobals.getSignFont()) self.clockNode.setAlign(TextNode.ACenter) self.clockNode.setTextColor(0.5, 0.5, 0.5, 1) self.clockNode.setText(str(int(self.countdownDuration))) self.clock = aspect2d.attachNewNode(self.clockNode) self.clock.setPos(0, 0, -0.59999999999999998) self.clock.setScale(0.14999999999999999, 0.14999999999999999, 0.14999999999999999) self._BoardingGroupShow__countdown(self.countdownDuration, self._BoardingGroupShow__boardingElevatorTimerExpired)
def doSpawnTitleText(self, text): self.titleColor = (1.0, 0.5, 0.4, 1.0) self.titleText = OnscreenText.OnscreenText(text, fg=self.titleColor, font=ToontownGlobals.getSignFont(), pos=(0, -0.5), scale=0.16, drawOrder=0, mayChange=1, wordwrap=16) self.titleText.setText(text) self.titleText.show() self.titleText.setColor(Vec4(*self.titleColor)) self.titleText.clearColorScale() self.titleText.setFg(self.titleColor) seq = Task.sequence(Task.pause(0.1), Task.pause(6.0), self.titleText.lerpColorScale(Vec4(1.0, 1.0, 1.0, 1.0), Vec4(1.0, 1.0, 1.0, 0.0), 0.5), Task(self.hideTitleTextTask)) taskMgr.add(seq, 'titleText')
def loadDnaStore(self): if not hasattr(self, 'dnaStore'): self.dnaStore = DNAStorage() loader.loadDNA('phase_4/dna/storage.xml').store(self.dnaStore) self.dnaStore.storeFont(ToontownGlobals.getInterfaceFont(), 'humanist') self.dnaStore.storeFont(ToontownGlobals.getSignFont(), 'mickey') self.dnaStore.storeFont(ToontownGlobals.getSuitFont(), 'suit') loader.loadDNA('phase_3.5/dna/storage_interior.xml').store(self.dnaStore)
def __init__(self, doneEvent, kartNum): self.kartNum = kartNum self.modelScale = 1 model = loader.loadModel('phase_6/models/gui/ConfirmBuyKartPanel') kartInfo = getKartTypeInfo(kartNum) name = kartInfo[KartInfo.name] cost = kartInfo[KartInfo.cost] DirectFrame.__init__( self, relief=None, state='normal', geom=model, geom_scale=self.modelScale, frameSize=(-1, 1, -1, 1), pos=(0, 0, -0.01), text=TTLocalizer.KartShop_ConfirmBuy % (name, cost), text_wordwrap=11, text_scale=KS_TEXT_SIZE_SMALL, text_pos=(0, -0.26)) self.initialiseoptions(KartShopGuiMgr.ConfirmBuyKartDlg) self.ticketDisplay = DirectLabel( parent=self, relief=None, text=str(base.localAvatar.getTickets()), text_scale=KS_TEXT_SIZE_SMALL, text_fg=(0.95, 0.95, 0.0, 1.0), text_shadow=(0, 0, 0, 1), text_pos=(0.43, -0.5), text_font=ToontownGlobals.getSignFont()) self.cancelButton = DirectButton( parent=self, relief=None, image=(model.find('**/CancelButtonUp'), model.find('**/CancelButtonDown'), model.find('**/CancelButtonRollover')), geom=model.find('**/CancelIcon'), scale=self.modelScale, pressEffect=False, command=lambda : messenger.send(doneEvent, [CBK_OPTIONS.Cancel])) self.okButton = DirectButton( parent=self, relief=None, image=(model.find('**/CheckButtonUp'), model.find('**/CheckButtonDown'), model.find('**/CheckButtonRollover')), geom=model.find('**/CheckIcon'), scale=self.modelScale, pressEffect=False, command=lambda : messenger.send(doneEvent, [CBK_OPTIONS.BuyKart])) self.kartView = KartViewer([self.kartNum, -1, -1, -1, -1, -1, -1, -1, -1], parent=self) self.kartView.setPos(model.find('**/KartViewerFrame').getPos()) self.kartView.load(model, 'KartViewerFrame', [], [], None) self.kartView.setBounds(-0.38, 0.38, -.0425, 0.49) self.kartView.setBgColor(1.0, 1.0, 0.8, 1.0) self.initialize = True self.kartView.show() model.removeNode() return
def loadDnaStore(self): if not hasattr(self, "dnaStore"): self.dnaStore = DNAStorage() loader.loadDNA("phase_4/dna/storage.xml").store(self.dnaStore) self.dnaStore.storeFont(ToontownGlobals.getInterfaceFont(), "humanist") self.dnaStore.storeFont(ToontownGlobals.getSignFont(), "mickey") self.dnaStore.storeFont(ToontownGlobals.getSuitFont(), "suit") loader.loadDNA("phase_3.5/dna/storage_interior.xml").store(self.dnaStore)
def createDistanceLabel(self, number, color): text = TextNode('distanceText-%d' % number) text.setAlign(TextNode.ACenter) text.setTextColor(color) text.setFont(ToontownGlobals.getSignFont()) text.setText('10 ft') node = self.root.attachNewNode(text) node.setBillboardPointEye() node.setScale(2.5) node.setZ(5.0) return (node, text)
def createText(self, number, position, color): text = TextNode('winText%d' % number) text.setAlign(TextNode.ACenter) text.setTextColor(color) text.setFont(ToontownGlobals.getSignFont()) text.setText('') noteText = aspect2d.attachNewNode(text) noteText.setScale(0.2) noteText.setPos(position) noteText.stash() return (text, noteText)
def __init__(self, doneEvent): FSM.FSM.__init__(self, 'PetTutorial') self.doneEvent = doneEvent self.setStateArray(['Page1', 'Page2', 'Page3']) DirectFrame.__init__(self, pos=(0.0, 0.0, 0.0), image_color=ToontownGlobals.GlobalDialogColor, image_scale=(1.5, 1.5, 0.9), text='', text_scale=0.06) self['image'] = DGG.getDefaultDialogGeom() self.title = DirectLabel(self, relief=None, text='', text_pos=(0.0, 0.32), text_fg=(1, 0, 0, 1), text_scale=TTLocalizer.PTtitle, text_font=ToontownGlobals.getSignFont()) images = loader.loadModel('phase_5.5/models/gui/PetTutorial') self.iPage1 = DirectFrame(self, image=images.find('**/PetTutorialPanel'), scale=0.75, pos=(-0.55, -0.1, 0)) self.iPage1.hide() self.iPage2 = DirectFrame(self, image=images.find('**/PetTutorialSpeedChat'), scale=0.75, pos=(0.43, -0.1, 0.05)) self.iPage2.hide() self.iPage3 = DirectFrame(self, image=images.find('**/PetTutorialCattlelog'), scale=0.75, pos=(-0.55, -0.1, 0)) self.iPage3.hide() buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui') gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui') self.bNext = DirectButton(self, image=(gui.find('**/Horiz_Arrow_UP'), gui.find('**/Horiz_Arrow_DN'), gui.find('**/Horiz_Arrow_Rllvr'), gui.find('**/Horiz_Arrow_UP')), image3_color=Vec4(1, 1, 1, 0.5), relief=None, text=TTLocalizer.PetTutorialNext, text3_fg=Vec4(0, 0, 0, 0.5), text_scale=0.05, text_pos=(0.0, -0.1), pos=(0.2, -0.3, -0.25), command=self.requestNext) self.bPrev = DirectButton(self, image=(gui.find('**/Horiz_Arrow_UP'), gui.find('**/Horiz_Arrow_DN'), gui.find('**/Horiz_Arrow_Rllvr'), gui.find('**/Horiz_Arrow_UP')), image3_color=Vec4(1, 1, 1, 0.5), image_scale=(-1.0, 1.0, 1.0), relief=None, text=TTLocalizer.PetTutorialPrev, text3_fg=Vec4(0, 0, 0, 0.5), text_scale=0.05, text_pos=(0.0, -0.1), pos=(-0.2, -0.3, -0.25), command=self.requestPrev) self.bQuit = DirectButton(self, image=(buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr')), relief=None, text=TTLocalizer.PetTutorialDone, text_scale=0.05, text_pos=(0.0, -0.1), pos=(0.55, -0.3, -0.25), command=self.__handleQuit) self.bQuit.hide() buttons.removeNode() gui.removeNode() self.request('Page1') return
def loadGui(self): self.frame2D = DirectFrame(scale=1.0, pos=(0.0, 0, 0.9), relief=DGG.FLAT, parent=aspect2d, frameSize=(-0.3, 0.3, -0.05, 0.05), frameColor=(0.737, 0.573, 0.345, 0.3)) self.scoreLabel = DirectLabel(parent=self.frame2D, relief=None, pos=(0, 0, 0), scale=1.0, text='', text_font=ToontownGlobals.getSignFont(), text0_fg=(1, 1, 1, 1), text_scale=0.075, text_pos=(0, -0.02)) self.updateGuiScore() self.frame2D.hide() return
def load(self, isPaid): if self.isLoaded == 1: return None self.isPaid = isPaid gui = loader.loadModel('phase_3/models/gui/pick_a_toon_gui') gui.flattenMedium() gui2 = loader.loadModel('phase_3/models/gui/quit_button') gui2.flattenMedium() newGui = loader.loadModel('phase_3/models/gui/tt_m_gui_pat_mainGui') newGui.flattenMedium() self.pickAToonBG = newGui.find('**/tt_t_gui_pat_background') self.pickAToonBG.flattenStrong() self.pickAToonBG.reparentTo(hidden) self.pickAToonBG.setPos(0.0, 2.73, 0.0) self.pickAToonBG.setScale(1, 1, 1) self.title = OnscreenText(TTLocalizer.AvatarChooserPickAToon, scale=TTLocalizer.ACtitle, parent=hidden, font=ToontownGlobals.getSignFont(), fg=(1, 0.9, 0.1, 1), pos=(0.0, 0.82)) self.title.flattenStrong() quitHover = gui.find('**/QuitBtn_RLVR') self.quitButton = DirectButton(image=(quitHover, quitHover, quitHover), relief=None, text=TTLocalizer.AvatarChooserQuit, text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_pos=TTLocalizer.ACquitButtonPos, text_scale=TTLocalizer.ACquitButton, image_scale=1, image1_scale=1.05, image2_scale=1.05, scale=1.05, pos=(-0.25, 0, 0.075), command=self.__handleQuit) self.quitButton.flattenMedium() self.quitButton.reparentTo(base.a2dBottomRight) self.logoutButton = DirectButton( relief=None, image=(quitHover, quitHover, quitHover), text=TTLocalizer.OptionsPageLogout, text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_scale=TTLocalizer.AClogoutButton, text_pos=(0, -0.035), pos=(0.15, 0, 0.05), image_scale=1.15, image1_scale=1.15, image2_scale=1.18, scale=0.5, command=self.__handleLogoutWithoutConfirm) self.logoutButton.reparentTo(base.a2dBottomLeft) self.logoutButton.flattenMedium() self.logoutButton.hide() gui.removeNode() gui2.removeNode() newGui.removeNode() self.panelList = [] used_position_indexs = [] for av in self.avatarList: if base.cr.isPaid(): okToLockout = 0 else: okToLockout = 1 if av.position in AvatarChoice.AvatarChoice.OLD_TRIALER_OPEN_POS: okToLockout = 0 panel = AvatarChoice.AvatarChoice(av, position=av.position, paid=isPaid, okToLockout=okToLockout) panel.setPos(POSITIONS[av.position]) used_position_indexs.append(av.position) self.panelList.append(panel) for panelNum in range(0, MAX_AVATARS): if panelNum not in used_position_indexs: panel = AvatarChoice.AvatarChoice(position=panelNum, paid=isPaid) panel.setPos(POSITIONS[panelNum]) self.panelList.append(panel) if len(self.avatarList) > 0: self.initLookAtInfo() self.isLoaded = 1
def initRaceMode(self): self.mapScene = base.a2dTopRight.attachNewNode('MapScene') self.mapScene.setPos(-0.2, 0, -0.2) self.mapScene.setScale(0.25, 0.001, 0.25) maxT = self.race.curve.getMaxT() pt = Vec3(0, 0, 0) ls = LineSegs('MapLines') ls.setColor(1, 1, 1, 1) ls.setThickness(2) for x in xrange(101): self.race.curve.getPoint(x / 100.0 * maxT, pt) if x == 0: ls.moveTo(pt[0], pt[1], pt[2]) else: ls.drawTo(pt[0], pt[1], pt[2]) self.mapLines = self.mapScene.attachNewNode(ls.create()) self.mapLines.setScale(0.00025 * RaceGlobals.TrackDict[self.race.trackId][6]) self.mapLines.setP(90) self.faceStartPos = Vec3(-0.8, 0, 0.93) self.faceEndPos = Vec3(0.8, 0, 0.93) self.placeLabelNum = DirectLabel( relief=None, pos=TTLocalizer.RGUIplaceLabelNumPos, text='1', text_scale=0.35, text_fg=(0.95, 0.95, 0, 1), text_font=ToontownGlobals.getSignFont()) self.placeLabelNum.reparentTo(base.a2dBottomLeft) self.directObjList.append(self.placeLabelNum) self.placeLabelStr = DirectLabel( relief=None, pos=TTLocalizer.RGUIplaceLabelStrPos, text=TTLocalizer.KartRace_FirstSuffix, text_scale=0.1, text_fg=(0.95, 0.95, 0, 1), text_font=ToontownGlobals.getSignFont()) self.placeLabelStr.reparentTo(base.a2dBottomLeft) self.directObjList.append(self.placeLabelStr) self.lapLabel = DirectLabel(relief=None, pos=(-0.22, 0, -0.5), text='1/' + str(self.race.lapCount), text_scale=0.1, text_fg=(0.95, 0.95, 0, 1), text_font=ToontownGlobals.getSignFont()) self.lapLabel.reparentTo(base.a2dTopRight) self.directObjList.append(self.lapLabel) self.photoFinishLabel = DirectLabel( relief=None, pos=(0, 0, -0.1), text=TTLocalizer.KartRace_PhotoFinish, text_scale=TTLocalizer.RGUIphotoFinish, text_fg=(0.95, 0.95, 0, 1), text_font=ToontownGlobals.getSignFont()) self.photoFinishLabel.hide() self.directObjList.append(self.photoFinishLabel) self.wrongWayLabel = DirectLabel( relief=None, pos=(-0.22, 0, -0.2), text=TTLocalizer.KartRace_WrongWay, text_scale=0.1, text_fg=(0.95, 0, 0, 1), text_font=ToontownGlobals.getSignFont()) self.wrongWayLabel.reparentTo(base.a2dTopRight) self.directObjList.append(self.wrongWayLabel) self.wrongWayLabel.setColorScale(Vec4(1, 1, 1, 0)) self.wrongWaySeq = Sequence( self.wrongWayLabel.colorScaleInterval(0.25, colorScale=Vec4(1, 1, 1, 1), startColorScale=Vec4( 1, 1, 1, 0)), self.wrongWayLabel.colorScaleInterval(0.25, colorScale=Vec4(1, 1, 1, 0), startColorScale=Vec4( 1, 1, 1, 1))) interpolateFacePos = lambda x: self.faceStartPos * ( 1.0 - x) + self.faceEndPos * x self.timeLabels = [] for x in xrange(self.race.lapCount): minLabel = DirectLabel( relief=None, pos=(interpolateFacePos( (2.0 * x + 1) / (self.race.lapCount * 2))[0] - 0.06, 0, 0.84), text="0'", text_scale=0.06, text_fg=(0.95, 0.95, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ARight) minLabel.reparentTo(self.raceModeRoot) self.directObjList.append(minLabel) secLabel = DirectLabel( relief=None, pos=(interpolateFacePos( (2.0 * x + 1) / (self.race.lapCount * 2))[0] + 0.06, 0, 0.84), text="00''", text_scale=0.06, text_fg=(0.95, 0.95, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ARight) secLabel.reparentTo(self.raceModeRoot) self.directObjList.append(secLabel) fractionLabel = DirectLabel( relief=None, pos=(interpolateFacePos( (2.0 * x + 1) / (self.race.lapCount * 2))[0] + 0.14, 0, 0.84), text='00', text_scale=0.06, text_fg=(0.95, 0.95, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ARight) fractionLabel.reparentTo(self.raceModeRoot) self.directObjList.append(fractionLabel) self.timeLabels.append((minLabel, secLabel, fractionLabel)) self.cardMaker.reset() self.cardMaker.setName('GagIndicator') self.cardMaker.setFrame(-0.5, 0.5, -0.5, 0.5) self.cardMaker.setColor(1, 1, 1, 1) self.gagPanel = DirectFrame( parent=base.a2dBottomLeft, relief=None, image=loader.loadModel('phase_6/models/karting/gag_panel'), image_scale=0.25, pos=(0.2, 0, 0.55)) self.directObjList.append(self.gagPanel) self.gag = self.gagPanel.attachNewNode('gag') self.gag.setScale(0.2) for gag in self.gagTextures: gag.reparentTo(self.gag) gag.hide() self.cardMaker.reset() self.cardMaker.setName('RaceProgressLine') self.cardMaker.setFrame(-0.5, 0.5, -0.5, 0.5) line = self.raceModeRoot.attachNewNode(self.cardMaker.generate()) line.setScale(self.faceEndPos[0] - self.faceStartPos[0], 1, 0.01) line.setPos(0, 0, self.faceStartPos[2]) self.cardMaker.setName('RaceProgressLineHash') for n in xrange(self.race.lapCount + 1): hash = self.raceModeRoot.attachNewNode(self.cardMaker.generate()) hash.setScale(line.getScale()[2], 1, line.getScale()[2] * 5) t = float(n) / self.race.lapCount hash.setPos( self.faceStartPos[0] * (1 - t) + self.faceEndPos[0] * t, self.faceStartPos[1], self.faceStartPos[2]) self.raceModeReady = True self.disable() return
def update(self, time): placeSorter = [] placeCount = 0 for key in self.racerDict.keys(): racer = self.racerDict[key] curvetime = racer.curvetime face = racer.face mapspot = racer.mapspot maxlaphit = racer.maxlaphit if not racer.finished and racer.enabled: placeSorter.append((curvetime, key)) if racer.finished or racer.enabled: placeCount += 1 pt = Vec3(0, 0, 0) mapT = (curvetime % 1 + self.race.startT / self.race.curve.getMaxT()) % 1 * self.race.curve.getMaxT() self.race.curve.getPoint(mapT, pt) self.race.curve.getPoint(mapT % self.race.curve.getMaxT(), pt) lapT = clampScalar(curvetime / self.race.lapCount, 0.0, 1.0) faceX = self.faceStartPos[0] * (1 - lapT) + self.faceEndPos[0] * lapT racer.update(faceX=faceX, mapspotPt=pt) t = time - self.race.baseTime - self.raceTimeDelta if key == localAvatar.doId: if self.race.laps > maxlaphit: racer.update(maxlaphit=self.race.laps) self.maxLapHit = racer.maxlaphit if self.maxLapHit < self.race.lapCount: for y in self.timeLabels[self.maxLapHit - 1]: y.configure( text_font=ToontownGlobals.getSignFont()) for y in self.timeLabels[self.maxLapHit]: y.show() for y in self.timeLabels[self.maxLapHit]: y.configure( text_font=ToontownGlobals.getSignFont()) self.raceTimeDelta = globalClock.getFrameTime( ) - self.race.baseTime lapNotice = DirectLabel() lapNotice.setScale(0.1) if self.maxLapHit == self.race.lapCount - 1: lapNotice[ 'text'] = TTLocalizer.KartRace_FinalLapText else: lapNotice[ 'text'] = TTLocalizer.KartRace_LapText % str( self.maxLapHit + 1) taskMgr.doMethodLater(2, lapNotice.remove, 'removeIt', extraArgs=[]) self.lapLabel['text'] = str( clampScalar(self.maxLapHit + 1, 1, self.race.lapCount)) + '/' + str( self.race.lapCount) suffix = { 1: TTLocalizer.KartRace_FirstSuffix, 2: TTLocalizer.KartRace_SecondSuffix, 3: TTLocalizer.KartRace_ThirdSuffix, 4: TTLocalizer.KartRace_FourthSuffix } placeSorter.sort() for x, p in zip(placeSorter, xrange(len(placeSorter), 0, -1)): self.racerDict[x[1]].update(place=p + placeCount - len(placeSorter)) localRacer = self.racerDict[localAvatar.doId] nearDiff, farDiff = RaceGlobals.TrackDict[self.race.trackId][8] if not localRacer.finished and self.faceEndPos[ 0] - localRacer.face.getX() < nearDiff: for racerId in self.racerDict.keys(): racer = self.racerDict[racerId] if not racer.enabled or racerId == localAvatar.doId or racer.face.getX( ) >= self.faceEndPos[0]: continue if self.faceEndPos[0] - racer.face.getX() < farDiff: self.photoFinish = True if self.photoFinish: self.photoFinishLabel.show() self.placeLabelNum['text'] = '' self.placeLabelStr['text'] = '' else: self.photoFinishLabel.hide() self.placeLabelNum['text'] = str( self.racerDict[localAvatar.doId].place) self.placeLabelStr['text'] = suffix[self.racerDict[ localAvatar.doId].place] minutes = int(t / 60) t -= minutes * 60 seconds = int(t) padding = (seconds < 10 and ['0'] or [''])[0] t -= seconds fraction = str(t)[2:4] fraction = fraction + '0' * (2 - len(fraction)) if self.timerEnabled and self.maxLapHit < self.race.lapCount: self.timeLabels[self.maxLapHit][0]['text'] = "%d'" % minutes self.timeLabels[self.maxLapHit][1]['text'] = "%s%d''" % (padding, seconds) self.timeLabels[self.maxLapHit][2]['text'] = '%s' % fraction if self.race.wrongWay and not self.wrongWaySeq.isPlaying(): self.wrongWaySeq.loop() elif not self.race.wrongWay and self.wrongWaySeq.isPlaying(): self.wrongWaySeq.finish()
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.music = base.loadMusic('phase_4/audio/bgm/MG_CogThief.mid') self.initCogInfo() for barrelIndex in range(CTGG.NumBarrels): barrel = loader.loadModel( 'phase_4/models/minigames/cogthief_game_gagTank') barrel.setPos(CTGG.BarrelStartingPositions[barrelIndex]) barrel.setScale(self.BarrelScale) barrel.reparentTo(render) barrel.setTag('barrelIndex', str(barrelIndex)) collSphere = CollisionSphere(0, 0, 0, 4) collSphere.setTangible(0) name = 'BarrelSphere-%d' % barrelIndex collSphereName = self.uniqueName(name) collNode = CollisionNode(collSphereName) collNode.setFromCollideMask(CTGG.BarrelBitmask) collNode.addSolid(collSphere) colNp = barrel.attachNewNode(collNode) handler = CollisionHandlerEvent() handler.setInPattern('barrelHit-%fn') base.cTrav.addCollider(colNp, handler) self.accept('barrelHit-' + collSphereName, self.handleEnterBarrel) nodeToHide = '**/gagMoneyTen' if barrelIndex % 2: nodeToHide = '**/gagMoneyFive' iconToHide = barrel.find(nodeToHide) if not iconToHide.isEmpty(): iconToHide.hide() self.barrels.append(barrel) self.gameBoard = loader.loadModel( 'phase_4/models/minigames/cogthief_game') self.gameBoard.find('**/floor_TT').hide() self.gameBoard.find('**/floor_DD').hide() self.gameBoard.find('**/floor_DG').hide() self.gameBoard.find('**/floor_MM').hide() self.gameBoard.find('**/floor_BR').hide() self.gameBoard.find('**/floor_DL').hide() zone = self.getSafezoneId() if zone == ToontownGlobals.ToontownCentral: self.gameBoard.find('**/floor_TT').show() elif zone == ToontownGlobals.DonaldsDock: self.gameBoard.find('**/floor_DD').show() elif zone == ToontownGlobals.DaisyGardens: self.gameBoard.find('**/floor_DG').show() elif zone == ToontownGlobals.MinniesMelodyland: self.gameBoard.find('**/floor_MM').show() elif zone == ToontownGlobals.TheBrrrgh: self.gameBoard.find('**/floor_BR').show() elif zone == ToontownGlobals.DonaldsDreamland: self.gameBoard.find('**/floor_DL').show() else: self.gameBoard.find('**/floor_TT').show() self.gameBoard.setPosHpr(0, 0, 0, 0, 0, 0) self.gameBoard.setScale(1.0) self.toonSDs = {} avId = self.localAvId toonSD = CogThiefGameToonSD.CogThiefGameToonSD(avId, self) self.toonSDs[avId] = toonSD toonSD.load() self.loadCogs() self.toonHitTracks = {} self.toonPieTracks = {} self.sndOof = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_dirt.mp3') self.sndRewardTick = base.loadSfx( 'phase_3.5/audio/sfx/tick_counter.mp3') self.sndPerfect = base.loadSfx('phase_4/audio/sfx/ring_perfect.mp3') self.timer = ToontownTimer.ToontownTimer() self.timer.posInTopRightCorner() self.timer.hide() purchaseModels = loader.loadModel('phase_4/models/gui/purchase_gui') self.jarImage = purchaseModels.find('**/Jar') self.jarImage.reparentTo(hidden) self.rewardPanel = DirectLabel(parent=hidden, relief=None, pos=(1.16, 0.0, 0.45), scale=0.65, text='', text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_pos=(0, -.13), text_font=ToontownGlobals.getSignFont(), image=self.jarImage) self.rewardPanelTitle = DirectLabel(parent=self.rewardPanel, relief=None, pos=(0, 0, 0.06), scale=0.08, text=TTLocalizer.CannonGameReward, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1)) return
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()
def __init__(self, numPlayers, avIdList, votes, directions, namesList, disconnectedList, directionToGo, directionReason, directionTotals, *args, **kwargs): opts = {'relief': None, 'geom': DGG.getDefaultDialogGeom(), 'geom_color': ToontownGlobals.GlobalDialogColor[:3] + (0.8,), 'geom_scale': (1.75, 1, 0.25), 'pos': (0, 0, 0.825)} opts.update(kwargs) DirectFrame.__init__(self, *args, **opts) self.initialiseoptions(VoteResultsTrolleyPanel) listMultiplier = 1 if TravelGameGlobals.SpoofFour: listMultiplier = 4 self.avIdList = avIdList * listMultiplier self.numPlayers = numPlayers * listMultiplier self.votes = votes * listMultiplier self.directions = directions * listMultiplier self.namesList = namesList * listMultiplier self.disconnectedList = disconnectedList * listMultiplier self.directionToGo = directionToGo self.directionReason = directionReason self.directionTotals = directionTotals self.entryList = [] self.rowFrame = [] self.upDownFrame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(-1)) self.upLabel = DirectLabel(parent=self, relief=None, pos=(-0.5, 0, 0.06), text=TTLocalizer.TravelGameDirections[0] + ':', text_fg=(0.0, 0.0, 1.0, 1.0), text_scale=0.05, text_align=TextNode.ARight) self.downLabel = DirectLabel(parent=self, relief=None, pos=(0.5, 0, 0.06), text=TTLocalizer.TravelGameDirections[1] + ':', text_fg=(1.0, 0.0, 0.0, 1.0), text_scale=0.05, text_align=TextNode.ARight) self.totalVotesUpLabel = DirectLabel(parent=self.upLabel, relief=None, pos=(0.2, 0, 0.0), text='0', text_fg=(0.0, 0.0, 1.0, 1.0), text_scale=0.05, text_align=TextNode.ARight) self.totalVotesDownLabel = DirectLabel(parent=self.downLabel, relief=None, pos=(0.2, 0, 0.0), text='0', text_fg=(1.0, 0.0, 0.0, 1.0), text_scale=0.05, text_align=TextNode.ARight) self.totalFrame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(self.numPlayers)) self.totalVotesLabels = [self.totalVotesUpLabel, self.totalVotesDownLabel] self.resultFrame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(0.5)) self.resultLabel = DirectLabel(parent=self.resultFrame, text='', text_scale=0.06, pos=(0.7, 0, 0.0), text_align=TextNode.ACenter) self.setupResultLabel() for index in range(self.numPlayers): frame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(index)) self.rowFrame.append(frame) nameLabel = DirectFrame(parent=frame, relief=None, pos=(0.46, 0.0, 0.0), text=self.namesList[index], text_fg=(0.0, 0.0, 0.0, 1.0), text_scale=0.05, text_align=TextNode.ACenter, text_font=DGG.getDefaultFont()) votesUpLabel = DirectLabel(parent=frame, relief=None, pos=(1.2, 0.0, 0.0), text='', text_fg=(0, 0, 1, 1), text_scale=0.05, text_align=TextNode.ARight, text_font=DGG.getDefaultFont()) votesDownLabel = DirectLabel(parent=frame, relief=None, pos=(1.43, 0.0, 0.0), text='', text_fg=(1, 0, 0, 1), text_scale=0.05, text_align=TextNode.ARight, text_font=DGG.getDefaultFont()) nameLabel.hide() self.entryList.append((nameLabel, votesUpLabel, votesDownLabel)) self.avVotesLabel = {} self.avArrows = {} matchingGameGui = loader.loadModel('phase_3.5/models/gui/matching_game_gui') minnieArrow = matchingGameGui.find('**/minnieArrow') from toontown.minigame.DistributedTravelGame import map3dToAspect2d for index in range(self.numPlayers): avId = self.avIdList[index] av = base.cr.doId2do.get(avId) if av: height = av.getHeight() avPos = av.getPos(render) avPos.setZ(av.getZ() + 5) labelPos = map3dToAspect2d(render, avPos) if not labelPos: continue labelPos.setZ(labelPos.getZ() + 0.3) arrow = None if self.votes[index] > 0: arrow = aspect2d.attachNewNode('avArrow') minnieArrow.copyTo(arrow) arrow.setScale(1.1, 1, 1.15) arrow.setPos(labelPos) if self.directions[index] == 0: arrow.setR(-90) arrow.setColorScale(0, 0, 1, 1) else: arrow.setR(90) arrow.setColorScale(1, 0, 0, 1) arrow.wrtReparentTo(self.resultFrame) arrow.hide() self.avArrows[index] = arrow fgColor = Vec4(0, 0, 0, 1) if self.votes[index] > 0: if self.directions[index] == 0: fgColor = Vec4(0, 0, 1, 1) else: fgColor = Vec4(1, 0, 0, 1) if self.votes[index] > 0: newLabel = DirectLabel(parent=aspect2d, relief=None, pos=labelPos, text='test', text_fg=(1, 1, 1, 1), text_scale=0.1, text_align=TextNode.ACenter, text_font=ToontownGlobals.getSignFont(), text_pos=(0, -0.01, 0)) else: newLabel = DirectLabel(parent=aspect2d, geom=DGG.getDefaultDialogGeom(), geom_scale=(0.2, 1, 0.2), relief=None, pos=labelPos, text='test', text_fg=(0.5, 0.5, 0.5, 1), text_scale=0.1, text_align=TextNode.ACenter, text_font=ToontownGlobals.getSignFont(), text_pos=(0, -0.035, 0)) newLabel.wrtReparentTo(self.resultFrame) newLabel.hide() self.avVotesLabel[index] = newLabel matchingGameGui.removeNode() self.curArrowSfxIndex = 0 self.upArrowSfx = [] self.downArrowSfx = [] for i in range(5): self.upArrowSfx.append(base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_blue_arrow.ogg')) self.downArrowSfx.append(base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_red_arrow.ogg')) self.winVoteSfx = base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_win_vote.ogg') self.noVoteSfx = base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_square_no_vote_1.ogg') self.loseVoteSfx = base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_lose_vote.ogg') self.localAvatarWon = False self.localAvatarLost = False localIndex = self.avIdList.index(base.localAvatar.doId) localDirection = self.directions[localIndex] localVotes = self.votes[localIndex] if localVotes: if localDirection == self.directionToGo: if not TravelGameGlobals.ReverseWin: self.localAvatarWon = True else: self.localAvatarLost = True elif not TravelGameGlobals.ReverseWin: self.localAvatarLost = True else: self.localAvatarWon = True return
def __init__(self, doneEvent, allowWithdraw=1): DirectFrame.__init__(self, relief=None, geom=DGG.getDefaultDialogGeom(), geom_color=ToontownGlobals.GlobalDialogColor, geom_scale=(1.33, 1, 1.1), pos=(0, 0, 0)) self.initialiseoptions(BankGUI) self.doneEvent = doneEvent self.__transactionAmount = 0 buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui') jarGui = loader.loadModel('phase_3.5/models/gui/jar_gui') arrowGui = loader.loadModel('phase_3/models/gui/create_a_toon_gui') bankModel = loader.loadModel( 'phase_5.5/models/estate/jellybeanBank.bam') bankModel.setDepthWrite(1) bankModel.setDepthTest(1) bankModel.find('**/jellybeans').setDepthWrite(0) bankModel.find('**/jellybeans').setDepthTest(0) okImageList = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr')) cancelImageList = (buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr')) arrowImageList = (arrowGui.find('**/CrtATn_R_Arrow_UP'), arrowGui.find('**/CrtATn_R_Arrow_DN'), arrowGui.find('**/CrtATn_R_Arrow_RLVR'), arrowGui.find('**/CrtATn_R_Arrow_UP')) self.cancelButton = DirectButton(parent=self, relief=None, image=cancelImageList, pos=(-0.2, 0, -0.4), text=TTLocalizer.BankGuiCancel, text_scale=0.06, text_pos=(0, -0.1), command=self.__cancel) self.okButton = DirectButton(parent=self, relief=None, image=okImageList, pos=(0.2, 0, -0.4), text=TTLocalizer.BankGuiOk, text_scale=0.06, text_pos=(0, -0.1), command=self.__requestTransaction) self.jarDisplay = DirectLabel(parent=self, relief=None, pos=(-0.4, 0, 0), scale=0.7, text=str(base.localAvatar.getMoney()), text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0, -0.1, 0), image=jarGui.find('**/Jar'), text_font=ToontownGlobals.getSignFont()) self.bankDisplay = DirectLabel(parent=self, relief=None, pos=(0.4, 0, 0), scale=0.9, text=str( base.localAvatar.getBankMoney()), text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0, -0.1, 0), geom=bankModel, geom_scale=0.08, geom_pos=(0, 10, -0.26), geom_hpr=(0, 0, 0), text_font=ToontownGlobals.getSignFont()) self.depositArrow = DirectButton(parent=self, relief=None, image=arrowImageList, image_scale=(1, 1, 1), image3_color=Vec4( 0.6, 0.6, 0.6, 0.25), pos=(0.01, 0, 0.15)) self.withdrawArrow = DirectButton(parent=self, relief=None, image=arrowImageList, image_scale=(-1, 1, 1), image3_color=Vec4( 0.6, 0.6, 0.6, 0.25), pos=(-0.01, 0, -0.15)) self.depositArrow.bind(DGG.B1PRESS, self.__depositButtonDown) self.depositArrow.bind(DGG.B1RELEASE, self.__depositButtonUp) self.withdrawArrow.bind(DGG.B1PRESS, self.__withdrawButtonDown) self.withdrawArrow.bind(DGG.B1RELEASE, self.__withdrawButtonUp) self.accept('bankAsleep', self.__cancel) self.accept(localAvatar.uniqueName('moneyChange'), self.__moneyChange) self.accept(localAvatar.uniqueName('bankMoneyChange'), self.__bankMoneyChange) if allowWithdraw: self.depositArrow.setPos(0.01, 0, 0.15) self.withdrawArrow.setPos(-0.01, 0, -0.15) else: self.depositArrow.setPos(0, 0, 0) self.withdrawArrow.hide() jarGui.removeNode() arrowGui.removeNode() self.__updateTransaction(0)
def load(self, loadModels=1, arenaModel='partyCatchTree'): self.notify.info('load()') DistributedPartyCatchActivity.notify.debug('PartyCatch: load') self.activityFSM = CatchActivityFSM(self) if __dev__: for o in xrange(3): print { 0: 'SPOTS PER PLAYER', 1: 'DROPS PER MINUTE PER SPOT DURING NORMAL DROP PERIOD', 2: 'DROPS PER MINUTE PER PLAYER DURING NORMAL DROP PERIOD' }[o] for i in xrange(1, self.FallRateCap_Players + 10): self.defineConstants(forceNumPlayers=i) numDropLocations = self.DropRows * self.DropColumns numDropsPerMin = 60.0 / self.DropPeriod if o == 0: spotsPerPlayer = numDropLocations / float(i) print '%2d PLAYERS: %s' % (i, spotsPerPlayer) elif o == 1: numDropsPerMinPerSpot = numDropsPerMin / numDropLocations print '%2d PLAYERS: %s' % (i, numDropsPerMinPerSpot) elif i > 0: numDropsPerMinPerPlayer = numDropsPerMin / i print '%2d PLAYERS: %s' % (i, numDropsPerMinPerPlayer) self.defineConstants() self.treesAndFence = loader.loadModel('phase_13/models/parties/%s' % arenaModel) self.treesAndFence.setScale(0.9) self.treesAndFence.find('**/fence_floor').setPos(0.0, 0.0, 0.1) self.treesAndFence.reparentTo(self.root) ground = self.treesAndFence.find('**/groundPlane') ground.setBin('ground', 1) DistributedPartyActivity.load(self) exitText = TextNode('PartyCatchExitText') exitText.setCardAsMargin(0.1, 0.1, 0.1, 0.1) exitText.setCardDecal(True) exitText.setCardColor(1.0, 1.0, 1.0, 0.0) exitText.setText(TTLocalizer.PartyCatchActivityExit) exitText.setTextColor(0.0, 8.0, 0.0, 0.9) exitText.setAlign(exitText.ACenter) exitText.setFont(ToontownGlobals.getBuildingNametagFont()) exitText.setShadowColor(0, 0, 0, 1) exitText.setBin('fixed') if TTLocalizer.BuildingNametagShadow: exitText.setShadow(*TTLocalizer.BuildingNametagShadow) exitTextLoc = self.treesAndFence.find('**/loc_exitSignText') exitTextNp = exitTextLoc.attachNewNode(exitText) exitTextNp.setDepthWrite(0) exitTextNp.setScale(4) exitTextNp.setZ(-.5) self.sign.reparentTo(self.treesAndFence.find('**/loc_eventSign')) self.sign.wrtReparentTo(self.root) self.avatarNodePath = NodePath('PartyCatchAvatarNodePath') self.avatarNodePath.reparentTo(self.root) self._avatarNodePathParentToken = 3 base.cr.parentMgr.registerParent(self._avatarNodePathParentToken, self.avatarNodePath) self.toonSDs = {} self.dropShadow = loader.loadModelOnce( 'phase_3/models/props/drop_shadow') self.dropObjModels = {} if loadModels: self.__loadDropModels() self.sndGoodCatch = base.loadSfx( 'phase_4/audio/sfx/SZ_DD_treasure.ogg') self.sndOof = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_dirt.ogg') self.sndAnvilLand = base.loadSfx( 'phase_4/audio/sfx/AA_drop_anvil_miss.ogg') self.sndPerfect = base.loadSfx('phase_4/audio/sfx/ring_perfect.ogg') self.__textGen = TextNode('partyCatchActivity') self.__textGen.setFont(ToontownGlobals.getSignFont()) self.__textGen.setAlign(TextNode.ACenter) self.activityFSM.request('Idle')
def load(self): self.patNode = render.attachNewNode('patNode') self.patNode2d = aspect2d.attachNewNode('patNode2d') gui = asyncloader.loadModel('phase_3/models/gui/pick_a_toon_gui') gui2 = asyncloader.loadModel('phase_3/models/gui/quit_button') newGui = asyncloader.loadModel( 'phase_3/models/gui/tt_m_gui_pat_mainGui') self.title = OnscreenText(TTLocalizer.AvatarChooserPickAToon, scale=TTLocalizer.ACtitle, parent=hidden, fg=(1, 0.9, 0.1, 1), pos=(0.0, 0.82)) # Quit Button quitHover = gui.find('**/QuitBtn_RLVR') self.quitHover = quitHover self.quitButton = DirectButton(image=(quitHover, quitHover, quitHover), relief=None, text=TTLocalizer.AvatarChooserQuit, text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_pos=TTLocalizer.ACquitButtonPos, text_scale=TTLocalizer.ACquitButton, image_scale=1, image1_scale=1.05, image2_scale=1.05, scale=1.05, pos=(1.08, 0, -0.907), command=self.quitGame) self.quitButton.reparentTo(base.a2dBottomLeft) self.quitButton.setPos(0.25, 0, 0.075) # Options Button self.optionsButton = DirectButton( image=(quitHover, quitHover, quitHover), relief=None, text='Options', text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_pos=TTLocalizer.ACquitButtonPos, text_scale=TTLocalizer.ACquitButton, image_scale=1, image1_scale=1.05, image2_scale=1.05, scale=1.05, pos=(1.08, 0, -0.907), command=self.openOptions) self.optionsButton.reparentTo(base.a2dBottomRight) self.optionsButton.setPos(-0.25, 0, 0.075) # Shard Selector Button self.shardsButton = DirectButton( image=(quitHover, quitHover, quitHover), relief=None, text='Districts', text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_pos=TTLocalizer.ACquitButtonPos, text_scale=0.08, image_scale=1, image1_scale=1.05, image2_scale=1.05, scale=1.05, pos=(1.08, 0, -0.907), command=self.openShardPicker) self.shardsButton.reparentTo(base.a2dBottomLeft) self.shardsButton.setPos(0.25, 0, 0.2) gui.removeNode() gui2.removeNode() newGui.removeNode() # Area toon is in self.area = OnscreenText(parent=self.patNode2d, font=ToontownGlobals.getToonFont(), pos=(-.1, -.1), scale=.075, text='', shadow=(0, 0, 0, 1), fg=COLORS[self.selectedToon]) # DMENU Pat Screen Stuff self.play = DirectButton(relief=None, image=(quitHover, quitHover, quitHover), text='PLAY THIS TOON', text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_pos=(0, -.016), text_scale=0.045, image_scale=1, image1_scale=1.05, image2_scale=1.05, scale=1.4, pos=(0, 0, -0.90), command=self.playGame, parent=self.patNode2d) self.toon = Toon.Toon() self.toon.setPosHpr(-46, 0, 8.1, 90, 0, 0) self.toon.reparentTo(self.patNode) self.toon.stopLookAroundNow() def spawnToonButtons(*args): self.pickAToonGui = args[0] self.buttonBgs = [] self.buttonBgs.append( self.pickAToonGui.find('**/tt_t_gui_pat_squareRed')) self.buttonBgs.append( self.pickAToonGui.find('**/tt_t_gui_pat_squareGreen')) self.buttonBgs.append( self.pickAToonGui.find('**/tt_t_gui_pat_squarePurple')) self.buttonBgs.append( self.pickAToonGui.find('**/tt_t_gui_pat_squareBlue')) self.buttonBgs.append( self.pickAToonGui.find('**/tt_t_gui_pat_squarePink')) self.buttonBgs.append( self.pickAToonGui.find('**/tt_t_gui_pat_squareYellow')) buttonIndex = [] for av in self.avatarList: self.setupButtons(av, position=av.position) buttonIndex.append(av.position) for pos in xrange(0, 6): if pos not in buttonIndex: button = self.setupButtons(position=pos) if self.Seq: self.Seq.finish() del self.Seq self.loadingCircle.removeNode() del self.loadingCircle self.loadingCircle = OnscreenImage( image='phase_3/maps/dmenu/loading_circle.png') self.loadingCircle.show() self.loadingCircle.setScale(0.1) self.loadingCircle.setTransparency(TransparencyAttrib.MAlpha) self.loadingCircle.reparentTo(aspect2d) base.graphicsEngine.renderFrame() self.Seq = Sequence( Func(self.loadingCircle.setHpr, VBase3(0, 0, 0)), self.loadingCircle.hprInterval(1, VBase3(0, 0, 360))) self.Seq.loop() asyncloader.loadModel('phase_3/models/gui/tt_m_gui_pat_mainGui', callback=spawnToonButtons) # Delete Toon button trashcanGui = loader.loadModel('phase_3/models/gui/trashcan_gui.bam') self.deleteButton = DirectButton( parent=base.a2dBottomRight, geom=(trashcanGui.find('**/TrashCan_CLSD'), trashcanGui.find('**/TrashCan_OPEN'), trashcanGui.find('**/TrashCan_RLVR')), text=('', TTLocalizer.AvatarChoiceDelete, TTLocalizer.AvatarChoiceDelete, ''), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=0.15, text_pos=(0, -0.1), relief=None, scale=.5, command=self.__handleDelete, pos=(-.2, 0, .25)) self.changeName = DirectButton(relief=None, image=(quitHover, quitHover, quitHover), text='NAME THIS TOON', text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_pos=(0, -.016), text_scale=0.045, image_scale=1, image1_scale=1.05, image2_scale=1.05, scale=1.4, pos=(0, 0, -0.75), command=self.__handleNameYourToon, parent=self.patNode2d)
def attemptFailedMsg(self): pLabel = DirectLabel(parent=self.npRoot, relief=None, pos=(0.0, 0.0, -0.15), text=TTLocalizer.WinterCarolingMsg, text_fg=(0.9, 0.9, 1.0, 1.0), text_scale=0.12, text_font=ToontownGlobals.getSignFont())
def load(self): if self.loaded: return self.loaded = 1 self.verify = None self.pictureFrame = self.attachNewNode('pictureFrame') self.pictureFrame.setScale(0.15) self.itemIndex = 0 self.ival = None typeCode = self['item'].getTypeCode() if self['item'].needsCustomize() and (typeCode == CatalogItemTypes.WALLPAPER_ITEM or typeCode == CatalogItemTypes.FLOORING_ITEM or typeCode == CatalogItemTypes.MOULDING_ITEM or typeCode == CatalogItemTypes.FURNITURE_ITEM or typeCode == CatalogItemTypes.WAINSCOTING_ITEM or typeCode == CatalogItemTypes.TOON_STATUE_ITEM): if typeCode == CatalogItemTypes.WALLPAPER_ITEM: self.items = getAllWallpapers(self['item'].patternIndex) elif typeCode == CatalogItemTypes.FLOORING_ITEM: self.items = getAllFloorings(self['item'].patternIndex) elif typeCode == CatalogItemTypes.MOULDING_ITEM: self.items = getAllMouldings(self['item'].patternIndex) elif typeCode == CatalogItemTypes.FURNITURE_ITEM: self.items = getAllFurnitures(self['item'].furnitureType) elif typeCode == CatalogItemTypes.TOON_STATUE_ITEM: self.items = self['item'].getAllToonStatues() elif typeCode == CatalogItemTypes.WAINSCOTING_ITEM: self.items = getAllWainscotings(self['item'].patternIndex) self.numItems = len(self.items) if self.numItems > 1: guiItems = loader.loadModel('phase_5.5/models/gui/catalog_gui') nextUp = guiItems.find('**/arrow_up') nextRollover = guiItems.find('**/arrow_Rollover') nextDown = guiItems.find('**/arrow_Down') prevUp = guiItems.find('**/arrowUp') prevDown = guiItems.find('**/arrowDown1') prevRollover = guiItems.find('**/arrowRollover') self.nextVariant = DirectButton(parent=self, relief=None, image=(nextUp, nextDown, nextRollover, nextUp), image3_color=(1, 1, 1, 0.4), pos=(0.13, 0, 0), command=self.showNextVariant) self.prevVariant = DirectButton(parent=self, relief=None, image=(prevUp, prevDown, prevRollover, prevUp), image3_color=(1, 1, 1, 0.4), pos=(-0.13, 0, 0), command=self.showPrevVariant, state=DGG.DISABLED) self.variantPictures = [(None, None)] * self.numItems else: self.variantPictures = [(None, None)] self.showCurrentVariant() else: picture, self.ival = self['item'].getPicture(base.localAvatar) if picture: picture.reparentTo(self) picture.setScale(0.15) self.items = [self['item']] self.variantPictures = [(picture, self.ival)] self.typeLabel = DirectLabel(parent=self, relief=None, pos=(0, 0, 0.24), scale=TTLocalizer.CIPtypeLabel, text=self['item'].getTypeName(), text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getInterfaceFont(), text_wordwrap=CATALOG_PANEL_WORDWRAP) self.auxText = DirectLabel(parent=self, relief=None, scale=0.05, pos=(-0.2, 0, 0.16)) self.auxText.setHpr(0, 0, -30) self.nameLabel = DirectLabel(parent=self, relief=None, text=self['item'].getDisplayName(), text_fg=(0, 0, 0, 1), text_font=ToontownGlobals.getInterfaceFont(), text_scale=TTLocalizer.CIPnameLabel, text_wordwrap=CATALOG_PANEL_WORDWRAP + TTLocalizer.CIPwordwrapOffset) if self['item'].getTypeCode() == CatalogItemTypes.CHAT_ITEM: self.nameLabel['text_wordwrap'] = CATALOG_PANEL_CHAT_WORDWRAP numRows = self.nameLabel.component('text0').textNode.getNumRows() if numRows == 1: namePos = (0, 0, -0.06) elif numRows == 2: namePos = (0, 0, -0.03) else: namePos = (0, 0, 0) nameScale = 0.063 elif self['item'].getTypeCode() == CatalogItemTypes.ACCESSORY_ITEM: self.nameLabel['text_wordwrap'] = CATALOG_PANEL_ACCESSORY_WORDWRAP namePos = (0, 0, -.22) nameScale = 0.06 else: namePos = (0, 0, -.22) nameScale = 0.06 self.nameLabel.setPos(*namePos) self.nameLabel.setScale(nameScale) numericBeanPrice = self['item'].getPrice(self['type']) priceStr = str(numericBeanPrice) + ' ' + TTLocalizer.CatalogCurrency priceScale = 0.07 if self['item'].isSaleItem(): priceStr = TTLocalizer.CatalogSaleItem + priceStr priceScale = 0.06 self.priceLabel = DirectLabel(parent=self, relief=None, pos=(0, 0, -0.3), scale=priceScale, text=priceStr, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ACenter) self.createEmblemPrices(numericBeanPrice) buttonModels = loader.loadModel('phase_3.5/models/gui/inventory_gui') upButton = buttonModels.find('**/InventoryButtonUp') downButton = buttonModels.find('**/InventoryButtonDown') rolloverButton = buttonModels.find('**/InventoryButtonRollover') buyText = TTLocalizer.CatalogBuyText buyTextScale = TTLocalizer.CIPbuyButton if self['item'].isRental(): buyText = TTLocalizer.CatalogRentText self.buyButton = DirectButton(parent=self, relief=None, pos=(0.2, 0, 0.15), scale=(0.7, 1, 0.8), text=buyText, text_scale=buyTextScale, text_pos=(-0.005, -0.01), image=(upButton, downButton, rolloverButton, upButton), image_color=(1.0, 0.2, 0.2, 1), image0_color=Vec4(1.0, 0.4, 0.4, 1), image3_color=Vec4(1.0, 0.4, 0.4, 0.4), command=self.__handlePurchaseRequest) soundIcons = loader.loadModel('phase_5.5/models/gui/catalogSoundIcons') soundOn = soundIcons.find('**/sound07') soundOff = soundIcons.find('**/sound08') self.soundOnButton = DirectButton(parent=self, relief=None, pos=(0.2, 0, -0.15), scale=(0.7, 1, 0.8), text_scale=buyTextScale, text_pos=(-0.005, -0.01), image=(upButton, downButton, rolloverButton, upButton), image_color=(0.2, 0.5, 0.2, 1), image0_color=Vec4(0.4, 0.5, 0.4, 1), image3_color=Vec4(0.4, 0.5, 0.4, 0.4), command=self.handleSoundOnButton) self.soundOnButton.hide() soundOn.setScale(0.1) soundOn.reparentTo(self.soundOnButton) self.soundOffButton = DirectButton(parent=self, relief=None, pos=(0.2, 0, -0.15), scale=(0.7, 1, 0.8), text_scale=buyTextScale, text_pos=(-0.005, -0.01), image=(upButton, downButton, rolloverButton, upButton), image_color=(0.2, 1.0, 0.2, 1), image0_color=Vec4(0.4, 1.0, 0.4, 1), image3_color=Vec4(0.4, 1.0, 0.4, 0.4), command=self.handleSoundOffButton) self.soundOffButton.hide() soundOff = self.soundOffButton.attachNewNode('soundOff') soundOn.copyTo(soundOff) soundOff.reparentTo(self.soundOffButton) upGButton = buttonModels.find('**/InventoryButtonUp') downGButton = buttonModels.find('**/InventoryButtonDown') rolloverGButton = buttonModels.find('**/InventoryButtonRollover') self.giftButton = DirectButton(parent=self, relief=None, pos=(0.2, 0, 0.15), scale=(0.7, 1, 0.8), text=TTLocalizer.CatalogGiftText, text_scale=buyTextScale, text_pos=(-0.005, -0.01), image=(upButton, downButton, rolloverButton, upButton), image_color=(1.0, 0.2, 0.2, 1), image0_color=Vec4(1.0, 0.4, 0.4, 1), image3_color=Vec4(1.0, 0.4, 0.4, 0.4), command=self.__handleGiftRequest) self.updateButtons() 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.loader.loadSfx(soundName)) self.correctSound = base.loader.loadSfx( 'phase_4/audio/sfx/MG_pos_buzzer.ogg') self.incorrectSound = base.loader.loadSfx( 'phase_4/audio/sfx/MG_neg_buzzer.ogg') self.perfectSound = base.loader.loadSfx('phase_4/audio/sfx/MG_win.ogg') self.fallSound = base.loader.loadSfx('phase_4/audio/sfx/MG_Tag_A.ogg') self.music = base.loader.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, -.78), scale=0.12) self.roundText = DirectLabel(text=self.strRound % 1, text_fg=self.normalTextColor, frameColor=(1, 1, 1, 0), text_font=ToontownGlobals.getSignFont(), pos=(0.014, 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 xrange(0, 5): self.arrows[x] = minnieArrow.copyTo(hidden) self.arrows[x].hide() self.xs = [None] * 5 for x in xrange(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 xrange(0, 4): self.statusBalls.append([None] * self.totalMoves) for x in xrange(0, 4): for y in xrange(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 = CharDNA.CharDNA() dna.newChar('mn') m.setDNA(dna) m.setName(TTLocalizer.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 xrange(PatternGameGlobals.NUM_ROUNDS): self.animPlayRates.append(animPlayRate) animPlayRate *= animPlayRateMult return
def load(self): gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_mainGui') guiAcceptUp = gui.find('**/tt_t_gui_mat_okUp') guiAcceptDown = gui.find('**/tt_t_gui_mat_okDown') guiCancelUp = gui.find('**/tt_t_gui_mat_closeUp') guiCancelDown = gui.find('**/tt_t_gui_mat_closeDown') guiNextUp = gui.find('**/tt_t_gui_mat_nextUp') guiNextDown = gui.find('**/tt_t_gui_mat_nextDown') guiNextDisabled = gui.find('**/tt_t_gui_mat_nextDisabled') skipTutorialUp = gui.find('**/tt_t_gui_mat_skipUp') skipTutorialDown = gui.find('**/tt_t_gui_mat_skipDown') rotateUp = gui.find('**/tt_t_gui_mat_arrowRotateUp') rotateDown = gui.find('**/tt_t_gui_mat_arrowRotateDown') self.guiTopBar = DirectFrame(relief=None, text=TTLocalizer.CreateYourToon, text_font=ToontownGlobals.getSignFont(), text_fg=(0.0, 0.65, 0.35, 1), text_scale=0.18, text_pos=(0, -0.03), pos=(0, 0, 0.86)) self.guiTopBar.hide() self.guiBottomBar = DirectFrame(relief=None, image_scale=(1.25, 1, 1), pos=(0.01, 0, -0.86)) self.guiBottomBar.hide() self.guiCheckButton = DirectButton( parent=self.guiBottomBar, relief=None, image=(guiAcceptUp, guiAcceptDown, guiAcceptUp, guiAcceptDown), image_scale=halfButtonScale, image1_scale=halfButtonHoverScale, image2_scale=halfButtonHoverScale, pos=(1.165, 0, -0.018), command=self.__handleNext, text=('', TTLocalizer.MakeAToonDone, TTLocalizer.MakeAToonDone), text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.08, text_align=TextNode.ARight, text_pos=(0.075, 0.13), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1)) self.guiCheckButton.setPos(-0.13, 0, 0.13) self.guiCheckButton.reparentTo(base.a2dBottomRight) self.guiCheckButton.hide() self.guiCancelButton = DirectButton( parent=self.guiBottomBar, relief=None, image=(guiCancelUp, guiCancelDown, guiCancelUp, guiCancelDown), image_scale=halfButtonScale, image1_scale=halfButtonHoverScale, image2_scale=halfButtonHoverScale, pos=(-1.179, 0, -0.011), command=self.__handleCancel, text=('', TTLocalizer.MakeAToonCancel, TTLocalizer.MakeAToonCancel), text_font=ToontownGlobals.getInterfaceFont(), text_scale=TTLocalizer.MATguiCancelButton, text_pos=(0, 0.115), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1)) self.guiCancelButton.setPos(0.13, 0, 0.13) self.guiCancelButton.reparentTo(base.a2dBottomLeft) self.guiCancelButton.hide() self.guiNextButton = DirectButton( parent=self.guiBottomBar, relief=None, image=(guiNextUp, guiNextDown, guiNextUp, guiNextDisabled), image_scale=(0.3, 0.3, 0.3), image1_scale=(0.35, 0.35, 0.35), image2_scale=(0.35, 0.35, 0.35), pos=(1.165, 0, -0.018), command=self.__handleNext, text=('', TTLocalizer.MakeAToonNext, TTLocalizer.MakeAToonNext, ''), text_font=ToontownGlobals.getInterfaceFont(), text_scale=TTLocalizer.MATguiNextButton, text_pos=(0, 0.115), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1)) self.guiNextButton.setPos(-0.13, 0, 0.13) self.guiNextButton.reparentTo(base.a2dBottomRight) self.guiNextButton.hide() self.guiLastButton = DirectButton( parent=self.guiBottomBar, relief=None, image=(guiNextUp, guiNextDown, guiNextUp, guiNextDown), image3_color=Vec4(0.5, 0.5, 0.5, 0.75), image_scale=(-0.3, 0.3, 0.3), image1_scale=(-0.35, 0.35, 0.35), image2_scale=(-0.35, 0.35, 0.35), pos=(0.825, 0, -0.018), command=self.__handleLast, text=('', TTLocalizer.MakeAToonLast, TTLocalizer.MakeAToonLast, ''), text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.08, text_pos=(0, 0.115), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1)) self.guiLastButton.setPos(-0.37, 0, 0.13) self.guiLastButton.reparentTo(base.a2dBottomRight) self.guiLastButton.hide() self.rotateLeftButton = DirectButton(parent=self.guiBottomBar, relief=None, image=(rotateUp, rotateDown, rotateUp, rotateDown), image_scale=(-0.4, 0.4, 0.4), image1_scale=(-0.5, 0.5, 0.5), image2_scale=(-0.5, 0.5, 0.5), pos=(-0.355, 0, 0.36)) self.rotateLeftButton.reparentTo(base.a2dBottomCenter) self.rotateLeftButton.hide() self.rotateLeftButton.bind(DGG.B1PRESS, self.rotateToonLeft) self.rotateLeftButton.bind(DGG.B1RELEASE, self.stopToonRotateLeftTask) self.rotateRightButton = DirectButton(parent=self.guiBottomBar, relief=None, image=(rotateUp, rotateDown, rotateUp, rotateDown), image_scale=(0.4, 0.4, 0.4), image1_scale=(0.5, 0.5, 0.5), image2_scale=(0.5, 0.5, 0.5), pos=(0.355, 0, 0.36)) self.rotateRightButton.reparentTo(base.a2dBottomCenter) self.rotateRightButton.hide() self.rotateRightButton.bind(DGG.B1PRESS, self.rotateToonRight) self.rotateRightButton.bind(DGG.B1RELEASE, self.stopToonRotateRightTask) gui.removeNode() self.roomDropActor = Actor() self.roomDropActor.loadModel('phase_3/models/makeatoon/roomAnim_model') self.roomDropActor.loadAnims( {'drop': 'phase_3/models/makeatoon/roomAnim_roomDrop'}) self.roomDropActor.reparentTo(render) self.dropJoint = self.roomDropActor.find('**/droppingJoint') self.roomSquishActor = Actor() self.roomSquishActor.loadModel( 'phase_3/models/makeatoon/roomAnim_model') self.roomSquishActor.loadAnims( {'squish': 'phase_3/models/makeatoon/roomAnim_roomSquish'}) self.roomSquishActor.reparentTo(render) self.squishJoint = self.roomSquishActor.find('**/scalingJoint') self.propSquishActor = Actor() self.propSquishActor.loadModel( 'phase_3/models/makeatoon/roomAnim_model') self.propSquishActor.loadAnims( {'propSquish': 'phase_3/models/makeatoon/roomAnim_propSquish'}) self.propSquishActor.reparentTo(render) self.propSquishActor.pose('propSquish', 0) self.propJoint = self.propSquishActor.find('**/propJoint') self.spotlightActor = Actor() self.spotlightActor.loadModel( 'phase_3/models/makeatoon/roomAnim_model') self.spotlightActor.loadAnims({ 'spotlightShake': 'phase_3/models/makeatoon/roomAnim_spotlightShake' }) self.spotlightActor.reparentTo(render) self.spotlightJoint = self.spotlightActor.find('**/spotlightJoint') ee = DirectFrame(pos=(-1, 1, 1), frameSize=(-.01, 0.01, -.01, 0.01), frameColor=(0, 0, 0, 0.05), state='normal') ee.bind(DGG.B1PRESS, lambda x, ee=ee: self.toggleSlide()) self.eee = ee self.room = loader.loadModel( 'phase_3/models/makeatoon/tt_m_ara_mat_room') self.genderWalls = self.room.find('**/genderWalls') self.genderProps = self.room.find('**/genderProps') self.bodyWalls = self.room.find('**/bodyWalls') self.bodyProps = self.room.find('**/bodyProps') self.colorWalls = self.room.find('**/colorWalls') self.colorProps = self.room.find('**/colorProps') self.clothesWalls = self.room.find('**/clothWalls') self.clothesProps = self.room.find('**/clothProps') self.nameWalls = self.room.find('**/nameWalls') self.nameProps = self.room.find('**/nameProps') self.background = self.room.find('**/background') self.background.reparentTo(render) self.floor = self.room.find('**/floor') self.floor.reparentTo(render) self.spotlight = self.room.find('**/spotlight') self.spotlight.reparentTo(self.spotlightJoint) self.spotlight.setColor(1, 1, 1, 0.3) self.spotlight.setPos(1.18, -1.27, 0.41) self.spotlight.setScale(2.6) self.spotlight.setHpr(0, 0, 0) smokeSeqNode = SequenceNode('smoke') smokeModel = loader.loadModel( 'phase_3/models/makeatoon/tt_m_ara_mat_smoke') smokeFrameList = list(smokeModel.findAllMatches('**/smoke_*')) smokeFrameList.reverse() for smokeFrame in smokeFrameList: smokeSeqNode.addChild(smokeFrame.node()) smokeSeqNode.setFrameRate(12) self.smoke = render.attachNewNode(smokeSeqNode) self.smoke.setScale(1, 1, 0.75) self.smoke.hide() if self.warp: self.dna = ToonDNA.ToonDNA() 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.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.ogg') self.musicVolume = base.config.GetFloat('makeatoon-music-volume', 1) self.sfxVolume = base.config.GetFloat('makeatoon-sfx-volume', 1) self.soundBack = base.loadSfx( 'phase_3/audio/sfx/GUI_create_toon_back.ogg') self.crashSounds = [] self.crashSounds.append( base.loadSfx('phase_3/audio/sfx/tt_s_ara_mat_crash_boing.ogg')) self.crashSounds.append( base.loadSfx( 'phase_3/audio/sfx/tt_s_ara_mat_crash_glassBoing.ogg')) self.crashSounds.append( base.loadSfx('phase_3/audio/sfx/tt_s_ara_mat_crash_wood.ogg')) self.crashSounds.append( base.loadSfx('phase_3/audio/sfx/tt_s_ara_mat_crash_woodBoing.ogg')) self.crashSounds.append( base.loadSfx('phase_3/audio/sfx/tt_s_ara_mat_crash_woodGlass.ogg')) return
def createEmblemPrices(self, numericBeanPrice): priceScale = 0.07 emblemPrices = self['item'].getEmblemPrices() if emblemPrices: if numericBeanPrice: self.priceLabel.hide() beanModel = loader.loadModel('phase_5.5/models/estate/jellyBean') beanModel.setColorScale(1, 0, 0, 1) self.beanPriceLabel = DirectLabel(parent=self, relief=None, pos=(0, 0, -0.3), scale=priceScale, image=beanModel, image_pos=(-0.4, 0, 0.4), text=str(numericBeanPrice), text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ALeft) else: self.priceLabel.hide() goldPrice = 0 silverPrice = 0 emblemIcon = loader.loadModel('phase_3.5/models/gui/tt_m_gui_gen_emblemIcons') silverModel = emblemIcon.find('**/tt_t_gui_gen_emblemSilver') goldModel = emblemIcon.find('**/tt_t_gui_gen_emblemGold') if ToontownGlobals.EmblemTypes.Silver < len(emblemPrices): silverPrice = emblemPrices[ToontownGlobals.EmblemTypes.Silver] if silverPrice: self.silverPriceLabel = DirectLabel(parent=self, relief=None, pos=(0, 0, -0.3), scale=priceScale, image=silverModel, image_pos=(-0.4, 0, 0.4), text=str(silverPrice), text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ALeft) if ToontownGlobals.EmblemTypes.Gold < len(emblemPrices): goldPrice = emblemPrices[ToontownGlobals.EmblemTypes.Gold] if goldPrice: self.goldPriceLabel = DirectLabel(parent=self, relief=None, pos=(0, 0, -0.3), scale=priceScale, image=goldModel, image_pos=(-0.4, 0, 0.4), text=str(goldPrice), text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ALeft) numPrices = 0 if numericBeanPrice: numPrices += 1 if silverPrice: numPrices += 1 if goldPrice: numPrices += 1 if numPrices == 2: if not numericBeanPrice: self.silverPriceLabel.setX(-0.15) self.goldPriceLabel.setX(0.15) if not silverPrice: self.goldPriceLabel.setX(-0.15) self.beanPriceLabel.setX(0.15) if not goldPrice: self.silverPriceLabel.setX(-0.15) self.beanPriceLabel.setX(0.15) elif numPrices == 3: self.silverPriceLabel.setX(-0.2) self.goldPriceLabel.setX(0) self.beanPriceLabel.setX(0.15) return
def __init__(self, doneFunction, doneEvent=None, callback=None): FSM.FSM.__init__(self, "CheckersTutorial") self.doneFunction = doneFunction base.localAvatar.startSleepWatch(self.handleQuit) self.doneEvent = doneEvent self.callback = callback self.setStateArray(["Page1", "Page2","Page3","Quit"]) # initialize our base class. DirectFrame.__init__(self, pos = (-0.7, 0.0, 0.0), image_color = ToontownGlobals.GlobalDialogColor, image_scale = (1.0, 1.5, 1.0), text = "", text_scale = 0.06, ) self.accept('stoppedAsleep', self.handleQuit) # For some reason, we need to set this after construction to # get it to work properly. self['image'] = DGG.getDefaultDialogGeom() #title this sucker self.title = DirectLabel(self, relief = None, text = "", text_pos = (0.0, 0.40), text_fg = (1, 0, 0, 1), text_scale = 0.13, text_font = ToontownGlobals.getSignFont(), #text_shadow = (1, 1, 1, 1), ) #create some image frames images = loader.loadModel("phase_6/models/golf/regularchecker_tutorial.bam") #images.reparentTo("aspect2regularchecker_tutorial.egg") images.setTransparency(1) #self.iPage1 = DirectFrame(self, # image = images.find('**/tutorialPage1*'), # scale = 8.35, # pos = (0.41, -0.1, 0.05), # ) self.iPage1 = images.find('**/tutorialPage1*') self.iPage1.reparentTo(aspect2d) self.iPage1.setPos(0.43, -0.1, 0.0) self.iPage1.setScale(.4) self.iPage1.setTransparency(1) self.iPage1.hide() self.iPage2 = images.find('**/tutorialPage2*') self.iPage2.reparentTo(aspect2d) self.iPage2.setPos(0.43, -0.1, 0.0) self.iPage2.setScale(.4) self.iPage2.setTransparency(1) self.iPage2.hide() self.iPage3 = images.find('**/tutorialPage3*') self.iPage3.reparentTo(aspect2d) self.iPage3.setPos(0.6, -0.1, 0.5) self.iPage3.setScale(.4) self.iPage3.setTransparency(1) self.obj = self.iPage3.find('**/king*') self.iPage3.hide() self.iPage4 = images.find('**/tutorialPage4*') self.iPage4.reparentTo(aspect2d) self.iPage4.setPos(0.6, -0.1, -0.5) self.iPage4.setScale(.4) self.iPage4.setTransparency(1) self.iPage4.hide() # Create some buttons. buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui') gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui') self.bNext = DirectButton(self, image = (gui.find("**/Horiz_Arrow_UP"), gui.find("**/Horiz_Arrow_DN"), gui.find("**/Horiz_Arrow_Rllvr"), gui.find("**/Horiz_Arrow_UP")), image3_color = Vec4(1, 1, 1, 0.5), relief = None, text = TTLocalizer.ChineseTutorialNext, text3_fg = Vec4(0, 0, 0, 0.5), text_scale = 0.05, text_pos = (0.0, -0.1), pos = (0.35, -0.3, -0.33), command = self.requestNext, ) self.bPrev = DirectButton(self, image = (gui.find("**/Horiz_Arrow_UP"), gui.find("**/Horiz_Arrow_DN"), gui.find("**/Horiz_Arrow_Rllvr"), gui.find("**/Horiz_Arrow_UP")), image3_color = Vec4(1, 1, 1, 0.5), image_scale = (-1.0, 1.0, 1.0), # make the arrow point left relief = None, text = TTLocalizer.ChineseTutorialPrev, text3_fg = Vec4(0, 0, 0, 0.5), text_scale = 0.05, text_pos = (0.0, -0.1), pos = (-0.35, -0.3, -0.33), command = self.requestPrev, ) self.bQuit = DirectButton(self, image = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr')), relief = None, text = TTLocalizer.ChineseTutorialDone, text_scale = 0.05, text_pos = (0.0, -0.1), pos = (0.0, -0.3, -0.33), command = self.handleQuit, ) self.bQuit.hide() buttons.removeNode() gui.removeNode() self.request("Page1")
def __init__(self, doneFunction, doneEvent=None, callback=None): FSM.FSM.__init__(self, 'FindFourTutorial') self.doneFunction = doneFunction base.localAvatar.startSleepWatch(self.handleQuit) self.doneEvent = doneEvent self.callback = callback self.setStateArray(['Page1', 'Page2', 'Page3', 'Quit']) DirectFrame.__init__(self, pos=(-0.7, 0.0, 0.0), image_color=ToontownGlobals.GlobalDialogColor, image_scale=(1.0, 1.5, 1.0), text='', text_scale=0.06) self.accept('stoppedAsleep', self.handleQuit) self['image'] = DGG.getDefaultDialogGeom() self.title = DirectLabel(self, relief=None, text='', text_pos=(0.0, 0.4), text_fg=(1, 0, 0, 1), text_scale=0.13, text_font=ToontownGlobals.getSignFont()) images = loader.loadModel('phase_6/models/golf/findfour_game') images.setTransparency(1) buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui') gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui') self.bNext = DirectButton(self, image=(gui.find('**/Horiz_Arrow_UP'), gui.find('**/Horiz_Arrow_DN'), gui.find('**/Horiz_Arrow_Rllvr'), gui.find('**/Horiz_Arrow_UP')), image3_color=Vec4(1, 1, 1, 0.5), relief=None, text=TTLocalizer.ChineseTutorialNext, text3_fg=Vec4(0, 0, 0, 0.5), text_scale=0.05, text_pos=(0.0, -0.1), pos=(0.35, -0.3, -0.33), command=self.requestNext) self.bPrev = DirectButton(self, image=(gui.find('**/Horiz_Arrow_UP'), gui.find('**/Horiz_Arrow_DN'), gui.find('**/Horiz_Arrow_Rllvr'), gui.find('**/Horiz_Arrow_UP')), image3_color=Vec4(1, 1, 1, 0.5), image_scale=(-1.0, 1.0, 1.0), relief=None, text=TTLocalizer.ChineseTutorialPrev, text3_fg=Vec4(0, 0, 0, 0.5), text_scale=0.05, text_pos=(0.0, -0.1), pos=(-0.35, -0.3, -0.33), command=self.requestPrev) self.bQuit = DirectButton(self, image=(buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr')), relief=None, text=TTLocalizer.ChineseTutorialDone, text_scale=0.05, text_pos=(0.0, -0.1), pos=(0.0, -0.3, -0.33), command=self.handleQuit) self.bQuit.hide() buttons.removeNode() gui.removeNode() self.request('Page1') return
def load(self): self.notify.debug('Bingo card loading') self.loadGameTimer() self.loadNextGameTimer() textScale = 0.06 textHeight = 0.38 * BG.CardImageScale[2] guiButton = loader.loadModel('phase_3/models/gui/quit_button') self.bingo = DirectButton(parent=self, pos=(BG.GridXOffset, 0, 0.305), scale=(0.0343, 0.035, 0.035), relief=None, state=DGG.DISABLED, geom=self.model.find('**/BINGObutton'), geom_pos=(0, 0, 0), geom_hpr=(0, 90, 0), image=(self.model.find('**/Gold_TTButtUP'), self.model.find('**/goldTTButtDown'), self.model.find('**/RolloverBingoButton1')), image_pos=(0, 0, 0), image_hpr=(0, 90, 0), image_color=BG.getButtonColor(0), pressEffect=False) guiButton.removeNode() arrowModel = loader.loadModel('phase_3.5/models/gui/speedChatGui') self.gameType = DirectButton(parent=self, pos=(BG.GridXOffset, 0, -8 * BG.CardImageScale[2] - 0.01), relief=None, image=arrowModel.find('**/chatArrow'), image_scale=-0.05, image_pos=(-0.2, 0, 0.025), text='', text_scale=0.045, text_fg=(1, 1, 1, 1), text_font=ToontownGlobals.getSignFont(), text_wordwrap=10.5, text_pos=(0.01, 0.008), pressEffect=False) arrowModel.removeNode() self.gameType.bind(DGG.ENTER, self.onMouseEnter) self.gameType.bind(DGG.EXIT, self.onMouseLeave) self.gameType.hide() self.jpText = DirectLabel(parent=self, pos=(BG.GridXOffset, 0, 0.22), relief=None, state=DGG.NORMAL, text='', text_scale=TTLocalizer.BCGjpText, text_pos=(0, 0, 0), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getInterfaceFont(), text_wordwrap=TTLocalizer.BCGjpTextWordwrap) self.gameOver = DirectLabel(parent=self, pos=(BG.GridXOffset, 0, 0), relief=None, state=DGG.NORMAL, text='', text_scale=textScale, text_fg=(1, 1, 1, 1), text_font=ToontownGlobals.getSignFont()) self.jpSign = DirectFrame(parent=self.parent, relief=None, state=DGG.NORMAL, pos=BG.CardPosition, scale=(0.035, 0.035, 0.035), text=TTLocalizer.FishBingoJackpot, text_scale=2, text_pos=(-1.5, 18.6), text_fg=(1, 1, 1, 1), image=self.model.find('**/jackpot'), image_pos=(0, 0, 0), image_hpr=(0, 90, 0), sortOrder=DGG.BACKGROUND_SORT_INDEX) self.makeJackpotLights(self.jpSign) self.hideJackpot() self.makeTutorial() return
def enterReward(self): numToons = 0 toonLayouts = ((2, ), (1, 3), (0, 2, 4), (0, 1, 3, 4)) toonPositions = (5.0, 1.75, -0.25, -1.75, -5.0) self.toons = [] self.toonsKeep = [] self.counters = [] self.totalCounters = [] camera.reparentTo(render) base.camLens.setFov(ToontownGlobals.DefaultCameraFov) camera.setPos(0, 16.0, 2.0) camera.lookAt(0, 0, 0.75) base.transitions.irisIn(0.4) self.title.reparentTo(aspect2d) self.foreground.reparentTo(render) self.backgroundL.reparentTo(render) self.backgroundR.reparentTo(render) self.sidewalk.reparentTo(render) self.door.reparentTo(render) size = 20 z = -2.5 floor = CollisionPolygon(Point3(-size, -size, z), Point3(size, -size, z), Point3(size, size, z), Point3(-size, size, z)) floor.setTangible(1) floorNode = CollisionNode('collision_floor') floorNode.addSolid(floor) self.collisionFloor = render.attachNewNode(floorNode) NametagGlobals.setOnscreenChatForced(1) for index in xrange(len(self.ids)): avId = self.ids[index] if self.states[index] != PURCHASE_NO_CLIENT_STATE and self.states[ index] != PURCHASE_DISCONNECTED_STATE and avId in base.cr.doId2do: numToons += 1 toon = base.cr.doId2do[avId] toon.stopSmooth() self.toons.append(toon) self.toonsKeep.append( DelayDelete.DelayDelete(toon, 'Purchase.enterReward')) counter = DirectLabel(parent=hidden, relief=None, pos=(0.0, 0.0, 0.0), text=str(0), text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_pos=(0, -0.1, 0), text_font=ToontownGlobals.getSignFont()) counter['image'] = DGG.getDefaultDialogGeom() counter['image_scale'] = (0.33, 1, 0.33) counter.setScale(0.5) counter.count = 0 counter.max = self.pointsArray[index] self.counters.append(counter) money = self.playerMoney[index] totalCounter = DirectLabel( parent=hidden, relief=None, pos=(0.0, 0.0, 0.0), text=str(money), text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_pos=(0, -0.1, 0), text_font=ToontownGlobals.getSignFont(), image=self.jarImage) totalCounter.setScale(0.5) totalCounter.count = money totalCounter.max = toon.getMaxMoney() self.totalCounters.append(totalCounter) self.accept('clientCleanup', self._handleClientCleanup) pos = 0 toonLayout = toonLayouts[numToons - 1] for toon in self.toons: thisPos = toonPositions[toonLayout[pos]] toon.setPos(Vec3(thisPos, 1.0, -2.5)) toon.setHpr(Vec3(0, 0, 0)) toon.setAnimState('neutral', 1) toon.setShadowHeight(0) if not toon.isDisabled(): toon.reparentTo(render) self.counters[pos].setPos(thisPos * -0.17, 0, toon.getHeight() / 10 + 0.25) self.counters[pos].reparentTo(aspect2d) self.totalCounters[pos].setPos(thisPos * -0.17, 0, -0.825) self.totalCounters[pos].reparentTo(aspect2d) pos += 1 self.maxPoints = max(self.pointsArray) if self.votesArray: self.maxVotes = max(self.votesArray) numToons = len(self.toons) self.voteMultiplier = TravelGameGlobals.PercentOfVotesConverted[ numToons] / 100.0 self.maxBeansFromVotes = int(self.voteMultiplier * self.maxVotes) else: self.maxVotes = 0 self.maxBeansFromVotes = 0 def reqCountUp(state): self.countUp() return Task.done countUpDelay = DELAY_BEFORE_COUNT_UP taskMgr.doMethodLater(countUpDelay, reqCountUp, 'countUpTask') def reqCountDown(state): self.countDown() return Task.done countDownDelay = countUpDelay + COUNT_UP_DURATION + DELAY_AFTER_COUNT_UP taskMgr.doMethodLater(countDownDelay, reqCountDown, 'countDownTask') def celebrate(task): for counter in task.counters: counter.hide() winningPoints = max(task.pointsArray) for i in xrange(len(task.ids)): if task.pointsArray[i] == winningPoints: avId = task.ids[i] if avId in base.cr.doId2do: toon = base.cr.doId2do[avId] toon.setAnimState('jump', 1.0) base.playSfx(task.celebrateSound) return Task.done celebrateDelay = countDownDelay + COUNT_DOWN_DURATION + DELAY_AFTER_COUNT_DOWN celebrateTask = taskMgr.doMethodLater(celebrateDelay, celebrate, 'celebrate') celebrateTask.counters = self.counters celebrateTask.pointsArray = self.pointsArray celebrateTask.ids = self.ids celebrateTask.celebrateSound = self.celebrateSound def reqCountVotesUp(state): self.countVotesUp() return Task.done def reqCountVotesDown(state): self.countVotesDown() return Task.done if self.metagameRound == TravelGameGlobals.FinalMetagameRoundIndex: countVotesUpDelay = celebrateDelay + DELAY_AFTER_CELEBRATE taskMgr.doMethodLater(countVotesUpDelay, reqCountVotesUp, 'countVotesUpTask') countVotesUpTime = self.maxVotes * COUNT_UP_RATE + DELAY_AFTER_COUNT_UP countVotesDownDelay = countVotesUpDelay + countVotesUpTime taskMgr.doMethodLater(countVotesDownDelay, reqCountVotesDown, 'countVotesDownTask') celebrateDelay += countVotesUpTime + self.maxVotes * COUNT_DOWN_RATE + DELAY_AFTER_COUNT_DOWN def reqPurchase(state): self.fsm.request('purchase') return Task.done purchaseDelay = celebrateDelay + DELAY_AFTER_CELEBRATE taskMgr.doMethodLater(purchaseDelay, reqPurchase, 'purchase-trans') if base.skipMinigameReward: self.fsm.request('purchase') return
def __enableControlInterface(self): if self.canRace: self.enableControls() taskMgr.remove('watchVehicleControls') taskMgr.add(self.__watchControls, 'watchVehicleControls', priority=25) if not self.speedometer: cm = CardMaker('speed') cm.setFrame(-0.5, 0.5, -0.5, 0.5) self.speedometerImages = base.a2dBottomRight.attachNewNode('SpeedometerImages') self.speedometerImages.setTransparency(True) self.speedometerImages.setPos(-0.1, 0.0, 0.03) self.speedometerImages.setScale(0.75) m = loader.loadModel('phase_6/models/karting/speedometer') if self.getBodyColor() == InvalidEntry: bodyColor = getDefaultColor() else: bodyColor = getAccessory(self.getBodyColor()) if self.getAccessoryColor() == InvalidEntry: accColor = getDefaultColor() else: accColor = getAccessory(self.getAccessoryColor()) self.speedometerImages.attachNewNode(m.find('**/*gauge').node()).setColorScale(1, 1, 1, 1) self.speedGauge = self.speedometerImages.attachNewNode(m.find('**/*spin').node()) self.speedGauge.setColor(1, 1, 1, 1) c = (Vec4(1, 1, 1, 1) + accColor) / 2.0 c.setW(1.0) self.speedometerImages.attachNewNode(m.find('**/*face').node()).setColorScale(c) c = (Vec4(2, 2, 2, 2) - accColor) / 2.0 c = (bodyColor + Vec4(1, 1, 1, 1)) / 2.0 c.setW(1.0) self.speedometerImages.attachNewNode(m.find('**/*tics').node()).setColorScale(c) c = (bodyColor + Vec4(1, 1, 1, 1)) / 2.0 c.setW(1.0) self.speedometerImages.attachNewNode(m.find('**/*ring').node()).setColorScale(c) self.speedometer = DirectLabel(relief=None, pos=(-0.1, 0.0, 0.03), text=str(0), text_scale=0.18, text_fg=bodyColor, text_pos=(-0.04, 0.02, 0), text_font=ToontownGlobals.getSignFont()) self.speedometer.reparentTo(base.a2dBottomRight) else: self.showSpeedometer() self.arrowVert = 0 self.arrowHorz = 0 return
def load(self): self.weight = DirectLabel(parent=self, pos=(0, 0, -0.28), relief=None, state=DGG.NORMAL, text='', text_scale=0.05, text_fg=(0, 0, 0, 1), text_pos=(0, 0.0, 0), text_font=ToontownGlobals.getInterfaceFont(), text_wordwrap=10.5) self.value = DirectLabel(parent=self, pos=(0, 0, -0.35), relief=None, state=DGG.NORMAL, text='', text_scale=0.05, text_fg=(0, 0, 0, 1), text_pos=(0, 0, 0), text_font=ToontownGlobals.getInterfaceFont(), text_wordwrap=10.5) self.mystery = DirectLabel(parent=self, pos=(-0.025, 0, -0.055), relief=None, state=DGG.NORMAL, text='?', text_scale=0.25, text_fg=(0, 0, 0, 1), text_pos=(0, 0, 0), text_font=ToontownGlobals.getInterfaceFont(), text_wordwrap=10.5) self.extraLabel = DirectLabel(parent=self, relief=None, state=DGG.NORMAL, text='', text_fg=(0.2, 0.8, 0.4, 1), text_font=ToontownGlobals.getSignFont(), text_scale=0.08, pos=(0, 0, 0.26)) buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui') self.cancel = DirectButton(parent=self, pos=(0.275, 0, -0.375), relief=None, state=DGG.NORMAL, image=(buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr')), image_scale=(0.6, 1, 0.6), command=self.handleCancel) buttons.removeNode() self.photo = FishPhoto.FishPhoto(parent=self) self.update(self.fish) return
def load(self): ShtikerPage.ShtikerPage.load(self) self.title = DirectLabel(parent=self, relief=None, text=TTLocalizer.InventoryPageTitle, text_scale=0.12, textMayChange=1, pos=(0, 0, 0.62)) self.gagFrame = DirectFrame(parent=self, relief=None, pos=(0.1, 0, -0.47), scale=(0.35, 0.35, 0.35), geom=DGG.getDefaultDialogGeom(), geom_color=ToontownGlobals.GlobalDialogColor) self.trackInfo = DirectFrame(parent=self, relief=None, pos=(-0.4, 0, -0.47), scale=(0.35, 0.35, 0.35), geom=DGG.getDefaultDialogGeom(), geom_scale=(1.4, 1, 1), geom_color=ToontownGlobals.GlobalDialogColor, text='', text_wordwrap=11, text_align=TextNode.ALeft, text_scale=0.12, text_pos=(-0.65, 0.3), text_fg=(0.05, 0.14, 0.4, 1)) self.trackProgress = DirectWaitBar(parent=self.trackInfo, pos=(0, 0, -0.2), relief=DGG.SUNKEN, frameSize=(-0.6, 0.6, -0.1, 0.1), borderWidth=(0.025, 0.025), scale=1.1, frameColor=(0.4, 0.6, 0.4, 1), barColor=(0.9, 1, 0.7, 1), text='0/0', text_scale=0.15, text_fg=(0.05, 0.14, 0.4, 1), text_align=TextNode.ACenter, text_pos=(0, -0.22)) self.trackProgress.hide() jarGui = loader.loadModel('phase_3.5/models/gui/jar_gui') self.moneyDisplay = DirectLabel(parent=self, relief=None, pos=(0.55, 0, -0.5), scale=0.8, text=str(base.localAvatar.getMoney()), text_scale=0.18, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0, -0.1, 0), image=jarGui.find('**/Jar'), text_font=ToontownGlobals.getSignFont()) jarGui.removeNode() return
def load(self): self.sceneRoot = NodePath( self.toonName.replace(' ', '').replace('', '')) base.setBackgroundColor(0, 0, 0, 1) if self.twoSlides: if self.side == 'left': # Left Top titlePos = (0.1, 0.5, 0.0) descriptionPos = (0.2, 0.4, 0.0) imagePos = (-0.55, 0.0, 0.4) textAlignment = TextNode.ALeft # Right Bottom title2Pos = (-0.1, -0.35, 0.0) description2Pos = (-0.1, -0.45, 0.0) image2Pos = (0.55, 0.0, -0.4) text2Alignment = TextNode.ARight else: # Right Top titlePos = (-0.1, 0.5, 0.0) descriptionPos = (-0.1, 0.4, 0.0) imagePos = (0.55, 0.0, 0.4) textAlignment = TextNode.ARight # Left Bottom title2Pos = (0.1, -0.35, 0.0) description2Pos = (0.25, -0.45, 0.0) image2Pos = (-0.55, 0.0, -0.4) text2Alignment = TextNode.ALeft elif self.side == 'left': # Left Middle titlePos = (0.1, 0.15, 0.0) descriptionPos = (0.2, 0.05, 0.0) imagePos = (-0.5, 0.0, 0.0) textAlignment = TextNode.ALeft else: # Right Middle titlePos = (-0.1, 0.1, 0.0) descriptionPos = (-0.11, 0.0, 0.0) imagePos = (0.5, 0.0, 0.0) textAlignment = TextNode.ARight self.title = OnscreenText(text=self.toonName, pos=titlePos, scale=(0.15), fg=(1, 1, 1, 1), font=ToontownGlobals.getSignFont(), align=textAlignment) self.description = OnscreenText(text=self.toonDescription, pos=descriptionPos, scale=(0.06), fg=(1, 1, 1, 1), font=ToontownGlobals.getMinnieFont(), align=textAlignment) self.image = OnscreenImage(image='phase_4/maps/news/%s' % self.toonImage, pos=imagePos, scale=(0.5, 0.30, 0.30)) self.elements = [self.title, self.description, self.image] if self.twoSlides: self.title2 = OnscreenText(text=self.toon2Name, pos=title2Pos, scale=(0.15), fg=(1, 1, 1, 1), font=ToontownGlobals.getSignFont(), align=text2Alignment) self.description2 = OnscreenText( text=self.toon2Description, pos=description2Pos, scale=(0.06), fg=(1, 1, 1, 1), font=ToontownGlobals.getMinnieFont(), align=text2Alignment) self.image2 = OnscreenImage(image='phase_4/maps/news/%s' % self.toon2Image, pos=image2Pos, scale=(0.5, 0.30, 0.30)) self.elements.extend([self.title2, self.description2, self.image2]) for node in self.elements: node.setTransparency(1) node.setColorScale(1, 1, 1, 0)
def __createPieWindshield(self): self.piePieces = [] for piece in range(self.numPieChunks): self.piePieces.append(DirectLabel(relief=None, pos=(0.0, 0.0, 0.0), image=self.pieSplatter, image_scale=(0.5, 0.5, 0.5), text=' ', text_scale=0.18, text_fg=(1, 0, 1, 1), text_pos=(-0.0, 0.0, 0), text_font=ToontownGlobals.getSignFont(), textMayChange=1)) self.piePieces[piece].hide() return
def __init__(self, doneEvent, allowWithdraw=1): DirectFrame.__init__( self, relief=None, geom=DGG.getDefaultDialogGeom(), geom_color=ToontownGlobals.GlobalDialogColor, geom_scale=(1.33, 1, 1.1), pos=(0, 0, 0), ) self.initialiseoptions(BankGui) # Send this when we are done so whoever made us can get a callback self.doneEvent = doneEvent # Positive indicates a deposit, negative indicates a withdraw self.__transactionAmount = 0 buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui') jarGui = loader.loadModel("phase_3.5/models/gui/jar_gui") arrowGui = loader.loadModel("phase_3/models/gui/create_a_toon_gui") bankModel = loader.loadModel( "phase_5.5/models/estate/jellybeanBank.bam") # If we set this on the entire bank, the billboard jellybeans goes away # Let's just set it on the pig, the rest of the bank looks ok bankModel.find("**/pig").setDepthWrite(1) bankModel.find("**/pig").setDepthTest(1) # Init buttons okImageList = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr')) cancelImageList = (buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr')) arrowImageList = (arrowGui.find("**/CrtATn_R_Arrow_UP"), arrowGui.find("**/CrtATn_R_Arrow_DN"), arrowGui.find("**/CrtATn_R_Arrow_RLVR"), arrowGui.find("**/CrtATn_R_Arrow_UP")) self.cancelButton = DirectButton( parent=self, relief=None, image=cancelImageList, pos=(-0.2, 0, -0.4), text=TTLocalizer.BankGuiCancel, text_scale=0.06, text_pos=(0, -0.1), command=self.__cancel, ) self.okButton = DirectButton( parent=self, relief=None, image=okImageList, pos=(0.2, 0, -0.4), text=TTLocalizer.BankGuiOk, text_scale=0.06, text_pos=(0, -0.1), command=self.__requestTransaction, ) self.jarDisplay = DirectLabel( parent=self, relief=None, pos=(-0.4, 0, 0), scale=0.7, text=str(base.localAvatar.getMoney()), text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0, -0.1, 0), image=jarGui.find("**/Jar"), text_font=ToontownGlobals.getSignFont(), ) self.bankDisplay = DirectLabel( parent=self, relief=None, pos=(0.4, 0, 0), scale=0.9, text=str(base.localAvatar.getBankMoney()), text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0, -0.1, 0), geom=bankModel, geom_scale=0.08, geom_pos=(0, 10, -0.26), geom_hpr=(0, 0, 0), text_font=ToontownGlobals.getSignFont(), ) self.depositArrow = DirectButton( parent=self, relief=None, image=arrowImageList, image_scale=(1, 1, 1), image3_color=Vec4(0.6, 0.6, 0.6, 0.25), pos=(0.01, 0, 0.15), ) self.withdrawArrow = DirectButton( parent=self, relief=None, image=arrowImageList, image_scale=(-1, 1, 1), image3_color=Vec4(0.6, 0.6, 0.6, 0.25), pos=(-0.01, 0, -0.15), ) self.depositArrow.bind(DGG.B1PRESS, self.__depositButtonDown) self.depositArrow.bind(DGG.B1RELEASE, self.__depositButtonUp) self.withdrawArrow.bind(DGG.B1PRESS, self.__withdrawButtonDown) self.withdrawArrow.bind(DGG.B1RELEASE, self.__withdrawButtonUp) self.accept("bankAsleep", self.__cancel) self.accept(localAvatar.uniqueName("moneyChange"), self.__moneyChange) self.accept(localAvatar.uniqueName("bankMoneyChange"), self.__bankMoneyChange) if allowWithdraw: self.depositArrow.setPos(0.01, 0, 0.15) self.withdrawArrow.setPos(-0.01, 0, -0.15) else: self.depositArrow.setPos(0, 0, 0) self.withdrawArrow.hide() buttons.removeNode() jarGui.removeNode() arrowGui.removeNode() # Refresh the status of the gui # Give it a 0 for a transaction so it does not change the values self.__updateTransaction(0)
def load(self): ShtikerPage.ShtikerPage.load(self) frameModel = loader.loadModel('phase_3.5/models/gui/suitpage_frame') self.guiTop = NodePath('guiTop') self.guiTop.reparentTo(self) self.frameNode = NodePath('frameNode') self.frameNode.reparentTo(self.guiTop) self.panelNode = NodePath('panelNode') self.panelNode.reparentTo(self.guiTop) self.iconNode = NodePath('iconNode') self.iconNode.reparentTo(self.guiTop) self.enlargedPanelNode = NodePath('enlargedPanelNode') self.enlargedPanelNode.reparentTo(self.guiTop) frameModel.setScale(0.0235, 0.03, 0.045) frameModel.setPos(0, 20, -0.573) frame = frameModel.find('**/frame') frame.wrtReparentTo(self.frameNode) screws = frameModel.find('**/screws') screws.wrtReparentTo(self.iconNode) icons = frameModel.find('**/icons') del frameModel self.title = DirectLabel(parent=self.iconNode, relief=None, text=TTLocalizer.SuitPageTitle, text_scale=0.1, text_pos=(0.04, 0), textMayChange=0) self.radarButtons = [] icon = icons.find('**/corp_icon') self.corpRadarButton = DirectButton(parent=self.iconNode, relief=None, state=DGG.DISABLED, image=icon, image_scale=(0.03375, 1, 0.045), image2_color=Vec4( 1.0, 1.0, 1.0, 0.75), pos=(-0.2, 10, -0.575), command=self.toggleRadar, extraArgs=[0]) self.radarButtons.append(self.corpRadarButton) icon = icons.find('**/legal_icon') self.legalRadarButton = DirectButton(parent=self.iconNode, relief=None, state=DGG.DISABLED, image=icon, image_scale=(0.03375, 1, 0.045), image2_color=Vec4( 1.0, 1.0, 1.0, 0.75), pos=(-0.2, 10, -0.575), command=self.toggleRadar, extraArgs=[1]) self.radarButtons.append(self.legalRadarButton) icon = icons.find('**/money_icon') self.moneyRadarButton = DirectButton(parent=self.iconNode, relief=None, state=DGG.DISABLED, image=(icon, icon, icon), image_scale=(0.03375, 1, 0.045), image2_color=Vec4( 1.0, 1.0, 1.0, 0.75), pos=(-0.2, 10, -0.575), command=self.toggleRadar, extraArgs=[2]) self.radarButtons.append(self.moneyRadarButton) icon = icons.find('**/sales_icon') self.salesRadarButton = DirectButton(parent=self.iconNode, relief=None, state=DGG.DISABLED, image=(icon, icon, icon), image_scale=(0.03375, 1, 0.045), image2_color=Vec4( 1.0, 1.0, 1.0, 0.75), pos=(-0.2, 10, -0.575), command=self.toggleRadar, extraArgs=[3]) self.radarButtons.append(self.salesRadarButton) for radarButton in self.radarButtons: radarButton.building = 0 radarButton.buildingRadarLabel = None gui = loader.loadModel('phase_3.5/models/gui/suitpage_gui') self.panelModel = gui.find('**/card') self.shadowModels = [] for index in range(1, len(SuitDNA.suitHeadTypes) + 1): self.shadowModels.append(gui.find('**/shadow' + str(index))) del gui self.makePanels() self.radarOn = [0, 0, 0, 0] priceScale = 0.1 emblemIcon = loader.loadModel( 'phase_3.5/models/gui/tt_m_gui_gen_emblemIcons') silverModel = emblemIcon.find('**/tt_t_gui_gen_emblemSilver') goldModel = emblemIcon.find('**/tt_t_gui_gen_emblemGold') self.silverLabel = DirectLabel( parent=self, relief=None, pos=(-0.25, 0, -0.69), scale=priceScale, image=silverModel, image_pos=(-0.4, 0, 0.4), text=str(localAvatar.emblems[ToontownGlobals.EmblemTypes.Silver]), text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ALeft) self.goldLabel = DirectLabel( parent=self, relief=None, pos=(0.25, 0, -0.69), scale=priceScale, image=goldModel, image_pos=(-0.4, 0, 0.4), text=str(localAvatar.emblems[ToontownGlobals.EmblemTypes.Gold]), text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_font=ToontownGlobals.getSignFont(), text_align=TextNode.ALeft) if not base.cr.wantEmblems: self.silverLabel.hide() self.goldLabel.hide() self.accept(localAvatar.uniqueName('emblemsChange'), self.__emblemChange) self.guiTop.setZ(0.625) return
def __init__(self, doneEvent, petSeeds): model = loader.loadModel('phase_4/models/gui/PetShopInterface') modelPos = (0, 0, -0.9) modelScale = (0.185, 0.185, 0.185) DirectFrame.__init__(self, relief=None, state='normal', geom=model, geom_scale=modelScale, frameSize=(-1, 1, -1, 1), pos=modelPos, text=TTLocalizer.PetshopChooserTitle, text_wordwrap=26, text_scale=TTLocalizer.PGUIchooserTitle, text_fg=Vec4(0.36, 0.94, 0.93, 1), text_pos=(0, 1.58)) self.initialiseoptions(PetshopGUI.ChoosePetDlg) adoptImageList = (model.find('**/AdoptButtonUp'), model.find('**/AdoptButtonDown'), model.find('**/AdoptButtonRollover'), model.find('**/AdoptButtonRollover')) cancelImageList = (model.find('**/CancelButtonUp'), model.find('**/CancelButtonDown'), model.find('**/CancelButtonRollover')) cancelIcon = model.find('**/CancelIcon') pawLImageList = (model.find('**/Paw1Up'), model.find('**/Paw1Down'), model.find('**/Paw1Rollover')) pawLArrowImageList = model.find('**/Arrow1') pawRImageList = (model.find('**/Paw2Up'), model.find('**/Paw2Down'), model.find('**/Paw2Rollover')) pawRArrowImageList = model.find('**/Arrow2') self.cancelButton = DirectButton( parent=self, relief=None, image=cancelImageList, geom=cancelIcon, scale=modelScale, pressEffect=False, command=lambda: messenger.send(doneEvent, [-1])) self.pawLButton = DirectButton( parent=self, relief=None, image=pawLImageList, geom=pawLArrowImageList, scale=modelScale, pressEffect=False, command=lambda: self.__handlePetChange(-1)) self.pawRButton = DirectButton( parent=self, relief=None, image=pawRImageList, geom=pawRArrowImageList, scale=modelScale, pressEffect=False, command=lambda: self.__handlePetChange(1)) self.okButton = DirectButton( parent=self, relief=None, image=adoptImageList, image3_color=disabledImageColor, scale=modelScale, text=TTLocalizer.PetshopAdopt, text_scale=TTLocalizer.PGUIokButton, text_pos=TTLocalizer.PGUIokButtonPos, text0_fg=text0Color, text1_fg=text1Color, text2_fg=text2Color, text3_fg=text3Color, pressEffect=False, command=lambda: messenger.send(doneEvent, [self.curPet])) self.moneyDisplay = DirectLabel( parent=self, relief=None, text=str(base.localAvatar.getTotalMoney()), text_scale=0.1, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0.34, 0.12), text_font=ToontownGlobals.getSignFont()) self.accept(localAvatar.uniqueName('moneyChange'), self.__moneyChange) self.accept(localAvatar.uniqueName('bankMoneyChange'), self.__moneyChange) self.petView = self.attachNewNode('petView') self.petView.setPos(-0.05, 0, 1.15) model.removeNode() self.petSeeds = petSeeds self.makePetList() self.showPet()