def __init__(self): try: pass except: self.Avatar_initialized = 1 Actor.Actor.__init__(self) self._Avatar__font = ToontownGlobals.getToonFont() self.soundChatBubble = base.loadSfx('phase_3/audio/sfx/GUI_balloon_popup.mp3') self._Avatar__nameVisible = 1 self.nametag = NametagGroup() self.nametag.setAvatar(self) self.nametag.setFont(ToontownGlobals.getInterfaceFont()) self.nametag2dContents = Nametag.CName | Nametag.CSpeech self.nametag2dDist = Nametag.CName | Nametag.CSpeech self.nametag3d = self.attachNewNode('nametag3d') self.dropShadows = [] self.scale = 1.0 self.nametagScale = 1.0 self.height = 0.0 self.name = '' self.style = None self.commonChatFlags = 0 self.understandable = 1 self.setPlayerType(NametagGroup.CCNormal) self._Avatar__chatParagraph = None self._Avatar__chatMessage = None self._Avatar__chatFlags = 0 self._Avatar__chatPageNumber = None self._Avatar__chatAddressee = None self._Avatar__chatSet = 0 self._Avatar__chatLocal = 0 return None
def __init__(self): try: self.Avatar_initialized except: self.Avatar_initialized = 1 Actor.Actor.__init__(self) self.__font = ToontownGlobals.getToonFont() self.soundChatBubble = base.loadSfx( 'phase_3/audio/sfx/GUI_balloon_popup.mp3') self.__nameVisible = 1 self.nametag = NametagGroup() self.nametag.setAvatar(self) self.nametag.setFont(ToontownGlobals.getInterfaceFont()) self.nametag2dContents = Nametag.CName | Nametag.CSpeech self.nametag2dDist = Nametag.CName | Nametag.CSpeech self.nametag3d = self.attachNewNode('nametag3d') self.dropShadows = [] self.scale = 1.0 self.nametagScale = 1.0 self.height = 0.0 self.name = '' self.style = None self.commonChatFlags = 0 self.understandable = 1 self.setPlayerType(NametagGroup.CCNormal) self.__chatParagraph = None self.__chatMessage = None self.__chatFlags = 0 self.__chatPageNumber = None self.__chatAddressee = None self.__chatSet = 0 self.__chatLocal = 0 return None return
def load(self): ClothesGUI.ClothesGUI.load(self) self.cancelButton = DirectButton( relief=None, image=(self.gui.find('**/CrtAtoon_Btn2_UP'), self.gui.find('**/CrtAtoon_Btn2_DOWN'), self.gui.find('**/CrtAtoon_Btn2_RLLVR')), pos=(0.15, 0, -0.85), command=self.__handleCancel, text=('', Localizer.MakeAToonCancel, Localizer.MakeAToonCancel), text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.08, text_pos=(0, -0.03), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1)) self.cancelButton.hide() if self.isOwner: trashcanGui = loader.loadModel( 'phase_3/models/gui/trashcan_gui.bam') trashImage = (trashcanGui.find('**/TrashCan_CLSD'), trashcanGui.find('**/TrashCan_OPEN'), trashcanGui.find('**/TrashCan_RLVR')) self.topTrashButton = DirectButton(image=trashImage, relief=None, text_scale=0.15, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.67, 0, 0.04), command=self.__handleDelete, extraArgs=[ClosetGlobals.SHIRT], scale=(0.5, 0.5, 0.5)) self.bottomTrashButton = DirectButton( image=trashImage, relief=None, text_scale=0.15, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.67, 0, -0.36), command=self.__handleDelete, extraArgs=[ClosetGlobals.SHORTS], scale=(0.5, 0.5, 0.5)) self.button = DirectButton( relief=None, image=(self.gui.find('**/CrtAtoon_Btn1_UP'), self.gui.find('**/CrtAtoon_Btn1_DOWN'), self.gui.find('**/CrtAtoon_Btn1_RLLVR')), pos=(-0.15, 0, -0.85), command=self.__handleButton, text=('', Localizer.MakeAToonDone, Localizer.MakeAToonDone), text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.08, text_pos=(0, -0.03), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1)) trashcanGui.removeNode() return
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 load(self, purchaseModels=None): localLoad = 0 if purchaseModels == None: localLoad = 1 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=Localizer.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.0800000000000001, 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=Localizer.GagShopYouHave % self.toon.getMoney(), text_scale=0.080000000000000002, text_fg=(0.050000000000000003, 0.14000000000000001, 0.40000000000000002, 1)) if self.toon.getMoney() == 1: self.statusLabel['text'] = Localizer.GagShopYouHaveOne if localLoad == 1: purchaseModels.removeNode() return None
def _DistributedHouse__setupNamePlate(self): self.notify.debug('__setupNamePlate') if self.namePlate: self.namePlate.removeNode() del self.namePlate self.namePlate = None nameText = TextNode('nameText') r = self.randomGenerator.random() g = self.randomGenerator.random() b = self.randomGenerator.random() nameText.setTextColor(r, g, b, 1) nameText.setAlign(nameText.ACenter) nameText.setFont(ToontownGlobals.getSignFont()) xScale = 1.0 numLines = 0 if self.name == '': houseName = '' else: (prettyName, numLines, xScale) = self._DistributedHouse__getPrettyName(16) houseName = Localizer.AvatarsHouse % Localizer.GetPossesive( prettyName) nameText.setText(houseName) self.nameText = nameText sign_origin = self.house.find('**/sign_origin') pos = sign_origin.getPos() sign_origin.setPosHpr(pos[0], pos[1], pos[2] + 0.14999999999999999 * numLines, 90, 0, 0) self.namePlate = sign_origin.attachNewNode(self.nameText) self.namePlate.setPos(0, -0.050000000000000003, 0) self.namePlate.setScale(xScale)
def knockKnockTrack(self, avatar, duration): if avatar == None: return None self.rimshot = base.loadSfx('phase_5/audio/sfx/AA_heal_telljoke.mp3') self.knockSfx = base.loadSfx('phase_5/audio/sfx/GUI_knock_3.mp3') joke = KnockKnockJokes[self.propId % len(KnockKnockJokes)] self.nametag = None self.nametagNP = None doorNP = render.find('**/KnockKnockDoorSphere_' + str(self.propId) + ';+s') if doorNP.isEmpty(): self.notify.warning('Could not find KnockKnockDoorSphere_%s' % self.propId) return None self.nametag = NametagGroup() self.nametag.setAvatar(doorNP) self.nametag.setFont(ToontownGlobals.getToonFont()) self.nametag.setName('door') self.nametag.setActive(0) self.nametag.manage(toonbase.marginManager) self.nametag.getNametag3d().setBillboardOffset(4) nametagNode = self.nametag.getNametag3d().upcastToPandaNode() self.nametagNP = render.attachNewNode(nametagNode) self.nametagNP.setName('knockKnockDoor_nt_' + str(self.propId)) pos = doorNP.node().getSolid(0).getCenter() self.nametagNP.setPos(pos + Vec3(0, 0, avatar.getHeight() + 2)) d = duration * 0.125 track = Sequence(Parallel(Sequence(Wait(d * 0.5), SoundInterval(self.knockSfx)), Func(self.nametag.setChat, Localizer.DoorKnockKnock, CFSpeech), Wait(d)), Func(avatar.setChatAbsolute, Localizer.DoorWhosThere, CFSpeech | CFTimeout, openEnded = 0), Wait(d), Func(self.nametag.setChat, joke[0], CFSpeech), Wait(d), Func(avatar.setChatAbsolute, joke[0] + Localizer.DoorWhoAppendix, CFSpeech | CFTimeout, openEnded = 0), Wait(d), Func(self.nametag.setChat, joke[1], CFSpeech), Parallel(SoundInterval(self.rimshot, startTime = 2.0), Wait(d * 4)), Func(self.cleanupTrack)) track.delayDelete = DelayDelete.DelayDelete(avatar) return track
def showLaffString(self, text, duration=0.85, scale=0.7): if self.LaffNumbersEnabled: if text != '': if self.laffNumber: self.hideLaffNumber() self.LaffNumberGenerator.setFont(ToontownGlobals.getSignFont()) self.LaffNumberGenerator.setText(text) self.LaffNumberGenerator.clearShadow() self.LaffNumberGenerator.setAlign(TextNode.ACenter) r = a = 1.0 g = b = 0.0 self.LaffNumberGenerator.setTextColor(r, g, b, a) self.laffNumberNode = self.LaffNumberGenerator.generate() self.laffNumber = self.attachNewNode(self.laffNumberNode) self.laffNumber.setScale(scale) self.laffNumber.setBillboardAxis() self.laffNumber.setPos(0, 0, self.height / 2) seq = Task.sequence( self.laffNumber.lerpPos(Point3(0, 0, self.height + 1.5), 1.0, blendType='easeOut'), Task.pause(duration), self.laffNumber.lerpColor(Vec4(r, g, b, a), Vec4(r, g, b, 0), 0.1), Task.Task(self.hideLaffNumberTask)) taskMgr.add(seq, self.uniqueName('laffNumber')) return None return
def makePanels(self): self.panels = [] xStart = -0.66000000000000003 yStart = -0.17999999999999999 xOffset = 0.19900000000000001 yOffset = 0.28399999999999997 for dept in range(0, len(AvatarDNA.suitDepts)): row = [] color = PANEL_COLORS[dept] for type in range(0, AvatarDNA.suitsPerDept): panel = DirectLabel(parent=self.panelNode, pos=(xStart + type * xOffset, 0.0, yStart - dept * yOffset), relief=None, state=NORMAL, image=self.panelModel, image_scale=(1, 1, 1), image_color=color, text=Localizer.SuitPageMystery, text_scale=0.044999999999999998, text_fg=(0, 0, 0, 1), text_pos=(0, 0.185, 0), text_font=ToontownGlobals.getSuitFont(), text_wordwrap=7) panel.bind(ENTER, self.grow, extraArgs=[panel]) panel.bind(EXIT, self.shrink, extraArgs=[panel]) panel.scale = 0.59999999999999998 panel.setScale(panel.scale) panel.quotaLabel = None panel.head = None panel.shadow = None panel.count = 0 self.addCogRadarLabel(panel) self.panels.append(panel)
def showLaffString(self, text, duration = 0.84999999999999998, scale = 0.69999999999999996): if self.LaffNumbersEnabled: if text != '': if self.laffNumber: self.hideLaffNumber() self.LaffNumberGenerator.setFont(ToontownGlobals.getSignFont()) self.LaffNumberGenerator.setText(text) self.LaffNumberGenerator.clearShadow() self.LaffNumberGenerator.setAlign(TextNode.ACenter) r = 1.0 a = 1.0 g = 0.0 b = 0.0 self.LaffNumberGenerator.setTextColor(r, g, b, a) self.laffNumberNode = self.LaffNumberGenerator.generate() self.laffNumber = self.attachNewNode(self.laffNumberNode) self.laffNumber.setScale(scale) self.laffNumber.setBillboardAxis() self.laffNumber.setPos(0, 0, self.height / 2) seq = Task.sequence(self.laffNumber.lerpPos(Point3(0, 0, self.height + 1.5), 1.0, blendType = 'easeOut'), Task.pause(duration), self.laffNumber.lerpColor(Vec4(r, g, b, a), Vec4(r, g, b, 0), 0.10000000000000001), Task.Task(self.hideLaffNumberTask)) taskMgr.add(seq, self.uniqueName('laffNumber')) return None
def buildFrame(self, name, dnaTuple): frame = loader.loadModelCopy('phase_3.5/models/modules/trophy_frame') dna = AvatarDNA.AvatarDNA() apply(dna.newToonFromProperties, dnaTuple) head = ToonHead.ToonHead() head.setupHead(dna) head.setPosHprScale(0, -0.050000000000000003, -0.050000000000000003, 180, 0, 0, 0.55000000000000004, 0.02, 0.55000000000000004) if dna.head[0] == 'r': head.setZ(-0.14999999999999999) elif dna.head[0] == 'h': head.setZ(0.050000000000000003) elif dna.head[0] == 'm': head.setScale(0.45000000000000001, 0.02, 0.45000000000000001) head.reparentTo(frame) nameText = TextNode('trophy') nameText.setFont(ToontownGlobals.getToonFont()) nameText.setAlign(TextNode.ACenter) nameText.setTextColor(0, 0, 0, 1) nameText.setWordwrap(5.3600000000000003 * FrameScale) nameText.setText(name) namePath = frame.attachNewNode(nameText.generate()) namePath.setPos(0, -0.029999999999999999, -0.59999999999999998) namePath.setScale(0.186 / FrameScale) frame.setScale(FrameScale, 1.0, FrameScale) return frame
def _RoguesGallery__makeGallery(self): self.gallery = hidden.attachNewNode('gallery') self.gallery.setDepthWrite(1) self.gallery.setDepthTest(1) self.suits = [] self.actors = [] self.text = TextNode('rogues') self.text.freeze() self.text.setFont(ToontownGlobals.getInterfaceFont()) self.text.setAlign(TextNode.ACenter) self.text.setTextColor(0.0, 0.0, 0.0, 1.0) self.rowHeight = 0.0 self.minXScale = None print "rognamestr='", self.rognamestr, "'\n" if self.rognamestr == None or len(self.rognamestr) == 0: for dept in AvatarDNA.suitDepts: self._RoguesGallery__makeDept(dept) else: self.suitRow = [] self.rowWidth = 0.0 self._RoguesGallery__makeSuit(None, None, self.rognamestr) self.minXScale = self.xRowSpace / self.rowWidth self.suits.append((self.rowWidth, self.suitRow)) del self.suitRow self._RoguesGallery__rescaleSuits()
def _RoguesGallery__makeGallery(self): self.gallery = hidden.attachNewNode("gallery") self.gallery.setDepthWrite(1) self.gallery.setDepthTest(1) self.suits = [] self.actors = [] self.text = TextNode("rogues") self.text.freeze() self.text.setFont(ToontownGlobals.getInterfaceFont()) self.text.setAlign(TextNode.ACenter) self.text.setTextColor(0.0, 0.0, 0.0, 1.0) self.rowHeight = 0.0 self.minXScale = None print "rognamestr='", self.rognamestr, "'\n" if self.rognamestr == None or len(self.rognamestr) == 0: for dept in AvatarDNA.suitDepts: self._RoguesGallery__makeDept(dept) else: self.suitRow = [] self.rowWidth = 0.0 self._RoguesGallery__makeSuit(None, None, self.rognamestr) self.minXScale = self.xRowSpace / self.rowWidth self.suits.append((self.rowWidth, self.suitRow)) del self.suitRow self._RoguesGallery__rescaleSuits()
def buildFrame(self, name, dnaTuple): frame = loader.loadModelCopy('phase_3.5/models/modules/trophy_frame') dna = AvatarDNA.AvatarDNA() apply(dna.newToonFromProperties, dnaTuple) head = ToonHead.ToonHead() head.setupHead(dna) head.setPosHprScale(0, -0.05, -0.05, 180, 0, 0, 0.55, 0.02, 0.55) if dna.head[0] == 'r': head.setZ(-0.15) else: if dna.head[0] == 'h': head.setZ(0.05) else: if dna.head[0] == 'm': head.setScale(0.45, 0.02, 0.45) head.reparentTo(frame) nameText = TextNode('trophy') nameText.setFont(ToontownGlobals.getToonFont()) nameText.setAlign(TextNode.ACenter) nameText.setTextColor(0, 0, 0, 1) nameText.setWordwrap(5.36 * FrameScale) nameText.setText(name) namePath = frame.attachNewNode(nameText.generate()) namePath.setPos(0, -0.03, -0.6) namePath.setScale(0.186 / FrameScale) frame.setScale(FrameScale, 1.0, FrameScale) return frame
def _DistributedHouse__setupFloorMat(self): if self.floorMat: self.floorMat.removeNode() del self.floorMat self.floorMat = None mat = self.house.find('**/mat') mat.setColor(0.40000000000000002, 0.35699999999999998, 0.25900000000000001, 1.0) color = HouseGlobals.houseColors[self.housePosInd] matText = TextNode('matText') matText.setTextColor(color[0], color[1], color[2], 1) matText.setAlign(matText.ACenter) matText.setFont(ToontownGlobals.getSignFont()) xScale = 1.0 numLines = 0 if self.name == '': houseName = '' else: (prettyName, numLines, xScale) = self._DistributedHouse__getPrettyName(9) houseName = Localizer.AvatarsHouse % Localizer.GetPossesive( prettyName) matText.setText(houseName) self.matText = matText mat_origin = self.house.find('**/mat_origin') pos = mat_origin.getPos() mat_origin.setPosHpr(pos[0] - 0.14999999999999999 * numLines, pos[1], pos[2], 90, -90, 0) self.floorMat = mat_origin.attachNewNode(self.matText) self.floorMat.setPos(0, -0.025000000000000001, 0) self.floorMat.setScale(0.5 * xScale)
def __init__(self): self.__expectedCount = 0 self.__count = 0 self.gui = loader.loadModel( 'phase_3/models/gui/progress-background.bam') self.banner = loader.loadModel( 'phase_3/models/gui/toon_council.bam').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=(0, 0, -0.77), text='', textMayChange=1, text_scale=0.15, text_fg=(0, 0, 0.5, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getSignFont()) self.waitBar = DirectWaitBar(guiId='ToontownLoadingScreenWaitBar', parent=self.gui, frameSize=(-1.06, 1.06, -0.03, 0.03), pos=(0, 0, -0.85), text='') return
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.defineConstants() self.music = base.loadMusic('phase_4/audio/bgm/MG_toontag.mid') self.sndAmbience = base.loadSfx('phase_4/audio/sfx/AV_ambient_water.mp3') self.sndPerfect = base.loadSfx('phase_4/audio/sfx/ring_perfect.mp3') loadBase = 'phase_4/models/minigames/' self.environModel = loader.loadModel(loadBase + 'swimming_game.bam') self.environModel.setPos(0, self.ENVIRON_LENGTH / 2.0, self.SEA_FLOOR_Z) self.environModel.flattenMedium() self.ringModel = loader.loadModel(loadBase + 'swimming_game_ring.bam') self.ringModel.setTransparency(1) modelRadius = 4.0 self.ringModel.setScale(RingGameGlobals.RING_RADIUS / modelRadius) self.ringModel.flattenMedium() self.dropShadowModel = loader.loadModel('phase_3/models/props/drop_shadow') self.dropShadowModel.setColor(0, 0, 0, 0.5) self.dropShadowModel.flattenMedium() self.toonDropShadows = [] self.ringDropShadows = [] self._DistributedRingGame__textGen = TextNode('ringGame') self._DistributedRingGame__textGen.freeze() self._DistributedRingGame__textGen.setFont(ToontownGlobals.getSignFont()) self._DistributedRingGame__textGen.setAlign(TextNode.ACenter)
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.defineConstants() self.music = base.loadMusic('phase_4/audio/bgm/MG_toontag.mid') self.sndAmbience = base.loadSfx( 'phase_4/audio/sfx/AV_ambient_water.mp3') self.sndPerfect = base.loadSfx('phase_4/audio/sfx/ring_perfect.mp3') loadBase = 'phase_4/models/minigames/' self.environModel = loader.loadModel(loadBase + 'swimming_game.bam') self.environModel.setPos(0, self.ENVIRON_LENGTH / 2.0, self.SEA_FLOOR_Z) self.environModel.flattenMedium() self.ringModel = loader.loadModel(loadBase + 'swimming_game_ring.bam') self.ringModel.setTransparency(1) modelRadius = 4.0 self.ringModel.setScale(RingGameGlobals.RING_RADIUS / modelRadius) self.ringModel.flattenMedium() self.dropShadowModel = loader.loadModel( 'phase_3/models/props/drop_shadow') self.dropShadowModel.setColor(0, 0, 0, 0.5) self.dropShadowModel.flattenMedium() self.toonDropShadows = [] self.ringDropShadows = [] self.__textGen = TextNode('ringGame') self.__textGen.freeze() self.__textGen.setFont(ToontownGlobals.getSignFont()) self.__textGen.setAlign(TextNode.ACenter)
def showfont(self, fontname): fontname = string.strip(string.lower(fontname)) if fontname == '' or fontname == 'interface': font = ToontownGlobals.getInterfaceFont() else: if fontname == 'toon': font = ToontownGlobals.getToonFont() else: if fontname == 'suit': font = ToontownGlobals.getSuitFont() else: if fontname == 'sign': font = ToontownGlobals.getSignFont() else: self.setMagicWordResponse('Unknown font: %s' % fontname) return if not isinstance(font, DynamicTextFont): self.setMagicWordResponse('Font %s is not dynamic.' % fontname) return self.hidefont() self.shownFontNode = aspect2d.attachNewNode('shownFont') tn = TextNode('square') tn.freeze() tn.setCardActual(0.0, 1.0, -1.0, 0.0) tn.setFrameActual(0.0, 1.0, -1.0, 0.0) tn.setCardColor(1, 1, 1, 0.5) tn.setFrameColor(1, 1, 1, 1) tn.setFont(font) tn.setText(' ') numXPages = 2 numYPages = 2 pageScale = 0.8 pageMargin = 0.1 numPages = font.getNumPages() x = 0 y = 0 for pi in range(numPages): page = font.getPage(pi) tn.setCardTexture(page) np = self.shownFontNode.attachNewNode(tn.generate()) np.setScale(pageScale) ( np.setPos(float(x) / numXPages * 2 - 1 + pageMargin, 0, 1 - float(y) / numYPages * 2 - pageMargin),) x += 1 if x >= numXPages: y += 1
def load(self): ShtikerPage.ShtikerPage.load(self) self.title = DirectLabel(parent=self, relief=None, text=Localizer.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=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=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=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(toonbase.localToon.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 __init__(self, cr): try: self.LocalAvatar_initialized except: self.LocalAvatar_initialized = 1 DistributedAvatar.DistributedAvatar.__init__(self, cr) DistributedSmoothNode.DistributedSmoothNode.__init__(self, cr) self.initializeCollisions() self.initializeSmartCamera() self.animMultiplier = 1.0 self.customMessages = [] self.soundRun = base.loadSfx( 'phase_3.5/audio/sfx/AV_footstep_runloop.wav') self.soundWalk = base.loadSfx( 'phase_3.5/audio/sfx/AV_footstep_walkloop.wav') self.soundWhisper = base.loadSfx( 'phase_3.5/audio/sfx/GUI_whisper_3.mp3') self.positionExaminer = PositionExaminer.PositionExaminer() friendsGui = loader.loadModelOnce( 'phase_3.5/models/gui/friendslist_gui') friendsButtonNormal = friendsGui.find('**/FriendsBox_Closed') friendsButtonPressed = friendsGui.find('**/FriendsBox_Rollover') friendsButtonRollover = friendsGui.find('**/FriendsBox_Rollover') self.bFriendsList = DirectButton( image=(friendsButtonNormal, friendsButtonPressed, friendsButtonRollover), relief=None, pos=(1.192, 0, 0.875), scale=0.8, text=('', Localizer.FriendsListLabel, Localizer.FriendsListLabel), text_scale=0.09, text_fg=Vec4(1, 1, 1, 1), text_shadow=Vec4(0, 0, 0, 1), text_pos=(0, -0.18), text_font=ToontownGlobals.getInterfaceFont(), command=self.sendFriendsListEvent) self.bFriendsList.hide() self.friendsListButtonActive = 0 self.friendsListButtonObscured = 0 friendsGui.removeNode() self.chatMgr = ChatManager.ChatManager() self.commonChatFlags = 0 self.garbleChat = 1 self.isPageUp = 0 self.isPageDown = 0 self.sleepFlag = 0 self.movingFlag = 0 self.lastNeedH = None self.accept('friendOnline', self.__friendOnline) self.accept('friendOffline', self.__friendOffline) self.accept('clickedWhisper', self.__clickedWhisper) self.sleepCallback = None self.accept('wakeup', self.wakeUp) return None return
def _DistributedRingGame__initTallyDisplay(self): self._DistributedRingGame__tallyTextNode = TextNode('tally') self._DistributedRingGame__tallyTextNode.freeze() 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 showfont(self, fontname): fontname = string.strip(string.lower(fontname)) if fontname == '' or fontname == 'interface': font = ToontownGlobals.getInterfaceFont() elif fontname == 'toon': font = ToontownGlobals.getToonFont() elif fontname == 'suit': font = ToontownGlobals.getSuitFont() elif fontname == 'sign': font = ToontownGlobals.getSignFont() else: self.setMagicWordResponse('Unknown font: %s' % fontname) return None if not isinstance(font, DynamicTextFont): self.setMagicWordResponse('Font %s is not dynamic.' % fontname) return None self.hidefont() self.shownFontNode = aspect2d.attachNewNode('shownFont') tn = TextNode('square') tn.freeze() tn.setCardActual(0.0, 1.0, -1.0, 0.0) tn.setFrameActual(0.0, 1.0, -1.0, 0.0) tn.setCardColor(1, 1, 1, 0.5) tn.setFrameColor(1, 1, 1, 1) tn.setFont(font) tn.setText(' ') numXPages = 2 numYPages = 2 pageScale = 0.80000000000000004 pageMargin = 0.10000000000000001 numPages = font.getNumPages() x = 0 y = 0 for pi in range(numPages): page = font.getPage(pi) tn.setCardTexture(page) np = self.shownFontNode.attachNewNode(tn.generate()) np.setScale(pageScale) (np.setPos(((float(x) / numXPages) * 2 - 1) + pageMargin, 0, 1 - (float(y) / numYPages) * 2 - pageMargin), ) x += 1 if x >= numXPages: y += 1
def addCogRadarLabel(self, panel): cogRadarLabel = DirectLabel(parent=panel, pos=(0.0, 0.0, -0.215), relief=None, state=DISABLED, text='', text_scale=0.050000000000000003, text_fg=(0, 0, 0, 1), text_font=ToontownGlobals.getSuitFont()) panel.cogRadarLabel = cogRadarLabel
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.raceBoard = loader.loadModel('phase_4/models/minigames/race') self.raceBoard.setPosHpr(0, 0, 0, 0, 0, 0) self.raceBoard.setScale(0.8) self.dice = loader.loadModel('phase_4/models/minigames/dice') self.dice1 = self.dice.find('**/dice_button1') self.dice2 = self.dice.find('**/dice_button2') self.dice3 = self.dice.find('**/dice_button3') self.dice4 = self.dice.find('**/dice_button4') self.diceList = [self.dice1, self.dice2, self.dice3, self.dice4] self.music = base.loadMusic('phase_4/audio/bgm/minigame_race.mid') self.posBuzzer = base.loadSfx('phase_4/audio/sfx/MG_pos_buzzer.wav') self.negBuzzer = base.loadSfx('phase_4/audio/sfx/MG_neg_buzzer.wav') self.winSting = base.loadSfx('phase_4/audio/sfx/MG_win.mp3') self.loseSting = base.loadSfx('phase_4/audio/sfx/MG_lose.mp3') self.diceButtonList = [] for i in range(1, 5): button = self.dice.find('**/dice_button' + str(i)) button_down = self.dice.find('**/dice_button' + str(i) + '_down') button_ro = self.dice.find('**/dice_button' + str(i) + '_ro') diceButton = DirectButton(image=(button, button_down, button_ro, None), relief=None, pos=(-0.9 + (i - 1) * 0.2, 0.0, -0.85), scale=0.25, command=self.handleInputChoice, extraArgs=[i]) diceButton.hide() self.diceButtonList.append(diceButton) self.waitingChoicesLabel = DirectLabel( text=Localizer.RaceGameWaitingChoices, text_fg=VBase4(1, 1, 1, 1), relief=None, pos=(-0.6, 0, -0.75), scale=0.075) self.waitingChoicesLabel.hide() self.chanceMarker = loader.loadModelOnce( 'phase_4/models/minigames/question_mark') self.chanceCard = loader.loadModelOnce( 'phase_4/models/minigames/chance_card') self.chanceCard.text = OnscreenText('', fg=(1.0, 0, 0, 1), scale=0.14, font=ToontownGlobals.getSignFont(), wordwrap=14, pos=(0.0, 0.2), mayChange=1) self.chanceCard.text.hide() self.cardSound = base.loadSfx( 'phase_3.5/audio/sfx/GUI_stickerbook_turn.mp3') self.chanceMarkers = [] return
def fitLabel(self, label, lineNo = 0): text = label['text'] label['text_scale'] = TEXT_SCALE label['text_wordwrap'] = TEXT_WORDWRAP if len(text) > 0: lines = text.split('\n') lineWidth = ToontownGlobals.getInterfaceFont().calcWidth(lines[lineNo]) if lineWidth > 0: textScale = POSTER_WIDTH / lineWidth label['text_scale'] = min(TEXT_SCALE, textScale) label['text_wordwrap'] = max(TEXT_WORDWRAP, lineWidth + 0.050000000000000003)
def showDebugPointText(self, text, point): if not hasattr(self, 'debugText'): self.debugText = self.loader.geom.attachNewNode('debugText') self.debugTextNode = TextNode('debugTextNode') self.debugTextNode.freeze() self.debugTextNode.setTextColor(1, 0, 0, 1) self.debugTextNode.setAlign(TextNode.ACenter) self.debugTextNode.setFont(ToontownGlobals.getSignFont()) self.debugTextNode.setText(text) np = self.debugText.attachNewNode(self.debugTextNode.generate()) np.setPos(point[0], point[1], point[2]) np.setScale(4.0) np.setBillboardPointEye()
def showLaffNumber(self, number, bonus=0): if self.LaffNumbersEnabled: if number != 0: if self.laffNumber: self.hideLaffNumber() self.LaffNumberGenerator.setFont(ToontownGlobals.getSignFont()) if number < 0: self.LaffNumberGenerator.setText(str(number)) else: self.LaffNumberGenerator.setText('+' + str(number)) self.LaffNumberGenerator.clearShadow() self.LaffNumberGenerator.setAlign(TextNode.ACenter) if bonus == 1: r = 1.0 g = 1.0 b = 0 a = 1 else: if bonus == 2: r = 1.0 g = 0.5 b = 0 a = 1 else: if number < 0: r = 0.9 g = 0 b = 0 a = 1 else: r = 0 g = 0.9 b = 0 a = 1 self.LaffNumberGenerator.setTextColor(r, g, b, a) self.laffNumberNode = self.LaffNumberGenerator.generate() self.laffNumber = self.attachNewNode(self.laffNumberNode) self.laffNumber.setBillboardAxis() self.laffNumber.setBin('fixed', 100) self.laffNumber.setPos(0, 0, self.height / 2) seq = Task.sequence( self.laffNumber.lerpPos(Point3(0, 0, self.height + 1.5), 1.0, blendType='easeOut'), Task.pause(0.85), self.laffNumber.lerpColor(Vec4(r, g, b, a), Vec4(r, g, b, 0), 0.1), Task.Task(self.hideLaffNumberTask)) taskMgr.add(seq, self.uniqueName('laffNumber')) return None return
def enterWaitCountdown(self, ts): self._DistributedTrolley__enableCollisions() self.accept('trolleyExitButton', self.handleExitButton) self.clockNode = TextNode('trolleyClock') self.clockNode.setFont(ToontownGlobals.getSignFont()) self.clockNode.setAlign(TextNode.ACenter) self.clockNode.setTextColor(0.90000000000000002, 0.10000000000000001, 0.10000000000000001, 1) self.clockNode.setText('10') self.clock = self.trolleyStation.attachNewNode(self.clockNode) self.clock.setBillboardAxis() self.clock.setPosHprScale(15.859999999999999, 13.82, 11.68, -0.0, 0.0, 0.0, 3.02, 3.02, 3.02) if ts < self.trolleyCountdownTime: self.countdown(self.trolleyCountdownTime - ts) return None
def setupNametag(self): if ZoneUtil.isInterior(self.zoneId): return None if self.nametag == None: self.nametag = NametagGroup() self.nametag.setFont(ToontownGlobals.getSignFont()) self.nametag.setContents(Nametag.CName) self.nametag.setColorCode(NametagGroup.CCToonBuilding) self.nametag.setActive(0) self.nametag.setAvatar(self.getDoorNodePath()) self.nametag.setObjectCode(self.block) name = self.cr.playGame.dnaStore.getTitleFromBlockNumber(self.block) self.nametag.setName(name) self.nametag.manage(toonbase.marginManager)
def displayWhisper(self, fromId, chatString, whisperType): sender = None if fromId != 0: sender = toonbase.tcr.identifyAvatar(fromId) if whisperType == WhisperPopup.WTNormal or whisperType == WhisperPopup.WTQuickTalker: if sender == None: return chatString = sender.getName() + ': ' + chatString whisper = WhisperPopup(chatString, ToontownGlobals.getInterfaceFont(), whisperType) if sender != None: whisper.setClickable(sender.getName(), fromId) whisper.manage(toonbase.marginManager) base.playSfx(self.soundWhisper) return
def setupNametag(self): if self.nametag == None: self.nametag = NametagGroup() self.nametag.setFont(ToontownGlobals.getSignFont()) self.nametag.setContents(Nametag.CName) self.nametag.setColorCode(NametagGroup.CCSuitBuilding) self.nametag.setActive(0) self.nametag.setAvatar(self.bldg.getElevatorNodePath()) name = self.cr.playGame.dnaStore.getTitleFromBlockNumber(self.bldg.block) if name: name += ', Inc.' else: name = 'COGS, Inc.' self.nametag.setName(name) self.nametag.manage(toonbase.marginManager)
def knockKnockTrack(self, avatar, duration): if avatar == None: return None self.rimshot = base.loadSfx('phase_5/audio/sfx/AA_heal_telljoke.mp3') self.knockSfx = base.loadSfx('phase_5/audio/sfx/GUI_knock_3.mp3') joke = KnockKnockJokes[self.propId % len(KnockKnockJokes)] self.nametag = None self.nametagNP = None doorNP = render.find('**/KnockKnockDoorSphere_' + str(self.propId) + ';+s') if doorNP.isEmpty(): self.notify.warning('Could not find KnockKnockDoorSphere_%s' % self.propId) return None self.nametag = NametagGroup() self.nametag.setAvatar(doorNP) self.nametag.setFont(ToontownGlobals.getToonFont()) self.nametag.setName('door') self.nametag.setActive(0) self.nametag.manage(toonbase.marginManager) self.nametag.getNametag3d().setBillboardOffset(4) nametagNode = self.nametag.getNametag3d().upcastToPandaNode() self.nametagNP = render.attachNewNode(nametagNode) self.nametagNP.setName('knockKnockDoor_nt_' + str(self.propId)) pos = doorNP.node().getSolid(0).getCenter() self.nametagNP.setPos(pos + Vec3(0, 0, avatar.getHeight() + 2)) d = duration * 0.125 track = Sequence( Parallel( Sequence(Wait(d * 0.5), SoundInterval(self.knockSfx)), Func(self.nametag.setChat, Localizer.DoorKnockKnock, CFSpeech), Wait(d)), Func(avatar.setChatAbsolute, Localizer.DoorWhosThere, CFSpeech | CFTimeout, openEnded=0), Wait(d), Func(self.nametag.setChat, joke[0], CFSpeech), Wait(d), Func(avatar.setChatAbsolute, joke[0] + Localizer.DoorWhoAppendix, CFSpeech | CFTimeout, openEnded=0), Wait(d), Func(self.nametag.setChat, joke[1], CFSpeech), Parallel(SoundInterval(self.rimshot, startTime=2.0), Wait(d * 4)), Func(self.cleanupTrack)) track.delayDelete = DelayDelete.DelayDelete(avatar) return track
def addQuotaLabel(self, panel): index = self.panels.index(panel) count = str(toonbase.localToon.cogCounts[index]) if toonbase.localToon.cogs[index] < COG_COMPLETE1: quota = str(COG_QUOTAS[0][index % AvatarDNA.suitsPerDept]) else: quota = str(COG_QUOTAS[1][index % AvatarDNA.suitsPerDept]) quotaLabel = DirectLabel(parent=panel, pos=(0.0, 0.0, -0.215), relief=None, state=DISABLED, text=count + ' of ' + quota, text_scale=0.065000000000000002, text_fg=(0, 0, 0, 1), text_font=ToontownGlobals.getSuitFont()) panel.quotaLabel = quotaLabel
def setupSuitBuilding(self, nodePath): dnaStore = self.cr.playGame.dnaStore level = int(self.difficulty / 2) + 1 suitNP = dnaStore.findNode('suit_landmark_' + chr(self.track) + str(level)) zoneId = dnaStore.getZoneFromBlockNumber(self.block) newParentNP = toonbase.tcr.playGame.hood.loader.zoneDict[zoneId] suitBuildingNP = suitNP.copyTo(newParentNP) buildingTitle = dnaStore.getTitleFromBlockNumber(self.block) if buildingTitle: buildingTitle += ', Inc.' else: buildingTitle = 'COGS, Inc.' buildingTitle += '\n%s' % AvatarDNA.getDeptFullname(chr(self.track)) textNode = TextNode('sign') textNode.freeze() textNode.setTextColor(1.0, 1.0, 1.0, 1.0) textNode.setFont(ToontownGlobals.getSuitFont()) textNode.setAlign(TextNode.ACenter) textNode.setWordwrap(17.0) textNode.setText(buildingTitle) textHeight = textNode.getHeight() zScale = (textHeight + 2) / 3.0 signOrigin = suitBuildingNP.find('**/sign_origin;+s') backgroundNP = loader.loadModel('phase_5/models/modules/suit_sign') backgroundNP.reparentTo(signOrigin) backgroundNP.setPosHprScale(0.0, 0.0, textHeight * 0.80000000000000004 / zScale, 0.0, 0.0, 0.0, 8.0, 8.0, 8.0 * zScale) backgroundNP.node().setEffect(DecalEffect.make()) signTextNodePath = backgroundNP.attachNewNode(textNode.generate()) signTextNodePath.setPosHprScale( 0.0, 0.0, -0.20999999999999999 + textHeight * 0.10000000000000001 / zScale, 0.0, 0.0, 0.0, 0.10000000000000001, 0.10000000000000001, 0.10000000000000001 / zScale) signTextNodePath.setColor(1.0, 1.0, 1.0, 1.0) frontNP = suitBuildingNP.find('**/*_front/+GeomNode;+s') backgroundNP.wrtReparentTo(frontNP) frontNP.node().setEffect(DecalEffect.make()) suitBuildingNP.setName('sb' + str(self.block) + ':_landmark__DNARoot') suitBuildingNP.setPosHprScale(nodePath, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) suitBuildingNP.flattenMedium() self.loadElevator(suitBuildingNP) return suitBuildingNP
def __setupNametag(self): if self.nametag: self.clearNametag() if self.name == '': houseName = '' else: houseName = Localizer.AvatarsHouse % Localizer.GetPossesive( self.name) self.nametag = NametagGroup() self.nametag.setFont(ToontownGlobals.getSignFont()) self.nametag.setContents(Nametag.CName) self.nametag.setColorCode(NametagGroup.CCHouseBuilding) self.nametag.setActive(0) self.nametag.setAvatar(self.house) self.nametag.setObjectCode(self.doId) self.nametag.setName(houseName) self.nametag.manage(toonbase.marginManager)
def enterWaitCountdown(self, ts): self.elevatorSphereNodePath.unstash() self.forceDoorsOpen() self.accept(self.uniqueName('enterelevatorSphere'), self.handleEnterSphere) self.accept(self.uniqueName('enterElevatorOK'), self.handleEnterElevator) self.accept('elevatorExitButton', self.handleExitButton) 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(ELEVATOR_COUNTDOWN_TIME)) self.clock = self.bldg.getElevatorNodePath().attachNewNode(self.clockNode) self.clock.setPosHprScale(0, 6.4000000000000004, 6.0, 0, 0, 0, 2.0, 2.0, 2.0) if ts < ELEVATOR_COUNTDOWN_TIME: self.countdown(ELEVATOR_COUNTDOWN_TIME - ts) return None
def setupNametag(self): if self.nametag == None: self.nametag = NametagGroup() self.nametag.setFont(ToontownGlobals.getSignFont()) self.nametag.setContents(Nametag.CName) self.nametag.setColorCode(NametagGroup.CCSuitBuilding) self.nametag.setActive(0) self.nametag.setAvatar(self.bldg.getElevatorNodePath()) name = self.cr.playGame.dnaStore.getTitleFromBlockNumber( self.bldg.block) if name: name += ', Inc.' else: name = 'COGS, Inc.' self.nametag.setName(name) self.nametag.manage(toonbase.marginManager) return
def loadAirplane(self): self.airplane = loader.loadModel('phase_4/models/props/airplane.bam') self.airplane.setScale(8) self.airplane.setPos(0, 0, 1) self.banner = self.airplane.find('**/*banner') bannerText = TextNode('bannerText') bannerText.freeze() 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() self.__startAirplaneTask() self.airplane.reparentTo(render)
def showLaffNumber(self, number, bonus = 0): if self.LaffNumbersEnabled: if number != 0: if self.laffNumber: self.hideLaffNumber() self.LaffNumberGenerator.setFont(ToontownGlobals.getSignFont()) if number < 0: self.LaffNumberGenerator.setText(str(number)) else: self.LaffNumberGenerator.setText('+' + str(number)) self.LaffNumberGenerator.clearShadow() self.LaffNumberGenerator.setAlign(TextNode.ACenter) if bonus == 1: r = 1.0 g = 1.0 b = 0 a = 1 elif bonus == 2: r = 1.0 g = 0.5 b = 0 a = 1 elif number < 0: r = 0.90000000000000002 g = 0 b = 0 a = 1 else: r = 0 g = 0.90000000000000002 b = 0 a = 1 self.LaffNumberGenerator.setTextColor(r, g, b, a) self.laffNumberNode = self.LaffNumberGenerator.generate() self.laffNumber = self.attachNewNode(self.laffNumberNode) self.laffNumber.setBillboardAxis() self.laffNumber.setBin('fixed', 100) self.laffNumber.setPos(0, 0, self.height / 2) seq = Task.sequence(self.laffNumber.lerpPos(Point3(0, 0, self.height + 1.5), 1.0, blendType = 'easeOut'), Task.pause(0.84999999999999998), self.laffNumber.lerpColor(Vec4(r, g, b, a), Vec4(r, g, b, 0), 0.10000000000000001), Task.Task(self.hideLaffNumberTask)) taskMgr.add(seq, self.uniqueName('laffNumber')) return None
def __init__(self): try: pass except: self.Suit_initialized = 1 Avatar.Avatar.__init__(self) self.setFont(ToontownGlobals.getSuitFont()) self.setPlayerType(NametagGroup.CCSuit) self.setPickable(1) self.leftHand = None self.rightHand = None self.shadowNull = None self.nametagNull = None self.headParts = [] self.healthBar = None self.healthCondition = 0 return None
def load(self, isPaid): if self.isLoaded == 1: return None self.isPaid = isPaid gui = loader.loadModelOnce('phase_3/models/gui/pick_a_toon_gui') gui2 = loader.loadModelOnce('phase_3/models/gui/quit_button') self.pickAToonBG = gui.find('**/av-chooser_FnlBG') self.pickAToonBG.reparentTo(hidden) self.pickAToonBG.setPos(0.0, 2.73, 0.0) self.pickAToonBG.setScale(1, 1, 1) self.title = OnscreenText(Localizer.AvatarChooserPickAToon, scale = 0.125, parent = hidden, font = ToontownGlobals.getSignFont(), fg = (1, 0.90000000000000002, 0.10000000000000001, 1), pos = (0.0, 0.81999999999999995)) self.quitButton = DirectButton(image = (gui.find('**/QuitBtn_UP'), gui.find('**/QuitBtn_DN'), gui.find('**/QuitBtn_RLVR')), relief = None, text = Localizer.AvatarChooserQuit, text_font = ToontownGlobals.getSignFont(), text0_fg = (0.152, 0.75, 0.25800000000000001, 1), text1_fg = (0.152, 0.75, 0.25800000000000001, 1), text2_fg = (0.97699999999999998, 0.81599999999999995, 0.13300000000000001, 1), text_pos = (0, -0.035000000000000003), text_scale = 0.10000000000000001, scale = 1.05, pos = (0, 0, -0.92400000000000004), command = self._AvatarChooser__handleQuit) self.logoutButton = DirectButton(relief = None, image = (gui2.find('**/QuitBtn_UP'), gui2.find('**/QuitBtn_DN'), gui2.find('**/QuitBtn_RLVR')), image_scale = 1.1499999999999999, text = Localizer.OptionsPageLogout, text_font = ToontownGlobals.getSignFont(), text0_fg = (0.152, 0.75, 0.25800000000000001, 1), text1_fg = (0.152, 0.75, 0.25800000000000001, 1), text2_fg = (0.97699999999999998, 0.81599999999999995, 0.13300000000000001, 1), text_scale = 0.10000000000000001, text_pos = (0, -0.035000000000000003), pos = (1.105, 0, -0.92400000000000004), scale = 0.5, command = self._AvatarChooser__handleLogoutWithoutConfirm) self.logoutButton.hide() gui.removeNode() gui2.removeNode() self.panelList = [] used_position_indexs = [] for av in self.avatarList: panel = AvatarChoice.AvatarChoice(av, position = av.position, paid = isPaid) panel.setPos(POSITIONS[av.position]) panel['image_color'] = COLORS[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) panel.setPos(POSITIONS[panelNum]) panel['image_color'] = COLORS[panelNum] self.panelList.append(panel) if len(self.avatarList) > 0: self.initLookAtInfo() self.isLoaded = 1
def __init__(self, doneEvent, allowWithdraw = 1): DirectFrame.__init__(self, relief = None, geom = getDefaultDialogGeom(), geom_color = ToontownGlobals.GlobalDialogColor, geom_scale = (1.3300000000000001, 1, 1.1000000000000001), pos = (0, 0, 0)) self.initialiseoptions(BankGui) self.doneEvent = doneEvent self._BankGui__transactionAmount = 0 buttons = loader.loadModelOnce('phase_3/models/gui/dialog_box_buttons_gui') jarGui = loader.loadModel('phase_3.5/models/gui/jar_gui') arrowGui = loader.loadModelOnce('phase_3/models/gui/create_a_toon_gui') bankModel = loader.loadModel('phase_5.5/models/estate/jellybeanBank.bam') bankModel.find('**/pig').setDepthWrite(1) bankModel.find('**/pig').setDepthTest(1) 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.20000000000000001, 0, -0.40000000000000002), text = Localizer.BankGuiCancel, text_scale = 0.059999999999999998, text_pos = (0, -0.10000000000000001), command = self._BankGui__cancel) self.okButton = DirectButton(parent = self, relief = None, image = okImageList, pos = (0.20000000000000001, 0, -0.40000000000000002), text = Localizer.BankGuiOk, text_scale = 0.059999999999999998, text_pos = (0, -0.10000000000000001), command = self._BankGui__requestTransaction) self.jarDisplay = DirectLabel(parent = self, relief = None, pos = (-0.40000000000000002, 0, 0), scale = 0.80000000000000004, text = str(toonbase.localToon.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 = jarGui.find('**/Jar'), text_font = ToontownGlobals.getSignFont()) self.bankDisplay = DirectLabel(parent = self, relief = None, pos = (0.40000000000000002, 0, 0), scale = 1.1000000000000001, text = str(toonbase.localToon.getBankMoney()), text_scale = 0.20000000000000001, text_fg = (0.94999999999999996, 0.94999999999999996, 0, 1), text_shadow = (0, 0, 0, 1), text_pos = (0, -0.10000000000000001, 0), geom = bankModel, geom_scale = 0.080000000000000002, geom_pos = (0, 10, -0.26000000000000001), 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.59999999999999998, 0.59999999999999998, 0.59999999999999998, 0.25), pos = (0.01, 0, 0.14999999999999999)) self.withdrawArrow = DirectButton(parent = self, relief = None, image = arrowImageList, image_scale = (-1, 1, 1), image3_color = Vec4(0.59999999999999998, 0.59999999999999998, 0.59999999999999998, 0.25), pos = (-0.01, 0, -0.14999999999999999)) self.depositArrow.bind(B1PRESS, self._BankGui__depositButtonDown) self.depositArrow.bind(B1RELEASE, self._BankGui__depositButtonUp) self.withdrawArrow.bind(B1PRESS, self._BankGui__withdrawButtonDown) self.withdrawArrow.bind(B1RELEASE, self._BankGui__withdrawButtonUp) if allowWithdraw: self.depositArrow.setPos(0.01, 0, 0.14999999999999999) self.withdrawArrow.setPos(-0.01, 0, -0.14999999999999999) else: self.depositArrow.setPos(0, 0, 0) self.withdrawArrow.hide() buttons.removeNode() jarGui.removeNode() arrowGui.removeNode() self._BankGui__updateTransaction(0)
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.timer = ToontownTimer.ToontownTimer() self.timer.posInTopRightCorner() self.timer.hide() self.room = loader.loadModel('phase_4/models/minigames/matching_room') self.buttonSounds = [] for soundName in self.ButtonSoundNames: self.buttonSounds.append(base.loadSfx(soundName)) self.correctSound = base.loadSfx('phase_4/audio/sfx/MG_pos_buzzer.wav') self.incorrectSound = base.loadSfx('phase_4/audio/sfx/MG_neg_buzzer.wav') self.perfectSound = base.loadSfx('phase_4/audio/sfx/MG_win.mp3') self.fallSound = base.loadSfx('phase_4/audio/sfx/Mg_Tag_A.mp3') self.music = base.loadMusic(self.bgm) self.waitingText = DirectLabel(text = self.strPleaseWait, text_fg = (0.90000000000000002, 0.90000000000000002, 0.90000000000000002, 1.0), frameColor = (1, 1, 1, 0), text_font = ToontownGlobals.getSignFont(), pos = (0, 0, -0.78000000000000003), scale = 0.12) self.roundText = DirectLabel(text = 'Round 1!', text_fg = self.normalTextColor, frameColor = (1, 1, 1, 0), text_font = ToontownGlobals.getSignFont(), pos = (0.014, 0, -0.83999999999999997), scale = 0.12) self.roundText.hide() self.waitingText.hide() matchingGameGui = loader.loadModel('phase_3.5/models/gui/matching_game_gui') minnieArrow = matchingGameGui.find('**/minnieArrow') minnieX = matchingGameGui.find('**/minnieX') minnieCircle = matchingGameGui.find('**/minnieCircle') self.arrows = [ None] * 5 for x in range(0, 5): self.arrows[x] = minnieArrow.copyTo(hidden) self.arrows[x].hide() self.xs = [ None] * 5 for x in range(0, 5): self.xs[x] = minnieX.copyTo(hidden) self.xs[x].hide() self.statusBalls = [] self.totalMoves = PatternGameGlobals.INITIAL_ROUND_LENGTH + PatternGameGlobals.ROUND_LENGTH_INCREMENT * (PatternGameGlobals.NUM_ROUNDS - 1) for x in range(0, 4): self.statusBalls.append([ None] * self.totalMoves) for x in range(0, 4): for y in range(0, self.totalMoves): self.statusBalls[x][y] = minnieCircle.copyTo(hidden) self.statusBalls[x][y].hide() minnieArrow.removeNode() minnieX.removeNode() minnieCircle.removeNode() matchingGameGui.removeNode() self.minnie = Char.Char() m = self.minnie dna = AvatarDNA.AvatarDNA() dna.newChar('mn') m.setDNA(dna) m.setName(Localizer.Minnie) m.reparentTo(hidden) self.backRowHome = Point3(3, 11, 0) self.backRowXSpacing = 1.8 self.frontRowHome = Point3(0, 18, 0) self.frontRowXSpacing = 3.0 self.stdNumDanceStepPingFrames = self.minnie.getNumFrames(self.minnieAnimNames[0]) self.stdNumDanceStepPingPongFrames = self._DistributedPatternGame__numPingPongFrames(self.stdNumDanceStepPingFrames) self.buttonPressDelayPercent = (self.stdNumDanceStepPingFrames - 1.0) / self.stdNumDanceStepPingPongFrames self.animPlayRates = [] animPlayRate = 1.3999999999999999 animPlayRateMult = 1.0600000000000001 for i in range(PatternGameGlobals.NUM_ROUNDS): self.animPlayRates.append(animPlayRate) animPlayRate *= animPlayRateMult
def getFont(self): return ToontownGlobals.getToonFont()
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.defineConstants() groundModels = [ 'phase_4/models/minigames/treehouse_2players', 'phase_4/models/minigames/treehouse_2players', 'phase_4/models/minigames/treehouse_3players', 'phase_4/models/minigames/treehouse_4players'] index = self.getNumPlayers() - 1 self.ground = loader.loadModel(groundModels[index]) self.ground.setHpr(180, -90, 0) self.dropShadow = loader.loadModelOnce('phase_3/models/props/drop_shadow') self.dropObjModels = { } for objType in DropObjectTypes: if objType.name not in [ 'anvil', self.fruitName]: continue model = loader.loadModel(objType.modelPath) self.dropObjModels[objType.name] = model modelScales = { 'apple': 0.69999999999999996, 'orange': 0.69999999999999996, 'pear': 0.5, 'coconut': 0.69999999999999996, 'watermelon': 0.59999999999999998, 'pineapple': 0.45000000000000001 } if modelScales.has_key(objType.name): model.setScale(modelScales[objType.name]) if objType == Name2DropObjectType['pear']: model.setZ(-0.59999999999999998) if objType == Name2DropObjectType['coconut']: model.setP(180) if objType == Name2DropObjectType['watermelon']: model.setH(135) model.setZ(-0.5) if objType == Name2DropObjectType['pineapple']: model.setZ(-1.7) if objType == Name2DropObjectType['anvil']: model.setZ(-(self.ObjRadius)) model.flattenMedium() self.music = base.loadMusic('phase_4/audio/bgm/MG_toontag.mid') self.sndGoodCatch = base.loadSfx('phase_4/audio/sfx/SZ_DD_treasure.mp3') self.sndOof = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_dirt.mp3') self.sndAnvilLand = base.loadSfx('phase_4/audio/sfx/AA_drop_anvil_miss.mp3') self.sndPerfect = base.loadSfx('phase_4/audio/sfx/ring_perfect.mp3') self.toonSDs = { } avId = self.localAvId toonSD = CatchGameToonSD.CatchGameToonSD(avId, self) self.toonSDs[avId] = toonSD toonSD.load() if self.WantSuits: suitTypes = [ 'f', 'tm', 'pp', 'dt'] self.suits = [] for type in suitTypes: suit = Suit.Suit() d = AvatarDNA.AvatarDNA() d.newSuit(type) suit.setDNA(d) suit.pose('walk', 0) self.suits.append(suit) self._DistributedCatchGame__textGen = TextNode('ringGame') self._DistributedCatchGame__textGen.freeze() self._DistributedCatchGame__textGen.setFont(ToontownGlobals.getSignFont()) self._DistributedCatchGame__textGen.setAlign(TextNode.ACenter) self.introMovie = self.getIntroMovie()
def load(self): ShtikerPage.ShtikerPage.load(self) self.title = DirectLabel(parent = self, relief = None, text = Localizer.FishPageTitle, text_scale = 0.12, pos = (0, 0, 0.59999999999999998)) self.fishPanel = DirectLabel(parent = self, pos = (0.45000000000000001, 0, 0), relief = None, state = NORMAL, image = getDefaultDialogGeom(), image_scale = (0.59999999999999998, 1, 0.59999999999999998), text = '', text_scale = 0.055, text_fg = (0, 0, 0, 1), text_pos = (0, 0.22500000000000001, 0), text_font = ToontownGlobals.getInterfaceFont(), text_wordwrap = 7.25) buttons = loader.loadModelOnce('phase_3/models/gui/dialog_box_buttons_gui') self.fishPanelCancel = DirectButton(parent = self.fishPanel, pos = (0.25, 0, -0.25), relief = None, state = NORMAL, image = (buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr')), image_scale = (0.59999999999999998, 1, 0.59999999999999998), command = self.hideFishPanel) self.fishPanel.hide() del buttons self.releasePanel = DirectFrame(relief = None, geom = getDefaultDialogGeom(), geom_color = ToontownGlobals.GlobalDialogColor, geom_scale = (1, 1, 1.75), text = Localizer.FishPageOverflow, text_pos = (0, 0.69999999999999996), text_scale = 0.070000000000000007, pos = (0, 0, 0)) self.releasePanel.hide() self.newFishLabel = DirectLabel(parent = self.releasePanel, relief = None, text = Localizer.FishingItemFound, text_scale = 0.070000000000000007, pos = (-0.29999999999999999, 0, 0.45000000000000001)) self.newFishButton = DirectButton(parent = self.releasePanel, text = '', text_scale = 0.070000000000000007, text_align = TextNode.ALeft, text1_bg = Vec4(1, 1, 0, 1), text2_bg = Vec4(0.5, 0.90000000000000002, 1, 1), text3_fg = Vec4(0.40000000000000002, 0.80000000000000004, 0.40000000000000002, 1), command = self.releaseFish, pos = (-0.25, 0, 0.32500000000000001)) self.oldFishLabel = DirectLabel(parent = self.releasePanel, relief = None, text = Localizer.FishPageOldFish, text_scale = 0.070000000000000007, pos = (-0.22, 0, 0.155)) self.makePicker() self.updatePage()
def load(self, purchaseModels = None): localLoad = 0 if purchaseModels == None: localLoad = 1 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 = Localizer.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.0800000000000001, 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 = Localizer.GagShopYouHave % self.toon.getMoney(), text_scale = 0.080000000000000002, text_fg = (0.050000000000000003, 0.14000000000000001, 0.40000000000000002, 1)) if self.toon.getMoney() == 1: self.statusLabel['text'] = Localizer.GagShopYouHaveOne if localLoad == 1: purchaseModels.removeNode() return None
def _DistributedFishingSpot__makeGui(self): if self.madeGui: return None buttonModels = loader.loadModelOnce('phase_3.5/models/gui/inventory_gui') upButton = buttonModels.find('**/InventoryButtonUp') downButton = buttonModels.find('**/InventoryButtonDown') rolloverButton = buttonModels.find('**/InventoryButtonRollover') buttonModels.removeNode() crankModels = loader.loadModelOnce('phase_4/models/gui/fishing_crank') crank = crankModels.find('**/fishing_crank') crankArrow = crankModels.find('**/fishing_crank_arrow') crankModels.removeNode() jarGui = loader.loadModelOnce('phase_3.5/models/gui/jar_gui') jarImage = jarGui.find('**/Jar') jarGui.removeNode() self.castGui = NodePath('castGui') self.exitButton = DirectButton(parent = self.castGui, relief = None, text = Localizer.FishingExit, text_fg = (1, 1, 0.65000000000000002, 1), text_pos = (0, -0.23000000000000001), text_scale = 0.80000000000000004, image = (upButton, downButton, rolloverButton), image_color = (1, 0, 0, 1), image_scale = (15, 1, 11), pos = (-0.20000000000000001, 0, -0.80000000000000004), scale = 0.12, command = self._DistributedFishingSpot__userExit) self.castButton = DirectButton(parent = self.castGui, relief = None, text = Localizer.FishingCast, text_fg = (1, 1, 0.65000000000000002, 1), text3_fg = (0.80000000000000004, 0.80000000000000004, 0.80000000000000004, 1), text_pos = (0, -0.23000000000000001), text_scale = 0.80000000000000004, image = (upButton, downButton, rolloverButton), image_color = (1, 0, 0, 1), image3_color = (0.80000000000000004, 0.5, 0.5, 1), image_scale = (15, 1, 11), pos = (-0.20000000000000001, 0, -0.62), scale = 0.12, command = self._DistributedFishingSpot__userCast) self.jar = DirectLabel(parent = self.castGui, relief = None, text = str(self.av.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), text_font = ToontownGlobals.getSignFont(), image = jarImage, pos = (-0.20000000000000001, 0, -0.34999999999999998), scale = 0.65000000000000002) self.reelGui = NodePath('reelGui') self.reelButton = DirectButton(parent = self.reelGui, relief = None, text = Localizer.FishingAutoReel, text_fg = (1, 1, 0.65000000000000002, 1), text_pos = (0, -0.23000000000000001), text_scale = 0.80000000000000004, image = (upButton, downButton, rolloverButton), image_color = (0, 0.69999999999999996, 0, 1), image_scale = (24, 1, 11), pos = (1.0, 0, -0.29999999999999999), scale = 0.10000000000000001, command = self._DistributedFishingSpot__userReel) self.crankGui = self.reelGui.attachNewNode('crankGui') arrow1 = crankArrow.copyTo(self.crankGui) arrow1.setColor(1, 0, 0, 1) arrow1.setPos(0.25, 0, -0.25) arrow2 = crankArrow.copyTo(self.crankGui) arrow2.setColor(1, 0, 0, 1) arrow2.setPos(-0.25, 0, 0.25) arrow2.setR(180) self.crankGui.setPos(-0.20000000000000001, 0, -0.69999999999999996) self.crankGui.setScale(0.5) self.crankHandle = DirectFrame(parent = self.crankGui, state = NORMAL, relief = None, image = crank) self.speedGauge = DirectWaitBar(parent = self.crankGui, relief = SUNKEN, frameSize = (-0.80000000000000004, 0.80000000000000004, -0.14999999999999999, 0.14999999999999999), borderWidth = (0.02, 0.02), scale = 0.41999999999999998, pos = (0, 0, 0.75), barColor = (0, 0.69999999999999996, 0, 1)) self.speedGauge.hide() self.tooSlow = DirectLabel(parent = self.speedGauge, relief = None, text = Localizer.FishingCrankTooSlow, scale = 0.20000000000000001, pos = (-1, 0, 0.050000000000000003)) self.tooFast = DirectLabel(parent = self.speedGauge, relief = None, text = Localizer.FishingCrankTooFast, scale = 0.20000000000000001, pos = (1, 0, 0.050000000000000003)) self.tooSlow.hide() self.tooFast.hide() self.itemGui = NodePath('itemGui') self.itemFrame = DirectFrame(parent = self.itemGui, relief = None, geom = getDefaultDialogGeom(), geom_color = ToontownGlobals.GlobalDialogColor, geom_scale = (1, 1, 0.5), text = Localizer.FishingItemFound, text_pos = (0, 0.080000000000000002), text_scale = 0.080000000000000002, pos = (0, 0, 0.58699999999999997)) self.itemLabel = DirectLabel(parent = self.itemFrame, text = '', text_scale = 0.059999999999999998, pos = (0, 0, -0.080000000000000002)) self.failureGui = NodePath('failureGui') self.failureFrame = DirectFrame(parent = self.failureGui, relief = None, geom = getDefaultDialogGeom(), geom_color = ToontownGlobals.GlobalDialogColor, geom_scale = (1.2, 1, 0.59999999999999998), text = Localizer.FishingFailure, text_pos = (0, 0.12), text_scale = 0.080000000000000002, pos = (0, 0, 0.58699999999999997)) self.failureLabel = DirectLabel(parent = self.failureFrame, text = '', text_scale = 0.059999999999999998, text_wordwrap = 16, pos = (0, 0, -0.040000000000000001)) self.brokeGui = NodePath('brokeGui') self.brokeFrame = DirectFrame(parent = self.brokeGui, relief = None, geom = getDefaultDialogGeom(), geom_color = ToontownGlobals.GlobalDialogColor, geom_scale = (1.2, 1, 0.59999999999999998), text = Localizer.FishingBrokeHeader, text_pos = (0, 0.12), text_scale = 0.080000000000000002, pos = (0, 0, 0.58699999999999997)) self.brokeLabel = DirectLabel(parent = self.brokeFrame, relief = None, text = Localizer.FishingBroke, text_scale = 0.059999999999999998, text_wordwrap = 16, pos = (0, 0, -0.040000000000000001)) self.madeGui = 1
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.raceBoard = loader.loadModel('phase_4/models/minigames/race') self.raceBoard.setPosHpr(0, 0, 0, 0, 0, 0) self.raceBoard.setScale(0.80000000000000004) self.dice = loader.loadModel('phase_4/models/minigames/dice') self.dice1 = self.dice.find('**/dice_button1') self.dice2 = self.dice.find('**/dice_button2') self.dice3 = self.dice.find('**/dice_button3') self.dice4 = self.dice.find('**/dice_button4') self.diceList = [ self.dice1, self.dice2, self.dice3, self.dice4] self.music = base.loadMusic('phase_4/audio/bgm/minigame_race.mid') self.posBuzzer = base.loadSfx('phase_4/audio/sfx/MG_pos_buzzer.wav') self.negBuzzer = base.loadSfx('phase_4/audio/sfx/MG_neg_buzzer.wav') self.winSting = base.loadSfx('phase_4/audio/sfx/MG_win.mp3') self.loseSting = base.loadSfx('phase_4/audio/sfx/MG_lose.mp3') self.diceButtonList = [] for i in range(1, 5): button = self.dice.find('**/dice_button' + str(i)) button_down = self.dice.find('**/dice_button' + str(i) + '_down') button_ro = self.dice.find('**/dice_button' + str(i) + '_ro') diceButton = DirectButton(image = (button, button_down, button_ro, None), relief = None, pos = (-0.90000000000000002 + (i - 1) * 0.20000000000000001, 0.0, -0.84999999999999998), scale = 0.25, command = self.handleInputChoice, extraArgs = [ i]) diceButton.hide() self.diceButtonList.append(diceButton) self.waitingChoicesLabel = DirectLabel(text = Localizer.RaceGameWaitingChoices, text_fg = VBase4(1, 1, 1, 1), relief = None, pos = (-0.59999999999999998, 0, -0.75), scale = 0.074999999999999997) self.waitingChoicesLabel.hide() self.chanceMarker = loader.loadModelOnce('phase_4/models/minigames/question_mark') self.chanceCard = loader.loadModelOnce('phase_4/models/minigames/chance_card') self.chanceCard.text = OnscreenText('', fg = (1.0, 0, 0, 1), scale = 0.14000000000000001, font = ToontownGlobals.getSignFont(), wordwrap = 14, pos = (0.0, 0.20000000000000001), mayChange = 1) self.chanceCard.text.hide() self.cardSound = base.loadSfx('phase_3.5/audio/sfx/GUI_stickerbook_turn.mp3') self.chanceMarkers = []
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.itText = OnscreenText.OnscreenText('itText', fg = (0.94999999999999996, 0.94999999999999996, 0.65000000000000002, 1), scale = 0.14000000000000001, font = ToontownGlobals.getSignFont(), pos = (0.0, -0.80000000000000004), wordwrap = 15, mayChange = 1) self.itText.hide() self.sky = loader.loadModel('phase_3.5/models/props/TT_sky') self.ground = loader.loadModel('phase_4/models/minigames/tag_arena') self.music = base.loadMusic('phase_4/audio/bgm/MG_toontag.mid') self.tagSfx = base.loadSfx('phase_4/audio/sfx/MG_Tag_C.mp3') self.itPointer = loader.loadModel('phase_4/models/minigames/bboard-pointer') self.tracks = [] self.IT = None
def __init__(self, chatMgr): self.chatMgr = chatMgr self.whisperAvatarName = None self.whisperAvatarId = None gui = loader.loadModelOnce('phase_3.5/models/gui/chat_input_gui') self.chatFrame = DirectFrame(image = gui.find('**/Chat_Bx_FNL'), relief = None, pos = (-1.083, 0, 0.80400000000000005), sortOrder = FOREGROUND_SORT_INDEX) self.chatFrame.hide() self.chatButton = DirectButton(parent = self.chatFrame, image = (gui.find('**/ChtBx_ChtBtn_UP'), gui.find('**/ChtBx_ChtBtn_DN'), gui.find('**/ChtBx_ChtBtn_RLVR')), pos = (0.182, 0, -0.087999999999999995), relief = None, text = ('', Localizer.ChatInputNormalSayIt, Localizer.ChatInputNormalSayIt), text_scale = 0.059999999999999998, text_fg = Vec4(1, 1, 1, 1), text_shadow = Vec4(0, 0, 0, 1), text_pos = (0, -0.089999999999999997), textMayChange = 0, command = self._ChatInputNormal__chatButtonPressed) self.cancelButton = DirectButton(parent = self.chatFrame, image = (gui.find('**/CloseBtn_UP'), gui.find('**/CloseBtn_DN'), gui.find('**/CloseBtn_Rllvr')), pos = (-0.151, 0, -0.087999999999999995), relief = None, text = ('', Localizer.ChatInputNormalCancel, Localizer.ChatInputNormalCancel), text_scale = 0.059999999999999998, text_fg = Vec4(1, 1, 1, 1), text_shadow = Vec4(0, 0, 0, 1), text_pos = (0, -0.089999999999999997), textMayChange = 0, command = self._ChatInputNormal__cancelButtonPressed) self.whisperLabel = DirectLabel(parent = self.chatFrame, pos = (0.02, 0, 0.23000000000000001), relief = FLAT, frameColor = (1, 1, 0.5, 1), frameSize = (-0.22, 0.22, -0.070000000000000007, 0.050000000000000003), text = Localizer.ChatInputNormalWhisper, text_scale = 0.050000000000000003, text_fg = Vec4(0, 0, 0, 1), text_wordwrap = 7.5, textMayChange = 1) self.whisperLabel.hide() self.chatEntry = DirectEntry(parent = self.chatFrame, relief = None, scale = 0.050000000000000003, pos = (-0.20000000000000001, 0, 0.11), entryFont = ToontownGlobals.getToonFont(), width = 8.5999999999999996, numLines = 3, cursorKeys = 0, backgroundFocus = 0, command = self.sendChat) self.chatEntry.bind(OVERFLOW, self.chatOverflow) self.chatEntry.bind(TYPE, self.typeCallback) gui.removeNode() return None
def __init__(self, trackId, callback): DirectFrame.__init__(self, relief = None) self.initialiseoptions(TrackPoster) bookModel = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') trackName = ToontownBattleGlobals.Tracks[trackId].capitalize() self.poster = DirectFrame(parent = self, relief = None, image = bookModel.find('**/questCard'), image_scale = (0.80000000000000004, 0.57999999999999996, 0.57999999999999996)) invModel = loader.loadModelOnce('phase_3.5/models/gui/inventory_icons') iconGeom = invModel.find('**/' + ToontownBattleGlobals.AvPropsNew[trackId][1]) invModel.removeNode() self.pictureFrame = DirectFrame(parent = self.poster, relief = None, image = bookModel.find('**/questPictureFrame'), image_scale = 0.25, image_color = (0.45000000000000001, 0.80000000000000004, 0.45000000000000001, 1), text = trackName, text_font = ToontownGlobals.getInterfaceFont(), text_pos = (0, -0.16), text_fg = self.normalTextColor, text_scale = 0.050000000000000003, text_align = TextNode.ACenter, text_wordwrap = 8.0, textMayChange = 0, geom = iconGeom, pos = (-0.20000000000000001, 0, 0.059999999999999998)) bookModel.removeNode() if trackId == ToontownBattleGlobals.HEAL_TRACK: help = Localizer.TrackChoiceGuiHEAL elif trackId == ToontownBattleGlobals.TRAP_TRACK: help = Localizer.TrackChoiceGuiTRAP elif trackId == ToontownBattleGlobals.LURE_TRACK: help = Localizer.TrackChoiceGuiLURE elif trackId == ToontownBattleGlobals.SOUND_TRACK: help = Localizer.TrackChoiceGuiSOUND elif trackId == ToontownBattleGlobals.DROP_TRACK: help = Localizer.TrackChoiceGuiDROP else: help = '' self.helpText = DirectFrame(parent = self.poster, relief = None, text = help, text_font = ToontownGlobals.getInterfaceFont(), text_fg = self.normalTextColor, text_scale = 0.050000000000000003, text_align = TextNode.ALeft, text_wordwrap = 8.0, textMayChange = 0, pos = (-0.050000000000000003, 0, 0.14000000000000001)) guiButton = loader.loadModelOnce('phase_3/models/gui/quit_button') self.chooseButton = DirectButton(parent = self.poster, relief = None, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = (0.69999999999999996, 1, 1), text = Localizer.TrackChoiceGuiChoose, text_scale = 0.059999999999999998, text_pos = (0, -0.02), command = callback, extraArgs = [ trackId], pos = (0, 0, -0.16), scale = 0.80000000000000004) guiButton.removeNode()
def __init__(self, parent = aspect2d, **kw): bookModel = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') questCard = bookModel.find('**/questCard') optiondefs = (('relief', None, None), ('reverse', 0, None), ('image', questCard, None), ('image_scale', (0.80000000000000004, 1.0, 0.57999999999999996), None), ('state', NORMAL, None)) self.defineoptions(kw, optiondefs) DirectFrame.__init__(self, relief = None) self.initialiseoptions(QuestPoster) self.questFrame = DirectFrame(parent = self, relief = None) self.headline = DirectLabel(parent = self.questFrame, relief = None, text = '', text_font = ToontownGlobals.getMinnieFont(), text_fg = self.normalTextColor, text_scale = 0.050000000000000003, text_align = TextNode.ACenter, text_wordwrap = 12.0, textMayChange = 1, pos = (0, 0, 0.23000000000000001)) self.questInfo = DirectLabel(parent = self.questFrame, relief = None, text = '', text_fg = self.normalTextColor, text_scale = TEXT_SCALE, text_align = TextNode.ACenter, text_wordwrap = TEXT_WORDWRAP, textMayChange = 1, pos = (0, 0, -0.0625)) self.rewardText = DirectLabel(parent = self.questFrame, relief = None, text = '', text_fg = self.colors['rewardRed'], text_scale = 0.042500000000000003, text_align = TextNode.ALeft, text_wordwrap = 17.0, textMayChange = 1, pos = (-0.35999999999999999, 0, -0.26000000000000001)) self.rewardText.hide() self.lPictureFrame = DirectFrame(parent = self.questFrame, relief = None, image = bookModel.find('**/questPictureFrame'), image_scale = IMAGE_SCALE_SMALL, text = '', text_pos = (0, -0.11), text_fg = self.normalTextColor, text_scale = TEXT_SCALE, text_align = TextNode.ACenter, text_wordwrap = 8.0, textMayChange = 1) self.lPictureFrame.hide() self.rPictureFrame = DirectFrame(parent = self.questFrame, relief = None, image = bookModel.find('**/questPictureFrame'), image_scale = IMAGE_SCALE_SMALL, text = '', text_pos = (0, -0.11), text_fg = self.normalTextColor, text_scale = TEXT_SCALE, text_align = TextNode.ACenter, text_wordwrap = 8.0, textMayChange = 1, pos = (0.17999999999999999, 0, 0.13)) self.rPictureFrame.hide() self.lQuestIcon = DirectFrame(parent = self.lPictureFrame, relief = None, text = ' ', text_font = ToontownGlobals.getSuitFont(), text_pos = (0, -0.029999999999999999), text_fg = self.normalTextColor, text_scale = 0.13, text_align = TextNode.ACenter, text_wordwrap = 13.0, textMayChange = 1) self.lQuestIcon.setColorOff() self.rQuestIcon = DirectFrame(parent = self.rPictureFrame, relief = None, text = ' ', text_font = ToontownGlobals.getSuitFont(), text_pos = (0, -0.029999999999999999), text_fg = self.normalTextColor, text_scale = 0.13, text_align = TextNode.ACenter, text_wordwrap = 13.0, textMayChange = 1) self.rQuestIcon.setColorOff() self.auxText = DirectLabel(parent = self.questFrame, relief = None, text = '', text_scale = 0.040000000000000001, text_fg = self.normalTextColor, text_align = TextNode.ACenter, textMayChange = 1) self.auxText.hide() self.questProgress = DirectWaitBar(parent = self.questFrame, relief = SUNKEN, frameSize = (-0.94999999999999996, 0.94999999999999996, -0.10000000000000001, 0.12), borderWidth = (0.025000000000000001, 0.025000000000000001), scale = 0.20000000000000001, frameColor = (0.94499999999999995, 0.875, 0.70599999999999996, 1.0), barColor = (0.5, 0.69999999999999996, 0.5, 1), text = '0/0', text_scale = 0.19, text_fg = (0.050000000000000003, 0.14000000000000001, 0.40000000000000002, 1), text_align = TextNode.ACenter, text_pos = (0, -0.040000000000000001), pos = (0, 0, -0.19500000000000001)) self.questProgress.hide() self.funQuest = DirectLabel(parent = self.questFrame, relief = None, text = Localizer.QuestPosterFun, text_fg = (0.0, 0.439, 1.0, 1.0), text_shadow = (0, 0, 0, 1), pos = (-0.28000000000000003, 0, 0.19), scale = 0.040000000000000001) self.funQuest.setR(30) self.funQuest.hide() bookModel.removeNode() self.reverseBG(self['reverse']) self.laffMeter = None
def load(self): self.notify.debug('load') DistributedMinigame.load(self) self.sky = loader.loadModel('phase_3.5/models/props/TT_sky') self.ground = loader.loadModel('phase_4/models/minigames/toon_cannon_gameground') self.tower = loader.loadModel('phase_4/models/minigames/toon_cannon_water_tower') self.cannon = loader.loadModel('phase_4/models/minigames/toon_cannon') self.dropShadow = loader.loadModel('phase_3/models/props/drop_shadow') self.hill = loader.loadModel('phase_4/models/minigames/cannon_hill') self.sky.setScale(WORLD_SCALE) self.ground.setScale(GROUND_SCALE) self.cannon.setScale(CANNON_SCALE) self.dropShadow.setColor(0, 0, 0, 0.5) self.ground.setColor(0.84999999999999998, 0.84999999999999998, 0.84999999999999998, 1.0) self.hill.setScale(1, 1, CANNON_Z / 20.0) self.dropShadow.setBin('fixed', 0, 1) self.splash = Splash.Splash(render) self.dustCloud = DustCloud.DustCloud(render) 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.1599999999999999, 0.0, 0.45000000000000001), scale = 0.65000000000000002, text = '', text_scale = 0.20000000000000001, text_fg = (0.94999999999999996, 0.94999999999999996, 0, 1), text_pos = (0, -0.13), text_font = ToontownGlobals.getSignFont(), image = self.jarImage) self.rewardPanelTitle = DirectLabel(parent = self.rewardPanel, relief = None, pos = (0, 0, 0.059999999999999998), scale = 0.080000000000000002, text = Localizer.CannonGameReward, text_fg = (0.94999999999999996, 0.94999999999999996, 0, 1), text_shadow = (0, 0, 0, 1)) self.music = base.loadMusic('phase_4/audio/bgm/MG_cannon_game.mid') self.sndCannonMove = base.loadSfx('phase_4/audio/sfx/MG_cannon_adjust.mp3') self.sndCannonFire = base.loadSfx('phase_4/audio/sfx/MG_cannon_fire_alt.mp3') self.sndHitGround = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_dirt.mp3') self.sndHitTower = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_tower.mp3') self.sndHitWater = base.loadSfx('phase_4/audio/sfx/MG_cannon_splash.mp3') self.sndWhizz = base.loadSfx('phase_4/audio/sfx/MG_cannon_whizz.mp3') self.sndWin = base.loadSfx('phase_4/audio/sfx/MG_win.mp3') self.sndRewardTick = base.loadSfx('phase_3.5/audio/sfx/tick_counter.mp3') guiModel = 'phase_4/models/gui/cannon_game_gui' cannonGui = loader.loadModel(guiModel) self.aimPad = DirectFrame(image = cannonGui.find('**/CannonFire_PAD'), relief = None, pos = (0.69999999999999996, 0, -0.55333299999999996), scale = 0.80000000000000004) cannonGui.removeNode() self.aimPad.hide() self.fireButton = DirectButton(parent = self.aimPad, image = ((guiModel, '**/Fire_Btn_UP'), (guiModel, '**/Fire_Btn_DN'), (guiModel, '**/Fire_Btn_RLVR')), relief = None, pos = (0.0115741, 0, 0.0050505100000000002), scale = 1.0, command = self._DistributedCannonGame__firePressed) self.upButton = DirectButton(parent = self.aimPad, image = ((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief = None, pos = (0.0115741, 0, 0.221717)) self.downButton = DirectButton(parent = self.aimPad, image = ((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief = None, pos = (0.0136112, 0, -0.21010100000000001), image_hpr = (0, 0, 180)) self.leftButton = DirectButton(parent = self.aimPad, image = ((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief = None, pos = (-0.199352, 0, -0.00050526900000000003), image_hpr = (0, 0, 90)) self.rightButton = DirectButton(parent = self.aimPad, image = ((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief = None, pos = (0.219167, 0, -0.0010102399999999999), image_hpr = (0, 0, -90)) self.aimPad.setColor(1, 1, 1, 0.90000000000000002) def bindButton(button, upHandler, downHandler): button.bind(B1PRESS, lambda x, handler = upHandler: handler()) button.bind(B1RELEASE, lambda x, handler = downHandler: handler()) bindButton(self.upButton, self._DistributedCannonGame__upPressed, self._DistributedCannonGame__upReleased) bindButton(self.downButton, self._DistributedCannonGame__downPressed, self._DistributedCannonGame__downReleased) bindButton(self.leftButton, self._DistributedCannonGame__leftPressed, self._DistributedCannonGame__leftReleased) bindButton(self.rightButton, self._DistributedCannonGame__rightPressed, self._DistributedCannonGame__rightReleased) self.timer = ToontownTimer.ToontownTimer() self.timer.posInTopRightCorner() self.timer.hide() self.DEBUG_TOWER_RANGE = 0 self.DEBUG_CANNON_FAR_LEFT = 0 self.DEBUG_TOWER_NEAR = 1 self.DEBUG_TOWER_FAR_LEFT = 1 self.cheat = config.GetBool('cannon-game-cheat', 0)