class Hud: def __init__(self): self.frame = DirectFrame( frameSize=(base.a2dLeft, base.a2dRight, base.a2dBottom, base.a2dTop), frameColor=(0, 0, 0, 0), image_scale=(2, 0, 1), enableEdit=False, ) self.frame.setTransparency(0) self.title = DirectLabel( scale=0.05, pos=(0, 0, 0.9), text="Current Mission Placeholder", text_fg=(0.2, 0.2, 0.1, 1), frameColor=(0.1, 0.8, 0.8, 0), enableEdit=False, ) self.createBtn("Quit", 0.8, ["game-quit"]) self.createBtn("Found It", 0.7, ["game-finished"]) self.title.reparentTo(self.frame) self.timer = OnscreenText(text="", mayChange=True, pos=(0.8, 0.9)) self.hide() def createBtn(self, text, verticalPos, commands): btn = DirectButton(text=text, text_fg=(0.2, 0.2, 0.4, 1), text_scale=0.03, text_pos=(0, 0), scale=3, pos=(-0.9, 0, verticalPos), relief=1, frameColor=(0, 1, 0, 0.5), command=base.messenger.send, extraArgs=commands, rolloverSound=None, clickSound=None) btn.reparentTo(self.frame) def show(self): self.frame.show() def hide(self): self.frame.hide() def hudTask(self, task): self.timer.setText( str(self.missionLength - int(time.time() - self.startTime)) + " seconds left") return task.cont def initialise(self, currentMission, missionLength): self.startTime = time.time() self.missionLength = missionLength self.title["text"] = currentMission
class TTC(DirectObject): global font def __init__( self ): #__init__ tells the file to load everything. Basically load settings and put commands in here. self.currentworld = "" self.title = OnscreenText(text='', mayChange=True, fg=(0, 0, 0, 1), pos=(.8, -.95), scale=.07, font=font, align=TextNode.ACenter) self.thememusic = loader.loadSfx('phase_4/audio/bgm/TC_nbrhood.mid') self.thememusic.play() self.thememusic.setVolume(.1) self.thememusic.setLoop(True) self.startWorld() #executes the "loadTerrain" command found below self.accept("escape", self.askExit) self.accept("s", self.muteAudio) self.accept("e", self.enableAudio) self.accept("l", self.loadingScreen) def loadingScreen(self): from ToontownLoadingScreen import app app.begin() def startWorld(self): self.terrain = loader.loadModel('phase_15/hood/toontown_central.bam') self.terrain.reparentTo(render) self.terrain.find('**/toontown_central').setTransparency( TransparencyAttrib.MBinary, 1) self.title.setText("Toontown Central") self.sky = loader.loadModel('phase_3.5/models/props/TT_sky.bam') self.sky.reparentTo(render) self.sky.setTransparency(TransparencyAttrib.MDual, 1) self.currentworld = "TTC" if self.currentworld == "TTC": self.acceptOnce("d", self.loadDock) self.acceptOnce("m", self.loadMelody) self.acceptOnce("g", self.loadGarden) self.acceptOnce("b", self.loadCold) self.acceptOnce("l", self.loadDream) self.startPos() def loadTTC(self): #command that defines loading terrain self.thememusic.stop() self.thememusic = loader.loadSfx('phase_4/audio/bgm/TC_nbrhood.mid') self.thememusic.play() self.thememusic.setVolume(.1) self.thememusic.setLoop(True) self.terrain.removeNode() #self.terrain = loader.unloadModel('phase_15/hood/donalds_dock.bam') self.terrain = loader.loadModel('phase_15/hood/toontown_central.bam') self.terrain.reparentTo(render) self.terrain.find('**/toontown_central').setTransparency( TransparencyAttrib.MBinary, 1) self.title.setText("Toontown Central") self.sky.removeNode() #self.sky = loader.unloadModel('phase_3.5/models/props/BR_sky.bam') self.sky = loader.loadModel('phase_3.5/models/props/TT_sky.bam') self.sky.reparentTo(render) self.sky.setTransparency(TransparencyAttrib.MDual, 1) self.currentworld = "TTC" if self.currentworld == "TTC": self.acceptOnce("d", self.loadDock) self.acceptOnce("m", self.loadMelody) self.acceptOnce("g", self.loadGarden) self.acceptOnce("b", self.loadCold) self.acceptOnce("l", self.loadDream) self.startPos() def askExit(self): self.msgbox = loader.loadModel('phase_3/models/gui/dialog_box_gui.bam') self.msgbox.reparentTo(base.a2dBottomCenter) self.msgbox.setPos(0, 0, 1) buttons = loader.loadModel( 'phase_3/models/gui/dialog_box_buttons_gui.bam') OKButtonUP = buttons.find('**/ChtBx_OKBtn_UP') OKButtonRLVR = buttons.find('**/ChtBx_OKBtn_Rllvr') OKButtonDN = buttons.find('**/ChtBx_OKBtn_DN') CloseUP = buttons.find('**/CloseBtn_UP') CloseRLVR = buttons.find('**/CloseBtn_Rllvr') CloseDN = buttons.find('**/CloseBtn_DN') self.OkButton = DirectButton(image=(OKButtonUP, OKButtonDN, OKButtonRLVR), command=self.exitGame, pos=(-.3, 0, -.4), relief=None) self.OkButton.reparentTo(self.msgbox) self.OkButton.show() self.CloseButton = DirectButton(image=(CloseUP, CloseDN, CloseRLVR), command=self.closeAsk, pos=(.3, 0, -.4), relief=None) self.CloseButton.reparentTo(self.msgbox) self.CloseButton.show() self.exittitle = OnscreenText(text='Are you sure you want to leave?', mayChange=False, fg=(0, 0, 0, 1), pos=(0, 0), scale=.07, font=font, align=TextNode.ACenter) self.exittitle.reparentTo(self.msgbox) self.msgbox.show() def closeAsk(self): self.msgbox.removeNode() self.CloseButton.removeNode() self.OkButton.removeNode() self.exittitle.removeNode() def exitGame(self): sys.exit() def enableAudio(self): base.enableAllAudio() def muteAudio(self): base.disableAllAudio() def loadDock(self): self.thememusic.stop() self.thememusic = loader.loadSfx('phase_6/audio/bgm/DD_nbrhood.mid') self.thememusic.play() self.thememusic.setVolume(.1) self.thememusic.setLoop(True) self.terrain.removeNode() #self.terrain = loader.unloadModel('phase_15/hood/toontown_central.bam') self.terrain = loader.loadModel('phase_15/hood/donalds_dock.bam') self.terrain.reparentTo(render) self.terrain.find('**/donalds_dock').setTransparency( TransparencyAttrib.MBinary, 1) self.title.setText('Donald\'s Dock') self.sky.removeNode() #self.sky = loader.unloadModel('phase_3.5/models/props/TT_sky.bam') self.sky = loader.loadModel('phase_3.5/models/props/BR_sky.bam') self.sky.reparentTo(render) self.sky.setTransparency(TransparencyAttrib.MDual, 1) self.currentworld = "Donald\'s Dock" if self.currentworld == "Donald\'s Dock": self.acceptOnce("t", self.loadTTC) self.acceptOnce("m", self.loadMelody) self.acceptOnce("g", self.loadGarden) self.acceptOnce("b", self.loadCold) self.acceptOnce("l", self.loadDream) self.startPos() def loadMelody(self): self.thememusic.stop() self.thememusic = loader.loadSfx('phase_6/audio/bgm/MM_nbrhood.mid') self.thememusic.play() self.thememusic.setVolume(.1) self.thememusic.setLoop(True) self.terrain.removeNode() self.terrain = loader.loadModel( 'phase_15/hood/minnies_melody_land.bam') self.terrain.reparentTo(render) #self.terrain.find('**/minnies_melody_land').setTransparency(TransparencyAttrib.MBinary, 1) self.title.setText('Minnie\'s Melodyland') self.sky.removeNode() #self.sky = loader.unloadModel('phase_3.5/models/props/TT_sky.bam') self.sky = loader.loadModel('phase_6/models/props/MM_sky.bam') self.sky.reparentTo(render) self.sky.setTransparency(TransparencyAttrib.MDual, 1) self.currentworld = "Melody" if self.currentworld == "Melody": self.acceptOnce("t", self.loadTTC) self.acceptOnce("d", self.loadDock) self.acceptOnce("g", self.loadGarden) self.acceptOnce("b", self.loadCold) self.acceptOnce("l", self.loadDream) def loadGarden(self): self.thememusic.stop() self.thememusic = loader.loadSfx('phase_8/audio/bgm/DG_nbrhood.mid') self.thememusic.play() self.thememusic.setVolume(.1) self.thememusic.setLoop(True) self.terrain.removeNode() self.terrain = loader.loadModel('phase_15/hood/daisys_garden.bam') self.terrain.reparentTo(render) #self.terrain.find('**/daisys_garden').setTransparency(TransparencyAttrib.MBinary, 1) self.title.setText('Daisy Gardens') self.sky.removeNode() #self.sky = loader.unloadModel('phase_3.5/models/props/TT_sky.bam') self.sky = loader.loadModel('phase_3.5/models/props/TT_sky.bam') self.sky.reparentTo(render) self.sky.setTransparency(TransparencyAttrib.MDual, 1) self.currentworld = "Garden" if self.currentworld == "Garden": self.acceptOnce("t", self.loadTTC) self.acceptOnce("d", self.loadDock) self.acceptOnce("m", self.loadMelody) self.acceptOnce("b", self.loadCold) self.acceptOnce("l", self.loadDream) def loadCold(self): self.thememusic.stop() self.thememusic = loader.loadSfx('phase_8/audio/bgm/TB_nbrhood.mid') self.thememusic.play() self.thememusic.setVolume(.1) self.thememusic.setLoop(True) self.terrain.removeNode() self.terrain = loader.loadModel('phase_15/hood/the_burrrgh.bam') self.terrain.reparentTo(render) #self.terrain.find('**/').setTransparency(TransparencyAttrib.MBinary, 1) self.title.setText('The Brrrgh') self.sky.removeNode() #self.sky = loader.unloadModel('phase_3.5/models/props/TT_sky.bam') self.sky = loader.loadModel('phase_3.5/models/props/BR_sky.bam') self.sky.reparentTo(render) self.sky.setTransparency(TransparencyAttrib.MDual, 1) self.currentworld = "Cold" if self.currentworld == "Cold": self.acceptOnce("t", self.loadTTC) self.acceptOnce("d", self.loadDock) self.acceptOnce("m", self.loadMelody) self.acceptOnce("b", self.loadCold) self.acceptOnce("l", self.loadDream) def loadDream(self): self.thememusic.stop() self.thememusic = loader.loadSfx('phase_8/audio/bgm/DL_nbrhood.mid') self.thememusic.play() self.thememusic.setVolume(.1) self.thememusic.setLoop(True) self.terrain.removeNode() self.terrain = loader.loadModel('phase_15/hood/donalds_dreamland.bam') self.terrain.reparentTo(render) #self.terrain.find('**/').setTransparency(TransparencyAttrib.MBinary, 1) self.title.setText('Donald\'s Dreamland') self.sky.removeNode() #self.sky = loader.unloadModel('phase_3.5/models/props/TT_sky.bam') self.sky = loader.loadModel('phase_8/models/props/DL_sky.bam') self.sky.reparentTo(render) self.sky.setTransparency(TransparencyAttrib.MDual, 1) self.currentworld = "Cold" if self.currentworld == "Cold": self.acceptOnce("t", self.loadTTC) self.acceptOnce("d", self.loadDock) self.acceptOnce("m", self.loadMelody) self.acceptOnce("b", self.loadCold) self.acceptOnce("l", self.loadDream) def startPos(self): startPos = random.choice([1, 2, 3]) if startPos == 1: if self.currentworld == 'TTC': startPosi = (-75.955, 82.0341, .025) startHpr = (206.686, 0, 0) print "Start 1 TTC" if self.currentworld == "Donald\'s Dock": startPosi = (-62.072, -82.4714, 5.69199) startHpr = (-22.9025, 0, 0) print "Start 1 Dock" if startPos == 2: if self.currentworld == 'TTC': startPosi = (30.3073, -43.9795, 4.02455) startHpr = (16.1418, 0, 0) print "Start 2 TTC" if self.currentworld == "Donald\'s Dock": startPosi = (70.3026, -17.3636, 5.69199) startHpr = (88.1163, 0, 0) print "Start 2 Dock" if startPos == 3: if self.currentworld == 'TTC': startPosi = (-105.675, -84.7621, -.525) startHpr = (-21.327, 0, 0) print "Start 3 TTC" if self.currentworld == "Donald\'s Dock": startPosi = (53.0884, 99.52, 3.28025) startHpr = (141.021, 0, 0) print "Start 3 Dock" localAvatar.setPos(startPosi) localAvatar.setHpr(startHpr)
class GUI(): global font def __init__(self): self.laffMeter() def laffMeter(self): self.head = linecache.getline('DataFolder/Data.txt', 4) if self.head == 'duck\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/duckhead') if self.head == 'cat\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/cathead') if self.head == 'monkey\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/monkeyhead') if self.head == 'bear\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/bearhead') if self.head == 'rabbit\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/bunnyhead') if self.head == 'horse\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/horsehead') if self.head == 'mouse\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/mousehead') if self.head == 'pig\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/pighead') if self.head == 'dog\n': self.duckhead = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/doghead') self.duckhead.reparentTo(base.a2dBottomLeft) self.smile = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/smile') self.smile.reparentTo(self.duckhead) self.eyes = loader.loadModel( 'phase_3/models/gui/laff_o_meter.bam').find('**/eyes') self.eyes.reparentTo(self.duckhead) self.laffleft = OnscreenText(text='100 100', mayChange=True, fg=(0, 0, 0, 1), pos=(-0.4, .07), scale=.42, font=font, align=TextNode.ACenter) self.laffleft.reparentTo(self.eyes) self.laffright = OnscreenText(text='100 100', mayChange=True, fg=(0, 0, 0, 1), pos=(0.4, .07), scale=.42, font=font, align=TextNode.ACenter) self.laffright.reparentTo(self.eyes) self.laffnum = linecache.getline('DataFolder/Data.txt', 5) self.laffleft.setText(self.laffnum) self.laffright.setText(self.laffnum) self.duckhead.setScale(.1) self.duckhead.setPos(.17, 0, .15) self.color = linecache.getline('DataFolder/Data.txt', 3) if self.color == 'white\n': self.duckhead.setColor(white) if self.color == 'black\n': self.duckhead.setColor(black) if self.color == 'red\n': self.duckhead.setColor(red) if self.color == 'orange\n': self.duckhead.setColor(orange) if self.color == 'yellow\n': self.duckhead.setColor(yellow) if self.color == 'green\n': self.duckhead.setColor(green) if self.color == 'blue\n': self.duckhead.setColor(blue) if self.color == 'purple\n': self.duckhead.setColor(purple) if self.color == 'grey\n' or self.color == 'gray\n': self.duckhead.setColor(gray) if self.color == 'pink\n': self.duckhead.setColor(pink) self.eyes.setColor(white) def friendsButton(self): self.resources = loader.loadModel( 'phase_3.5/models/gui/friendslist_gui.bam')