class CharityScreen(DistributedObject): notify = directNotify.newCategory('CharityScreen') def __init__(self, cr): DistributedObject.__init__(self, cr) self.zone2pos = { ToontownGlobals.ToontownCentral: (40, 0, 25), ToontownGlobals.DonaldsDock: (-25, 17, 25), ToontownGlobals.DaisyGardens: (5, 137, 25), ToontownGlobals.MinniesMelodyland: (0, 0, 8), ToontownGlobals.TheBrrrgh: (-111, -44, 25), ToontownGlobals.DonaldsDreamland: (0, 0, 6) } self.bob = None self.screenObject = None self.counter = None def announceGenerate(self): self.cr.chairityEvent = self def start(self, zoneId): def startScreen(*args): self.screenObject = args[0] if not self.screenObject: return self.screenObject.reparentTo(render) text = "Clarabelle's Cattlelog\nis now open!\nHead to your estate\nand call her up!" if ZoneUtil.getHoodId(zoneId) == ToontownGlobals.MinniesMelodyland: self.screenObject.reparentTo( self.cr.playGame.getPlace().loader.geom.find( '**/center_icon')) self.screenObject.setPos( self.zone2pos.get(ZoneUtil.getHoodId(zoneId), (0, 0, 6))) self.screenObject.setHpr(-90, 0, 0) self.counter = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text=text, text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counter.reparentTo(self.screenObject) self.counter.setPos( self.screenObject.find("**/front_screen").getPos() + Point3(0.0, -1.5, 0.3)) self.counterback = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text=text, text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counterback.reparentTo(self.screenObject) self.counterback.setPos( self.screenObject.find("**/back_screen").getPos() + Point3(0.0, 1.5, 0.3)) self.counterback.setHpr(180, 0, 0) self.bob = Sequence( LerpPosInterval(nodePath=self.screenObject, duration=3.2, pos=(self.screenObject.getX(), self.screenObject.getY(), self.screenObject.getZ() + 1.65), blendType='easeInOut'), Sequence( Wait(0.050), LerpPosInterval(nodePath=self.screenObject, duration=3.0, pos=(self.screenObject.getX(), self.screenObject.getY(), self.screenObject.getZ()), blendType='easeInOut'), Sequence(Wait(0.050)))) self.bob.loop() asyncloader.loadModel( "phase_3.5/models/events/charity/flying_screen.bam", callback=startScreen) def setCount(self, count): self.count = count if self.counter and self.counterback: self.counter['text'] = (str(self.count) + "\nCogs Destroyed") self.counterback['text'] = (str(self.count) + "\nCogs Destroyed") def unload(self): self.notify.debug("Unloading Charity Screen!") self.ignoreAll() if self.bob: self.bob.finish() self.bob = None if self.screenObject: self.screenObject.removeNode() self.screenObject = None def delete(self): self.cr.chairityEvent = None self.notify.debug("Deleting Charity Screen!") if self.bob: self.bob.finish() self.bob = None if self.screenObject: self.screenObject.removeNode() self.screenObject = None
class CharityScreen(DistributedObject): notify = directNotify.newCategory('CharityScreen') def __init__(self, cr): DistributedObject.__init__(self, cr) self.zone2pos = { ToontownGlobals.ToontownCentral: (40, 0, 25), ToontownGlobals.DonaldsDock: (-25, 17, 25), ToontownGlobals.DaisyGardens: (5, 137, 25), ToontownGlobals.MinniesMelodyland: (0, 0, 8), ToontownGlobals.TheBrrrgh: (-111, -44, 25), ToontownGlobals.DonaldsDreamland: (0, 0, 6) } self.bob = None self.screenObject = None self.counter = None def announceGenerate(self): self.cr.chairityEvent = self def start(self, zoneId): threading.Thread(target=taskMgr.add, args=(self.setCount, 'countTask')).start() def startScreen(*args): self.screenObject = args[0] if not self.screenObject: return self.screenObject.reparentTo(render) text = '' if ZoneUtil.getHoodId(zoneId) == ToontownGlobals.MinniesMelodyland: self.screenObject.reparentTo( self.cr.playGame.getPlace().loader.geom.find( '**/center_icon')) self.screenObject.setPos( self.zone2pos.get(ZoneUtil.getHoodId(zoneId), (0, 0, 6))) self.screenObject.setHpr(-90, 0, 0) self.counter = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text=text, text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counter.reparentTo(self.screenObject) self.counter.setPos( self.screenObject.find('**/front_screen').getPos() + Point3(0.0, -1.5, 0.3)) self.counterback = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text=text, text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counterback.reparentTo(self.screenObject) self.counterback.setPos( self.screenObject.find('**/back_screen').getPos() + Point3(0.0, 1.5, 0.3)) self.counterback.setHpr(180, 0, 0) self.bob = Sequence( LerpPosInterval(nodePath=self.screenObject, duration=3.2, pos=(self.screenObject.getX(), self.screenObject.getY(), self.screenObject.getZ() + 1.65), blendType='easeInOut'), Sequence( Wait(0.05), LerpPosInterval(nodePath=self.screenObject, duration=3.0, pos=(self.screenObject.getX(), self.screenObject.getY(), self.screenObject.getZ()), blendType='easeInOut'), Sequence(Wait(0.05)))) self.bob.loop() asyncloader.loadModel( 'phase_3.5/models/events/charity/flying_screen.bam', callback=startScreen) def setCount(self, task): self.count = base.localAvatar.getStat(ToontownGlobals.STATS_COGS) cash = self.count / 1000.0 cash = '{:,.2f}'.format(cash) if self.counter and self.counterback: self.counter['text'] = (str(self.count) + "\nCogs Destroyed\n") self.counterback['text'] = (str(self.count) + "\nCogs Destroyed") taskMgr.doMethodLater(10, self.setCount, 'countTask') def unload(self): self.notify.debug('Unloading Charity Screen!') self.ignoreAll() if self.bob: self.bob.finish() self.bob = None if self.screenObject: self.screenObject.removeNode() self.screenObject = None def delete(self): self.cr.chairityEvent = None self.notify.debug('Deleting Charity Screen!') taskMgr.remove('countTask') if self.bob: self.bob.finish() self.bob = None if self.screenObject: self.screenObject.removeNode() self.screenObject = None
def createGui(self): base.cr.renderFrame() self.m = loader.loadFont("phase_3/models/fonts/MickeyFont.bam") self.bg = loader.loadModel( "phase_3/models/gui/tt_m_gui_pat_mainGui.bam") self.qtbtn = loader.loadModel("phase_3/models/gui/quit_button.bam") self.trash_gui = loader.loadModel( "phase_3/models/gui/trashcan_gui.bam") self.bg_img = OnscreenImage( image=self.bg.find('**/tt_t_gui_pat_background')) self.setTitle("Pick A Toon To Play") base.setBackgroundColor(self.BgColor) self.btn1 = DirectButton( geom=self.bg.find('**/tt_t_gui_pat_squareGreen'), relief=None, pos=(0.012, 0, 0.306), text_wordwrap=6, text_fg=(1, 1, 1, 1)) self.btn2 = DirectButton( geom=self.bg.find('**/tt_t_gui_pat_squarePink'), relief=None, pos=(0.01, 0, -0.515), text_wordwrap=6, text_fg=(1, 1, 1, 1)) self.btn3 = DirectButton( geom=self.bg.find('**/tt_t_gui_pat_squareRed'), relief=None, pos=(-0.84, 0, 0.36), text_wordwrap=6, text_fg=(1, 1, 1, 1)) self.btn4 = DirectButton( geom=self.bg.find('**/tt_t_gui_pat_squareYellow'), relief=None, pos=(0.865, 0, -0.45), text_wordwrap=6, text_fg=(1, 1, 1, 1)) self.btn5 = DirectButton( geom=self.bg.find('**/tt_t_gui_pat_squareBlue'), relief=None, pos=(-0.87, 0, -0.44), text_wordwrap=6, text_fg=(1, 1, 1, 1)) self.btn6 = DirectButton( geom=self.bg.find('**/tt_t_gui_pat_squarePurple'), relief=None, pos=(0.873, 0, 0.335), text_wordwrap=6, text_fg=(1, 1, 1, 1)) self.quit_btn = DirectButton(geom=(self.qtbtn.find('**/QuitBtn_RLVR'), self.qtbtn.find('**/QuitBtn_RLVR'), self.qtbtn.find('**/QuitBtn_RLVR')), relief=None, text="Quit", text_font=self.m, text_scale=0.105, text_pos=(0, -0.035), pos=(1.05, 0, -0.9), text_fg=(1, 0.9, 0.1, 1), geom1_scale=(1.02, 1, 1), geom2_scale=(1.02, 1, 1), command=self.quitGame) self.btnList = [] self.btnList.append(self.btn1) self.btnList.append(self.btn2) self.btnList.append(self.btn3) self.btnList.append(self.btn4) self.btnList.append(self.btn5) self.btnList.append(self.btn6) self.headList = [] #datafiler = open("toons/data.txt", "r") #if datafiler.read() == "-": # for btn in self.btnList: # btn['state'] = DGG.DISABLED # self.quit_btn['state'] = DGG.DISABLED # self.tutorial.askTutorial() # datafilew = open("toons/data.txt", "w") # datafilew.write("+") # datafilew.flush() # datafilew.close() #datafiler.close() for slot in range(6): if self.avChooser.hasToonInSlot(slot): notify.info("found existing Toon in slot %s" % (str(slot))) frame = DirectFrame(relief=None, parent=self.btnList[slot], pos=(0, 0, -0.1)) headframe = hidden.attachNewNode('head') headframe.setPosHprScale(0, 5, -0.1, 180, 0, 0, 0.24, 0.24, 0.24) headframe.reparentTo(self.btnList[slot].stateNodePath[0], 20) headframe.instanceTo(self.btnList[slot].stateNodePath[1], 20) headframe.instanceTo(self.btnList[slot].stateNodePath[2], 20) toon = ToonHead(base.cr) self.headList.append(toon) gender, animal, head, headcolor = self.avChooser.getHeadInfo( slot) toon.generateHead(gender, animal, head, 1) toon.getGeomNode().setDepthWrite(1) toon.getGeomNode().setDepthTest(1) toon.startBlink() toon.startLookAround() toon.reparentTo(headframe) toon.setHeadColor(headcolor) toon.flattenLight() name_lbl = DirectLabel(text=self.avChooser.getNameInSlot(slot), text_scale=0.08, text_fg=(1, 1, 1, 1), text_wordwrap=7, relief=None, text_shadow=(0, 0, 0, 1)) name_lbl.reparentTo(self.btnList[slot].stateNodePath[0], 20) name_lbl.instanceTo(self.btnList[slot].stateNodePath[1], 20) name_lbl.instanceTo(self.btnList[slot].stateNodePath[2], 20) name_lbl.setPos(self.name_pos[slot]) name_lbl.setHpr(self.name_hpr[slot]) self.btnList[slot]['text'] = ("", "Play This Toon", "Play This Toon", "") self.btnList[slot]['text_scale'] = 0.1 self.btnList[slot]['text_pos'] = (0, 0) self.btnList[slot]['text_fg'] = (1, 0.9, 0, 1) self.btnList[slot]['text_wordwrap'] = 6 self.btnList[slot]['text_font'] = self.m self.btnList[slot]['command'] = self.fadeMenu self.btnList[slot]['extraArgs'] = ["playGame", slot] delBtn = DirectButton( text=("", "Delete", "Delete", ""), text_scale=0.15, scale=0.5, text_pos=(0, -0.1), text_fg=(1, 1, 1, 1), relief=None, geom=(self.trash_gui.find('**/TrashCan_CLSD'), self.trash_gui.find('**/TrashCan_OPEN'), self.trash_gui.find('**/TrashCan_RLVR')), pos=self.trash_pos[slot], command=self.deleteToon, extraArgs=[ self.avChooser.getAvChoiceBySlot(slot).getAvId() ], text_shadow=(0, 0, 0, 1)) delBtn.reparentTo(self.btnList[slot].stateNodePath[0], 20) delBtn.instanceTo(self.btnList[slot].stateNodePath[1], 20) delBtn.instanceTo(self.btnList[slot].stateNodePath[2], 20) else: self.btnList[slot]['text'] = "Make A Toon" self.btnList[slot]['text_font'] = self.m self.btnList[slot]['text0_scale'] = 0.1 self.btnList[slot]['text1_scale'] = 0.12 self.btnList[slot]['text2_scale'] = 0.12 self.btnList[slot]['text3_scale'] = 0.1 self.btnList[slot]['text0_fg'] = (0, 1, 0.8, 0.5) self.btnList[slot]['text1_fg'] = (0, 1, 0.8, 1) self.btnList[slot]['text2_fg'] = (0.3, 1, 0.9, 1) self.btnList[slot]['text3_fg'] = (0, 1, 0.8, 0.5) self.btnList[slot]['text_font'] = self.m self.btnList[slot]['command'] = self.fadeMenu self.btnList[slot]['extraArgs'] = ["mat", slot] self.btnList[slot]['text_wordwrap'] = 6