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
示例#2
0
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
示例#3
0
    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