def __init__(self, dna, **kw):
     self.dna = dna
     head = hidden.attachNewNode('head', 20)
     self.headModel = ToonHead.ToonHead()
     self.headModel.setupHead(self.dna, forGui=1)
     self.headModel.fitAndCenterHead(1.0, forGui=1)
     self.headModel.reparentTo(head)
     self.headModel.setName('headModel')
     self.headModel.startBlink()
     optiondefs = (('dialogName', 'ToonHeadDialog', None),
      ('style', TTDialog.NoButtons, None),
      ('geom', head, None),
      ('geom_scale', 0.35, None),
      ('geom_pos', (-0.25, 0, 0), None),
      ('text_wordwrap', 9, None),
      ('fadeScreen', 0, None),
      ('image', DGG.getDefaultDialogGeom(), None),
      ('relief', None, None))
     self.defineoptions(kw, optiondefs)
     TTDialog.TTDialog.__init__(self, style=self['style'])
     self.initialiseoptions(ToonHeadDialog)
     self.postInitialiseFuncList.append(self.replaceHead)
     self.reparentTo(base.a2dTopRight)
     self.setPos(-0.85, 0, -0.25)
     return
Пример #2
0
    def __init__(self):
        DirectFrame.__init__(self,
                             parent=aspect2d,
                             relief=None,
                             geom=DGG.getDefaultDialogGeom(),
                             geom_color=ToontownGlobals.GlobalDialogColor,
                             geom_scale=(1.33, 1, 1.3),
                             pos=(0, 0, 0),
                             text='',
                             text_scale=0.07,
                             text_pos=(0, 0.475))
        self.initialiseoptions(LaffShopGui)

        self.additionalLaff = 0
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.reparentTo(aspect2d)
        self.timer.posInTopRightCorner()
        self.timer.countdown(LaffRestockGlobals.TIMER_SECONDS, self.__cancel,
                             [LaffRestockGlobals.TIMER_END])
        self.setupButtons()
        self.bindButtons()
        self.laffMeter = LaffMeter.LaffMeter(base.localAvatar.style,
                                             base.localAvatar.getHp(),
                                             base.localAvatar.getMaxHp())
        self.laffMeter.reparentTo(self)
        self.laffMeter.setPos(0, 0, 0.065)
        self.laffMeter.setScale(0.13)
        self.__updateLaffMeter(1)
Пример #3
0
 def load(self):
     font = CIGlobals.getToonFont()
     box = DGG.getDefaultDialogGeom()
     self.finalScoreContainer = DirectFrame()
     self.finalScoreBg = OnscreenImage(image=box,
                                       color=(1, 1, 0.75, 1),
                                       scale=(1.9, 1.4, 1.4),
                                       parent=self.finalScoreContainer)
     self.finalScoreTitle = OnscreenText(text="Waiting for final scores...",
                                         pos=(0, 0.5, 0),
                                         font=font,
                                         scale=(0.12),
                                         parent=self.finalScoreContainer)
     self.finalScoreNameLbl = OnscreenText(text="",
                                           scale=0.095,
                                           pos=(-0.85, 0.3, 0),
                                           font=font,
                                           align=TextNode.ALeft,
                                           parent=self.finalScoreContainer)
     self.finalScorePointLbl = OnscreenText(text="",
                                            scale=0.095,
                                            pos=(0.85, 0.3, 0),
                                            font=font,
                                            align=TextNode.ARight,
                                            parent=self.finalScoreContainer)
     self.finalScoreContainer.hide()
     self.finalScoreContainer.setBin('gui-popup', 60)
     del font
     del box
Пример #4
0
 def load(self):
     font = CIGlobals.getToonFont()
     box = DGG.getDefaultDialogGeom()
     self.finalScoreContainer = DirectFrame()
     self.finalScoreBg = OnscreenImage(image=box, color=(1, 1, 0.75, 1), scale=(1.9, 1.4, 1.4), parent=self.finalScoreContainer)
     self.finalScoreTitle = OnscreenText(text='Waiting for final scores...', pos=(0, 0.5, 0), font=font, scale=0.12, parent=self.finalScoreContainer)
     self.finalScoreNameLbl = OnscreenText(text='', scale=0.095, pos=(-0.85, 0.3, 0), font=font, align=TextNode.ALeft, parent=self.finalScoreContainer)
     self.finalScorePointLbl = OnscreenText(text='', scale=0.095, pos=(0.85, 0.3, 0), font=font, align=TextNode.ARight, parent=self.finalScoreContainer)
     self.finalScoreContainer.hide()
     self.finalScoreContainer.setBin('gui-popup', 60)
     del font
     del box
 def makeActionPanel(self):
     self.actionFrame = DirectFrame(image=DGG.getDefaultDialogGeom(),
                                    image_scale=(0.7, 0.5, 0.45),
                                    image_color=(1, 1, 0.75, 1),
                                    relief=None)
     self.actionFrame.reparentTo(base.a2dTopRight)
     self.actionFrame.setPos(-0.815, 0, -0.31)
     self.actionFrameText = OnscreenText(text="",
                                         parent=self.actionFrame,
                                         scale=0.05,
                                         wordwrap=12,
                                         pos=(0, 0.1))
Пример #6
0
 def __init__(self):
     DirectFrame.__init__(self, parent=aspect2d, relief=None, geom=DGG.getDefaultDialogGeom(), geom_color=ToontownGlobals.GlobalDialogColor, geom_scale=(1.33, 1, 1.3), pos=(0, 0, 0), text='', text_scale=0.07, text_pos=(0, 0.475))
     self.initialiseoptions(LaffShopGui)
     
     self.additionalLaff = 0
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(aspect2d)
     self.timer.posInTopRightCorner()
     self.timer.countdown(LaffRestockGlobals.TIMER_SECONDS, self.__cancel, [LaffRestockGlobals.TIMER_END])
     self.setupButtons()
     self.bindButtons()
     self.laffMeter = LaffMeter.LaffMeter(base.localAvatar.style, base.localAvatar.getHp(), base.localAvatar.getMaxHp())
     self.laffMeter.reparentTo(self)
     self.laffMeter.setPos(0, 0, 0.065)
     self.laffMeter.setScale(0.13)
     self.__updateLaffMeter(1)
Пример #7
0
 def __init__(self, numPlayers, avIdList, votes, directions, namesList, disconnectedList, directionToGo, directionReason, directionTotals, *args, **kwargs):
     opts = {
         'relief': None,
         'geom': DGG.getDefaultDialogGeom(),
         'geom_color': ToontownGlobals.GlobalDialogColor[:3] + (0.80000000000000004,),
         'geom_scale': (1.75, 1, 0.75),
         'pos': (0, 0, 0.52500000000000002) }
     opts.update(kwargs)
     DirectFrame.__init__(self, *args, **args)
     self.initialiseoptions(VoteResultsPanel)
     listMultiplier = 1
     if TravelGameGlobals.SpoofFour:
         listMultiplier = 4
     
     self.avIdList = avIdList * listMultiplier
     self.numPlayers = numPlayers * listMultiplier
     self.votes = votes * listMultiplier
     self.directions = directions * listMultiplier
     self.namesList = namesList * listMultiplier
     self.disconnectedList = disconnectedList * listMultiplier
     self.directionToGo = directionToGo
     self.directionReason = directionReason
     self.directionTotals = directionTotals
     self.entryList = []
     self.rowFrame = []
     self.upDownFrame = DirectFrame(parent = self, relief = None, pos = self.getRowPos(-1))
     self.upLabel = DirectLabel(parent = self.upDownFrame, relief = None, pos = (1.2, 0, 0.0), text = TTLocalizer.TravelGameDirections[0], text_fg = (0.0, 0.0, 1.0, 1.0), text_scale = 0.050000000000000003, text_align = TextNode.ARight)
     self.downLabel = DirectLabel(parent = self.upDownFrame, relief = None, pos = (1.4299999999999999, 0, 0.0), text = TTLocalizer.TravelGameDirections[1], text_fg = (1.0, 0.0, 0.0, 1.0), text_scale = 0.050000000000000003, text_align = TextNode.ARight)
     self.totalFrame = DirectFrame(parent = self, relief = None, pos = self.getRowPos(self.numPlayers))
     self.totalText = DirectLabel(parent = self.totalFrame, relief = None, pos = (1.0, 0, 0.0), text = 'Total', text_fg = (0.0, 0.0, 0.0, 1.0), text_scale = 0.050000000000000003, text_align = TextNode.ARight)
     self.totalVotesUpLabel = DirectLabel(parent = self.totalFrame, relief = None, pos = (1.2, 0, 0.0), text = '', text_fg = (0.0, 0.0, 1.0, 1.0), text_scale = 0.050000000000000003, text_align = TextNode.ARight)
     self.totalVotesDownLabel = DirectLabel(parent = self.totalFrame, relief = None, pos = (1.4299999999999999, 0, 0.0), text = '', text_fg = (1.0, 0.0, 0.0, 1.0), text_scale = 0.050000000000000003, text_align = TextNode.ARight)
     self.totalVotesLabels = [
         self.totalVotesUpLabel,
         self.totalVotesDownLabel]
     self.resultFrame = DirectFrame(parent = self, relief = None, pos = self.getRowPos(5))
     self.resultLabel = DirectLabel(parent = self.resultFrame, text = '', text_scale = 0.059999999999999998, pos = (0.69999999999999996, 0, 0.0), text_align = TextNode.ACenter)
     self.setupResultLabel()
     for index in range(self.numPlayers):
         frame = DirectFrame(parent = self, relief = None, pos = self.getRowPos(index))
         self.rowFrame.append(frame)
         nameLabel = DirectFrame(parent = frame, relief = None, pos = (0.46000000000000002, 0.0, 0.0), text = self.namesList[index], text_fg = (0.0, 0.0, 0.0, 1.0), text_scale = 0.050000000000000003, text_align = TextNode.ACenter, text_font = DGG.getDefaultFont())
         votesUpLabel = DirectLabel(parent = frame, relief = None, pos = (1.2, 0.0, 0.0), text = '', text_fg = (0, 0, 1, 1), text_scale = 0.050000000000000003, text_align = TextNode.ARight, text_font = DGG.getDefaultFont())
         votesDownLabel = DirectLabel(parent = frame, relief = None, pos = (1.4299999999999999, 0.0, 0.0), text = '', text_fg = (1, 0, 0, 1), text_scale = 0.050000000000000003, text_align = TextNode.ARight, text_font = DGG.getDefaultFont())
         nameLabel.hide()
         self.entryList.append((nameLabel, votesUpLabel, votesDownLabel))
Пример #8
0
 def __init__(self):
     DirectFrame.__init__(self, scale=1.2)
     self['image'] = DGG.getDefaultDialogGeom()
     self['image_hpr'] = (0, 0, -90)
     self['image_scale'] = (0.62, 0.9, 0.325)
     self['image_color'] = (1, 1, 0.75, 1)
     self['image_pos'] = (0, 0, -0.065)
     self['relief'] = None
     self.reparentTo(base.a2dTopRight)
     self.setPos(-0.235, 0.0, -0.325)
     self.hide()
     self.head = None
     self.laffMeter = None
     self.exitButton = None
     self.friendButton = None
     self.teleportButton = None
     self.nameText = None
     self.actionFrame = None
     self.actionFrameText = None
     self.actionFrameButton = None
     self.actionFrameButton2 = None
     self.avatarInfo = None
     self.action = None
     self.fsm = ClassicFSM.ClassicFSM('ToonPanel', [State.State('off', self.enterOff, self.exitOff), State.State('waitOnAvatarInfoResponse', self.enterWaitOnAvatarInfoResponse, self.exitWaitOnAvatarInfoResponse, ['panel']), State.State('panel', self.enterPanel, self.exitPanel, ['off'])], 'off', 'off')
     self.fsm.enterInitialState()
     self.actionFSM = ClassicFSM.ClassicFSM('ToonPanelActionFSM', [State.State('off', self.enterOff, self.exitOff),
      State.State('waitOnAvatarStatusResponse', self.enterWaitOnAvatarStatusResponse, self.exitWaitOnAvatarStatusResponse, ['waitOnAvatarTeleportResponse',
       'waitOnAvatarFriendListResponse',
       'avatarBusy',
       'off']),
      State.State('avatarBusy', self.enterAvatarBusy, self.exitAvatarBusy, ['off']),
      State.State('waitOnAvatarTeleportResponse', self.enterWaitOnAvatarTeleportResponse, self.exitWaitOnAvatarTeleportResponse, ['unableToTP']),
      State.State('unableToTP', self.enterUnableToTP, self.exitUnableToTP, ['off']),
      State.State('waitOnAvatarFriendListResponse', self.enterWaitOnAvatarFriendListResponse, self.exitWaitOnAvatarFriendListResponse, ['fRequestA', 'fRequestR']),
      State.State('fRequestA', self.enterFriendRequestAccepted, self.exitFriendRequestAccepted, ['off']),
      State.State('fRequestR', self.enterFriendRequestRejected, self.exitFriendRequestRejected, ['off']),
      State.State('removeFriendConfirm', self.enterRemoveFriendConfirm, self.exitRemoveFriendConfirm, ['off', 'removedFriend']),
      State.State('removedFriend', self.enterRemovedFriend, self.exitRemovedFriend, ['off'])], 'off', 'off')
     self.actionFSM.enterInitialState()
     return
Пример #9
0
 def load(self):
     self.ammo_gui = loader.loadModel('phase_4/models/minigames/gun_ammo_gui.egg')
     self.ammo_gui.setScale(0.15)
     self.ammo_gui.setPos(0.38, 0, 0.1)
     self.hp_meter = DirectWaitBar(text=str(self.base.hp), text_roll=-90, text_scale=0.2, text_pos=(-0.025,
                                                                                                    0), relief=DGG.RAISED, barColor=(1,
                                                                                                                                     0,
                                                                                                                                     0,
                                                                                                                                     1), range=self.base.max_hp, value=self.base.hp, parent=base.a2dBottomRight, scale=0.4, pos=(-0.12,
                                                                                                                                                                                                                                 0,
                                                                                                                                                                                                                                 0.2), frameSize=(-0.4,
                                                                                                                                                                                                                                                  0.4,
                                                                                                                                                                                                                                                  -0.2,
                                                                                                                                                                                                                                                  0.2))
     self.hp_meter.setR(-90)
     self.hp_meter.hide()
     self.crosshair = getCrosshair()
     font = CIGlobals.getToonFont()
     box = DGG.getDefaultDialogGeom()
     if self.base.__class__.__name__ == 'GunGameToonFPS':
         self.stats_container = DirectFrame(parent=base.a2dTopLeft, pos=(0.3, 0.2,
                                                                         -0.185))
         self.stats_bg = OnscreenImage(image=box, color=(1, 1, 0.75, 1), scale=(0.5,
                                                                                0.3,
                                                                                0.3), parent=self.stats_container)
         self.stats_lbl = OnscreenText(font=font, text='Stats', pos=(-0.01, 0.08,
                                                                     0), parent=self.stats_container)
         self.kills_lbl = OnscreenText(font=font, text='Kills: ' + str(self.base.kills), pos=(-0.235,
                                                                                              0.025,
                                                                                              0), scale=0.055, parent=self.stats_container, align=TextNode.ALeft)
         self.deaths_lbl = OnscreenText(font=font, text='Deaths: ' + str(self.base.deaths), pos=(-0.235,
                                                                                                 -0.04,
                                                                                                 0), scale=0.055, parent=self.stats_container, align=TextNode.ALeft)
         self.points_lbl = OnscreenText(font=font, text='Points: ' + str(self.base.points), pos=(-0.235,
                                                                                                 -0.105,
                                                                                                 0), scale=0.055, parent=self.stats_container, align=TextNode.ALeft)
         self.stats_container.hide()
         del font
         del box
 def __init__(self, avId, avName, avDNA, context, **kw):
     self.avId = avId
     self.avDNA = avDNA
     self.context = context
     self.avName = avName
     if len(base.localAvatar.friendsList) >= MaxFriends:
         base.cr.friendManager.up_inviteeFriendResponse(3, self.context)
         self.context = None
         text = OTPLocalizer.FriendInviteeTooManyFriends % self.avName
         style = TTDialog.Acknowledge
         buttonTextList = [OTPLocalizer.FriendInviteeOK]
         command = self.__handleOhWell
     else:
         text = OTPLocalizer.FriendInviteeInvitation % self.avName
         style = TTDialog.TwoChoice
         buttonTextList = [OTPLocalizer.FriendInviteeOK, OTPLocalizer.FriendInviteeNo]
         command = self.__handleButton
     optiondefs = (('image', DGG.getDefaultDialogGeom(), None),
      ('relief', None, None),
      ('dialogName', 'FriendInvitee', None),
      ('text', text, None),
      ('style', style, None),
      ('buttonTextList', buttonTextList, None),
      ('command', command, None),
      ('image_color', (1.0, 0.89, 0.77, 1.0), None),
      ('geom_scale', 0.2, None),
      ('geom_pos', (-0.1, 0, -0.025), None),
      ('pad', (0.075, 0.075), None),
      ('topPad', 0, None),
      ('midPad', 0, None),
      ('pos', (0.45, 0, 0.75), None),
      ('scale', 0.75, None))
     self.defineoptions(kw, optiondefs)
     ToonHeadDialog.ToonHeadDialog.__init__(self, self.avDNA)
     self.accept('cancelFriendInvitation', self.__handleCancelFromAbove)
     self.initialiseoptions(FriendInvitee)
     self.show()
     return
Пример #11
0
 def __init__(self, dna, **kw):
     self.dna = dna
     head = hidden.attachNewNode('head', 20)
     self.headModel = ToonHead.ToonHead()
     self.headModel.setupHead(self.dna, forGui=1)
     self.headModel.fitAndCenterHead(1.0, forGui=1)
     self.headModel.reparentTo(head)
     self.headModel.setName('headModel')
     self.headModel.startBlink()
     optiondefs = (('dialogName', 'ToonHeadDialog',
                    None), ('style', TTDialog.NoButtons, None),
                   ('geom', head, None), ('geom_scale', 0.35, None),
                   ('geom_pos', (-0.25, 0, 0), None),
                   ('text_wordwrap', 9, None), ('fadeScreen', 0, None),
                   ('image', DGG.getDefaultDialogGeom(),
                    None), ('relief', None, None))
     self.defineoptions(kw, optiondefs)
     TTDialog.TTDialog.__init__(self, style=self['style'])
     self.initialiseoptions(ToonHeadDialog)
     self.postInitialiseFuncList.append(self.replaceHead)
     self.reparentTo(base.a2dTopRight)
     self.setPos(-0.85, 0, -0.25)
     return
Пример #12
0
 def makePickableQuests(self, list):
     quests = []
     for questId in list:
         quests.append(Quests.Quest(questId, 0, 0, list.index(questId)))
     positions = [(0, 0, 0.6), (0, 0, 0), (0, 0, -0.6)]
     self.questNotes = base.localAvatar.questManager.makeQuestNotes(quests = quests)
     self.questFrame = DirectFrame(parent = base.a2dLeftCenter, relief = None, pos = (0.5, 0, 0),
         geom = DGG.getDefaultDialogGeom(), geom_color=Vec4(0.8, 0.6, 0.4, 1),
         geom_scale=(1.85, 1, 0.9), geom_hpr=(0, 0, -90))
     self.questBtns = []
     for i in xrange(len(self.questNotes)):
         note = self.questNotes[i]
         note.setPos(0, 0, 0)
         if quests[i].currentObjective.type in Quests.DefeatObjectives:
             note.progressText.hide()
         btn = DirectButton(geom = note, parent = self.questFrame,
             pos = positions[i], command = self.d_pickedQuest, extraArgs = [quests[i]], relief = None)
         btn.setScale(1.15)
         note.reparentTo(btn.stateNodePath[0], 20)
         note.instanceTo(btn.stateNodePath[1], 20)
         note.instanceTo(btn.stateNodePath[2], 20)
         note.show()
         self.questBtns.append(btn)
 def __init__(self, avId, avName, avDNA, context, **kw):
     self.avId = avId
     self.avDNA = avDNA
     self.context = context
     self.avName = avName
     if len(base.localAvatar.friendsList) >= MaxFriends:
         base.cr.friendManager.up_inviteeFriendResponse(3, self.context)
         self.context = None
         text = OTPLocalizer.FriendInviteeTooManyFriends % self.avName
         style = TTDialog.Acknowledge
         buttonTextList = [OTPLocalizer.FriendInviteeOK]
         command = self.__handleOhWell
     else:
         text = OTPLocalizer.FriendInviteeInvitation % self.avName
         style = TTDialog.TwoChoice
         buttonTextList = [
             OTPLocalizer.FriendInviteeOK, OTPLocalizer.FriendInviteeNo
         ]
         command = self.__handleButton
     optiondefs = (('image', DGG.getDefaultDialogGeom(),
                    None), ('relief', None, None), ('dialogName',
                                                    'FriendInvitee', None),
                   ('text', text, None), ('style', style, None),
                   ('buttonTextList', buttonTextList,
                    None), ('command', command,
                            None), ('image_color', (1.0, 0.89, 0.77, 1.0),
                                    None), ('geom_scale', 0.2, None),
                   ('geom_pos', (-0.1, 0, -0.025),
                    None), ('pad', (0.075, 0.075),
                            None), ('topPad', 0, None), ('midPad', 0, None),
                   ('pos', (0.45, 0, 0.75), None), ('scale', 0.75, None))
     self.defineoptions(kw, optiondefs)
     ToonHeadDialog.ToonHeadDialog.__init__(self, self.avDNA)
     self.accept('cancelFriendInvitation', self.__handleCancelFromAbove)
     self.initialiseoptions(FriendInvitee)
     self.show()
     return
Пример #14
0
    def load(self):
        base.cr.renderFrame()
        base.camLens.setMinFov(CIGlobals.DefaultCameraFov / (4./3.))

        self.__setupStageToon()
        holidayMgr = base.cr.holidayManager

        self.props = []
        self.world = loader.loadModel('phase_9/models/cogHQ/SellbotHQExterior.bam')
        self.world.reparentTo(base.render)
        self.world.setPos(0, 227.09, -25.36)
        self.sky = loader.loadModel('phase_9/models/cogHQ/cog_sky.bam')
        self.sky.setScale(1)
        self.sky.reparentTo(base.render)
        self.sky.find('**/InnerGroup').removeNode()
        self.fog = Fog('charSelectFog')
        self.fog.setColor(0.2, 0.2, 0.2)
        self.fog.setExpDensity(0.003)
        base.render.setFog(self.fog)
        
        # Let's fix the flickering doors.
        doors = self.world.find('**/doors').getChildren()
        
        for door in doors:
            for frameHole in door.findAllMatches('**/doorFrameHole*'): frameHole.removeNode()

        if holidayMgr.getHoliday() == HolidayType.CHRISTMAS:
            piles = {
                'half' : {'pos' : (57.28, 86.47, -25.00), 'hpr' : (46.79, 0, 0)},
                'full' : {'pos' : (71.23, 85.2, -25.00), 'hpr' : (290.82, 0, 0)},
                'half_2' : {'pos' : (-15, 128.69, -25), 'hpr' : (60.26, 0, 0)}
            }

            for pileType, info in piles.items():
                if '_' in pileType:
                    pileType = pileType[:-2]
                pile = loader.loadModel('phase_8/models/props/snow_pile_%s.bam' % (pileType))
                pile.reparentTo(render)
                pile.setPos(info['pos'])
                pile.setHpr(info['hpr'])
                self.props.append(pile)

            self.world.find('**/TopRocks').removeNode()

            snowTxt = loader.loadTexture('winter/maps/sbhq_snow.png')
            self.world.find('**/Ground').setTexture(snowTxt, 1)

            self.particles = ParticleLoader.loadParticleEffect('phase_8/etc/snowdisk.ptf')
            self.particles.setPos(0, 0, 5)
            self.particlesRender = self.world.attachNewNode('snowRender')
            self.particlesRender.setDepthWrite(0)
            self.particlesRender.setBin('fixed', 1)
            self.particles.start(parent = camera, renderParent = self.particlesRender)
            self.fog.setColor(0.486, 0.784, 1)
            self.fog.setExpDensity(0.006)
            base.render.setFog(self.fog)


        self.title = DirectLabel(text=self.TITLE, text_font=CIGlobals.getMickeyFont(), text_fg=(1, 0.9, 0.1, 1),
                                relief=None, text_scale=0.13, pos=(0, 0, 0.82))
        self.charNameLabel = OnscreenText(text = "", font = CIGlobals.getMickeyFont(),
                                        pos = (-0.25, 0.5, 0), fg = (1, 0.9, 0.1, 1.0))
        self.charNameLabel.hide()
        self.frame = DirectFrame()
        self.frame['image'] = DGG.getDefaultDialogGeom()
        self.frame['image_color'] = CIGlobals.DialogColor
        self.frame['image_scale'] = (-0.9, -0.9, 0.8)
        self.frame['image_pos'] = (0.82, 0, -0.125)
        self.playOrCreateButton = DirectButton(text = "", pos = (0.8125, 0, -0.35), command = self.__action,
                                            geom = CIGlobals.getDefaultBtnGeom(), text_scale = 0.06,
                                            relief = None, text_pos = (0, -0.01))
        self.playOrCreateButton.hide()
        self.deleteButton = DirectButton(text = "Delete", pos = (0.8125, 0, -0.45),
                                        command = self.__action, extraArgs = ['delete'],
                                        geom = CIGlobals.getDefaultBtnGeom(), text_scale = 0.06,
                                        relief = None, text_pos = (0, -0.01))
        self.deleteButton.hide()
        self.quitButton = DirectButton(text = "Quit", pos = (-1.10, 0, -0.925), command = self.__action,
                                    extraArgs = ['quit'], text_scale = 0.06, geom = CIGlobals.getDefaultBtnGeom(),
                                    relief = None, text_pos = (0, -0.01))

        textRolloverColor = Vec4(1, 1, 0, 1)
        textDownColor = Vec4(0.5, 0.9, 1, 1)
        textDisabledColor = Vec4(0.4, 0.8, 0.4, 1)

        for slot in range(6):
            if self.avChooser.hasToonInSlot(slot):
                choice = self.avChooser.getAvChoiceBySlot(slot)
                text = choice.name
            else:
                text = self.NO_TOON
            btn = DirectButton(
                relief=None, text = text, text_scale=0.06,
                text_align=TextNode.ALeft, text1_bg=textDownColor, text2_bg=textRolloverColor,
                text3_fg=textDisabledColor, textMayChange=0, command=self.__handleCharButton,
                extraArgs=[slot], text_pos = (0, 0, 0.0)
            )
            btn.setPythonTag('slot', slot)
            self.charButtons.append(btn)
            btn['state'] = DGG.NORMAL

        gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam')
        listXorigin = -0.02
        listFrameSizeX = 0.625
        listZorigin = -0.43
        listFrameSizeZ = 0.51
        arrowButtonScale = 0.0
        itemFrameXorigin = -0.237
        itemFrameZorigin = 0.365
        buttonXstart = itemFrameXorigin + 0.293

        self.charList = DirectScrolledList(
            relief=None,
            pos=(0.75, 0, -0.225),
            incButton_image=None,
            #incButton_relief=None,
            incButton_scale=(arrowButtonScale, arrowButtonScale, -arrowButtonScale),
            #incButton_pos=(buttonXstart, 0, itemFrameZorigin - 0.999),
            #incButton_image3_color=Vec4(1, 1, 1, 0.2),
            decButton_image=None,
            #decButton_relief=None,
            decButton_scale=(arrowButtonScale, arrowButtonScale, arrowButtonScale),
            #decButton_pos=(buttonXstart, 0, itemFrameZorigin + 0.125),
            #decButton_image3_color=Vec4(1, 1, 1, 0.2),
            itemFrame_pos=(itemFrameXorigin, 0, itemFrameZorigin),
            itemFrame_scale=1.0,
            itemFrame_relief=DGG.SUNKEN,
            itemFrame_frameSize=(listXorigin,
                listXorigin + listFrameSizeX,
                listZorigin,
                listZorigin + listFrameSizeZ),
            itemFrame_frameColor=(0.85, 0.95, 1, 1),
            itemFrame_borderWidth=(0.01, 0.01),
            numItemsVisible=15,
            forceHeight=0.075,
            items=self.charButtons,
            parent = self.frame
        )

        base.camera.setPos(75.12, 63.22, -23)
        base.camera.setHpr(26.57, 9.62, 0)
Пример #15
0
    def __init__(self, numPlayers, avIdList, votes, directions, namesList,
                 disconnectedList, directionToGo, directionReason,
                 directionTotals, *args, **kwargs):
        opts = {
            'relief': None,
            'geom': DGG.getDefaultDialogGeom(),
            'geom_color': ToontownGlobals.GlobalDialogColor[:3] + (0.8, ),
            'geom_scale': (1.75, 1, 0.25),
            'pos': (0, 0, 0.825)
        }
        opts.update(kwargs)
        DirectFrame.__init__(self, *args, **opts)
        self.initialiseoptions(VoteResultsTrolleyPanel)
        listMultiplier = 1
        if TravelGameGlobals.SpoofFour:
            listMultiplier = 4
        self.avIdList = avIdList * listMultiplier
        self.numPlayers = numPlayers * listMultiplier
        self.votes = votes * listMultiplier
        self.directions = directions * listMultiplier
        self.namesList = namesList * listMultiplier
        self.disconnectedList = disconnectedList * listMultiplier
        self.directionToGo = directionToGo
        self.directionReason = directionReason
        self.directionTotals = directionTotals
        self.entryList = []
        self.rowFrame = []
        self.upDownFrame = DirectFrame(parent=self,
                                       relief=None,
                                       pos=self.getRowPos(-1))
        self.upLabel = DirectLabel(parent=self,
                                   relief=None,
                                   pos=(-0.5, 0, 0.06),
                                   text=TTLocalizer.TravelGameDirections[0] +
                                   ':',
                                   text_fg=(0.0, 0.0, 1.0, 1.0),
                                   text_scale=0.05,
                                   text_align=TextNode.ARight)
        self.downLabel = DirectLabel(parent=self,
                                     relief=None,
                                     pos=(0.5, 0, 0.06),
                                     text=TTLocalizer.TravelGameDirections[1] +
                                     ':',
                                     text_fg=(1.0, 0.0, 0.0, 1.0),
                                     text_scale=0.05,
                                     text_align=TextNode.ARight)
        self.totalVotesUpLabel = DirectLabel(parent=self.upLabel,
                                             relief=None,
                                             pos=(0.2, 0, 0.0),
                                             text='0',
                                             text_fg=(0.0, 0.0, 1.0, 1.0),
                                             text_scale=0.05,
                                             text_align=TextNode.ARight)
        self.totalVotesDownLabel = DirectLabel(parent=self.downLabel,
                                               relief=None,
                                               pos=(0.2, 0, 0.0),
                                               text='0',
                                               text_fg=(1.0, 0.0, 0.0, 1.0),
                                               text_scale=0.05,
                                               text_align=TextNode.ARight)
        self.totalFrame = DirectFrame(parent=self,
                                      relief=None,
                                      pos=self.getRowPos(self.numPlayers))
        self.totalVotesLabels = [
            self.totalVotesUpLabel, self.totalVotesDownLabel
        ]
        self.resultFrame = DirectFrame(parent=self,
                                       relief=None,
                                       pos=self.getRowPos(0.5))
        self.resultLabel = DirectLabel(parent=self.resultFrame,
                                       text='',
                                       text_scale=0.06,
                                       pos=(0.7, 0, 0.0),
                                       text_align=TextNode.ACenter)
        self.setupResultLabel()
        for index in xrange(self.numPlayers):
            frame = DirectFrame(parent=self,
                                relief=None,
                                pos=self.getRowPos(index))
            self.rowFrame.append(frame)
            nameLabel = DirectFrame(parent=frame,
                                    relief=None,
                                    pos=(0.46, 0.0, 0.0),
                                    text=self.namesList[index],
                                    text_fg=(0.0, 0.0, 0.0, 1.0),
                                    text_scale=0.05,
                                    text_align=TextNode.ACenter,
                                    text_font=DGG.getDefaultFont())
            votesUpLabel = DirectLabel(parent=frame,
                                       relief=None,
                                       pos=(1.2, 0.0, 0.0),
                                       text='',
                                       text_fg=(0, 0, 1, 1),
                                       text_scale=0.05,
                                       text_align=TextNode.ARight,
                                       text_font=DGG.getDefaultFont())
            votesDownLabel = DirectLabel(parent=frame,
                                         relief=None,
                                         pos=(1.43, 0.0, 0.0),
                                         text='',
                                         text_fg=(1, 0, 0, 1),
                                         text_scale=0.05,
                                         text_align=TextNode.ARight,
                                         text_font=DGG.getDefaultFont())
            nameLabel.hide()
            self.entryList.append((nameLabel, votesUpLabel, votesDownLabel))

        self.avVotesLabel = {}
        self.avArrows = {}
        matchingGameGui = loader.loadModel(
            'phase_3.5/models/gui/matching_game_gui')
        minnieArrow = matchingGameGui.find('**/minnieArrow')
        from toontown.minigame.DistributedTravelGame import map3dToAspect2d
        for index in xrange(self.numPlayers):
            avId = self.avIdList[index]
            av = base.cr.doId2do.get(avId)
            if av:
                height = av.getHeight()
                avPos = av.getPos(render)
                avPos.setZ(av.getZ() + 5)
                labelPos = map3dToAspect2d(render, avPos)
                if not labelPos:
                    continue
                labelPos.setZ(labelPos.getZ() + 0.3)
                arrow = None
                if self.votes[index] > 0:
                    arrow = aspect2d.attachNewNode('avArrow')
                    minnieArrow.copyTo(arrow)
                    arrow.setScale(1.1, 1, 1.15)
                    arrow.setPos(labelPos)
                    if self.directions[index] == 0:
                        arrow.setR(-90)
                        arrow.setColorScale(0, 0, 1, 1)
                    else:
                        arrow.setR(90)
                        arrow.setColorScale(1, 0, 0, 1)
                    arrow.wrtReparentTo(self.resultFrame)
                    arrow.hide()
                    self.avArrows[index] = arrow
                fgColor = Vec4(0, 0, 0, 1)
                if self.votes[index] > 0:
                    if self.directions[index] == 0:
                        fgColor = Vec4(0, 0, 1, 1)
                    else:
                        fgColor = Vec4(1, 0, 0, 1)
                if self.votes[index] > 0:
                    newLabel = DirectLabel(
                        parent=aspect2d,
                        relief=None,
                        pos=labelPos,
                        text='test',
                        text_fg=(1, 1, 1, 1),
                        text_scale=0.1,
                        text_align=TextNode.ACenter,
                        text_font=ToontownGlobals.getSignFont(),
                        text_pos=(0, -0.01, 0))
                else:
                    newLabel = DirectLabel(
                        parent=aspect2d,
                        geom=DGG.getDefaultDialogGeom(),
                        geom_scale=(0.2, 1, 0.2),
                        relief=None,
                        pos=labelPos,
                        text='test',
                        text_fg=(0.5, 0.5, 0.5, 1),
                        text_scale=0.1,
                        text_align=TextNode.ACenter,
                        text_font=ToontownGlobals.getSignFont(),
                        text_pos=(0, -0.035, 0))
                newLabel.wrtReparentTo(self.resultFrame)
                newLabel.hide()
                self.avVotesLabel[index] = newLabel

        matchingGameGui.removeNode()
        self.curArrowSfxIndex = 0
        self.upArrowSfx = []
        self.downArrowSfx = []
        for i in xrange(5):
            self.upArrowSfx.append(
                base.loader.loadSfx(
                    'phase_4/audio/sfx/MG_sfx_travel_game_blue_arrow.ogg'))
            self.downArrowSfx.append(
                base.loader.loadSfx(
                    'phase_4/audio/sfx/MG_sfx_travel_game_red_arrow.ogg'))

        self.winVoteSfx = base.loader.loadSfx(
            'phase_4/audio/sfx/MG_sfx_travel_game_win_vote.ogg')
        self.noVoteSfx = base.loader.loadSfx(
            'phase_4/audio/sfx/MG_sfx_travel_game_square_no_vote_1.ogg')
        self.loseVoteSfx = base.loader.loadSfx(
            'phase_4/audio/sfx/MG_sfx_travel_game_lose_vote.ogg')
        self.localAvatarWon = False
        self.localAvatarLost = False
        localIndex = self.avIdList.index(base.localAvatar.doId)
        localDirection = self.directions[localIndex]
        localVotes = self.votes[localIndex]
        if localVotes:
            if localDirection == self.directionToGo:
                if not TravelGameGlobals.ReverseWin:
                    self.localAvatarWon = True
                else:
                    self.localAvatarLost = True
            elif not TravelGameGlobals.ReverseWin:
                self.localAvatarLost = True
            else:
                self.localAvatarWon = True
        return
Пример #16
0
    def __init__(self,
                 target,
                 increment=0.01,
                 hprIncrement=1.0,
                 parent=aspect2d,
                 pos=(0.0, 0.0, 0.0)):
        DirectFrame.__init__(self, parent)
        self.target = target
        self.increment = increment
        self.minimized = False
        self.mainFrame = DirectFrame(
            parent=self,
            relief=None,
            geom=DGG.getDefaultDialogGeom(),
            geom_color=(1, 1, 0.75, 1),
            geom_scale=self.ORIGINAL_SCALE,
            pos=pos,
        )
        # Arrow gui (preload)
        gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_mainGui.bam')
        # Set Bins
        self.mainFrame.setBin('gui-popup', 0)
        # Name
        name = self.target.getName()
        self.nameLabel = TTLabel(self.mainFrame,
                                 text='Target: %s' % name,
                                 pos=self.ORIG_NAME_POS,
                                 text_align=TextNode.ALeft,
                                 text_wordwrap=13)
        # Pos
        pos = self.target.getPos()
        self.posLabel = TTLabel(self.mainFrame,
                                text='Position: ',
                                pos=(-0.39, 0.0, 0.055),
                                text_align=TextNode.ALeft)
        self.xPosSpinner = PlacerToolSpinner(self.mainFrame,
                                             value=pos[0],
                                             pos=(-0.085, 0.0, 0.06),
                                             increment=increment,
                                             callback=self.handleXChange)
        self.yPosSpinner = PlacerToolSpinner(self.mainFrame,
                                             value=pos[1],
                                             pos=(0.1, 0.0, 0.06),
                                             increment=increment,
                                             callback=self.handleYChange)
        self.zPosSpinner = PlacerToolSpinner(self.mainFrame,
                                             value=pos[2],
                                             pos=(0.28, 0.0, 0.06),
                                             increment=increment,
                                             callback=self.handleZChange)
        # hpr
        hpr = self.target.getHpr()
        self.hprLabel = TTLabel(self.mainFrame,
                                text='HPR: ',
                                pos=(-0.39, 0.0, -0.19),
                                text_align=TextNode.ALeft)
        self.hSpinner = PlacerToolSpinner(self.mainFrame,
                                          value=hpr[0],
                                          pos=(-0.085, 0.0, -0.195),
                                          increment=hprIncrement,
                                          callback=self.handleHChange)
        self.pSpinner = PlacerToolSpinner(self.mainFrame,
                                          value=hpr[1],
                                          pos=(0.1, 0.0, -0.195),
                                          increment=hprIncrement,
                                          callback=self.handlePChange)
        self.rSpinner = PlacerToolSpinner(self.mainFrame,
                                          value=hpr[2],
                                          pos=(0.28, 0.0, -0.195),
                                          increment=hprIncrement,
                                          callback=self.handleRChange)
        # scale
        scale = [round(s, 3) for s in self.target.getScale()]
        self.scaleLabel = TTLabel(self.mainFrame,
                                  text='Scale: ',
                                  pos=(-0.39, 0.0, -0.4),
                                  text_align=TextNode.ALeft)

        self.sxSpinner = PlacerToolSpinner(self.mainFrame,
                                           value=hpr[0],
                                           pos=(-0.085, 0.0, -0.4),
                                           increment=increment,
                                           callback=self.handleSxChange)
        self.sySpinner = PlacerToolSpinner(self.mainFrame,
                                           value=hpr[1],
                                           pos=(0.1, 0.0, -0.4),
                                           increment=increment,
                                           callback=self.handleSyChange)
        self.szSpinner = PlacerToolSpinner(self.mainFrame,
                                           value=hpr[2],
                                           pos=(0.28, 0.0, -0.4),
                                           increment=increment,
                                           callback=self.handleSzChange)

        gui.removeNode()
        gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_nameShop')
        thumb = gui.find('**/tt_t_gui_mat_namePanelCircle')
        self.dragButton = DirectButton(self.mainFrame,
                                       relief=None,
                                       image=thumb,
                                       image_scale=(0.5, 0.5, 0.5),
                                       pos=self.ORIG_DRAG_BUTTON_POS)
        self.minimizeButton = DirectButton(self.mainFrame,
                                           relief=None,
                                           image=thumb,
                                           image_scale=(0.5, 0.5, 0.5),
                                           image_color=(0.0, 0.0, 0.65, 1.0),
                                           pos=self.ORIG_MINI_BUTTON_POS,
                                           command=self.toggleMinimize,
                                           extraArgs=[])
        self.dragButton.bind(DGG.B1PRESS, self.onPress)
        if target is not None:
            self.setTarget(target)
Пример #17
0
 def makeActionPanel(self):
     self.actionFrame = DirectFrame(image=DGG.getDefaultDialogGeom(), image_scale=(0.7, 0.5, 0.45), image_color=(1, 1, 0.75, 1), relief=None)
     self.actionFrame.reparentTo(base.a2dTopRight)
     self.actionFrame.setPos(-0.815, 0, -0.31)
     self.actionFrameText = OnscreenText(text='', parent=self.actionFrame, scale=0.05, wordwrap=12, pos=(0, 0.1))
     return
Пример #18
0
    def __init__(self, numPlayers, avIdList, votes, directions, namesList, disconnectedList, directionToGo, directionReason, directionTotals, *args, **kwargs):
        opts = {'relief': None,
         'geom': DGG.getDefaultDialogGeom(),
         'geom_color': ToontownGlobals.GlobalDialogColor[:3] + (0.8,),
         'geom_scale': (1.75, 1, 0.25),
         'pos': (0, 0, 0.825)}
        opts.update(kwargs)
        DirectFrame.__init__(self, *args, **opts)
        self.initialiseoptions(VoteResultsTrolleyPanel)
        listMultiplier = 1
        if TravelGameGlobals.SpoofFour:
            listMultiplier = 4
        self.avIdList = avIdList * listMultiplier
        self.numPlayers = numPlayers * listMultiplier
        self.votes = votes * listMultiplier
        self.directions = directions * listMultiplier
        self.namesList = namesList * listMultiplier
        self.disconnectedList = disconnectedList * listMultiplier
        self.directionToGo = directionToGo
        self.directionReason = directionReason
        self.directionTotals = directionTotals
        self.entryList = []
        self.rowFrame = []
        self.upDownFrame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(-1))
        self.upLabel = DirectLabel(parent=self, relief=None, pos=(-0.5, 0, 0.06), text=TTLocalizer.TravelGameDirections[0] + ':', text_fg=(0.0, 0.0, 1.0, 1.0), text_scale=0.05, text_align=TextNode.ARight)
        self.downLabel = DirectLabel(parent=self, relief=None, pos=(0.5, 0, 0.06), text=TTLocalizer.TravelGameDirections[1] + ':', text_fg=(1.0, 0.0, 0.0, 1.0), text_scale=0.05, text_align=TextNode.ARight)
        self.totalVotesUpLabel = DirectLabel(parent=self.upLabel, relief=None, pos=(0.2, 0, 0.0), text='0', text_fg=(0.0, 0.0, 1.0, 1.0), text_scale=0.05, text_align=TextNode.ARight)
        self.totalVotesDownLabel = DirectLabel(parent=self.downLabel, relief=None, pos=(0.2, 0, 0.0), text='0', text_fg=(1.0, 0.0, 0.0, 1.0), text_scale=0.05, text_align=TextNode.ARight)
        self.totalFrame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(self.numPlayers))
        self.totalVotesLabels = [self.totalVotesUpLabel, self.totalVotesDownLabel]
        self.resultFrame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(0.5))
        self.resultLabel = DirectLabel(parent=self.resultFrame, text='', text_scale=0.06, pos=(0.7, 0, 0.0), text_align=TextNode.ACenter)
        self.setupResultLabel()
        for index in range(self.numPlayers):
            frame = DirectFrame(parent=self, relief=None, pos=self.getRowPos(index))
            self.rowFrame.append(frame)
            nameLabel = DirectFrame(parent=frame, relief=None, pos=(0.46, 0.0, 0.0), text=self.namesList[index], text_fg=(0.0, 0.0, 0.0, 1.0), text_scale=0.05, text_align=TextNode.ACenter, text_font=DGG.getDefaultFont())
            votesUpLabel = DirectLabel(parent=frame, relief=None, pos=(1.2, 0.0, 0.0), text='', text_fg=(0, 0, 1, 1), text_scale=0.05, text_align=TextNode.ARight, text_font=DGG.getDefaultFont())
            votesDownLabel = DirectLabel(parent=frame, relief=None, pos=(1.43, 0.0, 0.0), text='', text_fg=(1, 0, 0, 1), text_scale=0.05, text_align=TextNode.ARight, text_font=DGG.getDefaultFont())
            nameLabel.hide()
            self.entryList.append((nameLabel, votesUpLabel, votesDownLabel))

        self.avVotesLabel = {}
        self.avArrows = {}
        matchingGameGui = loader.loadModel('phase_3.5/models/gui/matching_game_gui')
        minnieArrow = matchingGameGui.find('**/minnieArrow')
        from toontown.minigame.DistributedTravelGame import map3dToAspect2d
        for index in range(self.numPlayers):
            avId = self.avIdList[index]
            av = base.cr.doId2do.get(avId)
            if av:
                height = av.getHeight()
                avPos = av.getPos(render)
                avPos.setZ(av.getZ() + 5)
                labelPos = map3dToAspect2d(render, avPos)
                if not labelPos:
                    continue
                labelPos.setZ(labelPos.getZ() + 0.3)
                arrow = None
                if self.votes[index] > 0:
                    arrow = aspect2d.attachNewNode('avArrow')
                    minnieArrow.copyTo(arrow)
                    arrow.setScale(1.1, 1, 1.15)
                    arrow.setPos(labelPos)
                    if self.directions[index] == 0:
                        arrow.setR(-90)
                        arrow.setColorScale(0, 0, 1, 1)
                    else:
                        arrow.setR(90)
                        arrow.setColorScale(1, 0, 0, 1)
                    arrow.wrtReparentTo(self.resultFrame)
                    arrow.hide()
                    self.avArrows[index] = arrow
                fgColor = Vec4(0, 0, 0, 1)
                if self.votes[index] > 0:
                    if self.directions[index] == 0:
                        fgColor = Vec4(0, 0, 1, 1)
                    else:
                        fgColor = Vec4(1, 0, 0, 1)
                if self.votes[index] > 0:
                    newLabel = DirectLabel(parent=aspect2d, relief=None, pos=labelPos, text='test', text_fg=(1, 1, 1, 1), text_scale=0.1, text_align=TextNode.ACenter, text_font=ToontownGlobals.getSignFont(), text_pos=(0, -0.01, 0))
                else:
                    newLabel = DirectLabel(parent=aspect2d, geom=DGG.getDefaultDialogGeom(), geom_scale=(0.2, 1, 0.2), relief=None, pos=labelPos, text='test', text_fg=(0.5, 0.5, 0.5, 1), text_scale=0.1, text_align=TextNode.ACenter, text_font=ToontownGlobals.getSignFont(), text_pos=(0, -0.035, 0))
                newLabel.wrtReparentTo(self.resultFrame)
                newLabel.hide()
                self.avVotesLabel[index] = newLabel

        matchingGameGui.removeNode()
        self.curArrowSfxIndex = 0
        self.upArrowSfx = []
        self.downArrowSfx = []
        for i in range(5):
            self.upArrowSfx.append(base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_blue_arrow.mp3'))
            self.downArrowSfx.append(base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_red_arrow.mp3'))

        self.winVoteSfx = base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_win_vote.mp3')
        self.noVoteSfx = base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_square_no_vote_1.mp3')
        self.loseVoteSfx = base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_lose_vote.mp3')
        self.localAvatarWon = False
        self.localAvatarLost = False
        localIndex = self.avIdList.index(base.localAvatar.doId)
        localDirection = self.directions[localIndex]
        localVotes = self.votes[localIndex]
        if localVotes:
            if localDirection == self.directionToGo:
                if not TravelGameGlobals.ReverseWin:
                    self.localAvatarWon = True
                else:
                    self.localAvatarLost = True
            elif not TravelGameGlobals.ReverseWin:
                self.localAvatarLost = True
            else:
                self.localAvatarWon = True
        return
Пример #19
0
    def makePickableQuests(self, questList):
        self.doCameraNPCInteraction(True)

        quests = []

        for questId in questList:
            quest = Quest(questId, base.localAvatar.questManager)
            quest.setupCurrentObjectiveFromData(-1, 0, None)
            quests.append(quest)

        positions = [(0, 0, 0.65), (0, 0, 0.1), (0, 0, -0.45)]

        self.questFrame = DirectFrame(relief=None,
                                      pos=(-0.8, 0, 0),
                                      geom=DGG.getDefaultDialogGeom(),
                                      geom_color=Vec4(0.8, 0.6, 0.4, 1),
                                      geom_scale=(1.85, 1, 0.9),
                                      geom_hpr=(0, 0, -90))

        self.cancelBtn = DirectButton(text="Cancel",
                                      geom=CIGlobals.getDefaultBtnGeom(),
                                      geom_scale=(0.6, 0.75, 0.75),
                                      relief=None,
                                      parent=self.questFrame,
                                      pos=(0.2, 0, -0.8),
                                      text_scale=0.045,
                                      text_pos=(0, -0.015),
                                      scale=1.1,
                                      command=self.__cancelQuestPicker,
                                      extraArgs=[False])

        self.timer = Timer()
        self.timer.load()
        self.timer.setScale(0.3)
        self.timer.reparentTo(self.questFrame)
        self.timer.setPos(-0.1, 0, -0.8)
        self.timer.setInitialTime(20)
        self.timer.setZeroCommand(self.__cancelQuestPicker)
        self.timer.startTiming()

        self.questPosters = []
        self.questBtns = []

        for i in xrange(len(quests)):
            poster = None
            quest = quests[i]
            poster = QuestGlobals.generatePoster(quest, parent=aspect2d)
            poster.setScale(0.85)
            poster.setPos(0, 0, 0)
            poster.progressBar.hide()
            self.questPosters.append(poster)

            # Let's setup the choose button.
            btn = DirectButton(geom=CIGlobals.getDefaultBtnGeom(),
                               parent=poster,
                               pos=(0.35, 0, 0.215),
                               text='Choose',
                               text_scale=0.08,
                               text_pos=(0, -0.025),
                               relief=None,
                               command=self.d_pickedQuest,
                               extraArgs=[quests[i]])
            btn.setScale(0.4)
            btn.setBin('gui-popup', 60)
            btn.initialiseoptions(DirectButton)

            poster.reparentTo(self.questFrame.stateNodePath[0], 20)
            poster.setPos(positions[i])
            poster.show()

            self.questBtns.append(btn)
    def __init__(self):
        DirectFrame.__init__(self, scale=1.2)
        self['image'] = DGG.getDefaultDialogGeom()
        self['image_hpr'] = (0, 0, -90)
        self['image_scale'] = (0.67, 0.9, 0.325)
        self['image_color'] = (1, 1, 0.75, 1)
        self['image_pos'] = (0, 0, -0.09)
        self['relief'] = None
        self.reparentTo(base.a2dTopRight)
        self.setPos(-0.235, 0.0, -0.325)
        self.hide()
        self.head = None
        self.laffMeter = None
        self.exitButton = None
        self.friendButton = None
        self.teleportButton = None
        self.whisperButton = None
        self.nameText = None
        self.actionFrame = None
        self.actionFrameText = None
        self.actionFrameButton = None
        self.actionFrameButton2 = None
        self.avatarInfo = None
        self.action = None
        self.locationText = None
        self.shardText = None
        self.detailsExitBtn = None

        self.fsm = ClassicFSM.ClassicFSM('ToonPanel', [
            State.State('off', self.enterOff, self.exitOff),
            State.State('waitOnAvatarInfoResponse',
                        self.enterWaitOnAvatarInfoResponse,
                        self.exitWaitOnAvatarInfoResponse, ['panel']),
            State.State('panel', self.enterPanel, self.exitPanel, ['off'])
        ], 'off', 'off')
        self.fsm.enterInitialState()

        self.actionFSM = ClassicFSM.ClassicFSM('ToonPanelActionFSM', [
            State.State('off', self.enterOff, self.exitOff),
            State.State(
                'waitOnAvatarStatusResponse',
                self.enterWaitOnAvatarStatusResponse,
                self.exitWaitOnAvatarStatusResponse, [
                    'waitOnAvatarTeleportResponse',
                    'waitOnAvatarFriendListResponse', 'avatarBusy', 'off'
                ]),
            State.State('avatarBusy', self.enterAvatarBusy,
                        self.exitAvatarBusy, ['off']),
            State.State('waitOnAvatarTeleportResponse',
                        self.enterWaitOnAvatarTeleportResponse,
                        self.exitWaitOnAvatarTeleportResponse, ['unableToTP']),
            State.State('unableToTP', self.enterUnableToTP,
                        self.exitUnableToTP, ['off']),
            State.State('waitOnAvatarFriendListResponse',
                        self.enterWaitOnAvatarFriendListResponse,
                        self.exitWaitOnAvatarFriendListResponse,
                        ['fRequestA', 'fRequestR']),
            State.State('fRequestA', self.enterFriendRequestAccepted,
                        self.exitFriendRequestAccepted, ['off']),
            State.State('fRequestR', self.enterFriendRequestRejected,
                        self.exitFriendRequestRejected, ['off']),
            State.State('removeFriendConfirm', self.enterRemoveFriendConfirm,
                        self.exitRemoveFriendConfirm,
                        ['off', 'removedFriend']),
            State.State('removedFriend', self.enterRemovedFriend,
                        self.exitRemovedFriend, ['off'])
        ], 'off', 'off')
        self.actionFSM.enterInitialState()
Пример #21
0
 def __init__(self, mg, king, points):
     DirectFrame.__init__(self, parent = aspect2d)
     self.setBin('gui-popup', 60)
     self.mg = mg
     
     # Let's create the background
     box = DGG.getDefaultDialogGeom()
     self.bg = OnscreenImage(image = box, color = (1, 1, 0.75, 1), scale = (1.9, 1.4, 1.4), parent = self)
     
     # Let's create the header
     toonFont = CIGlobals.getToonFont()
     minnieFont = CIGlobals.getMinnieFont()
     
     name = 'Nobody'
     
     if king:
         name = king.getName()
         self.kingId = king.doId
     else:
         king = base.localAvatar
         self.kingId = 0
     
     self.title = OnscreenText(text = '%s is King!' % name, pos = (0, 0.5, 0), font = toonFont, 
         scale = 0.12, parent = self, shadow = (0.5, 0.5, 0.5, 0.6))
     
     # Let's create the Toon head
     headFrame = self.attachNewNode('head')
     headFrame.setPosHprScale(0, 0, -0.1, 180, 0, 0, 0.3, 0.3, 0.3)
     head = ToonGlobals.generateGuiHead(king)
     head.reparentTo(headFrame)
     
     # Let's create the points text
     self.amt_label = OnscreenText(text = 'Your Points: 0', pos = (-0.012, -0.4, 0), font = toonFont,
         scale = 0.12, parent = self, shadow = (0.5, 0.5, 0.5, 0.6))
     self.amt_label.hide()
     
     # Let's create the bad news text
     self.motivator = OnscreenText(text = 'Better luck next time!', pos = (0, -0.6, 0), font = minnieFont,
         scale = 0.125, parent = self, fg = (1, 0, 0, 1), shadow = (0.2, 0.2, 0.2, 1))
     self.motivator.hide()
     
     self.easterEgg = False
     
     if 50 < points != 100:
         self.motivator['fg'] = (0, 1, 0, 1)
         self.motivator.setText('Great job!')
     elif points == 100:
         self.motivator['fg'] = (0, 1, 0, 1)
         if random.randint(0, 100) <= 10:
             self.motivator.setText('YOU THE REAL MVP!')
             self.easterEgg = True
         else:
             self.motivator.setText('AMAZING!')
     
     # Let's create the sound effects
     self.zeroPointsSfx = loader.loadSfx('phase_4/audio/sfx/MG_neg_buzzer.ogg')
     self.poorScoreSfx = loader.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_no_bonus.ogg')
     self.goodScoreSfx = loader.loadSfx('phase_4/audio/sfx/MG_pairing_match_bonus_both.ogg')
     self.stomperSfx = loader.loadSfx('phase_4/audio/sfx/CHQ_FACT_stomper_small.ogg')
     self.fireworkSfx = loader.loadSfx('phase_4/audio/sfx/firework_explosion_02.ogg')
     self.perfectSfx = loader.loadSfx('phase_5/audio/sfx/SZ_MM_fanfare.ogg')
     self.tick_fastSfx = loader.loadSfx('phase_4/audio/sfx/MG_maze_pickup.ogg')
     self.tick_slowSfx = loader.loadSfx('phase_3.5/audio/sfx/tick_counter.ogg')
     self.easterEggSfx = loader.loadSfx('phase_4/audio/sfx/avatar_emotion_very_sad.ogg')
     
     # Let's create the basic sequence
     self.pointsSeq = Sequence(Func(self.amt_label.show),
         Wait(0.25))
     
     self.seqLevel = 0
     self.fakeNumber = 0
     self.points = points
Пример #22
0
    def load(self, newToonSlot=None):
        self.isNewToon = newToonSlot is not None
        self.newToonSlot = newToonSlot

        base.transitions.noTransitions()

        base.cr.renderFrame()
        base.camLens.setMinFov(CIGlobals.DefaultCameraFov / (4. / 3.))

        self.__setupStageToon()

        self.title = DirectLabel(text=self.TITLE,
                                 text_font=CIGlobals.getMickeyFont(),
                                 text_fg=(1, 0.9, 0.1, 1),
                                 relief=None,
                                 text_scale=0.13,
                                 pos=(0, 0, 0.82))
        self.charNameLabel = OnscreenText(text="",
                                          font=CIGlobals.getMickeyFont(),
                                          pos=(-0.25, 0.5, 0),
                                          fg=(1, 0.9, 0.1, 1.0))
        self.charNameLabel.hide()
        self.frame = DirectFrame()
        self.frame['image'] = DGG.getDefaultDialogGeom()
        self.frame['image_color'] = CIGlobals.DialogColor
        self.frame['image_scale'] = (-0.9, -0.9, 0.8)
        self.frame['image_pos'] = (0.82, 0, -0.125)
        self.playOrCreateButton = DirectButton(
            text="",
            pos=(0.8125, 0, -0.35),
            command=self.__action,
            geom=CIGlobals.getDefaultBtnGeom(),
            text_scale=0.06,
            relief=None,
            text_pos=(0, -0.01))
        self.playOrCreateButton.hide()
        self.deleteButton = DirectButton(text="Delete",
                                         pos=(0.8125, 0, -0.45),
                                         command=self.__action,
                                         extraArgs=['delete'],
                                         geom=CIGlobals.getDefaultBtnGeom(),
                                         text_scale=0.06,
                                         relief=None,
                                         text_pos=(0, -0.01))
        self.deleteButton.hide()
        self.quitButton = DirectButton(text="Quit",
                                       pos=(-1.10, 0, -0.925),
                                       command=self.__action,
                                       extraArgs=['quit'],
                                       text_scale=0.06,
                                       geom=CIGlobals.getDefaultBtnGeom(),
                                       relief=None,
                                       text_pos=(0, -0.01))

        for slot in range(6):
            if self.avChooser.hasToonInSlot(slot):
                choice = self.avChooser.getAvChoiceBySlot(slot)
                text = choice.name
            else:
                text = self.NO_TOON
            btn = CIGlobals.makeDefaultScrolledListBtn(
                text=text,
                text_scale=0.06,
                command=self.__handleCharButton,
                extraArgs=[slot])
            btn.setPythonTag('slot', slot)
            self.charButtons.append(btn)
            btn['state'] = DGG.NORMAL

        self.charList = CIGlobals.makeDefaultScrolledList(
            pos=(0.75, 0, -0.225),
            listZorigin=-0.43,
            listFrameSizeZ=0.51,
            arrowButtonScale=0.0,
            items=self.charButtons,
            parent=self.frame)

        if self.isNewToon:
            self.__handleCharButton(self.newToonSlot)
            self.disableAllCharButtons()