예제 #1
0
    def enterPlay(self):
        self.notify.debug('enterPlay')
        for i in xrange(self.numPlayers):
            avId = self.avIdList[i]
            avName = self.getAvatarName(avId)
            scorePanel = MinigameAvatarScorePanel.MinigameAvatarScorePanel(
                avId, avName)
            scorePanel.setPos(-0.213, 0.0, 0.28 * i + 0.66)
            scorePanel.reparentTo(base.a2dBottomRight)
            self.scorePanels.append(scorePanel)

        base.setCellsAvailable(base.rightCells, 0)
        self.walkStateData.enter()
        self.walkStateData.fsm.request('walking')
        if base.localAvatar.isIt:
            base.mouseInterfaceNode.setForwardSpeed(
                ToontownGlobals.ToonForwardSpeed * self.IT_SPEED_INCREASE)
            base.mouseInterfaceNode.setRotateSpeed(
                ToontownGlobals.ToonRotateSpeed * self.IT_ROT_INCREASE)
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posInTopRightCorner()
        self.timer.setTime(self.DURATION)
        self.timer.countdown(self.DURATION, self.timerExpired)
        base.playMusic(self.music, looping=1, volume=0.9)
        base.localAvatar.setIdealCameraPos(Point3(0, -24, 8))
예제 #2
0
 def load(self):
     if self._isLoaded:
         return
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.stash()
     self.model = loader.loadModel(CogdoBarrelRoomConsts.BarrelRoomModel)
     self.model.setPos(*CogdoBarrelRoomConsts.BarrelRoomModelPos)
     self.model.reparentTo(render)
     self.model.stash()
     self.entranceNode = self.model.attachNewNode('door-entrance')
     self.entranceNode.setPos(0, -65, 0)
     self.nearBattleNode = self.model.attachNewNode('near-battle')
     self.nearBattleNode.setPos(0, -25, 0)
     self.rewardUi = CogdoBarrelRoomRewardPanel.CogdoBarrelRoomRewardPanel()
     self.hideRewardUi()
     self.stomperSfx = base.loadSfx(CogdoBarrelRoomConsts.StomperSound)
     self.fog = Fog('barrel-room-fog')
     self.fog.setColor(CogdoBarrelRoomConsts.BarrelRoomFogColor)
     self.fog.setLinearRange(
         *CogdoBarrelRoomConsts.BarrelRoomFogLinearRange)
     self.brBarrel = render.attachNewNode('@@CogdoBarrels')
     for i in xrange(len(CogdoBarrelRoomConsts.BarrelProps)):
         self.bPath = self.brBarrel.attachNewNode(
             '%s%s' % (CogdoBarrelRoomConsts.BarrelPathName, i))
         self.bPath.setPos(CogdoBarrelRoomConsts.BarrelProps[i]['pos'])
         self.bPath.setH(CogdoBarrelRoomConsts.BarrelProps[i]['heading'])
     self._isLoaded = True
    def enterSwim(self):
        self.notify.debug('enterSwim')
        base.playMusic(self.music, looping=1, volume=0.9)
        self.localLerp = Sequence()
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posInTopRightCorner()
        self.timer.setTime(self.TIME)
        self.timer.countdown(self.TIME, self.timerExpired)
        self.mapModel.show()
        self.mapAvatars = {}
        avatarScale = 0.025 * self.mapScaleRatio
        for avId in self.remoteAvIdList:
            avatar = base.cr.doId2do.get(avId, False)
            if avatar != False:
                self.mapAvatars[avId] = LaffMeter.LaffMeter(
                    avatar.style, avatar.hp, avatar.maxHp)
                self.mapAvatars[avId].reparentTo(self.mapModel)
                self.mapAvatars[avId].setScale(avatarScale)
                self.mapAvatars[avId].start()

        avatar = base.cr.doId2do[self.localAvId]
        self.mapAvatars[self.localAvId] = LaffMeter.LaffMeter(
            avatar.style, avatar.hp, avatar.maxHp)
        self.mapAvatars[self.localAvId].reparentTo(self.mapModel)
        self.mapAvatars[self.localAvId].setScale(avatarScale)
        self.mapAvatars[self.localAvId].start()
        self.accept('resetClock', self.__resetClock)
        self.__spawnUpdateLocalToonTask()
        self.__spawnCrabTask()
        self.__spawnTreasureBoundsTask()
    def load(self):
        self.notify.debug('load')
        DistributedMinigame.load(self)
        self.sky = loader.loadModel('phase_3.5/models/props/TT_sky')
        self.ground = loader.loadModel('phase_4/models/minigames/toon_cannon_gameground')
        self.tower = loader.loadModel('phase_4/models/minigames/toon_cannon_water_tower')
        self.cannon = loader.loadModel('phase_4/models/minigames/toon_cannon')
        self.dropShadow = loader.loadModel('phase_3/models/props/drop_shadow')
        self.hill = loader.loadModel('phase_4/models/minigames/cannon_hill')
        self.sky.setScale(WORLD_SCALE)
        self.ground.setScale(GROUND_SCALE)
        self.cannon.setScale(CANNON_SCALE)
        self.dropShadow.setColor(0, 0, 0, 0.5)
        self.ground.setColor(0.85, 0.85, 0.85, 1.0)
        self.hill.setScale(1, 1, CANNON_Z / 20.0)
        self.dropShadow.setBin('fixed', 0, 1)
        self.splash = Splash.Splash(render)
        self.dustCloud = DustCloud.DustCloud(render)
        purchaseModels = loader.loadModel('phase_4/models/gui/purchase_gui')
        self.jarImage = purchaseModels.find('**/Jar')
        self.jarImage.reparentTo(hidden)
        self.rewardPanel = DirectLabel(parent=hidden, relief=None, pos=(-0.173, 0.0, -0.55), scale=0.65, text='', text_scale=0.2, text_fg=(0.95, 0.95, 0, 1), text_pos=(0, -.13), text_font=ToontownGlobals.getSignFont(), image=self.jarImage)
        self.rewardPanelTitle = DirectLabel(parent=self.rewardPanel, relief=None, pos=(0, 0, 0.06), scale=0.08, text=TTLocalizer.CannonGameReward, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1))
        self.music = base.loadMusic('phase_4/audio/bgm/MG_cannon_game.ogg')
        self.sndCannonMove = base.loadSfx('phase_4/audio/sfx/MG_cannon_adjust.ogg')
        self.sndCannonFire = base.loadSfx('phase_4/audio/sfx/MG_cannon_fire_alt.ogg')
        self.sndHitGround = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_dirt.ogg')
        self.sndHitTower = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_tower.ogg')
        self.sndHitWater = base.loadSfx('phase_4/audio/sfx/MG_cannon_splash.ogg')
        self.sndWhizz = base.loadSfx('phase_4/audio/sfx/MG_cannon_whizz.ogg')
        self.sndWin = base.loadSfx('phase_4/audio/sfx/MG_win.ogg')
        self.sndRewardTick = base.loadSfx('phase_3.5/audio/sfx/tick_counter.ogg')
        guiModel = 'phase_4/models/gui/cannon_game_gui'
        cannonGui = loader.loadModel(guiModel)
        self.aimPad = DirectFrame(image=cannonGui.find('**/CannonFire_PAD'), relief=None, pos=(0.7, 0, -0.553333), scale=0.8)
        cannonGui.removeNode()
        self.aimPad.hide()
        self.fireButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Fire_Btn_UP'), (guiModel, '**/Fire_Btn_DN'), (guiModel, '**/Fire_Btn_RLVR')), relief=None, pos=(0.0115741, 0, 0.00505051), scale=1.0, command=self.__firePressed)
        self.upButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(0.0115741, 0, 0.221717))
        self.downButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(0.0136112, 0, -0.210101), image_hpr=(0, 0, 180))
        self.leftButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(-0.199352, 0, -0.000505269), image_hpr=(0, 0, -90))
        self.rightButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(0.219167, 0, -0.00101024), image_hpr=(0, 0, 90))
        self.aimPad.setColor(1, 1, 1, 0.9)

        def bindButton(button, upHandler, downHandler):
            button.bind(DGG.B1PRESS, lambda x, handler = upHandler: handler())
            button.bind(DGG.B1RELEASE, lambda x, handler = downHandler: handler())

        bindButton(self.upButton, self.__upPressed, self.__upReleased)
        bindButton(self.downButton, self.__downPressed, self.__downReleased)
        bindButton(self.leftButton, self.__leftPressed, self.__leftReleased)
        bindButton(self.rightButton, self.__rightPressed, self.__rightReleased)
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posInTopRightCorner()
        self.timer.hide()
        self.DEBUG_TOWER_RANGE = 0
        self.DEBUG_CANNON_FAR_LEFT = 0
        self.DEBUG_TOWER_NEAR = 1
        self.DEBUG_TOWER_FAR_LEFT = 1
        return
    def enterPlay(self):
        self.notify.debug('enterPlay')
        for i in xrange(self.numPlayers):
            avId = self.avIdList[i]
            avName = self.getAvatarName(avId)
            scorePanel = MinigameAvatarScorePanel.MinigameAvatarScorePanel(
                avId, avName)
            scorePanel.reparentTo(base.a2dTopRight)
            scorePanel.setPos(-0.213, 0.0, -0.5 - 0.28 * i)
            self.scorePanels.append(scorePanel)

        self.goalBar.show()
        self.goalBar['value'] = 0.0
        base.setCellsAvailable(base.rightCells, 0)
        self.__spawnUpdateSuitsTask()
        orthoDrive = OrthoDrive(
            self.TOON_SPEED,
            maxFrameMove=self.MAX_FRAME_MOVE,
            customCollisionCallback=self.__doMazeCollisions,
            priority=1)
        self.orthoWalk = OrthoWalk(orthoDrive,
                                   broadcast=not self.isSinglePlayer())
        self.orthoWalk.start()
        self.accept(MazeSuit.COLLISION_EVENT_NAME, self.__hitBySuit)
        self.accept(self.TREASURE_GRAB_EVENT_NAME, self.__treasureGrabbed)
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posInTopRightCorner()
        self.timer.setTime(MazeGameGlobals.GAME_DURATION)
        self.timer.countdown(MazeGameGlobals.GAME_DURATION, self.timerExpired)
        self.accept('resetClock', self.__resetClock)
        base.playMusic(self.music, looping=0, volume=0.8)
예제 #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)
    def setGameStart(self, timestamp, molesWhackTarget, totalTime):
        self.GameDuration = totalTime
        self.MolesWhackedTarget = molesWhackTarget
        self.activeField = 1
        self.isToonInRange = 0
        self.scheduleMoles()
        self.notify.debug('%d setGameStart: Starting game' % self.doId)
        self.gameStartTime = globalClockDelta.networkToLocalTime(timestamp)
        self.gameStarted = True
        for hill in self.moleHills:
            hill.setGameStartTime(self.gameStartTime)

        curGameTime = self.getCurrentGameTime()
        timeLeft = self.GameDuration - curGameTime
        self.cleanupTimer()
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posBelowTopRightCorner()
        self.timer.setTime(timeLeft)
        self.timer.countdown(timeLeft, self.timerExpired)
        self.startScheduleTask()
        self.frame2D.show()
        if self.hasRestarted:
            self.level.countryClub.showInfoText(self.restartedText)
            self.sendUpdate('damageMe', [])
        else:
            self.hasRestarted = 1
        self.updateGuiScore()
예제 #8
0
 def __init__(self):
     DirectFrame.__init__(self,
                          relief=None,
                          parent=base.a2dLeftCenter,
                          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),
                          pos=(0.5, 0, 0))
     self.initialiseoptions(QuestChoiceGui)
     self.questChoicePosters = []
     guiButton = loader.loadModel('phase_3/models/gui/quit_button')
     self.cancelButton = DirectButton(
         parent=self,
         relief=None,
         image=(guiButton.find('**/QuitBtn_UP'),
                guiButton.find('**/QuitBtn_DN'),
                guiButton.find('**/QuitBtn_RLVR')),
         image_scale=(0.7, 1, 1),
         text=TTLocalizer.QuestChoiceGuiCancel,
         text_scale=0.06,
         text_pos=(0, -0.02),
         command=self.chooseQuest,
         extraArgs=[0])
     guiButton.removeNode()
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(self)
     self.timer.setScale(0.3)
     base.setCellsAvailable(base.leftCells, 0)
     base.setCellsAvailable([base.bottomCells[0], base.bottomCells[1]], 0)
    def enterInputChoice(self):
        self.notify.debug('enterInputChoice')
        for button in self.diceButtonList:
            button.show()

        self.timer = ToontownTimer.ToontownTimer()
        self.timer.hide()
        if self.timerStartTime != None:
            self.startTimer()
        return
예제 #10
0
 def loadNextGameTimer(self):
     self.nextGame = DirectLabel(parent=self, relief=None, text='', text_font=ToontownGlobals.getSignFont(), text_scale=TTLocalizer.BCGnextGame * BG.CardImageScale[2], text_fg=(1.0, 1.0, 1.0, 1), pos=(BG.GridXOffset, 0, 4 * BG.CardImageScale[2]))
     self.nextGameTimer = ToontownTimer.ToontownTimer()
     self.nextGameTimer.reparentTo(self.nextGame)
     self.nextGameTimer.setPos(0, 0, -5 * BG.CardImageScale[2])
     self.nextGameTimer.setProp('image', None)
     self.nextGameTimer.setProp('text_font', ToontownGlobals.getSignFont())
     self.nextGameTimer.setProp('text_scale', 0.2 * BG.CardImageScale[2])
     self.nextGameTimer.setFontColor(Vec4(1.0, 1.0, 1.0, 1))
     return
예제 #11
0
 def __init__(self):
     self.index = 0
     self.id = time.time()
     self.lastGlove = base.localAvatar.style.gloveColor
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(aspect2d)
     self.timer.posInTopRightCorner()
     self.timer.countdown(GloveNPCGlobals.TIMER_SECONDS, self.__exit,
                          [GloveNPCGlobals.TIMER_END])
     self.setupButtons()
     self.bindButtons()
     self.__updateIndex(0)
예제 #12
0
 def setGameStart(self, timestamp):
     self.notify.debug('%d setGameStart: Starting game' % self.doId)
     self.gameStartTime = globalClockDelta.networkToLocalTime(timestamp)
     self.gameStarted = True
     curGameTime = self.getCurrentGameTime()
     timeLeft = self.GameDuration - curGameTime
     self.cleanupTimer()
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.posBelowTopRightCorner()
     self.timer.setTime(timeLeft)
     self.timer.countdown(timeLeft, self.timerExpired)
     self.startScheduleTask()
     self.frame2D.show()
예제 #13
0
    def enterPlay(self):
        self.notify.debug('enterPlay')
        self.orthoWalk.start()
        for suit in self.suits:
            suitCollSphere = CollisionSphere(0, 0, 0, 1.0)
            suit.collSphereName = 'suitCollSphere%s' % self.suits.index(suit)
            suitCollSphere.setTangible(0)
            suitCollNode = CollisionNode(self.uniqueName(suit.collSphereName))
            suitCollNode.setIntoCollideMask(ToontownGlobals.WallBitmask)
            suitCollNode.addSolid(suitCollSphere)
            suit.collNodePath = suit.attachNewNode(suitCollNode)
            suit.collNodePath.hide()
            if self.ShowSuitSpheres:
                suit.collNodePath.show()
            self.accept(self.uniqueName('enter' + suit.collSphereName),
                        self.handleSuitCollision)

        self.scores = [0] * self.numPlayers
        spacing = 0.4
        for i in xrange(self.numPlayers):
            avId = self.avIdList[i]
            avName = self.getAvatarName(avId)
            scorePanel = MinigameAvatarScorePanel.MinigameAvatarScorePanel(
                avId, avName)
            scorePanel.setScale(0.9)
            scorePanel.setPos(-0.583 - spacing * (self.numPlayers - 1 - i),
                              0.0, -0.15)
            scorePanel.reparentTo(base.a2dTopRight)
            scorePanel.makeTransparent(0.75)
            self.scorePanels.append(scorePanel)

        self.fruitsCaught = 0
        self.droppedObjCaught = {}
        self.dropIntervals = {}
        self.droppedObjNames = []
        self.dropSchedule = []
        self.numItemsDropped = 0
        self.scheduleDrops()
        self.startDropTask()
        if self.WantSuits:
            self.startSuitWalkTask()
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posInTopRightCorner()
        self.timer.setTime(CatchGameGlobals.GameDuration)
        self.timer.countdown(CatchGameGlobals.GameDuration, self.timerExpired)
        self.timer.setTransparency(1)
        self.timer.setColorScale(1, 1, 1, 0.75)
        base.playMusic(self.music, looping=0, volume=0.9)
예제 #14
0
    def load(self):
        minigameGui = loader.loadModel('phase_4/models/gui/minigame_rules_gui')
        buttonGui = loader.loadModel('phase_3.5/models/gui/inventory_gui')

        self.frame = DirectFrame(
            image=minigameGui.find('**/minigame-rules-panel'),
            relief=None,
            pos=(0.1375, 0, -0.6667))
        self.gameTitleText = DirectLabel(parent=self.frame,
                                         text=self.gameTitle,
                                         scale=TTLocalizer.MRPgameTitleText,
                                         text_align=TextNode.ACenter,
                                         text_font=getSignFont(),
                                         text_fg=(1.0, 0.33, 0.33, 1.0),
                                         pos=TTLocalizer.MRgameTitleTextPos,
                                         relief=None)
        self.instructionsText = DirectLabel(
            parent=self.frame,
            text=self.instructions,
            scale=TTLocalizer.MRPinstructionsText,
            text_align=TextNode.ACenter,
            text_wordwrap=TTLocalizer.MRPinstructionsTextWordwrap,
            pos=TTLocalizer.MRPinstructionsTextPos,
            relief=None)
        self.playButton = DirectButton(
            parent=self.frame,
            relief=None,
            image=(buttonGui.find('**/InventoryButtonUp'),
                   buttonGui.find('**/InventoryButtonDown'),
                   buttonGui.find('**/InventoryButtonRollover')),
            image_color=Vec4(0, 0.9, 0.1, 1),
            text=TTLocalizer.MinigameRulesPanelPlay,
            text_fg=(1, 1, 1, 1),
            text_pos=(0, -0.02, 0),
            text_scale=TTLocalizer.MRPplayButton,
            pos=(1.0025, 0, -0.203),
            scale=1.05,
            command=self.playCallback)

        minigameGui.removeNode()
        buttonGui.removeNode()
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.reparentTo(self.frame)
        self.timer.setScale(0.4)
        self.timer.setPos(0.997, 0, 0.064)
        self.frame.hide()
        return
예제 #15
0
 def load(self):
     minigameGui = loader.loadModel(
         'phase_5/models/cogdominium/tt_m_gui_csa_flyThru')
     self.bg = minigameGui.find('**/background')
     self.chatBubble = minigameGui.find('**/chatBubble')
     self.chatBubble.setScale(6.5, 6.5, 7.3)
     self.chatBubble.setPos(0.32, 0, -0.78)
     self.bg.setScale(5.2)
     self.bg.setPos(0.14, 0, -0.6667)
     self.bg.reparentTo(aspect2d)
     self.chatBubble.reparentTo(aspect2d)
     self.frame = DirectFrame(geom=self.bg,
                              relief=None,
                              pos=(0.2, 0, -0.6667))
     self.gameTitleText = DirectLabel(parent=self.frame,
                                      text=self.gameTitle,
                                      scale=TTLocalizer.CRPgameTitleText,
                                      text_align=TextNode.ACenter,
                                      text_font=getSignFont(),
                                      text_fg=(1.0, 0.33, 0.33, 1.0),
                                      pos=TTLocalizer.CRPgameTitleTextPos,
                                      relief=None)
     self.instructionsText = DirectLabel(
         parent=self.frame,
         text=self.instructions,
         scale=TTLocalizer.MRPinstructionsText,
         text_align=TextNode.ACenter,
         text_wordwrap=TTLocalizer.MRPinstructionsTextWordwrap,
         pos=TTLocalizer.MRPinstructionsTextPos,
         relief=None)
     self.playButton = DirectButton(
         parent=self.frame,
         relief=None,
         geom=(minigameGui.find('**/buttonUp'),
               minigameGui.find('**/buttonDown'),
               minigameGui.find('**/buttonHover')),
         pos=(0.74, 0, 0.1),
         scale=(4.2, 5, 5),
         command=self.playCallback)
     minigameGui.removeNode()
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(base.a2dTopRight)
     self.timer.setScale(0.4)
     self.timer.setPos(-0.155, 0, -0.155)
     self.frame.hide()
     return
예제 #16
0
 def load(self):
     purchaseModels = loader.loadModel(
         'phase_4/models/gui/gag_shop_purchase_gui')
     PurchaseBase.load(self, purchaseModels)
     self.backToPlayground = DirectButton(
         parent=self.frame,
         relief=None,
         scale=1.04,
         pos=(0.71, 0, -0.045),
         image=(purchaseModels.find('**/PurchScrn_BTN_UP'),
                purchaseModels.find('**/PurchScrn_BTN_DN'),
                purchaseModels.find('**/PurchScrn_BTN_RLVR')),
         text=TTLocalizer.GagShopDoneShopping,
         text_fg=(0, 0.1, 0.7, 1),
         text_scale=0.05,
         text_pos=(0, 0.015, 0),
         command=self.__handleBackToPlayground)
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(self.frame)
     self.timer.posInTopRightCorner()
     purchaseModels.removeNode()
예제 #17
0
 def __init__(self, tracks, timeout):
     DirectFrame.__init__(self,
                          relief=None,
                          geom=DGG.getDefaultDialogGeom(),
                          geom_color=Vec4(0.8, 0.6, 0.4, 1),
                          geom_scale=(1.5, 1, 1.5),
                          geom_hpr=(0, 0, -90),
                          pos=(0, 0, 0))
     self.initialiseoptions(MultiTrackChoiceGui)
     guiButton = loader.loadModel('phase_3/models/gui/quit_button')
     self.cancelButton = DirectButton(
         parent=self,
         relief=None,
         image=(guiButton.find('**/QuitBtn_UP'),
                guiButton.find('**/QuitBtn_DN'),
                guiButton.find('**/QuitBtn_RLVR')),
         image_scale=(0.7, 1, 1),
         text=TTLocalizer.TrackChoiceGuiCancel,
         pos=(0.15, 0, -0.625),
         text_scale=0.06,
         text_pos=(0, -0.02),
         command=self.chooseTrack,
         extraArgs=[-1])
     guiButton.removeNode()
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(self)
     self.timer.setScale(0.35)
     self.timer.setPos(-0.2, 0, -0.6)
     self.timer.countdown(timeout, self.timeout)
     self.trackChoicePosters = []
     i = 0
     for trackId in tracks:
         print 'at track ' + str(trackId)
         tp = TrackPoster(trackId, self.chooseTrack)
         tp.reparentTo(self)
         self.trackChoicePosters.append(tp)
         tp.setPos(self.TrackPosterPos[i])
         i += 1
     return
 def enterPlay(self, timestamp):
     self.notify.debug('enterPlay')
     elapsedTime = globalClockDelta.localElapsedTime(timestamp)
     self.sectionMgr.enterPlay(elapsedTime)
     handlers = [None, None, None, None, self.shootKeyHandler]
     self.twoDDrive.arrowKeys.setPressHandlers(handlers)
     self.twoDWalk.start()
     self.accept('jumpStart', self.startJump)
     self.accept('enemyHit', self.localToonHitByEnemy)
     self.accept('twoDTreasureGrabbed', self.__treasureGrabbed)
     self.accept('enemyShot', self.__enemyShot)
     taskMgr.remove(self.UpdateLocalToonTask)
     taskMgr.add(self.__updateLocalToonTask,
                 self.UpdateLocalToonTask,
                 priority=1)
     base.localAvatar.laffMeter.stop()
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.posInTopRightCorner()
     self.timer.setTime(ToonBlitzGlobals.GameDuration[self.getSafezoneId()])
     self.timer.countdown(
         ToonBlitzGlobals.GameDuration[self.getSafezoneId()],
         self.timerExpired)
     return
예제 #19
0
    def enterInputChoice(self):
        self.notify.debug('enterInputChoice')
        self.forceLocalToonToTire()
        self.controlKeyPressed = False
        if self.curRound == 0:
            self.setupStartOfMatch()
        else:
            self.notify.debug('self.curRound = %s' % self.curRound)
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.hide()
        if self.timerStartTime != None:
            self.startTimer()
        self.showForceArrows(realPlayersOnly=True)
        self.localForceArrow().setPosHpr(0, 0, -1.0, 0, 0, 0)
        self.localForceArrow().reparentTo(self.localTireNp())
        self.localForceArrow().setY(IceGameGlobals.TireRadius)
        self.localTireNp().headsUp(self.target)
        self.notify.debug('self.localForceArrow() heading = %s' %
                          self.localForceArrow().getH())
        self.curHeading = self.localTireNp().getH()
        self.curForce = 25
        self.updateLocalForceArrow()
        for avId in self.forceArrowDict:
            forceArrow = self.forceArrowDict[avId]
            forceArrow.setPosHpr(0, 0, -1.0, 0, 0, 0)
            tireNp = self.tireDict[avId]['tireNodePath']
            forceArrow.reparentTo(tireNp)
            forceArrow.setY(IceGameGlobals.TireRadius)
            tireNp.headsUp(self.target)
            self.updateForceArrow(avId, tireNp.getH(), 25)

        taskMgr.add(self.__aimTask, self.uniqueName('aimtask'))
        if base.localAvatar.laffMeter:
            base.localAvatar.laffMeter.stop()
        self.sendForceArrowUpdateAsap = False
        return
예제 #20
0
 def load(self):
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(base.a2dBottomRight)
     self.timer.setPos(-0.233, 0, 0.85)
     self.timer.hide()
     self.geom = loader.loadModel('phase_5.5/models/estate/target')
     self.geom.reparentTo(base.cr.playGame.hood.loader.geom)
     self.geom.setPos(0, 0, 40)
     self.geom.setScale(3)
     self.geom.stash()
     self.hitSound = base.loadSfx('phase_4/audio/sfx/MG_Tag_A.ogg')
     self.rewardSound = base.loadSfx('phase_4/audio/sfx/MG_pos_buzzer.ogg')
     self.scoreText = TextNode('scoreText')
     self.scoreText.setTextColor(1, 0, 0, 1)
     self.scoreText.setAlign(self.scoreText.ACenter)
     self.scoreText.setFont(getSignFont())
     self.scoreText.setText('0')
     self.scoreNode = self.timer.attachNewNode(self.scoreText)
     self.scoreNode.setPos(0, 0, 0.35)
     self.scoreNode.setScale(0.25)
     self.curPinballScoreText = TextNode('pinballScoreText')
     self.curPinballScoreText.setTextColor(1, 0, 0, 1)
     self.curPinballScoreText.setAlign(self.scoreText.ACenter)
     self.curPinballScoreText.setFont(getSignFont())
     self.curPinballScoreText.setText('')
     self.curPinballScoreNode = render.attachNewNode(self.curPinballScoreText)
     self.curPinballScoreNode.setPos(0.5, 0.5, 0.3)
     self.curPinballScoreNode.setScale(0.25)
     colSphere = CollisionSphere(0, 0, 0, 3.5)
     colSphere.setTangible(0)
     colNode = CollisionNode('targetSphere')
     colNode.addSolid(colSphere)
     colSphereNode = self.geom.attachNewNode(colNode)
     self.accept('hitTarget', self.handleHitTarget)
     self.accept('missedTarget', self.handleMissedTarget)
     self.accept('entertargetSphere', self.handleEnterTarget)
 def __makeGui(self):
     if base.config.GetBool('want-qa-regression', 0):
         self.notify.info('QA-REGRESSION: FISHING: ZoneId: %s' %
                          self.pond.getArea())
     if self.madeGui:
         return
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.posInTopRightCorner()
     self.timer.hide()
     self.castGui = loader.loadModel('phase_4/models/gui/fishingGui')
     self.castGui.setBin("background", 10)
     self.castGui.setScale(0.67)
     self.castGui.setPos(0, 1, 0)
     for nodeName in ('bucket', 'jar', 'display_bucket', 'display_jar'):
         self.castGui.find('**/' + nodeName).reparentTo(self.castGui)
     self.exitButton = DirectButton(
         parent=self.castGui,
         relief=None,
         text=('', TTLocalizer.FishingExit, TTLocalizer.FishingExit),
         text_align=TextNode.ACenter,
         text_scale=0.1,
         text_fg=Vec4(1, 1, 1, 1),
         text_shadow=Vec4(0, 0, 0, 1),
         text_pos=(0.0, -0.12),
         pos=(1.75 * (4. / 3.), 0, -1.33),
         textMayChange=0,
         image=(self.castGui.find('**/exit_buttonUp'),
                self.castGui.find('**/exit_buttonDown'),
                self.castGui.find('**/exit_buttonRollover')),
         command=self.__userExit)
     self.castGui.find('**/exitButton').removeNode()
     self.castButton = DirectButton(
         parent=self.castGui,
         relief=None,
         text=TTLocalizer.FishingCast,
         text_align=TextNode.ACenter,
         text_scale=(3, 3 * 0.75, 3 * 0.75),
         text_fg=Vec4(1, 1, 1, 1),
         text_shadow=Vec4(0, 0, 0, 1),
         text_pos=(0, -4),
         image=self.castGui.find('**/castButton'),
         image0_color=(1, 0, 0, 1),
         image1_color=(0, 1, 0, 1),
         image2_color=(1, 1, 0, 1),
         image3_color=(0.8, 0.5, 0.5, 1),
         pos=(0, -0.05, -0.666),
         scale=(0.036, 1, 0.048))
     self.castGui.find('**/castButton').removeNode()
     self.arrow = self.castGui.find('**/arrow')
     self.arrowTip = self.arrow.find('**/arrowTip')
     self.arrowTail = self.arrow.find('**/arrowTail')
     self.arrow.reparentTo(self.castGui)
     self.arrow.setColorScale(0.9, 0.9, 0.1, 0.7)
     self.arrow.hide()
     self.jar = DirectLabel(parent=self.castGui,
                            relief=None,
                            text=str(self.av.getMoney()),
                            text_scale=0.16,
                            text_fg=(0.95, 0.95, 0, 1),
                            text_font=ToontownGlobals.getSignFont(),
                            pos=(-1.12, 0, -1.3))
     self.bucket = DirectLabel(parent=self.castGui,
                               relief=None,
                               text='',
                               text_scale=0.09,
                               text_fg=(0.95, 0.95, 0, 1),
                               text_shadow=(0, 0, 0, 1),
                               pos=(1.14, 0, -1.33))
     self.__updateFishTankGui()
     self.itemGui = NodePath('itemGui')
     self.itemFrame = DirectFrame(
         parent=self.itemGui,
         relief=None,
         geom=DGG.getDefaultDialogGeom(),
         geom_color=ToontownGlobals.GlobalDialogColor,
         geom_scale=(1, 1, 0.6),
         text=TTLocalizer.FishingItemFound,
         text_pos=(0, 0.2),
         text_scale=0.08,
         pos=(0, 0, 0.587))
     self.itemLabel = DirectLabel(parent=self.itemFrame,
                                  text='',
                                  text_scale=0.06,
                                  pos=(0, 0, -0.25))
     buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
     self.itemGuiCloseButton = DirectButton(
         parent=self.itemFrame,
         pos=(0.44, 0, -0.24),
         relief=None,
         image=(buttons.find('**/CloseBtn_UP'),
                buttons.find('**/CloseBtn_DN'),
                buttons.find('**/CloseBtn_Rllvr')),
         image_scale=(0.7, 1, 0.7),
         command=self.__itemGuiClose)
     buttons.removeNode()
     jarGui = loader.loadModel('phase_3.5/models/gui/jar_gui')
     bootGui = loader.loadModel('phase_4/models/gui/fishing_boot')
     packageGui = loader.loadModel(
         'phase_3.5/models/gui/stickerbook_gui').find('**/package')
     self.itemJellybean = DirectFrame(parent=self.itemFrame,
                                      relief=None,
                                      image=jarGui,
                                      scale=0.5)
     self.itemBoot = DirectFrame(parent=self.itemFrame,
                                 relief=None,
                                 image=bootGui,
                                 scale=0.2)
     self.itemPackage = DirectFrame(parent=self.itemFrame,
                                    relief=None,
                                    image=packageGui,
                                    scale=0.25)
     self.itemJellybean.hide()
     self.itemBoot.hide()
     self.itemPackage.hide()
     self.failureDialog = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('failureDialog'),
         doneEvent=self.uniqueName('failureDialog'),
         command=self.__userExit,
         message=TTLocalizer.FishingFailure,
         style=TTDialog.CancelOnly,
         cancelButtonText=TTLocalizer.FishingExit)
     self.failureDialog.hide()
     self.sellFishDialog = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('sellFishDialog'),
         doneEvent=self.uniqueName('sellFishDialog'),
         command=self.__sellFish,
         message=TTLocalizer.FishBingoOfferToSellFish,
         style=TTDialog.YesNo)
     self.sellFishDialog.hide()
     self.sellFishConfirmDialog = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('sellFishConfirmDialog'),
         doneEvent=self.uniqueName('sellFishConfirmDialog'),
         command=self.__sellFishConfirm,
         message=TTLocalizer.STOREOWNER_TROPHY,
         style=TTDialog.Acknowledge)
     self.sellFishConfirmDialog.hide()
     self.brokeDialog = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('brokeDialog'),
         doneEvent=self.uniqueName('brokeDialog'),
         command=self.__userExit,
         message=TTLocalizer.FishingBroke,
         style=TTDialog.CancelOnly,
         cancelButtonText=TTLocalizer.FishingExit)
     self.brokeDialog.hide()
     self.howToDialog = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('howToDialog'),
         doneEvent=self.uniqueName('howToDialog'),
         fadeScreen=0,
         message=TTLocalizer.FishingHowToFailed,
         style=TTDialog.Acknowledge)
     self.howToDialog['command'] = self.__hideHowTo
     self.howToDialog.setPos(-0.3, 0, 0.5)
     self.howToDialog.hide()
     self.madeGui = 1
     return
예제 #22
0
    def load(self):
        self.notify.debug('load')
        DistributedMinigame.load(self)
        self.music = base.loadMusic('phase_4/audio/bgm/MG_CogThief.ogg')
        self.initCogInfo()
        for barrelIndex in xrange(CTGG.NumBarrels):
            barrel = loader.loadModel(
                'phase_4/models/minigames/cogthief_game_gagTank')
            barrel.setPos(CTGG.BarrelStartingPositions[barrelIndex])
            barrel.setScale(self.BarrelScale)
            barrel.reparentTo(render)
            barrel.setTag('barrelIndex', str(barrelIndex))
            collSphere = CollisionSphere(0, 0, 0, 4)
            collSphere.setTangible(0)
            name = 'BarrelSphere-%d' % barrelIndex
            collSphereName = self.uniqueName(name)
            collNode = CollisionNode(collSphereName)
            collNode.setFromCollideMask(CTGG.BarrelBitmask)
            collNode.addSolid(collSphere)
            colNp = barrel.attachNewNode(collNode)
            handler = CollisionHandlerEvent()
            handler.setInPattern('barrelHit-%fn')
            base.cTrav.addCollider(colNp, handler)
            self.accept('barrelHit-' + collSphereName, self.handleEnterBarrel)
            nodeToHide = '**/gagMoneyTen'
            if barrelIndex % 2:
                nodeToHide = '**/gagMoneyFive'
            iconToHide = barrel.find(nodeToHide)
            if not iconToHide.isEmpty():
                iconToHide.hide()
            self.barrels.append(barrel)

        self.gameBoard = loader.loadModel(
            'phase_4/models/minigames/cogthief_game')
        self.gameBoard.find('**/floor_TT').hide()
        self.gameBoard.find('**/floor_DD').hide()
        self.gameBoard.find('**/floor_DG').hide()
        self.gameBoard.find('**/floor_MM').hide()
        self.gameBoard.find('**/floor_BR').hide()
        self.gameBoard.find('**/floor_DL').hide()
        zone = self.getSafezoneId()
        if zone == ToontownGlobals.ToontownCentral:
            self.gameBoard.find('**/floor_TT').show()
        elif zone == ToontownGlobals.DonaldsDock:
            self.gameBoard.find('**/floor_DD').show()
        elif zone == ToontownGlobals.DaisyGardens:
            self.gameBoard.find('**/floor_DG').show()
        elif zone == ToontownGlobals.MinniesMelodyland:
            self.gameBoard.find('**/floor_MM').show()
        elif zone == ToontownGlobals.TheBrrrgh:
            self.gameBoard.find('**/floor_BR').show()
        elif zone == ToontownGlobals.DonaldsDreamland:
            self.gameBoard.find('**/floor_DL').show()
        else:
            self.gameBoard.find('**/floor_TT').show()
        self.gameBoard.setPosHpr(0, 0, 0, 0, 0, 0)
        self.gameBoard.setScale(1.0)
        self.toonSDs = {}
        avId = self.localAvId
        toonSD = CogThiefGameToonSD.CogThiefGameToonSD(avId, self)
        self.toonSDs[avId] = toonSD
        toonSD.load()
        self.loadCogs()
        self.toonHitTracks = {}
        self.toonPieTracks = {}
        self.sndOof = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_dirt.ogg')
        self.sndRewardTick = base.loadSfx(
            'phase_3.5/audio/sfx/tick_counter.ogg')
        self.sndPerfect = base.loadSfx('phase_4/audio/sfx/ring_perfect.ogg')
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posInTopRightCorner()
        self.timer.hide()
        purchaseModels = loader.loadModel('phase_4/models/gui/purchase_gui')
        self.jarImage = purchaseModels.find('**/Jar')
        self.jarImage.reparentTo(hidden)
        self.rewardPanel = DirectLabel(parent=hidden,
                                       relief=None,
                                       pos=(-0.173, 0.0, -0.55),
                                       scale=0.65,
                                       text='',
                                       text_scale=0.2,
                                       text_fg=(0.95, 0.95, 0, 1),
                                       text_pos=(0, -.13),
                                       text_font=ToontownGlobals.getSignFont(),
                                       image=self.jarImage)
        self.rewardPanelTitle = DirectLabel(parent=self.rewardPanel,
                                            relief=None,
                                            pos=(0, 0, 0.06),
                                            scale=0.08,
                                            text=TTLocalizer.CannonGameReward,
                                            text_fg=(0.95, 0.95, 0, 1),
                                            text_shadow=(0, 0, 0, 1))
        return
예제 #23
0
 def announceGenerate(self):
     DistCogdoLevelGame.announceGenerate(self)
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.stash()
예제 #24
0
 def __init__(self, doneEvent):
     StateData.StateData.__init__(self, doneEvent)
     self.numCogs = 1
     self.creditLevel = None
     self.luredIndices = []
     self.trappedIndices = []
     self.numToons = 1
     self.toons = []
     self.localNum = 0
     self.time = 0
     self.bldg = 0
     self.track = -1
     self.level = -1
     self.target = 0
     self.toonAttacks = [(-1, 0, 0), (-1, 0, 0), (-1, 0, 0), (-1, 0, 0)]
     self.fsm = ClassicFSM.ClassicFSM('TownBattle', [
         State.State('Off', self.enterOff, self.exitOff, ['Attack']),
         State.State('Attack', self.enterAttack, self.exitAttack, [
             'ChooseCog', 'ChooseToon', 'AttackWait', 'Run', 'Fire', 'SOS'
         ]),
         State.State('ChooseCog', self.enterChooseCog, self.exitChooseCog,
                     ['AttackWait', 'Attack']),
         State.State('AttackWait', self.enterAttackWait,
                     self.exitAttackWait,
                     ['ChooseCog', 'ChooseToon', 'Attack']),
         State.State('ChooseToon', self.enterChooseToon,
                     self.exitChooseToon, ['AttackWait', 'Attack']),
         State.State('Run', self.enterRun, self.exitRun, ['Attack']),
         State.State(
             'SOS', self.enterSOS, self.exitSOS,
             ['Attack', 'AttackWait', 'SOSPetSearch', 'SOSPetInfo']),
         State.State('SOSPetSearch', self.enterSOSPetSearch,
                     self.exitSOSPetSearch, ['SOS', 'SOSPetInfo']),
         State.State('SOSPetInfo', self.enterSOSPetInfo,
                     self.exitSOSPetInfo, ['SOS', 'AttackWait']),
         State.State('Fire', self.enterFire, self.exitFire,
                     ['Attack', 'AttackWait'])
     ], 'Off', 'Off')
     self.runPanel = TTDialog.TTDialog(dialogName='TownBattleRunPanel',
                                       text=TTLocalizer.TownBattleRun,
                                       style=TTDialog.TwoChoice,
                                       command=self.__handleRunPanelDone)
     self.runPanel.hide()
     self.attackPanelDoneEvent = 'attack-panel-done'
     self.attackPanel = TownBattleAttackPanel.TownBattleAttackPanel(
         self.attackPanelDoneEvent)
     self.waitPanelDoneEvent = 'wait-panel-done'
     self.waitPanel = TownBattleWaitPanel.TownBattleWaitPanel(
         self.waitPanelDoneEvent)
     self.chooseCogPanelDoneEvent = 'choose-cog-panel-done'
     self.chooseCogPanel = TownBattleChooseAvatarPanel.TownBattleChooseAvatarPanel(
         self.chooseCogPanelDoneEvent, 0)
     self.chooseToonPanelDoneEvent = 'choose-toon-panel-done'
     self.chooseToonPanel = TownBattleChooseAvatarPanel.TownBattleChooseAvatarPanel(
         self.chooseToonPanelDoneEvent, 1)
     self.SOSPanelDoneEvent = 'SOS-panel-done'
     self.SOSPanel = TownBattleSOSPanel.TownBattleSOSPanel(
         self.SOSPanelDoneEvent)
     self.SOSPetSearchPanelDoneEvent = 'SOSPetSearch-panel-done'
     self.SOSPetSearchPanel = TownBattleSOSPetSearchPanel.TownBattleSOSPetSearchPanel(
         self.SOSPetSearchPanelDoneEvent)
     self.SOSPetInfoPanelDoneEvent = 'SOSPetInfo-panel-done'
     self.SOSPetInfoPanel = TownBattleSOSPetInfoPanel.TownBattleSOSPetInfoPanel(
         self.SOSPetInfoPanelDoneEvent)
     self.fireCogPanelDoneEvent = 'fire-cog-panel-done'
     self.FireCogPanel = FireCogPanel.FireCogPanel(
         self.fireCogPanelDoneEvent)
     self.cogFireCosts = [None, None, None, None]
     self.toonPanels = (TownBattleToonPanel.TownBattleToonPanel(0),
                        TownBattleToonPanel.TownBattleToonPanel(1),
                        TownBattleToonPanel.TownBattleToonPanel(2),
                        TownBattleToonPanel.TownBattleToonPanel(3))
     self.cogPanels = (TownBattleCogPanel.TownBattleCogPanel(0),
                       TownBattleCogPanel.TownBattleCogPanel(1),
                       TownBattleCogPanel.TownBattleCogPanel(2),
                       TownBattleCogPanel.TownBattleCogPanel(3))
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.posInTopRightCorner()
     self.timer.setScale(0.4)
     self.timer.hide()
     return
예제 #25
0
    def load(self):
        purchaseModels = loader.loadModel('phase_4/models/gui/purchase_gui')
        PurchaseBase.load(self, purchaseModels)
        interiorPhase = 3.5
        self.bg = loader.loadModel('phase_%s/models/modules/toon_interior' %
                                   interiorPhase)
        self.bg.setPos(0.0, 5.0, -1.0)
        self.wt = self.bg.find('**/random_tc1_TI_wallpaper')
        wallTex = loader.loadTexture('phase_%s/maps/wall_paper_a5.jpg' %
                                     interiorPhase)
        self.wt.setTexture(wallTex, 100)
        self.wt.setColorScale(0.8, 0.67, 0.549, 1.0)
        self.bt = self.bg.find('**/random_tc1_TI_wallpaper_border')
        wallTex = loader.loadTexture('phase_%s/maps/wall_paper_a5.jpg' %
                                     interiorPhase)
        self.bt.setTexture(wallTex, 100)
        self.bt.setColorScale(0.8, 0.67, 0.549, 1.0)
        self.wb = self.bg.find('**/random_tc1_TI_wainscotting')
        wainTex = loader.loadTexture('phase_%s/maps/wall_paper_b4.jpg' %
                                     interiorPhase)
        self.wb.setTexture(wainTex, 100)
        self.wb.setColorScale(0.473, 0.675, 0.488, 1.0)
        self.playAgain = DirectButton(
            parent=self.frame,
            relief=None,
            scale=1.04,
            pos=(0.72, 0, -0.24),
            image=(purchaseModels.find('**/PurchScrn_BTN_UP'),
                   purchaseModels.find('**/PurchScrn_BTN_DN'),
                   purchaseModels.find('**/PurchScrn_BTN_RLVR'),
                   purchaseModels.find('**/PurchScrn_BTN_UP')),
            text=TTLocalizer.GagShopPlayAgain,
            text_fg=(0, 0.1, 0.7, 1),
            text_scale=0.05,
            text_pos=(0, 0.015, 0),
            image3_color=Vec4(0.6, 0.6, 0.6, 1),
            text3_fg=Vec4(0, 0, 0.4, 1),
            command=self.__handlePlayAgain)
        self.backToPlayground = DirectButton(
            parent=self.frame,
            relief=None,
            scale=1.04,
            pos=(0.72, 0, -0.045),
            image=(purchaseModels.find('**/PurchScrn_BTN_UP'),
                   purchaseModels.find('**/PurchScrn_BTN_DN'),
                   purchaseModels.find('**/PurchScrn_BTN_RLVR'),
                   purchaseModels.find('**/PurchScrn_BTN_UP')),
            text=TTLocalizer.GagShopBackToPlayground,
            text_fg=(0, 0.1, 0.7, 1),
            text_scale=0.05,
            text_pos=(0, 0.015, 0),
            image3_color=Vec4(0.6, 0.6, 0.6, 1),
            text3_fg=Vec4(0, 0, 0.4, 1),
            command=self.__handleBackToPlayground)
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.hide()
        self.timer.posInTopRightCorner()
        numAvs = 0
        count = 0
        localToonIndex = 0
        for index in xrange(len(self.ids)):
            avId = self.ids[index]
            if avId == base.localAvatar.doId:
                localToonIndex = index
            if self.states[index] != PURCHASE_NO_CLIENT_STATE and self.states[
                    index] != PURCHASE_DISCONNECTED_STATE:
                numAvs = numAvs + 1

        layoutList = (None, (0, ), (0, 2), (0, 1, 3), (0, 1, 2, 3))
        layout = layoutList[numAvs]
        headFramePosList = (Vec3(0.105, 0, -0.384), Vec3(0.105, 0, -0.776),
                            Vec3(0.85, 0, -0.555), Vec3(-0.654, 0, -0.555))
        AVID_INDEX = 0
        LAYOUT_INDEX = 1
        TOON_INDEX = 2
        self.avInfoArray = [(base.localAvatar.doId, headFramePosList[0],
                             localToonIndex)]
        pos = 1
        for index in xrange(len(self.ids)):
            avId = self.ids[index]
            if self.states[index] != PURCHASE_NO_CLIENT_STATE and self.states[
                    index] != PURCHASE_DISCONNECTED_STATE:
                if avId != base.localAvatar.doId:
                    if avId in base.cr.doId2do:
                        self.avInfoArray.append(
                            (avId, headFramePosList[layout[pos]], index))
                        pos = pos + 1

        self.headFrames = []
        for avInfo in self.avInfoArray:
            av = base.cr.doId2do.get(avInfo[AVID_INDEX])
            if av:
                headFrame = PurchaseHeadFrame(av, purchaseModels)
                headFrame.setAvatarState(self.states[avInfo[TOON_INDEX]])
                headFrame.setPos(avInfo[LAYOUT_INDEX])
                self.headFrames.append((avInfo[AVID_INDEX], headFrame))

        purchaseModels.removeNode()
        self.foreground = loader.loadModel('phase_3.5/models/modules/TT_A1')
        self.foreground.setPos(12.5, -20, -5.5)
        self.foreground.setHpr(180, 0, 0)
        self.backgroundL = self.foreground.copyTo(hidden)
        self.backgroundL.setPos(-14.5, -25, -5)
        self.backgroundL.setHpr(180, 0, 0)
        self.backgroundR = self.backgroundL.copyTo(hidden)
        self.backgroundR.setPos(30, -25, -5)
        self.backgroundR.setHpr(180, 0, 0)
        streets = loader.loadModel('phase_3.5/models/modules/street_modules')
        sidewalk = streets.find('**/street_sidewalk_40x40')
        self.sidewalk = sidewalk.copyTo(hidden)
        self.sidewalkR = sidewalk.copyTo(hidden)
        self.sidewalkL = sidewalk.copyTo(hidden)
        self.sidewalk.setPos(-20, -25, -5.5)
        self.sidewalk.setColor(0.9, 0.6, 0.4)
        self.sidewalkL.setPos(-40, -25, -5.5)
        self.sidewalkL.setColor(0.9, 0.6, 0.4)
        self.sidewalkR.setPos(0, -25, -5.5)
        self.sidewalkR.setColor(0.9, 0.6, 0.4)
        streets.removeNode()
        doors = loader.loadModel('phase_4/models/modules/doors')
        door = doors.find('**/door_single_square_ur_door')
        self.door = door.copyTo(hidden)
        self.door.setH(180)
        self.door.setPos(0, -16.75, -5.5)
        self.door.setScale(1.5, 1.5, 2.0)
        self.door.setColor(1.0, 0.8, 0, 1)
        doors.removeNode()
        self.rewardDoubledJellybeanLabel = DirectLabel(
            text=TTLocalizer.PartyRewardDoubledJellybean,
            text_fg=(1.0, 0.125, 0.125, 1.0),
            text_shadow=(0, 0, 0, 1),
            relief=None,
            pos=(0.0, 0, -0.67),
            scale=0.08)
        self.rewardDoubledJellybeanLabel.hide()
        self.countSound = base.loadSfx('phase_3.5/audio/sfx/tick_counter.ogg')
        self.overMaxSound = base.loadSfx(
            'phase_3.5/audio/sfx/AV_collision.ogg')
        self.celebrateSound = base.loadSfx('phase_4/audio/sfx/MG_win.ogg')
        return
예제 #26
0
 def loadGameTimer(self):
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.reparentTo(self)
     self.timer.setScale(0.17)
     self.timer.setPos(0.24, 0, -0.18)
예제 #27
0
    def load(self):
        self.notify.debug('load')
        DistributedMinigame.load(self)
        self.timer = ToontownTimer.ToontownTimer()
        self.timer.posInTopRightCorner()
        self.timer.hide()
        self.room = loader.loadModel('phase_4/models/minigames/matching_room')
        self.buttonSounds = []
        for soundName in self.ButtonSoundNames:
            self.buttonSounds.append(base.loadSfx(soundName))

        self.correctSound = base.loadSfx('phase_4/audio/sfx/MG_pos_buzzer.ogg')
        self.incorrectSound = base.loadSfx(
            'phase_4/audio/sfx/MG_neg_buzzer.ogg')
        self.perfectSound = base.loadSfx('phase_4/audio/sfx/MG_win.ogg')
        self.fallSound = base.loadSfx('phase_4/audio/sfx/MG_Tag_A.ogg')
        self.music = base.loadMusic(self.bgm)
        self.waitingText = DirectLabel(text=self.strPleaseWait,
                                       text_fg=(0.9, 0.9, 0.9, 1.0),
                                       frameColor=(1, 1, 1, 0),
                                       text_font=ToontownGlobals.getSignFont(),
                                       pos=(0, 0, -.78),
                                       scale=0.12)
        self.roundText = DirectLabel(text=self.strRound % 1,
                                     text_fg=self.normalTextColor,
                                     frameColor=(1, 1, 1, 0),
                                     text_font=ToontownGlobals.getSignFont(),
                                     pos=(0.014, 0, -.84),
                                     scale=0.12)
        self.roundText.hide()
        self.waitingText.hide()
        matchingGameGui = loader.loadModel(
            'phase_3.5/models/gui/matching_game_gui')
        minnieArrow = matchingGameGui.find('**/minnieArrow')
        minnieX = matchingGameGui.find('**/minnieX')
        minnieCircle = matchingGameGui.find('**/minnieCircle')
        self.arrows = [None] * 5
        for x in xrange(0, 5):
            self.arrows[x] = minnieArrow.copyTo(hidden)
            self.arrows[x].hide()

        self.xs = [None] * 5
        for x in xrange(0, 5):
            self.xs[x] = minnieX.copyTo(hidden)
            self.xs[x].hide()

        self.statusBalls = []
        self.totalMoves = PatternGameGlobals.INITIAL_ROUND_LENGTH + PatternGameGlobals.ROUND_LENGTH_INCREMENT * (
            PatternGameGlobals.NUM_ROUNDS - 1)
        for x in xrange(0, 4):
            self.statusBalls.append([None] * self.totalMoves)

        for x in xrange(0, 4):
            for y in xrange(0, self.totalMoves):
                self.statusBalls[x][y] = minnieCircle.copyTo(hidden)
                self.statusBalls[x][y].hide()

        minnieArrow.removeNode()
        minnieX.removeNode()
        minnieCircle.removeNode()
        matchingGameGui.removeNode()
        self.toon = NPCToons.createLocalNPC(7010)
        self.toon.reparentTo(hidden)
        self.backRowHome = Point3(3, 11, 0)
        self.backRowXSpacing = 1.8
        self.frontRowHome = Point3(0, 18, 0)
        self.frontRowXSpacing = 3.0
        self.stdNumDanceStepPingFrames = self.toon.getNumFrames(
            self.toonAnimNames[0])
        self.stdNumDanceStepPingPongFrames = self.__numPingPongFrames(
            self.stdNumDanceStepPingFrames)
        self.buttonPressDelayPercent = (self.stdNumDanceStepPingFrames - 1.0
                                        ) / self.stdNumDanceStepPingPongFrames
        self.animPlayRates = []
        animPlayRate = 1.4
        animPlayRateMult = 1.06
        for i in xrange(PatternGameGlobals.NUM_ROUNDS):
            self.animPlayRates.append(animPlayRate)
            animPlayRate *= animPlayRateMult

        return
 def announceGenerate(self):
     DistCogdoLevelGame.announceGenerate(self)
     self.timer = ToontownTimer.ToontownTimer()
     self.timer.setScale(Consts.Settings.TimerScale.get())
     self.timer.stash()