예제 #1
0
    def generateOtherPlayerGui(self):
        for avId in self.doId2Frame.keys():
            self.avId2otherPlayerAvIds2otherPlayerHeadsFrame[avId] = {}
            headNumber = -1
            frame = self.doId2Frame[avId][0]
            otherPlayerHeadsFrame = DirectFrame(relief=None,
                                                scale=0.85,
                                                parent=frame)
            otherPlayerHeadsFrame['image'] = frame['image']
            otherPlayerHeadsFrame['image_color'] = frame['image_color']
            otherPlayerHeadsFrame[
                'image_scale'] = self.otherPlayerHeadHolderTransforms['scale']
            otherPlayerHeadsFrame.setPos(
                self.otherPlayerHeadHolderTransforms['pos'])
            otherPlayerHeadsFrame.setBin('gui-popup', 70)
            self.frameList.append(otherPlayerHeadsFrame)
            for otherAvId in self.doId2Frame.keys():
                if otherAvId != avId:
                    headNumber += 1
                    otherAv = base.cr.doId2do.get(otherAvId)

                    headFrame = otherPlayerHeadsFrame.attachNewNode(
                        'otherPlayerHeadFrame')
                    headFrame.setPosHprScale(
                        self.otherPlayerHeadXValues[headNumber], 5, -0.1, 180,
                        0, 0, 0.2, 0.2, 0.2)
                    headFrame.setColorScale(self.state2Color[0])

                    head = ToonGlobals.generateGuiHead(otherAv)
                    head.reparentTo(headFrame)

                    self.avId2otherPlayerAvIds2otherPlayerHeadsFrame[avId][
                        otherAvId] = headFrame
    def precacheStuff(self):
        from src.coginvasion.toon import ToonGlobals
        ToonGlobals.precacheToons()

        self.cl_attackMgr.precache()

        from src.coginvasion.gags.LocationSeeker import LocationSeeker
        LocationSeeker.precache()

        from src.coginvasion.gags.LocationGag import LocationGag
        LocationGag.precache()

        from src.coginvasion.hood.DistributedBuilding import DistributedBuilding
        DistributedBuilding.precache()

        from src.coginvasion.cog import SuitBank
        SuitBank.precacheSuits()
    def handleNPCObjective(self,
                           iconElement=auxIcon,
                           auxText=QuestGlobals.VISIT,
                           frameColor=QuestGlobals.BROWN):
        objective = self.viewObjective
        npcId = 0

        if self.accessibleObjectives.isComplete() and not hasattr(
                objective, 'npcId'):
            npcId = objective.assigner
        elif hasattr(objective, 'npcId'):
            npcId = objective.npcId

        if npcId == 0:
            infoText = 'A %s' % NPCGlobals.lHQOfficerF
        else:
            infoText = NPCGlobals.NPCToonNames[npcId]

        if not iconElement:
            iconElement = self.auxIcon

        # Let's generate the head.
        if not npcId == 0:
            dna = ToonDNA()
            dna.setDNAStrand(NPCGlobals.NPCToonDict.get(npcId)[2])
            head = ToonGlobals.generateGuiHead(dna)
            self.handleComplexIcon(head,
                                   iconElement,
                                   scale=QuestGlobals.IMAGE_SCALE_SMALL - 0.01)
        else:
            self.handleSimpleIcon(QuestGlobals.getHQIcon(),
                                  QuestGlobals.SIMPLE_IMAGE_SCALE, iconElement)

        self.auxText['text'] = auxText

        if not iconElement is self.auxIcon:
            if hasattr(self, 'goalInfo'):
                # We're working with the second frame, on the right.
                # Let's update the information pertaining to this side.
                self.goalInfo['text'] = infoText
                self.goalInfo.setPos(QuestGlobals.RECOVER_INFO2_POS)
                self.auxText.setPos(QuestGlobals.RECOVER_AUX_POS)
                self.goalFrame['image_color'] = frameColor
            else:
                raise AttributeError(
                    'Attempted to setup DoubleFrame information for poster using default style.'
                )
        else:
            self.objectiveInfo['text'] = infoText
            self.auxFrame['image_color'] = frameColor
    def __newFriendRequest(self, requester, name, dna):
        head = ToonGlobals.generateGuiHead(dna)
        size = (0.55 * 1.5, 0.55 * 1.5, 0.35 * 1.5)

        request = GlobalDialog(
            message=ChatGlobals.mentionAvatar(self.MessageFriendRequest, name),
            style=1,
            text_wordwrap=12,
            doneEvent='friendRequestDone-%d' % requester,
            extraArgs=[requester],
            text_scale=0.065,
            pos=(-0.85, 0, -0.275),
            geom=head,
            geom_scale=(0.125 * 1.25, 0.125 * 1.25, 0.1625 * 1.25),
            scale=size,
            image_scale=size,
            text_pos=(0.15, 0.075, 0),
            relief=None)
        request.reparentTo(base.a2dTopRight)

        text = request.component('text0')
        text.setScale(0.065, 0.1)

        for cmpt in request.components():
            if 'Button' in cmpt:
                btn = request.component(cmpt)
                btn.setScale(btn, btn.getSx(),
                             btn.getSy() + 0.1,
                             btn.getSz() + 0.2)

        self.friendRequests[requester] = request
        self.acceptOnce('friendRequestDone-%d' % requester,
                        self.handleFriendRequestChoice)

        self.requestIval = Sequence(
            Func(self.popUpSfx.play),
            LerpScaleInterval(request,
                              0.35,
                              size,
                              startScale=0.01,
                              blendType='easeOut'))

        self.requestIval.start()
예제 #5
0
 def generateTorso(self):
     ToonGlobals.generateBodyPart(self, 'torso', self.getTorso(), 3, '')
예제 #6
0
 def generateLegs(self):
     ToonGlobals.generateBodyPart(self, 'legs', self.getLegs(), 3, 'shorts')
     self.find('**/boots_long').stash()
     self.find('**/boots_short').stash()
     self.find('**/shoes').stash()
    def enterPanel(self):
        accessLevel = self.avatarInfo[8]
        text_color = AdminCommands.Roles.get(
            accessLevel
        ).token.color if accessLevel > AdminCommands.NoAccess else (0, 0, 0, 1)
        self.nameText = OnscreenText(text=self.avatarInfo[1],
                                     parent=self,
                                     pos=(0, 0.2),
                                     scale=0.035,
                                     wordwrap=8,
                                     fg=text_color)
        self.nameText.setBin('gui-popup', 60)

        dna = ToonDNA.ToonDNA()
        dna.setDNAStrand(self.avatarInfo[2])

        self.head = ToonGlobals.generateGuiHead(dna)
        self.head.reparentTo(self)
        self.head.setScale(self.animal2HeadData[dna.animal][0])
        self.head.setZ(self.animal2HeadData[dna.animal][1])

        self.laffMeter = LaffOMeter()
        r, g, b, _ = dna.headcolor
        self.laffMeter.generate(r, g, b, dna.animal, self.avatarInfo[3],
                                self.avatarInfo[4])
        self.laffMeter.reparentTo(self)
        self.laffMeter.setBin('gui-popup', 60)
        self.laffMeter.setScale(0.045)
        self.laffMeter.setPos(0, 0, -0.1)

        self.friendButton = DirectButton(
            geom=CIGlobals.getDefaultBtnGeom(),
            text="Add Friend",
            scale=0.58,
            relief=None,
            text_scale=0.058,
            geom_scale=(1.25, 0, 0.9),
            text_pos=(0, -0.0125),
            parent=self,
            pos=(0, 0, -0.12),
            command=self.doAction,
            extraArgs=['waitOnAvatarFriendListResponse'])
        self.friendButton.setPos(0, 0.0, -0.225)
        self.maybeUpdateFriendButton()

        self.teleportButton = DirectButton(
            geom=CIGlobals.getDefaultBtnGeom(),
            text="Teleport",
            scale=0.58,
            relief=None,
            text_scale=0.058,
            geom_scale=(1.25, 0, 0.9),
            text_pos=(0, -0.0125),
            parent=self,
            pos=(0, 0, -0.12),
            command=self.doAction,
            extraArgs=['waitOnAvatarTeleportResponse'])
        self.teleportButton.setPos(0, 0, -0.275)

        self.whisperButton = DirectButton(
            geom=CIGlobals.getDefaultBtnGeom(),
            text="Whisper",
            scale=0.58,
            relief=None,
            text_scale=0.058,
            geom_scale=(1.25, 0, 0.9),
            text_pos=(0, -0.0125),
            parent=self,
            pos=(0, 0, -0.12),
            command=base.localAvatar.handleClickedWhisper,
            extraArgs=[self.avatarInfo[1], self.avatarInfo[0], 1])
        self.whisperButton.setPos(0, 0, -0.325)

        self.exitButton = DirectButton(geom=CIGlobals.getCancelBtnGeom(),
                                       parent=self,
                                       relief=None,
                                       scale=0.6,
                                       pos=(0, 0.0, -0.39),
                                       command=self.exitClicked)
        gui = loader.loadModel("phase_3.5/models/gui/friendslist_gui.bam")
        self.moreDetailsBtn = DirectButton(
            geom=(gui.find('**/Horiz_Arrow_UP'), gui.find('**/Horiz_Arrow_DN'),
                  gui.find('**/Horiz_Arrow_Rllvr'),
                  gui.find('**/Horiz_Arrow_UP')),
            relief=None,
            parent=self,
            pos=(-0.127, 0.0, -0.39),
            geom_hpr=(180, 0, 0),
            command=self.makeMoreDetailsPanel,
            scale=0.77,
            text=('', 'More Details', 'More Details', ''),
            text_scale=0.045,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_pos=(-0.08, -0.01),
            text_align=TextNode.ARight)
예제 #8
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