예제 #1
0
    def createGui(self):
        """ Create the GUI that will tell the client how much
        running power they have. """
        self.powerFrame = DirectFrame()
        self.powerBg = OnscreenImage(image=DGG.getDefaultDialogGeom(),
                                     scale=(0.5, 1.0, 0.5),
                                     pos=(1.02, 0, 0.7),
                                     parent=self.powerFrame,
                                     color=CIGlobals.DialogColor)
        self.powerBar = DirectWaitBar(barColor=(0, 0.7, 0, 1),
                                      range=20.0,
                                      value=0,
                                      parent=self.powerFrame,
                                      scale=(0.15, 0, 1.1),
                                      pos=(1.02, 0, 0.66))
        self.powerBar.setR(-90)
        self.powerTitle = DirectLabel(text="POWER",
                                      text_scale=0.08,
                                      pos=(1.02, 0, 0.85),
                                      relief=None,
                                      parent=self.powerFrame,
                                      text_fg=(1, 1, 0, 1),
                                      text_font=CIGlobals.getMickeyFont())

        self.boostFrame = DirectFrame()
        self.boostBg = OnscreenImage(image=DGG.getDefaultDialogGeom(),
                                     scale=(0.5, 1.0, 0.5),
                                     pos=(0.45, 0, 0.7),
                                     parent=self.boostFrame,
                                     color=CIGlobals.DialogColor)
        self.boostBar = DirectWaitBar(barColor=self.defaultBoostBarColor,
                                      range=10,
                                      value=0,
                                      parent=self.boostFrame,
                                      scale=(0.15, 0, 1.1),
                                      pos=(0.45, 0, 0.66))
        self.boostBar.setR(-90)
        self.boostTitle = DirectLabel(text="BOOST",
                                      text_scale=0.08,
                                      pos=(0.45, 0, 0.85),
                                      relief=None,
                                      parent=self.boostFrame,
                                      text_fg=(1, 1, 0, 1),
                                      text_font=CIGlobals.getMickeyFont())
        self.boostFullLbl = DirectLabel(text="BOOST READY",
                                        text_scale=0.065,
                                        pos=(0.45, 0, 0.3),
                                        relief=None,
                                        parent=self.boostFrame,
                                        text_fg=self.fullBoostBarColor,
                                        text_shadow=(0.4, 0.4, 0.4, 1.0),
                                        text_font=CIGlobals.getToonFont())
        self.boostFullLbl.hide()
 def createGui(self):
     self.deleteGui()
     uno_gui = loader.loadModel("phase_4/models/minigames/mg_uno_call_btn_gui.egg")
     gui = loader.loadModel("phase_3/models/gui/quit_button.bam")
     self.drawBtn = DirectButton(text="Draw", relief=None, text_scale = 0.055, scale=1, parent=base.a2dBottomLeft,
                             geom=(gui.find('**/QuitBtn_UP'),
                                 gui.find('**/QuitBtn_DN'),
                                 gui.find('**/QuitBtn_RLVR'),
                                 gui.find('**/QuitBtn_UP')),
                             pos=(0.18, 0, 0.1), geom_scale = (0.6, 1.0, 1.0), command=self.d_requestNewCard)
     self.callBtn = DirectButton(geom=(uno_gui.find('**/mg_uno_call_btn-idle'),
                             uno_gui.find('**/mg_uno_call_btn-down'),
                             uno_gui.find('**/mg_uno_call_btn-rlvr'),
                             uno_gui.find('**/mg_uno_call_btn-disabled')),
                     relief=None,
                     scale=0.3,
                     parent=base.a2dBottomLeft,
                     pos=(0.18, 0, 0.305),
                     command=self.d_callUno)
     self.callBtn['state'] = DGG.DISABLED
     self.playByPlay = OnscreenText(text="", font=CIGlobals.getMickeyFont(), scale=0.1,
                             fg=(0, 0.8, 0, 1), pos=(0, 0.85), wordwrap=15.0)
     self.cardDeck.generate()
     self.createTimer()
     gui.removeNode()
     del gui
 def setupCountdownText(self):
     tn = TextNode('countdownText')
     tn.setFont(CIGlobals.getMickeyFont())
     tn.setTextColor(VBase4(0.5, 0.5, 0.5, 1.0))
     tn.setAlign(TextNode.ACenter)
     self.countdownTextNP = self.getElevatorModel().attachNewNode(tn)
     self.countdownTextNP.setScale(2)
     self.countdownTextNP.setPos(0, 1, 7)
def announceHood(hood):
    nameLbl = OnscreenText(text="%s\n%s" % (hood, ZoneUtil.Playground),
                           scale=0.15,
                           font=CIGlobals.getMickeyFont(),
                           pos=(0, -0.65),
                           fg=(1, 0.3, 0.5, 1.0))
    Sequence(Wait(2.5), Func(startFade, nameLbl), Wait(1),
             Func(nameLbl.destroy)).start()
 def setupHealthLabel(self):
     self.healthLabel = DirectLabel(text = "", text_fg = CIGlobals.PositiveTextColor,
                                 scale = 0.9, relief = None, text_decal = True,
                                 text_font = CIGlobals.getMickeyFont(), text_align = TextNode.ACenter)
     self.healthLabel.reparentTo(self)
     self.healthLabel.setBillboardPointEye()
     self.healthLabel.stash()
     self.healthLabel.setLightOff(1)
     self.healthLabel.hide(CIGlobals.ShadowCameraBitmask)
예제 #6
0
 def enterAnnounceGameOver(self):
     whistleSfx = base.loadSfx("phase_4/audio/sfx/AA_sound_whistle.ogg")
     whistleSfx.play()
     del whistleSfx
     self.gameOverLbl = DirectLabel(text="GAME\nOVER!",
                                    relief=None,
                                    scale=0.35,
                                    text_font=CIGlobals.getMickeyFont(),
                                    text_fg=(1, 0, 0, 1))
예제 #7
0
 def startCountdown(self):
     """ Start the countdown to the start of the race. """
     self.countdownLbl = DirectLabel(text="",
                                     text_scale=0.3,
                                     text_font=CIGlobals.getMickeyFont(),
                                     text_fg=(1, 1, 0, 1),
                                     pos=(0, 0, 0.5))
     Sequence(Func(self.setCountdownText, "3"), Wait(1.0),
              Func(self.setCountdownText, "2"), Wait(1.0),
              Func(self.setCountdownText, "1"), Wait(1.0),
              Func(self.setCountdownText, "GO!"), Wait(1.5),
              Func(self.deleteCountdownLabel)).start()
 def __init__(self, cr):
     try:
         self.DistributedMinigame_initialized
         return
     except:
         self.DistributedMinigame_initialized = 1
     DistributedObject.DistributedObject.__init__(self, cr)
     Timer.Timer.__init__(self)
     self.headPanels = HeadPanels()
     self.finalScoreUI = FinalScoreGUI()
     self.fsm = ClassicFSM('DistributedMinigame', [
         State('start', self.enterStart, self.exitStart, ['waitForOthers']),
         State('waitForOthers', self.enterWaitForOthers,
               self.exitWaitForOthers, ['play']),
         State('play', self.enterPlay, self.exitPlay, ['gameOver']),
         State('gameOver', self.enterGameOver, self.exitGameOver, ['off']),
         State('off', self.enterOff, self.exitOff)
     ], 'off', 'off')
     self.fsm.enterInitialState()
     self.cr = cr
     self.localAv = base.localAvatar
     self.localAvId = self.localAv.doId
     self.musicPath = "phase_4/audio/bgm/trolley_song.ogg"
     self.winSfx = base.loadSfx("phase_4/audio/sfx/MG_win.ogg")
     self.loseSfx = base.loadSfx("phase_4/audio/sfx/MG_lose.ogg")
     self.prizeHigh = base.loadSfx("phase_6/audio/sfx/KART_Applause_1.ogg")
     self.prizeLow = base.loadSfx("phase_6/audio/sfx/KART_Applause_4.ogg")
     self.music = None
     self.description = ""
     self.descDialog = None
     self.winnerPrize = 0
     self.loserPrize = 0
     self.round = 0
     self.numPlayers = 0
     self.winnerMsg = "Winner!\nYou have earned: %s Jellybeans"
     self.loserMsg = "Loser!\nYou have earned: %s Jellybeans"
     self.allWinnerMsgs = [
         "Nice try!\nYou have earned: %s", "Good job!\nYou have earned: %s",
         "Way to go!\nYou have earned: %s", "Awesome!\nYou have earned: %s"
     ]
     self.timer = None
     self.timeLbl = None
     self.alertText = None
     self.alertPulse = None
     self.popupSound = None
     self.gameOverLbl = OnscreenText(text="TIME'S\nUP!",
                                     scale=0.25,
                                     font=CIGlobals.getMickeyFont(),
                                     fg=(1, 0, 0, 1))
     self.gameOverLbl.setBin('gui-popup', 60)
     self.gameOverLbl.hide()
     return
예제 #9
0
 def makeSelectionGUI(self):
     font = CIGlobals.getMickeyFont()
     box = loader.loadModel('phase_3/models/gui/dialog_box_gui.bam')
     imp = CIGlobals.getToonFont()
     geom = CIGlobals.getDefaultBtnGeom()
     self.container = DirectFrame()
     self.bg = OnscreenImage(image=box,
                             color=(1, 1, 0.75, 1),
                             scale=(1.9, 1.4, 1.4),
                             parent=self.container)
     self.title = OnscreenText(text="Join  a  Team",
                               pos=(0, 0.5, 0),
                               font=font,
                               scale=(0.12),
                               parent=self.container,
                               fg=(1, 0.9, 0.3, 1))
     self.btnFrame = DirectFrame(parent=self.container, pos=(0.14, 0, 0))
     self.team1BtnFrame = DirectFrame(parent=self.btnFrame,
                                      pos=(-0.5, 0, 0))
     self.team2BtnFrame = DirectFrame(parent=self.btnFrame,
                                      pos=(0.22, 0, 0))
     self.team1Btn = DirectButton(parent=self.team1BtnFrame,
                                  relief=None,
                                  pressEffect=0,
                                  image=self.team1BtnImg,
                                  image_scale=(0.9, 1, 1),
                                  scale=0.4,
                                  command=self.choseTeam,
                                  extraArgs=[TEAM1])
     self.team1Plyrs_Lbl = OnscreenText(parent=self.team1BtnFrame,
                                        text=str(self.playersByTeam[TEAM1]),
                                        pos=(0, -0.46, 0),
                                        font=imp)
     self.team2Btn = DirectButton(parent=self.team2BtnFrame,
                                  relief=None,
                                  pressEffect=0,
                                  image=self.team2BtnImg,
                                  image_scale=(0.9, 1, 1),
                                  scale=0.4,
                                  command=self.choseTeam,
                                  extraArgs=[TEAM2])
     self.team2Plyrs_Lbl = OnscreenText(parent=self.team2BtnFrame,
                                        text=str(self.playersByTeam[TEAM2]),
                                        pos=(0, -0.46, 0),
                                        font=imp)
     self.teamFull_Lbl = OnscreenText(parent=self.container,
                                      text="",
                                      pos=(0, -0.6, 0),
                                      font=imp)
예제 #10
0
 def generateStation(self):
     GroupStation.generateStation(self, self.Slots)
     circleTexture = loader.loadTexture("phase_13/maps/stand_here_cog.png")
     for circle in self.circles:
         circle.setTexture(circleTexture, 1)
     title = DirectLabel(text=self.Title,
                         relief=None,
                         text_fg=(0.5, 0.5, 0.5, 1.0),
                         text_decal=True,
                         text_font=CIGlobals.getMickeyFont(),
                         text_pos=(0, 0),
                         parent=self.sign.find('**/signText_locator'),
                         text_scale=0.3,
                         text_wordwrap=7.0)
     title.setBillboardAxis(2)
예제 #11
0
    def setTeam(self, team):
        self.team = team

        # Make this toon the complete color of the team.
        color = self.mg.getTeamDNAColor(team)
        if color is not None:
            # Store the original style so we can restore it.
            self.ogHeadColor = self.avatar.headcolor
            self.ogTorsoColor = self.avatar.torsocolor
            self.ogLegColor = self.avatar.legcolor
            self.ogShirtColor = self.avatar.shirtColor
            self.ogSleeveColor = self.avatar.sleeveColor
            self.ogShortColor = self.avatar.shortColor
            self.ogShirt = self.avatar.shirt
            self.ogSleeve = self.avatar.sleeve
            self.ogShort = self.avatar.shorts
            
            topsDict = self.avatar.maleTopDNA2maleTop
            btmsDict = self.avatar.maleBottomDNA2maleBottom
            if self.avatar.gender == 'girl':
                topsDict = self.avatar.femaleTopDNA2femaleTop
                btmsDict = self.avatar.femaleBottomDNA2femaleBottom

            self.avatar.headcolor = color
            self.avatar.torsocolor = color
            self.avatar.legcolor = color
            self.avatar.shirtColor = color
            self.avatar.sleeveColor = color
            self.avatar.shortColor = color
            self.avatar.shirt = topsDict['00'][0]
            self.avatar.sleeve = self.avatar.Sleeves[0]
            self.avatar.shorts = btmsDict['00'][0]
            # Generate the new dna strand and regenerate the toon.
            self.avatar.generateDNAStrandWithCurrentStyle()
            self.dnaWasChanged = True

        if self.teamText:
            self.teamText.removeNode()
            self.teamText = None
        textNode = TextNode('teamText')
        textNode.setAlign(TextNode.ACenter)
        textNode.setFont(CIGlobals.getMickeyFont())
        self.teamText = self.avatar.attachNewNode(textNode)
        self.teamText.setBillboardAxis()
        self.teamText.setZ(self.avatar.getNameTag().getZ() + 1.0)
        self.teamText.setScale(5.0)
예제 #12
0
    def enter(self, requestStatus):
        StateData.enter(self)

        hoodId = requestStatus['hoodId']
        zoneId = requestStatus['zoneId']
        rootZone = ZoneUtil.getZoneId(hoodId)
        if base.localAvatar.getLastHood(
        ) != rootZone and hoodId != ZoneUtil.MinigameArea:
            base.localAvatar.b_setLastHood(rootZone)
        if not base.localAvatar.hasDiscoveredHood(rootZone):
            hoodsDiscovered = list(base.localAvatar.getHoodsDiscovered())
            hoodsDiscovered.append(rootZone)
            base.localAvatar.b_setHoodsDiscovered(hoodsDiscovered)
        text = self.getHoodText(zoneId)
        self.titleText = OnscreenText(text,
                                      fg=self.titleColor,
                                      font=CIGlobals.getMickeyFont(),
                                      scale=0.15,
                                      pos=(0, -0.65))
        self.titleText.hide()
예제 #13
0
    def loadDNAStore(self):
        if hasattr(self, 'dnaStore'):
            self.dnaStore.reset_nodes()
            self.dnaStore.reset_hood_nodes()
            self.dnaStore.reset_place_nodes()
            self.dnaStore.reset_hood()
            self.dnaStore.reset_fonts()
            self.dnaStore.reset_DNA_vis_groups()
            self.dnaStore.reset_materials()
            self.dnaStore.reset_block_numbers()
            self.dnaStore.reset_block_zones()
            self.dnaStore.reset_suit_points()
            del self.dnaStore

        self.dnaStore = DNAStorage()
        loadDNAFile(self.dnaStore, 'phase_4/dna/storage.pdna')
        self.dnaStore.storeFont('humanist', CIGlobals.getToonFont())
        self.dnaStore.storeFont('mickey', CIGlobals.getMickeyFont())
        self.dnaStore.storeFont('suit', CIGlobals.getSuitFont())
        loadDNAFile(self.dnaStore, 'phase_3.5/dna/storage_interior.pdna')
 def enterIntermission(self, ts=0):
     self.intermissionText = DirectLabel(
         relief=None,
         text_decal=True,
         text="",
         scale=0.7,
         parent=self.interior.find('**/sign_origin;+s'),
         text_font=CIGlobals.getMickeyFont(),
         text_fg=(1, 0.9, 0, 1))
     self.movieTrack = Sequence(name=self.uniqueName('intermissionTrack'))
     for second in range(CinemaGlobals.IntermissionLength + 1):
         timeRemaining = CinemaGlobals.IntermissionLength - second
         self.movieTrack.append(
             Func(self.setIntermissionText,
                  "Next show in:\n%d" % timeRemaining))
         self.movieTrack.append(Wait(1.0))
     self.movieTrack.setDoneEvent(self.movieTrack.getName())
     self.acceptOnce(self.movieTrack.getDoneEvent(), self.fsm.request,
                     ['off'])
     self.movieTrack.start(ts)
예제 #15
0
    def loadWorld(self):
        self.unloadWorld()

        self.worldMdl = base.loader.loadModel(self.WORLD_MODEL_PATH)
        for sectionName in self.BAD_SECTIONS:
            sectionNode = self.worldMdl.find('**/' + sectionName)
            if (not sectionNode.isEmpty()):
                sectionNode.removeNode()
        self.occluderData = base.loader.loadModel(
            "phase_9/models/cogHQ/factory_sneak_occluders.egg")
        for occluderNode in self.occluderData.findAllMatches(
                '**/+OccluderNode'):
            base.render.setOccluder(occluderNode)
            occluderNode.node().setDoubleSided(True)
        self.worldMdl.flattenMedium()
        self.alertText = OnscreenText(text='',
                                      font=CIGlobals.getMickeyFont(),
                                      fg=(1, 0.9, 0.3, 1),
                                      pos=(0, 0.8, 0))
        self.popupSound = base.loadSfx(
            'phase_3/audio/sfx/GUI_balloon_popup.ogg')
예제 #16
0
    def generateStation(self, game):
        self.game = game
        numSlots = self.game2maxPlayers[game]
        GroupStation.generateStation(self, numSlots)

        if not base.config.GetBool('show-minigame-dates', False):
            text = game
            pos = (0, 0)
        else:
            text = game + "\n" + self.game2dateCreated[game]
            pos = (0, 0.1)

        title = DirectLabel(text=text,
                            relief=None,
                            text_fg=(0.7, 0.3, 0.5, 1.0),
                            text_decal=True,
                            text_font=CIGlobals.getMickeyFont(),
                            text_pos=pos,
                            parent=self.sign.find('**/signText_locator'),
                            text_scale=0.3,
                            text_wordwrap=7.0)
        title.setBillboardAxis(2)
 def setupClerk(self):
     self.clerk = Toon(self.cr)
     self.clerk.setName("Coach")
     self.clerk.setDNAStrand(NPC_DNA['Coach'])
     self.clerk.nametag.setNametagColor(
         NametagGlobals.NametagColors[NametagGlobals.CCNPC])
     self.clerk.nametag.setActive(0)
     self.clerk.nametag.updateAll()
     self.clerk.reparentTo(self)
     self.clerk.animFSM.request('neutral')
     self.clerk.setH(180)
     self.clerk.setPos(0, 2.2, 1)
     self.stand = loader.loadModel("phase_4/models/props/bubblestand.egg")
     self.stand.reparentTo(self)
     self.stand.setScale(1.1)
     self.standText = DirectLabel(text="Coach's Battle Shop",
                                  text_fg=(0.6, 0, 0, 1),
                                  text_decal=True,
                                  relief=None,
                                  parent=self.stand,
                                  pos=(0, -0.875, 5.2),
                                  scale=0.45,
                                  text_font=CIGlobals.getMickeyFont())
예제 #18
0
    def setup(self, title='CHOOSE WHAT YOU WANT TO BUY'):
        font = CIGlobals.getMickeyFont()
        txtFg = (0, 0, 0, 1)
        txtScale = 0.05
        txtPos = (0, -0.1)
        buttons = loader.loadModel('phase_3.5/models/gui/QT_buttons.bam')
        self.window = OnscreenImage(image=self.bgImage,
                                    scale=(0.9, 1, 0.7),
                                    parent=self)
        self.title = DirectLabel(text=title,
                                 relief=None,
                                 pos=(0, 0, 0.5),
                                 text_wordwrap=10,
                                 text_font=font,
                                 text_fg=(1, 1, 0, 1),
                                 scale=0.1,
                                 parent=self)

        # Let's update the turret count.
        self.updateTurretCount()

        self.infoLbl = DirectLabel(text='Welcome!',
                                   relief=None,
                                   text_scale=0.075,
                                   text_fg=txtFg,
                                   text_shadow=(0, 0, 0, 0),
                                   pos=(0, 0, 0.215))
        self.okBtn = DirectButton(geom=CIGlobals.getOkayBtnGeom(),
                                  relief=None,
                                  text='OK',
                                  text_fg=txtFg,
                                  text_scale=txtScale,
                                  text_pos=txtPos,
                                  pos=(-0.1, 0, -0.5),
                                  parent=self)
        self.clBtn = DirectButton(geom=CIGlobals.getCancelBtnGeom(),
                                  relief=None,
                                  text='Cancel',
                                  text_fg=txtFg,
                                  text_scale=txtScale,
                                  text_pos=txtPos,
                                  pos=(0.1, 0, -0.5),
                                  parent=self)
        buttonGeom = (buttons.find('**/QT_back'), buttons.find('**/QT_back'),
                      buttons.find('**/QT_back'), buttons.find('**/QT_back'))
        self.backBtn = DirectButton(geom=buttonGeom,
                                    relief=None,
                                    scale=0.05,
                                    pos=(-0.3, 0, -0.25),
                                    parent=self,
                                    command=self.changePage,
                                    extraArgs=[0])
        self.nextBtn = DirectButton(geom=buttonGeom,
                                    relief=None,
                                    scale=0.05,
                                    pos=(0.3, 0, -0.25),
                                    hpr=(0, 0, 180),
                                    command=self.changePage,
                                    extraArgs=[1],
                                    parent=self)
        self.hideInfo()
예제 #19
0
    def setIndex(self, index):
        self.index = index
        
        hood = self.cr.playGame.hood
        hoodAbbr = None
        
        if self.index == 0:
            hoodAbbr = hood.abbr
        elif self.index == 1:
            hoodAbbr = 'TT' #ZoneUtil.ZoneId2HoodAbbr[self.toZone]
        self.hoodAbbr = hoodAbbr
        
        findStr = '**/prop_trolley_station_' + hoodAbbr + '_DNARoot'
        
        self.trolleyStation = hood.loader.geom.find(findStr)
        self.trolleyStation.flattenStrong()
        self.trolleyCar = self.trolleyStation.find('**/trolley_car')
        self.trolleyKey = self.trolleyStation.find('**/key')

        base.audio3d.attachSoundToObject(self.trolleyAwaySfx, self.trolleyCar)
        base.audio3d.attachSoundToObject(self.trolleyBellSfx, self.trolleyCar)

        exitFog = Fog('TrolleyExitFog')
        exitFog.setColor(0.0, 0.0, 0.0)
        exitFog.setLinearOnsetPoint(30.0, 14.0, 0.0)
        exitFog.setLinearOpaquePoint(37.0, 14.0, 0.0)
        exitFog.setLinearFallback(70.0, 999.0, 1000.0)
        self.trolleyExitFog = self.trolleyStation.attachNewNode(exitFog)
        self.trolleyExitFogNode = exitFog
        enterFog = Fog('TrolleyEnterFog')
        enterFog.setColor(0.0, 0.0, 0.0)
        enterFog.setLinearOnsetPoint(0.0, 14.0, 0.0)
        enterFog.setLinearOpaquePoint(-7.0, 14.0, 0.0)
        enterFog.setLinearFallback(70.0, 999.0, 1000.0)
        self.trolleyEnterFog = self.trolleyStation.attachNewNode(enterFog)
        self.trolleyEnterFogNode = enterFog
        self.trolleyCar.setFogOff()

        tn = TextNode('trolleycountdowntext')
        tn.setFont(CIGlobals.getMickeyFont())
        tn.setTextColor(1, 0, 0, 1)
        tn.setAlign(TextNode.ACenter)

        self.keys = self.trolleyCar.findAllMatches('**/key')
        self.numKeys = self.keys.getNumPaths()
        self.keyInit = []
        self.keyRef = []
        for i in range(self.numKeys):
            key = self.keys[i]
            key.setTwoSided(1)
            ref = self.trolleyCar.attachNewNode('key' + `i` + 'ref')
            ref.setPosHpr(key, 0, 0, 0, 0, 0, 0)
            self.keyRef.append(ref)
            self.keyInit.append(key.getTransform())

        self.frontWheels = self.trolleyCar.findAllMatches('**/front_wheels')
        self.numFrontWheels = self.frontWheels.getNumPaths()
        self.frontWheelInit = []
        self.frontWheelRef = []
        for i in range(self.numFrontWheels):
            wheel = self.frontWheels[i]
            ref = self.trolleyCar.attachNewNode('frontWheel' + `i` + 'ref')
            ref.setPosHpr(wheel, 0, 0, 0, 0, 0, 0)
            self.frontWheelRef.append(ref)
            self.frontWheelInit.append(wheel.getTransform())

        self.backWheels = self.trolleyCar.findAllMatches('**/back_wheels')
        self.numBackWheels = self.backWheels.getNumPaths()
        self.backWheelInit = []
        self.backWheelRef = []
        for i in range(self.numBackWheels):
            wheel = self.backWheels[i]
            ref = self.trolleyCar.attachNewNode('backWheel' + `i` + 'ref')
            ref.setPosHpr(wheel, 0, 0, 0, 0, 0, 0)
            self.backWheelRef.append(ref)
            self.backWheelInit.append(wheel.getTransform())

        trolleyAnimationReset = Func(self.resetAnimation)
        trolleyEnterStartPos = Point3(-20, 14, -1)
        trolleyEnterEndPos = Point3(15, 14, -1)
        trolleyEnterPos = Sequence(name='TrolleyEnterPos')
        trolleyEnterPos.append(Func(self.trolleyCar.setFog, self.trolleyEnterFogNode))
        trolleyEnterPos.append(self.trolleyCar.posInterval(TROLLEY_ENTER_TIME, trolleyEnterEndPos, startPos=trolleyEnterStartPos, blendType='easeOut'))
        trolleyEnterPos.append(Func(self.trolleyCar.setFogOff))
        trolleyEnterTrack = Sequence(trolleyAnimationReset, trolleyEnterPos, name='trolleyEnter')
        keyAngle = round(TROLLEY_ENTER_TIME) * 360
        dist = Vec3(trolleyEnterEndPos - trolleyEnterStartPos).length()
        wheelAngle = dist / (2.0 * math.pi * 0.95) * 360
        trolleyEnterAnimateInterval = LerpFunctionInterval(self.animateTrolley, duration=TROLLEY_ENTER_TIME, blendType='easeOut', extraArgs=[keyAngle, wheelAngle], name='TrolleyAnimate')
        trolleyEnterSoundTrack = SoundInterval(self.trolleyAwaySfx, node=self.trolleyCar)
        self.trolleyEnterTrack = Parallel(trolleyEnterTrack, trolleyEnterAnimateInterval, trolleyEnterSoundTrack)
        trolleyExitStartPos = Point3(15, 14, -1)
        trolleyExitEndPos = Point3(50, 14, -1)
        trolleyExitPos = Sequence(name='TrolleyExitPos')
        trolleyExitPos.append(Func(self.trolleyCar.setFog, self.trolleyExitFogNode))
        trolleyExitPos.append(self.trolleyCar.posInterval(TROLLEY_EXIT_TIME, trolleyExitEndPos, startPos=trolleyExitStartPos, blendType='easeIn'))
        trolleyExitPos.append(Func(self.trolleyCar.setFogOff))
        trolleyExitStartPos = Point3(15, 14, -1)
        trolleyExitEndPos = Point3(50, 14, -1)
        trolleyExitBellInterval = SoundInterval(self.trolleyBellSfx, node=self.trolleyCar)
        trolleyExitAwayInterval = SoundInterval(self.trolleyAwaySfx, node=self.trolleyCar)
        keyAngle = round(TROLLEY_EXIT_TIME) * 360
        dist = Vec3(trolleyExitEndPos - trolleyExitStartPos).length()
        wheelAngle = dist / (2.0 * math.pi * 0.95) * 360
        trolleyExitAnimateInterval = LerpFunctionInterval(self.animateTrolley, duration=TROLLEY_EXIT_TIME, blendType='easeIn', extraArgs=[keyAngle, wheelAngle], name='TrolleyAnimate')
        self.trolleyExitTrack = Parallel(trolleyExitPos, trolleyExitBellInterval, trolleyExitAwayInterval, trolleyExitAnimateInterval, name=self.uniqueName('trolleyExit'))

        self.countdownText = self.trolleyStation.attachNewNode(tn)
        self.countdownText.setScale(3.0)
        self.countdownText.setPos(14.58, 10.77, 11.17)
        
        try:
            self.trolleySphere = self.trolleyStation.find('**/trolley_sphere')
            self.trolleySphere.setName('trolley{0}_sphere'.format(hoodAbbr))
        except:
            pass
예제 #20
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()
	def enterAnnounceGameOver(self):
		whistleSfx = base.loadSfx("phase_4/audio/sfx/AA_sound_whistle.ogg")
		whistleSfx.play()
		del whistleSfx
		self.gameOverLbl = DirectLabel(text = "TIME'S\nUP!", relief = None, scale = 0.5, text_font = CIGlobals.getMickeyFont(), text_fg = (1, 0, 0, 1))
		self.track = Sequence(Wait(3.0), Func(self.fsm.request, 'finalScores'))
		self.track.start()
예제 #22
0
def getGameText(fg=(1.0, 0.5, 0.0, 1.0)):
    return OnscreenText(text="",
                        scale=0.15,
                        fg=fg,
                        font=CIGlobals.getMickeyFont())
예제 #23
0
    def __init__(self, panelData):
        dialogBox = loader.loadModel('phase_3/models/gui/dialog_box_gui.bam')
        DirectFrame.__init__(self,
                             relief=None,
                             geom=dialogBox,
                             geom_color=CIGlobals.DialogColor,
                             geom_scale=(1.75, 1, 0.75 * 1.1),
                             geom_pos=Point3(0, 0, -0.05),
                             pos=(0, 0, 0.661))
        self.initialiseoptions(RewardPanel)
        self.setScale(0.8)

        # The data for the reward panel inside of a RPToonData object.
        self.panelData = panelData

        # Top wood panel saying Reward Panel
        gagShopNodes = loader.loadModel(
            'phase_4/models/gui/gag_shop_purchase_gui.bam')
        # Original pos: (-0.02, 0, 0.3) scale = (1.55, 1, 1)
        self.titlePanel = OnscreenImage(
            parent=self,
            image=gagShopNodes.find('**/Goofys_Sign'),
            pos=(0, 0, 0.3),
            hpr=(1, 0, 0),
            scale=(1.3, 1, 0.9))

        self.avatarNamePanel = DirectFrame(parent=self.titlePanel,
                                           pos=(0, 0.005, 0))
        self.avatarText = OnscreenText(parent=self.avatarNamePanel,
                                       text='',
                                       font=CIGlobals.getMickeyFont(),
                                       fg=(0.698, 0.13, 0.13, 1),
                                       mayChange=1,
                                       scale=(0.1, 0.13, 0.1))

        self.panelContentsTitle = OnscreenText(parent=self,
                                               text=GagPanelName,
                                               font=CIGlobals.getMickeyFont(),
                                               pos=(0, 0.24, 0),
                                               fg=(0.3725, 0.619, 0.627, 1),
                                               mayChange=1)

        self.playerInfo = DirectFrame(parent=self,
                                      relief=None,
                                      pos=(-0.5, 0, 0))
        self.playerInfo.setBin('gui-popup', 0)

        self.bonusText = OnscreenText(parent=self.playerInfo,
                                      text='2X Cog Office Bonus!',
                                      font=CIGlobals.getToonFont(),
                                      pos=(0, 0.15, 0),
                                      scale=(0.055, 0.055, 0.055),
                                      align=TextNode.ACenter)
        self.bonusText.hide()

        ##################################################################################
        # GUI Elements relating to the Favorite Gag/Gag Popup Used for showing Gag Unlock#
        ##################################################################################
        self.favoriteGagText = OnscreenText(parent=self.playerInfo,
                                            text=FavoriteGag,
                                            font=CIGlobals.getMickeyFont(),
                                            pos=FavoriteGagTitlePos,
                                            fg=(1, 0.2, 0.2, 1),
                                            sort=0)

        glow = loader.loadModel('phase_4/models/minigames/particleGlow.bam')
        self.favoriteGagGlow = OnscreenImage(parent=self.playerInfo,
                                             image=glow,
                                             pos=FavoriteGagPos,
                                             color=GagGlowColor,
                                             scale=(0.8, 0.8, 0.8))
        self.favoriteGagGlow.setBin('gui-popup', 10)
        # particleGlow.bam uses a material since it's normally part of render, not render2d.
        # Since render2d is still fixed-function, we have to explicitly enable shader generation
        # to correctly display the glow in render2d.
        self.favoriteGagGlow.setShaderAuto()

        invIcons = loader.loadModel('phase_3.5/models/gui/inventory_icons.bam')
        gag = invIcons.find(
            GagGlobals.InventoryIconByName.get(GagGlobals.Foghorn))
        self.favoriteGag = OnscreenImage(parent=self.playerInfo,
                                         image=gag,
                                         pos=FavoriteGagPos,
                                         scale=(1.65, 1.65, 1.65))
        self.favoriteGag.setBin('gui-popup', 20)

        self.favoriteGagName = OnscreenText(parent=self.playerInfo,
                                            text=GagGlobals.Foghorn,
                                            font=CIGlobals.getToonFont(),
                                            pos=FavoriteGagNamePos,
                                            mayChange=1)

        ################################################################################
        # GUI elements showing gag experience on the right-side of the gag exp panel   #
        ################################################################################

        self.gagExpFrame = DirectFrame(parent=self,
                                       relief=None,
                                       pos=(0.085, 0, 0.15))
        self.trackLabels = []
        self.trackIncLabels = []
        self.trackBars = []
        self.trackBarsOffset = 0

        for i in range(len(GagGlobals.TrackNameById.values())):
            track = GagGlobals.TrackNameById.values()[i]
            color = GagGlobals.TrackColorByName.get(track)
            label = DirectLabel(parent=self.gagExpFrame,
                                relief=None,
                                text=track.upper(),
                                text_scale=0.05,
                                text_align=TextNode.ARight,
                                pos=(0.13, 0, -0.09 * i),
                                text_pos=(0, -0.02))
            incrementLabel = DirectLabel(parent=self.gagExpFrame,
                                         relief=None,
                                         text='',
                                         text_scale=0.05,
                                         text_align=TextNode.ALeft,
                                         pos=(0.65, 0, -0.09 * i),
                                         text_pos=(0, -0.02))
            progressBar = DirectWaitBar(
                parent=self.gagExpFrame,
                relief=DGG.SUNKEN,
                frameSize=(-1, 1, -0.15, 0.15),
                borderWidth=(0.02, 0.02),
                scale=0.25,
                frameColor=(color[0] * 0.7, color[1] * 0.7, color[2] * 0.7, 1),
                barColor=(color[0], color[1], color[2], 1),
                text='0/0',
                text_scale=0.18,
                text_fg=(0, 0, 0, 1),
                text_align=TextNode.ACenter,
                text_pos=(0, -0.05),
                pos=(0.4, 0, -0.09 * i))
            self.trackLabels.append(label)
            self.trackIncLabels.append(incrementLabel)
            self.trackBars.append(progressBar)

        ################################################################################
        # GUI elements showing progress updates on quests                              #
        ################################################################################

        self.questFrame = DirectFrame(parent=self, relief=None)
        self.questPosters = []

        self.congratsLeft = OnscreenText(parent=self.playerInfo,
                                         pos=(-0.1, 0.125, -0.1),
                                         text='',
                                         scale=0.06,
                                         align=TextNode.ARight)
        self.congratsLeft.setR(-30)
        self.congratsRight = OnscreenText(parent=self.playerInfo,
                                          pos=(0.1, 0.125, 0.1),
                                          text='',
                                          scale=0.06,
                                          align=TextNode.ALeft)
        self.congratsRight.setR(30)

        glow.removeNode()
        invIcons.removeNode()
        gagShopNodes.removeNode()
        dialogBox.removeNode()
def getAlertText(fg=(1, 0.9, 0.3, 1), scale=0.08):
    return OnscreenText(text='',
                        font=CIGlobals.getMickeyFont(),
                        fg=fg,
                        pos=(0, 0.8, 0),
                        scale=scale)
예제 #25
0
 def enterVoteGameMode(self):
     render.hide()
     font = CIGlobals.getMickeyFont()
     imp = CIGlobals.getToonFont()
     box = DGG.getDefaultDialogGeom()
     geom = CIGlobals.getDefaultBtnGeom()
     self.container = DirectFrame()
     self.bg = OnscreenImage(image=box,
                             color=(1, 1, 0.75, 1),
                             scale=(2.4, 1.4, 1.4),
                             parent=self.container)
     self.title = OnscreenText(text="Vote  on  Game  Mode",
                               pos=(0, 0.5, 0),
                               font=font,
                               scale=(0.12),
                               parent=self.container,
                               fg=(1, 0.9, 0.3, 1))
     self.btnFrame = DirectFrame(parent=self.container, pos=(0.14, 0, 0))
     self.casualFrame = DirectFrame(parent=self.btnFrame, pos=(-0.80, 0, 0))
     self.ctfFrame = DirectFrame(parent=self.btnFrame, pos=(-0.125, 0, 0))
     self.kothFrame = DirectFrame(parent=self.btnFrame, pos=(0.55, 0, 0))
     self.casual = DirectButton(parent=self.casualFrame,
                                relief=None,
                                pressEffect=0,
                                image=('phase_4/maps/casual_neutral.png',
                                       'phase_4/maps/casual_hover.png',
                                       'phase_4/maps/casual_hover.png'),
                                image_scale=(0.9, 1, 1),
                                scale=0.4,
                                command=self.__pickedGameMode,
                                extraArgs=[GGG.GameModes.CASUAL])
     self.casual_votesLbl = OnscreenText(parent=self.casualFrame,
                                         text="0",
                                         pos=(0, -0.46, 0),
                                         font=imp)
     self.ctf = DirectButton(parent=self.ctfFrame,
                             relief=None,
                             pressEffect=0,
                             image=('phase_4/maps/ctf_neutral.png',
                                    'phase_4/maps/ctf_hover.png',
                                    'phase_4/maps/ctf_hover.png'),
                             image_scale=(0.9, 1, 1),
                             scale=0.4,
                             command=self.__pickedGameMode,
                             extraArgs=[GGG.GameModes.CTF])
     self.ctf_votesLbl = OnscreenText(parent=self.ctfFrame,
                                      text="0",
                                      pos=(0, -0.46, 0),
                                      font=imp)
     self.koth = DirectButton(parent=self.kothFrame,
                              relief=None,
                              pressEffect=0,
                              image=('phase_4/maps/koth_neutral.png',
                                     'phase_4/maps/koth_hover.png',
                                     'phase_4/maps/koth_hover.png'),
                              image_scale=(0.9, 1, 1),
                              scale=0.4,
                              command=self.__pickedGameMode,
                              extraArgs=[GGG.GameModes.KOTH])
     self.koth_votesLbl = OnscreenText(parent=self.kothFrame,
                                       text="0",
                                       pos=(0, -0.46, 0),
                                       font=imp)
     self.outcomeLbl = OnscreenText(parent=self.container,
                                    text="",
                                    pos=(0, -0.6, 0),
                                    font=imp,
                                    scale=0.1)