Пример #1
0
 def makeToon(self):
     if not self.toon:
         self.toon = Toon.Toon()
         self.toon.setDNA(base.localAvatar.getStyle())
         self.toon.getGeomNode().setDepthWrite(1)
         self.toon.getGeomNode().setDepthTest(1)
         self.toon.useLOD(500)
         self.toon.reparentTo(self.frame)
         self.toon.setPosHprScale(0, 10, -0.25, 210, 0, 0, 0.12, 0.12, 0.12)
         self.ignore('nametagAmbientLightChanged')
Пример #2
0
 def getIntroToon(toonProperties, parent, pos):
     toon = Toon.Toon()
     dna = ToonDNA.ToonDNA()
     dna.newToonFromProperties(*toonProperties)
     toon.setDNA(dna)
     toon.reparentTo(parent)
     toon.setPos(*pos)
     toon.setH(180)
     toon.startBlink()
     return toon
Пример #3
0
    def load(self):
        self.notify.debug('load()')
        CogdoGameMovie.load(self)
        backgroundGui = loader.loadModel('phase_5/models/cogdominium/tt_m_gui_csa_flyThru') # Dialogue Box
        self.bg = backgroundGui.find('**/background')
        self.chatBubble = backgroundGui.find('**/chatBubble')
        self.chatBubble.setScale(6.5, 6.5, 7.2999999999999998)
        self.chatBubble.setPos(0.32000000000000001, 0, -0.78000000000000003)
        self.bg.setScale(5.2000000000000002)
        self.bg.setPos(0.14000000000000001, 0, -0.66669999999999996)
        self.bg.reparentTo(aspect2d)
        self.chatBubble.reparentTo(aspect2d)
        self.frame = DirectFrame(geom = self.bg, relief = None, pos = (0.20000000000000001, 0, -0.66669999999999996))
        self.bg.wrtReparentTo(self.frame)
        self.gameTitleText = DirectLabel(parent = self.frame, text = TTLocalizer.CogdoExecutiveSuiteTitle, scale = TTLocalizer.MRPgameTitleText * 0.80000000000000004, text_align = TextNode.ACenter, text_font = getSignFont(), text_fg = (1.0, 0.33000000000000002, 0.33000000000000002, 1.0), pos = TTLocalizer.MRgameTitleTextPos, relief = None)
        self.chatBubble.wrtReparentTo(self.frame)
        self.frame.hide()
        backgroundGui.removeNode()
        self.toonDNA = ToonDNA.ToonDNA()
        self.toonDNA.newToonFromProperties('dss', 'ss', 'm', 'm', 2, 0, 2, 2, 1, 8, 1, 8, 1, 14) # Lowdens DNA
        self.toonHead = Toon.Toon()
        self.toonHead.setDNA(self.toonDNA)
        self.makeSuit('sc')
        self.toonHead.getGeomNode().setDepthWrite(1)
        self.toonHead.getGeomNode().setDepthTest(1)
        self.toonHead.loop('neutral')
        self.toonHead.setPosHprScale(-0.72999999999999998, 0, -1.27, 180, 0, 0, 0.17999999999999999, 0.17999999999999999, 0.17999999999999999)
        self.toonHead.reparentTo(hidden)
        self.toonHead.startBlink()
        self.clipPlane = self.toonHead.attachNewNode(PlaneNode('clip'))
        self.clipPlane.node().setPlane(Plane(0, 0, 1, 0))
        self.clipPlane.setPos(0, 0, 2.4500000000000002)
        self._toonDialogueSfx = loader.loadSfx('phase_3.5/audio/dial/AV_dog_long.mp3') # Dog speech
        self._camHelperNode = NodePath('CamHelperNode')
        self._camHelperNode.reparentTo(render)
        dialogue = TTLocalizer.CogdoExecutiveSuiteIntroMessage
        
        def start():
            self.frame.show()
            base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 0)

        
        def showShopOwner():
            self._setCamTarget(self._shopOwner, -10, offset = Point3(0, 0, 5))

        
        def end():
            self._dialogueLabel.reparentTo(hidden)
            self.toonHead.reparentTo(hidden)
            self.frame.hide()
            base.setCellsAvailable(base.bottomCells + base.leftCells + base.rightCells, 1)
            self._stopUpdateTask()

        self._ival = Sequence(Func(start), Func(self.displayLine, dialogue), Func(showShopOwner), ParallelEndTogether(camera.posInterval(self.cameraMoveDuration, Point3(8, 0, 13), blendType = 'easeInOut'), camera.hprInterval(0.5, self._camHelperNode.getHpr(), blendType = 'easeInOut')), Wait(self.introDuration), Func(end))
        self._startUpdateTask()
Пример #4
0
 def getToonHeadModel(self):
     headType = ToonDNA.toonHeadTypes.index(base.localAvatar.style.head)
     headName = ToonDNA.toonHeadTypes[headType]
     gender = base.localAvatar.style.gender
     toon = Toon.Toon()
     dna = ToonDNA.ToonDNA()
     dna.newToon((headName, 'ms', 'm', gender))
     dna.headColor = base.localAvatar.style.headColor
     dna.armColor = base.localAvatar.style.armColor
     dna.legColor = base.localAvatar.style.legColor
     toon.setDNA(dna)
     return toon
Пример #5
0
 def makeToon(self):
     if not self.toon:
         self.toon = Toon.Toon()
         self.toon.setDNA(base.localAvatar.getStyle())
         self.toon.getGeomNode().setDepthWrite(1)
         self.toon.getGeomNode().setDepthTest(1)
         # Conserve polygons
         self.toon.useLOD(500)
         self.toon.reparentTo(self.frame)
         self.toon.setPosHprScale(0,10,-0.25, 210,0,0, 0.12,0.12,0.12)
         # This thing is killing us
         self.ignore("nametagAmbientLightChanged")
    def getPicture(self, avatar):
        # Returns a (DirectWidget, Interval) pair to draw and animate a
        # little representation of the item, or (None, None) if the
        # item has no representation.  This method is only called on
        # the client.

        # Don't import this at the top of the file, since this code
        # must run on the AI.
        from toontown.toon import Toon

        assert (not self.hasPicture)
        self.hasPicture=True

        # Make an ToonDNA suitable for showing this clothing.
        # First, we start with a copy of the avatar's dna.
        dna = ToonDNA.ToonDNA(type = 't', dna = avatar.style)

        # Now we apply the properties from this clothing.
        str = ClothingTypes[self.clothingType][CTString]

        if self.isShirt():
            # It's a shirt.
            defn = ToonDNA.ShirtStyles[str]
            dna.topTex = defn[0]
            dna.topTexColor = defn[2][self.colorIndex][0]
            dna.sleeveTex = defn[1]
            dna.sleeveTexColor = defn[2][self.colorIndex][1]
            pieceNames = ('**/1000/**/torso-top', '**/1000/**/sleeves')
        else:
            # It's a skirt or shorts.
            defn = ToonDNA.BottomStyles[str]
            dna.botTex = defn[0]
            dna.botTexColor = defn[1][self.colorIndex]
            pieceNames = ('**/1000/**/torso-bot',)

        # Create a toon wearing the clothing, then pull out the
        # appropriate clothes and throw the rest away.
        toon = Toon.Toon()
        toon.setDNA(dna)

        model = NodePath('clothing')

        for name in pieceNames:
            for piece in toon.findAllMatches(name):
                piece.wrtReparentTo(model)

        model.setH(180)

        toon.delete()


        return self.makeFrameModel(model)
Пример #7
0
 def __init__(self, cr):
     DistributedEvent.__init__(self, cr)
     self.cr = cr
     self.spark = loader.loadSfx('phase_11/audio/sfx/LB_sparks_1.ogg')
     self.prepostera = Toon.Toon()
     self.prepostera.setName('Professor Prepostera')
     self.prepostera.setPickable(0)
     self.prepostera.setPlayerType(NametagGlobals.CCNonPlayer)
     dna = ToonDNA.ToonDNA()
     dna.newToonFromProperties('hss', 'ms', 'm', 'm', 20, 0, 20, 20, 97, 27,
                               86, 27, 37, 27)
     self.prepostera.setDNA(dna)
     self.prepostera.loop('scientistEmcee')
     self.prepostera.reparentTo(render)
     self.prepostera.setPosHpr(4, -3, 1, 0, 0, 0)
     self.prepostera.blinkEyes()
     self.prepostera.head = self.prepostera.find('**/__Actor_head')
     self.prepostera.initializeBodyCollisions('toon')
     self.headHoncho1 = DistributedSuitBase.DistributedSuitBase(self.cr)
     headHoncho1suitDNA = SuitDNA.SuitDNA()
     headHoncho1suitDNA.newSuit('hho')
     self.headHoncho1.setDNA(headHoncho1suitDNA)
     self.headHoncho1.setDisplayName('???')
     self.headHoncho1.setPickable(0)
     self.headHoncho1.setPosHpr(0, 0, 0, 0, 0, 0)
     self.headHoncho1.reparentTo(render)
     self.headHoncho1.doId = 0
     self.headHoncho1.hide()
     self.headHoncho1.initializeBodyCollisions('toon')
     middlemanDNA = SuitDNA.SuitDNA()
     middlemanDNA.newSuit('mdm')
     self.middleman1 = DistributedSuitBase.DistributedSuitBase(self.cr)
     self.middleman1.setDNA(middlemanDNA)
     self.middleman1.setDisplayName('Middleman')
     self.middleman1.setPickable(0)
     self.middleman1.setPosHpr(0, 0, 0, 0, 0, 0)
     self.middleman1.reparentTo(render)
     self.middleman1.doId = 1
     self.middleman1.hide()
     self.middleman1.initializeBodyCollisions('toon')
     self.middleman2 = DistributedSuitBase.DistributedSuitBase(self.cr)
     self.middleman2.setDNA(middlemanDNA)
     self.middleman2.setDisplayName('Middleman')
     self.middleman2.setPickable(0)
     self.middleman2.setPosHpr(0, 0, 0, 0, 0, 0)
     self.middleman2.reparentTo(render)
     self.middleman2.doId = 2
     self.middleman2.hide()
     self.middleman2.initializeBodyCollisions('toon')
     self.toonMusic = loader.loadMusic(
         'phase_14/audio/bgm/tt2_ambient_1.mp3')
Пример #8
0
    def load(self):
        self.notify.debug('load()')
        CogdoGameMovie.load(self)
        backgroundGui = loader.loadModel('phase_5/models/cogdominium/tt_m_gui_csa_flyThru')
        self.bg = backgroundGui.find('**/background')
        self.chatBubble = backgroundGui.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.bg.wrtReparentTo(self.frame)
        self.gameTitleText = DirectLabel(parent=self.frame, text=TTLocalizer.CogdoBarrelRoomTitle, scale=TTLocalizer.MRPgameTitleText * 0.8, text_align=TextNode.ACenter, text_font=getSignFont(), text_fg=(1.0, 0.33, 0.33, 1.0), pos=TTLocalizer.MRgameTitleTextPos, relief=None)
        self.chatBubble.wrtReparentTo(self.frame)
        self.frame.hide()
        backgroundGui.removeNode()
        self.toonDNA = ToonDNA.ToonDNA()
        self.toonDNA.newToonFromProperties('dss', 'ss', 'm', 'm', 2, 0, 2, 2, 1, 8, 1, 8, 1, 14)
        self.toonHead = Toon.Toon()
        self.toonHead.setDNA(self.toonDNA)
        self.makeSuit('sc')
        self.toonHead.getGeomNode().setDepthWrite(1)
        self.toonHead.getGeomNode().setDepthTest(1)
        self.toonHead.loop('neutral')
        self.toonHead.setPosHprScale(-0.73, 0, -1.27, 180, 0, 0, 0.18, 0.18, 0.18)
        self.toonHead.reparentTo(hidden)
        self.toonHead.startBlink()
        self.clipPlane = self.toonHead.attachNewNode(PlaneNode('clip'))
        self.clipPlane.node().setPlane(Plane(0, 0, 1, 0))
        self.clipPlane.setPos(0, 0, 2.45)
        self._toonDialogueSfx = loader.loadSfx('phase_3.5/audio/dial/AV_dog_long.ogg')
        self._camHelperNode = NodePath('CamHelperNode')
        self._camHelperNode.reparentTo(render)
        dialogue = TTLocalizer.CogdoBarrelRoomIntroDialog

        def start():
            self.frame.show()
            base.setCellsActive(base.bottomCells + base.leftCells + base.rightCells, 0)

        def end():
            self._dialogueLabel.reparentTo(hidden)
            self.toonHead.reparentTo(hidden)
            self.frame.hide()
            base.setCellsActive(base.bottomCells + base.leftCells + base.rightCells, 1)
            self._stopUpdateTask()

        self._ival = Sequence(Func(start), Func(self.displayLine, dialogue), Wait(CogdoBarrelRoomConsts.BarrelRoomIntroTimeout), Func(end))
        self._startUpdateTask()
        return
Пример #9
0
 def showDropGrid(self):
     self.hideDropGrid()
     self.dropMarkers = []
     for row in xrange(self.DropRows):
         self.dropMarkers.append([])
         rowList = self.dropMarkers[row]
         for column in xrange(self.DropColumns):
             toon = Toon.Toon()
             toon.setDNA(base.localAvatar.getStyle())
             toon.reparentTo(self.root)
             toon.setScale(1.0 / 3)
             x, y = self.grid2world(column, row)
             toon.setPos(x, y, 0)
             rowList.append(toon)
Пример #10
0
    def getPicture(self, avatar):
        # Returns a (DirectWidget, Interval) pair to draw and animate a
        # little representation of the item, or (None, None) if the
        # item has no representation.  This method is only called on
        # the client.

        # Don't import this at the top of the file, since this code
        # must run on the AI.
        from toontown.toon import Toon
        from toontown.toon import ToonHead
        from toontown.toon import TTEmote
        from otp.avatar import Emote

        assert (not self.hasPicture)
        self.hasPicture = True

        if self.emoteIndex in Emote.globalEmote.getHeadEmotes():
            toon = ToonHead.ToonHead()
            toon.setupHead(avatar.style, forGui=1)
        else:
            toon = Toon.Toon()
            toon.setDNA(avatar.style)
            toon.loop('neutral')

        toon.setH(180)
        model, ival = self.makeFrameModel(toon, 0)

        # Discard the ival from makeFrameModel, since we don't want to
        # spin.

        track, duration = Emote.globalEmote.doEmote(toon,
                                                    self.emoteIndex,
                                                    volume=self.volume)

        if duration == None:
            duration = 0
        name = "emote-item-%s" % (self.sequenceNumber)
        CatalogEmoteItem.sequenceNumber += 1
        if track != None:
            track = Sequence(Sequence(track, duration=0),
                             Wait(duration + 2),
                             name=name)
        else:
            track = Sequence(Func(Emote.globalEmote.doEmote, toon,
                                  self.emoteIndex),
                             Wait(duration + 4),
                             name=name)
        self.pictureToon = toon
        return (model, track)
 def setupStoneToon(self, dna):
     self.toon = Toon.Toon()
     self.toon.setPos(0, 0, 0)
     self.toon.setDNA(dna)
     self.toon.initializeBodyCollisions('toonStatue')
     self.toon.stopBlink()
     self.toon.stopLookAround()
     self.gender = self.toon.style.gender
     self.speciesType = self.toon.style.getAnimal()
     self.headType = self.toon.style.head
     self.removeTextures()
     self.setStoneTexture()
     self.toon.dropShadow.hide()
     self.toon.setZ(70)
     self.toon.setScale(20 / 1.5, 20 / 1.5, 20)
Пример #12
0
 def createPreviewToon(self, dna):
     if hasattr(self, 'previewToon'):
         self.previewToon.delete()
     self.dnaSelected = dna
     self.previewToon = Toon.Toon()
     self.previewToon.setDNA(dna)
     self.previewToon.loop('neutral')
     self.previewToon.setH(180)
     self.previewToon.setPos(-0.3, 0, -0.3)
     self.previewToon.setScale(0.13)
     self.previewToon.reparentTo(self)
     self.previewToon.startBlink()
     self.previewToon.startLookAround()
     self.previewToon.getGeomNode().setDepthWrite(1)
     self.previewToon.getGeomNode().setDepthTest(1)
Пример #13
0
    def playTutorialReward_3(self, value):
        self.tutRewardDialog_2.cleanup()
        from toontown.toon import Toon
        from toontown.toon import ToonDNA

        def doneChat1(page, elapsed = 0):
            self.track2.start()

        def doneChat2(elapsed):
            self.track2.pause()
            self.track3.start()

        def uniqueName(hook):
            return 'TutorialTom-' + hook

        self.tutorialTom = Toon.Toon()
        dna = ToonDNA.ToonDNA()
        dnaList = ('dls', 'ms', 'm', 'm', 7, 0, 7, 7, 2, 6, 2, 6, 2, 16)
        dna.newToonFromProperties(*dnaList)
        self.tutorialTom.setDNA(dna)
        self.tutorialTom.setName(TTLocalizer.NPCToonNames[20000])
        self.tutorialTom.setPickable(0)
        self.tutorialTom.setPlayerType(NametagGlobals.CCNonPlayer)
        self.tutorialTom.uniqueName = uniqueName
        if base.config.GetString('language', 'english') == 'japanese':
            self.tomDialogue03 = base.loadSfx('phase_3.5/audio/dial/CC_tom_movie_tutorial_reward01.ogg')
            self.tomDialogue04 = base.loadSfx('phase_3.5/audio/dial/CC_tom_movie_tutorial_reward02.ogg')
            self.tomDialogue05 = base.loadSfx('phase_3.5/audio/dial/CC_tom_movie_tutorial_reward03.ogg')
            self.musicVolume = base.config.GetFloat('tutorial-music-volume', 0.5)
        else:
            self.tomDialogue03 = None
            self.tomDialogue04 = None
            self.tomDialogue05 = None
            self.musicVolume = 0.9
        music = base.cr.playGame.place.loader.battleMusic
        if self.questList:
            self.track1 = Sequence(Wait(1.0), Func(self.rewardPanel.initQuestFrame, base.localAvatar, copy.deepcopy(base.localAvatar.quests)), Wait(1.0), Sequence(*self.questList), Wait(1.0), Func(self.rewardPanel.hide), Func(camera.setPosHpr, render, 34, 19.88, 3.48, -90, -2.36, 0), Func(base.localAvatar.animFSM.request, 'neutral'), Func(base.localAvatar.setPosHpr, 40.31, 22.0, -0.47, 150.0, 360.0, 0.0), Wait(0.5), Func(self.tutorialTom.reparentTo, render), Func(self.tutorialTom.show), Func(self.tutorialTom.setPosHpr, 40.29, 17.9, -0.47, 11.31, 0.0, 0.07), Func(self.tutorialTom.animFSM.request, 'TeleportIn'), Wait(1.517), Func(self.tutorialTom.animFSM.request, 'neutral'), Func(self.acceptOnce, self.tutorialTom.uniqueName('doneChatPage'), doneChat1), Func(self.tutorialTom.addActive), Func(music.setVolume, self.musicVolume), Func(self.tutorialTom.setLocalPageChat, TTLocalizer.MovieTutorialReward3, 0, None, [self.tomDialogue03]), name='tutorial-reward-3a')
            self.track2 = Sequence(Func(self.acceptOnce, self.tutorialTom.uniqueName('doneChatPage'), doneChat2), Func(self.tutorialTom.setLocalPageChat, TTLocalizer.MovieTutorialReward4, 1, None, [self.tomDialogue04]), Func(self.tutorialTom.setPlayRate, 1.5, 'right-hand-start'), Func(self.tutorialTom.play, 'right-hand-start'), Wait(self.tutorialTom.getDuration('right-hand-start') / 1.5), Func(self.tutorialTom.loop, 'right-hand'), name='tutorial-reward-3b')
            self.track3 = Parallel(Sequence(Func(self.tutorialTom.setPlayRate, -1.8, 'right-hand-start'), Func(self.tutorialTom.play, 'right-hand-start'), Wait(self.tutorialTom.getDuration('right-hand-start') / 1.8), Func(self.tutorialTom.animFSM.request, 'neutral'), name='tutorial-reward-3ca'), Sequence(Wait(0.5), Func(self.tutorialTom.setChatAbsolute, TTLocalizer.MovieTutorialReward5, CFSpeech | CFTimeout, self.tomDialogue05), Wait(1.0), Func(self.tutorialTom.animFSM.request, 'TeleportOut'), Wait(self.tutorialTom.getDuration('teleport')), Wait(1.0), Func(self.playTutorialReward_4, 0), name='tutorial-reward-3cb'), name='tutorial-reward-3c')
            self.track1.start()
        else:
            self.playTutorialReward_4(0)
        return
Пример #14
0
    def load(self):
        CogdoGameMovie.load(self)
        self.toonDNA = ToonDNA.ToonDNA()
        self.toonDNA.newToonFromProperties('dss', 'ss', 'm', 'm', 2, 0, 2, 2, 1, 8, 1, 8, 1, 14)
        self.toonHead = Toon.Toon()
        self.toonHead.setDNA(self.toonDNA)
        self.makeSuit('sc')
        self.toonHead.getGeomNode().setDepthWrite(1)
        self.toonHead.getGeomNode().setDepthTest(1)
        self.toonHead.loop('neutral')
        self.toonHead.setPosHprScale(-0.73, 0, -1.27, 180, 0, 0, 0.18, 0.18, 0.18)
        self.toonHead.reparentTo(hidden)
        self.toonHead.startBlink()
        self.cogHead = Suit.Suit()
        self.cogDNA = SuitDNA.SuitDNA()
        self.cogDNA.newSuit('le')
        self.cogHead.setDNA(self.cogDNA)
        self.cogHead.getGeomNode().setDepthWrite(1)
        self.cogHead.getGeomNode().setDepthTest(1)
        self.cogHead.loop('neutral')
        self.cogHead.setPosHprScale(-0.74, 0, -1.79, 180, 0, 0, 0.12, 0.14, 0.14)
        self.cogHead.reparentTo(hidden)
        self.clipPlane = self.toonHead.attachNewNode(PlaneNode('clip'))
        self.clipPlane.node().setPlane(Plane(0, 0, 1, 0))
        self.clipPlane.setPos(0, 0, 2.45)
        audioMgr = base.cogdoGameAudioMgr
        self._cogDialogueSfx = audioMgr.createSfx('cogDialogue')
        self._toonDialogueSfx = audioMgr.createSfx('toonDialogue')

        def start():
            camera.wrtReparentTo(render)
            self._startUpdateTask()

        def end():
            self._stopUpdateTask()

        introDuration = Globals.Gameplay.IntroDurationSeconds
        dialogue = TTLocalizer.CogdoFlyingIntroMovieDialogue
        waitDur = introDuration / len(dialogue)
        flyDur = introDuration - waitDur * 0.5
        flyThroughIval = Parallel(camera.posInterval(flyDur, self._exit.getPos(render) + Point3(0, -22, 1), blendType='easeInOut'), camera.hprInterval(flyDur, Point3(0, 5, 0), blendType='easeInOut'))
        self._ival = Sequence(Func(start), Parallel(flyThroughIval, Sequence(Func(self.displayLine, 'cog', self._getRandomLine(dialogue[0])), Wait(waitDur), Func(self.displayLine, 'toon', self._getRandomLine(dialogue[1])), Wait(waitDur), Func(self.displayLine, 'cog', self._getRandomLine(dialogue[2])), Wait(waitDur))), Func(end))
Пример #15
0
 def begin(self, range, label, gui, tipCategory, zoneId):
     self.waitBar['range'] = range
     self.title['text'] = label
     loadingScreenTex = self.zone2picture.get(
         ZoneUtil.getBranchZone(zoneId), self.defaultTex)
     self.background = loader.loadTexture(loadingScreenTex)
     self.__count = 0
     self.__expectedCount = range
     if gui:
         if base.localAvatarStyle:
             from toontown.toon import Toon
             self.toon = Toon.Toon()
             self.toon.setDNA(base.localAvatarStyle)
             self.toon.loop('bored', fromFrame=135, toFrame=135)
             self.toon.getGeomNode().setDepthWrite(1)
             self.toon.getGeomNode().setDepthTest(1)
             self.toon.setHpr(205, 0, 0)
             self.toon.setScale(0.18)
             self.toon.setPos(base.a2dBottomRight.getX() / 1.25, 0, -0.034)
             self.toon.reparentTo(self.waitBar)
             self.waitBar['frameSize'] = (base.a2dLeft +
                                          (base.a2dRight / 8.15),
                                          base.a2dRight -
                                          (base.a2dRight / 2.57), -0.03,
                                          0.03)
         self.title.reparentTo(base.a2dpBottomLeft,
                               LOADING_SCREEN_SORT_INDEX)
         self.title.setPos(0.24, 0, 0.23)
         self.gui.setPos(0, -0.1, 0)
         self.gui.reparentTo(aspect2d, LOADING_SCREEN_SORT_INDEX)
         self.gui.setTexture(self.background, 1)
         if loadingScreenTex == self.defaultTex:
             self.logo.reparentTo(base.a2dpTopCenter,
                                  LOADING_SCREEN_SORT_INDEX)
     else:
         self.title.reparentTo(base.a2dpBottomLeft,
                               LOADING_SCREEN_SORT_INDEX)
         self.gui.reparentTo(hidden)
         self.logo.reparentTo(hidden)
     self.waitBar.reparentTo(base.a2dpBottomCenter,
                             LOADING_SCREEN_SORT_INDEX)
     self.waitBar.update(self.__count)
Пример #16
0
    def createPreviewToon(self, dna):
        '''Create a toon to show as a preview on the screen'''
        # Clean up any old preview toon
        if hasattr(self, 'previewToon'):
            self.previewToon.delete()

        self.dnaSelected = dna
        self.previewToon = Toon.Toon()
        self.previewToon.setDNA(dna)
        self.previewToon.loop('neutral')
        self.previewToon.setH(180)
        self.previewToon.setPos(-0.3, 0, -0.3)
        # @TODO: Adjust height
        self.previewToon.setScale(0.13)
        self.previewToon.reparentTo(self)
        # Start blinking and looking around.
        self.previewToon.startBlink()
        self.previewToon.startLookAround()
        # Turn on depth write and test so that it renders correctly on the 2D frame.
        self.previewToon.getGeomNode().setDepthWrite(1)
        self.previewToon.getGeomNode().setDepthTest(1)
Пример #17
0
 def _createRandomToon(self, gender):
     if self.toon:
         self.toon.stopBlink()
         self.toon.stopLookAroundNow()
         self.toon.delete()
     self.dna = ToonDNA.ToonDNA()
     self.dna.newToonRandom(gender=gender, stage=1)
     self.toon = Toon.Toon()
     self.toon.setDNA(self.dna)
     self.toon.useLOD(1000)
     self.toon.setNameVisible(0)
     self.toon.startBlink()
     self.toon.startLookAround()
     self.toon.reparentTo(render)
     self.toon.setPos(self.makeAToon.toonPosition)
     self.toon.setHpr(self.makeAToon.toonHpr)
     self.toon.setScale(self.makeAToon.toonScale)
     self.toon.loop('neutral')
     self.makeAToon.setNextButtonState(DGG.NORMAL)
     self.makeAToon.setToon(self.toon)
     messenger.send('MAT-newToonCreated')
Пример #18
0
    def makeToon(self):
        if self.toon != None:
            del self.toon

        self.toon = Toon.Toon()
        self.toon.setDNA(base.localAvatar.getStyle())
        self.toon.getGeomNode().setDepthWrite(1)
        self.toon.getGeomNode().setDepthTest(1)
        # Conserve polygons
        self.toon.useLOD(500)
        self.toon.reparentTo(self.frame)
        self.toon.setPosHprScale(0, 10, -0.25, 210, 0, 0, 0.15, 0.15, 0.15)
        self.toon.loop('neutral')

        try:
            anim = emoteAnimDict[self.name]
        except:
            print "we didnt get the right animation"
            anim = 'neutral'

        #self.toon.pose(anim, self.toon.getNumFrames(anim)/2)
        self.toon.animFSM.request(anim)
Пример #19
0
def spawnNPC(command, npcId, name):
    invoker = spellbook.getTarget()
    if command == 'add':
        if npcId == 'regular':
            npcId = NPC_REGULAR
        if npcId == 'clerk':
            npcId = NPC_CLERK
        npc = Toon.Toon()
        npc.setName('Generic')
        npc.setPickable(1)
        npc.setHp(15)
        npc.setMaxHp(15)
        npc.setPlayerType(NametagGlobals.CCBotPlayer)
        dna = ToonDNA.ToonDNA()
        dna.newToonRandom(random.choice([99998, 99999]), random.choice(['m', 'f']), 1)
        dna.head = random.choice(ToonDNA.toonHeadTypes)
        npc.setDNAString(dna.makeNetString())
        npc.animFSM.request('neutral'))
        npc.setPos(random.nextint(0, 250), random.nextint(0, 100), 8)
        npc.setHpr(0, 0, 0)
    else:
        return 'Invalid or not implemented yet!'
Пример #20
0
 def createToon(instName, toonName, toonPos, toonHpr, toonScale=1, anim='neutral'):
     try:
         newToon.cleanup()
         newToon.removeNode()
     except:
         pass
     newToon = instName
     newToon = Toon.Toon()
     newToon.reparentTo(render)
     newToon.doId = base.localAvatar.doId
     newToon.setupToonNodes()
     newToon.setName(toonName)
     newToon.setPos(toonPos)
     newToon.setHpr(toonHpr)
     newToon.setScale(toonScale)
     newToon.startBlink()
     newToon.showNametag2d()
     newToon.startLookAround()
     newToon.initializeBodyCollisions('FD_NPC-Collisions_' + str(newToon.doId))
     newToon.setDNAString('t\x01\x01\x00\x00\x50\x1b\x45\x1b\x21\x1b\x08\x02\x08\x08')
     newToon.loop(anim)
     pos = newToon.getPos()
     hpr = newToon.getHpr()
     strPos = '(%.3f' % pos[0] + '\n %.3f' % pos[1] + '\n %.3f)' % pos[2]
     strHpr = '(%.3f' % hpr[0] + '\n %.3f' % hpr[1] + '\n %.3f)' % hpr[2]
     print "%s = Toon.Toon()" % instName
     print "%s.reparentTo(render)" % instName
     print "%s.doId = base.localAvatar.doId" % instName
     print "%s.setupToonNodes()" % instName
     print "%s.setName('%s')" % (instName, toonName)
     print '%s.setPos' % instName, strPos.replace('\n', ',')
     print '%s.setHpr' % instName, strHpr.replace('\n', ',')
     print "%s.setScale(%d)" % (instName, toonScale)
     print "%s.startBlink()" % instName
     print "%s.showNametag2d()" % instName
     print "%s.startLookAround()" % instName
     print "%s.initializeBodyCollisions('FD_NPC-Collisions_' + str(%s.doId))" % (instName, instName)
     print '%s.setDNAString("t\x01\x01\x00\x00\x50\x1b\x45\x1b\x21\x1b\x08\x02\x08\x08")' % instName
     print "%s.loop('%s')" % (instName, anim)
    def createToon(self, name='', dna=None, addActive=False):
        toon = Toon.Toon()

        toon.setName(name)
        toon.setPickable(0)
        toon.setPlayerType(NametagGlobals.CCNonPlayer)

        if addActive:
            toon.addActive()

        if not isinstance(dna, ToonDNA.ToonDNA):
            if isinstance(dna, basestring):
                dna = ToonDNA.ToonDNA(str=dna)
            else:
                dna = ToonDNA.ToonDNA()
                dna.newToonRandom(seed=dna)

        toon.setDNA(dna)

        toon.animFSM.request('neutral')
        toon.reparentTo(hidden)

        self.toons.add(toon)
        return toon
Пример #22
0
    def getPicture(self, avatar):
        from toontown.toon import Toon
        self.hasPicture = True
        if len(avatar.style.torso) == 1:
            if avatar.style.gender == 'f':
                bottomPair = ToonDNA.GirlBottoms[avatar.style.botTex]
                if bottomPair[1] == ToonDNA.SKIRT:
                    avatar.style.torso = avatar.style.torso + 'd'
                else:
                    avatar.style.torso = avatar.style.torso + 's'
            else:
                avatar.style.torso = avatar.style.torso + 's'
        dna = ToonDNA.ToonDNA(type='t', dna=avatar.style)
        str = ClothingTypes[self.clothingType][CTString]
        if self.isShirt():
            defn = ToonDNA.ShirtStyles[str]
            dna.topTex = defn[0]
            dna.topTexColor = defn[2][self.colorIndex][0]
            dna.sleeveTex = defn[1]
            dna.sleeveTexColor = defn[2][self.colorIndex][1]
            pieceNames = ('**/1000/**/torso-top', '**/1000/**/sleeves')
        else:
            defn = ToonDNA.BottomStyles[str]
            dna.botTex = defn[0]
            dna.botTexColor = defn[1][self.colorIndex]
            pieceNames = ('**/1000/**/torso-bot', )
        toon = Toon.Toon()
        toon.setDNA(dna)
        model = NodePath('clothing')
        for name in pieceNames:
            for piece in toon.findAllMatches(name):
                piece.wrtReparentTo(model)

        model.setH(180)
        toon.delete()
        return self.makeFrameModel(model)
Пример #23
0
 def load(self):
     gui = loader.loadModelOnce('phase_3/models/gui/create_a_toon_gui')
     self.guiTopBar = DirectFrame(relief=None,
                                  image=gui.find('**/CrtATn_TopBar'),
                                  text=TTLocalizer.CreateYourToon,
                                  text_font=ToontownGlobals.getSignFont(),
                                  text_fg=(0.0, 0.65000000000000002,
                                           0.34999999999999998, 1),
                                  text_scale=0.17999999999999999,
                                  text_pos=(0, -0.029999999999999999),
                                  pos=(0, 0, 0.85999999999999999))
     self.guiTopBar.hide()
     self.guiBottomBar = DirectFrame(
         relief=None,
         image=gui.find('**/CrtATn_BtmBar'),
         image_scale=(
             (base.win.getXSize() / 948.14814814814814814814814814815) *
             0.98765432098765432098765432098765, 1, 1),
         pos=(0, 0, -0.85999999999999999))
     self.guiBottomBar.hide()
     self.guiCheckButton = DirectButton(
         parent=self.guiBottomBar,
         relief=None,
         image=(gui.find('**/CrtAtoon_Btn1_UP'),
                gui.find('**/CrtAtoon_Btn1_DOWN'),
                gui.find('**/CrtAtoon_Btn1_RLLVR')),
         pos=(base.a2dRight - 0.165, 0, -0.017999999999999999),
         command=self._MakeAToon__handleNext,
         text=('', TTLocalizer.MakeAToonDone, TTLocalizer.MakeAToonDone),
         text_font=ToontownGlobals.getInterfaceFont(),
         text_scale=0.080000000000000002,
         text_pos=(0, -0.029999999999999999),
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1))
     self.guiCheckButton.hide()
     self.guiCancelButton = DirectButton(
         parent=self.guiBottomBar,
         relief=None,
         image=(gui.find('**/CrtAtoon_Btn2_UP'),
                gui.find('**/CrtAtoon_Btn2_DOWN'),
                gui.find('**/CrtAtoon_Btn2_RLLVR')),
         pos=(base.a2dLeft + 0.179, 0, -0.010999999999999999),
         command=self._MakeAToon__handleCancel,
         text=('', TTLocalizer.MakeAToonCancel,
               TTLocalizer.MakeAToonCancel),
         text_font=ToontownGlobals.getInterfaceFont(),
         text_scale=0.080000000000000002,
         text_pos=(0, -0.029999999999999999),
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1))
     self.guiCancelButton.hide()
     self.guiNextButton = DirectButton(
         parent=self.guiBottomBar,
         relief=None,
         image=(gui.find('**/CrtAtoon_Btn3_UP'),
                gui.find('**/CrtAtoon_Btn3_DN'),
                gui.find('**/CrtAtoon_Btn3_RLVR')),
         pos=(base.a2dRight - 0.165, 0, -0.017999999999999999),
         command=self._MakeAToon__handleNext,
         text=('', TTLocalizer.MakeAToonNext, TTLocalizer.MakeAToonNext),
         text_font=ToontownGlobals.getInterfaceFont(),
         text_scale=0.080000000000000002,
         text_pos=(0, -0.029999999999999999),
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1))
     self.guiNextButton.hide()
     self.guiLastButton = DirectButton(
         parent=self.guiBottomBar,
         relief=None,
         image=(gui.find('**/CrtAtoon_Btn3_UP'),
                gui.find('**/CrtAtoon_Btn3_DN'),
                gui.find('**/CrtAtoon_Btn3_RLVR')),
         image_scale=(-1, 1, 1),
         pos=(base.a2dRight - 0.505, 0, -0.017999999999999999),
         command=self._MakeAToon__handleLast,
         text=('', TTLocalizer.MakeAToonLast, TTLocalizer.MakeAToonLast),
         text_font=ToontownGlobals.getInterfaceFont(),
         text_scale=0.080000000000000002,
         text_pos=(0, -0.029999999999999999),
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1))
     self.guiLastButton.hide()
     gui.removeNode()
     self.room = loader.loadModel('phase_3/models/gui/create_a_toon')
     self.roomWalls = self.room.find('**/wall_floor')
     self.draftingTable = self.room.find('**/drafting_table')
     self.easel = self.room.find('**/easel')
     self.sewingMachine = self.room.find('**/sewing_machine')
     ee = DirectFrame(pos=(-1, 1, 1),
                      frameSize=(-0.01, 0.01, -0.01, 0.01),
                      frameColor=(0, 0, 0, 0.050000000000000003),
                      state='normal')
     ee.bind(DGG.B1PRESS, lambda x, ee=ee: self.toggleSlide())
     self.eee = ee
     self.stool = self.room.find('**/stool')
     self.stool.hide()
     self.draftingTable.hide()
     self.easel.hide()
     self.sewingMachine.hide()
     if not (self.warp):
         self.dna = ToonDNA.ToonDNA()
         animal = random.choice(ToonDNA.toonHeadAnimalIndices)
         head = ToonDNA.toonHeadTypes[animal]
         torso = random.choice(ToonDNA.toonTorsoTypes[-3:])
         leg = random.choice(ToonDNA.toonLegTypes)
         self.dna.newToon((head, torso, leg, 'm'))
     else:
         self.dna = ToonDNA.ToonDNA()
         self.dna.makeFromNetString(self.namelessPotAv.dna)
     self.toon = Toon.Toon()
     self.toon.setDNA(self.dna)
     self.toon.useLOD(1000)
     self.toon.setNameVisible(0)
     self.toon.startBlink()
     self.toon.startLookAround()
     self.mickey = Char.Char()
     mickeyDNA = CharDNA.CharDNA()
     mickeyDNA.newChar('mk')
     self.mickey.setDNA(mickeyDNA)
     self.mickey.addActive()
     self.mickey.startEarTask()
     self.mickey.setNametagScale(0.80000000000000004)
     self.mickey.hideName()
     self.mickey.setPickable(1)
     #self.mickey.nametag.getNametag3d().setChatWordwrap(8)
     self.minnie = Char.Char()
     minnieDNA = CharDNA.CharDNA()
     minnieDNA.newChar('mn')
     self.minnie.setDNA(minnieDNA)
     self.minnie.addActive()
     self.minnie.startEarTask()
     self.minnie.setNametagScale(0.80000000000000004)
     self.minnie.hideName()
     self.minnie.setPickable(1)
     #self.minnie.nametag.getNametag3d().setChatWordwrap(8)
     self.gs.load()
     self.bs.load()
     self.cos.load()
     self.cls.load()
     self.ns.load()
     self.music = base.loadMusic('phase_3/audio/bgm/create_a_toon.ogg')
     self.soundBack = base.loadSfx(
         'phase_3/audio/sfx/GUI_create_toon_back.ogg')
     return None
Пример #24
0
    def __init__(self):
        DirectObject.__init__(self)
        base.cr.DMENU_SCREEN = self
        self.seq = None
        base.cr.avChoice = None
        self.allButtons = []
        base.transitions.fadeOut(0)
        base.camera.setPosHpr(Point3(MAIN_POS), VBase3(MAIN_HPR))
        base.transitions.getFadeInIval(1).start()
        if base.showDisclaimer:
            FeatureComingSoonDialog.FeatureComingSoonDialog(
                text=TTLocalizer.PopupAlphaDisclaimer)
        self.background2d = OnscreenImage(
            image='phase_3.5/maps/loading/toon.jpg', parent=render2d)
        self.background2d.setScale(render2d, Vec3(1))
        self.background2d.setBin('background', 1)
        self.background2d.setTransparency(1)
        self.background2d.setColorScale(1, 1, 1, 1)
        self.background = loader.loadModel(
            'phase_3.5/models/modules/tt_m_ara_int_toonhall')
        self.background.reparentTo(render)
        self.background.setPosHpr(-25, 0, 8.1, -95, 0, 0)

        self.surlee = Toon.Toon()
        self.surlee.setName('Doctor Surlee')
        self.surlee.setPickable(0)
        self.surlee.setPlayerType(CCNonPlayer)
        dna = ToonDNA.ToonDNA()
        dna.newToonFromProperties('pls', 'ls', 'l', 'm', 9, 0, 9, 9, 98, 27,
                                  86, 27, 38, 27)
        self.surlee.setDNA(dna)
        self.surlee.loop('scientistGame')
        self.surlee.reparentTo(self.background)
        self.surlee.setPosHpr(13, 24, 0.025, -180, 0, 0)

        self.dimm = Toon.Toon()
        self.dimm.setName('Doctor Dimm')
        self.dimm.setPickable(0)
        self.dimm.setPlayerType(CCNonPlayer)
        dna = ToonDNA.ToonDNA()
        dna.newToonFromProperties('fll', 'ss', 's', 'm', 15, 0, 15, 15, 99, 27,
                                  86, 27, 39, 27)
        self.dimm.setDNA(dna)
        self.dimm.loop('scientistGame')
        self.dimm.reparentTo(self.background)
        self.dimm.setPosHpr(16, 24, 0.025, -180, 0, 0)

        surleeHand = self.surlee.find('**/def_joint_right_hold')
        clipBoard = loader.loadModel(
            'phase_4/models/props/tt_m_prp_acs_clipboard')
        surleeHandNode = surleeHand.attachNewNode('ClipBoard')
        clipBoard.instanceTo(surleeHandNode)
        surleeHandNode.setH(180)
        surleeHandNode.setScale(render, 1.0)
        surleeHandNode.setPos(0, 0, 0.1)

        dimmHand = self.dimm.find('**/def_joint_right_hold')
        sillyReader = loader.loadModel(
            'phase_4/models/props/tt_m_prp_acs_sillyReader')
        dimHandNode = dimmHand.attachNewNode('SillyReader')
        sillyReader.instanceTo(dimHandNode)
        dimHandNode.setH(180)
        dimHandNode.setScale(render, 1.0)
        dimHandNode.setPos(0, 0, 0.1)

        self.sky = loader.loadModel('phase_3.5/models/props/TT_sky')
        SkyUtil.startCloudSky(self)
        base.camera.setPosHpr(MAIN_POS, MAIN_HPR)

        self.logo = OnscreenImage(image=GameLogo, scale=(.5, .5, .25))
        self.logo.reparentTo(aspect2d)
        self.logo.setTransparency(TransparencyAttrib.MAlpha)
        scale = self.logo.getScale()
        self.logo.setPos(0, 0, .6)
        self.logo.setColorScale(Vec4(0, 0, 0, 0))
        fadeInLogo = (LerpColorScaleInterval(self.logo, 1, Vec4(1, 1, 1, 1),
                                             Vec4(1, 1, 1, 0))).start()
        self.releaseNotesBox = None
        self.releaseNotesText = None
        self.createButtons()

        self.fadeOut = None
        self.optionsMgr = PickAToonOptions.NewPickAToonOptions()
        self.quitConfirmation = DMenuQuit.DMenuQuit()
        self.newsMgr = DMenuNewsManager.DMenuNewsManager()

        self.accept('doQuitGame', self.doQuitFunc)
        self.accept('doCancelQuitGame', self.doCancelQuitFunc)
        self.patNode = None

        # TT: We need these to run the Pick A Toon screen
        self.patAvList = base.cr.PAT_AVLIST
        self.patFSM = base.cr.PAT_LOGINFSM
        self.patDoneEvent = base.cr.PAT_DONEEVENT
Пример #25
0
    def playTutorialReward_2(self, value=None):
        from toontown.toon import Toon
        from toontown.toon import ToonDNA

        def doneChat1(page, elapsed=0):
            self.track2.start()

        def doneChat2(elapsed):
            self.track2.pause()
            self.track3.start()

        def uniqueName(hook):
            return 'TutorialTom-' + hook

        self.tutorialTom = Toon.Toon()
        dna = ToonDNA.ToonDNA()
        dna.newToonFromProperties(*('dls', 'ms', 'm', 'm', 7, 0, 7, 7, 2, 6, 2,
                                    6, 2, 16))
        self.tutorialTom.setDNA(dna)
        self.tutorialTom.setName(TTLocalizer.NPCToonNames[20000])
        self.tutorialTom.setPickable(0)
        self.tutorialTom.setPlayerType(NametagGroup.CCNonPlayer)
        self.tutorialTom.uniqueName = uniqueName
        self.musicVolume = 0.9
        music = base.cr.playGame.place.loader.battleMusic
        if self.questList:
            self.track1 = Sequence(
                Wait(1.0),
                Func(self.rewardPanel.initQuestFrame, base.localAvatar,
                     copy.deepcopy(base.localAvatar.quests)),
                Wait(1.0),
                Sequence(*self.questList),
                Wait(1.0),
                Func(self.rewardPanel.hide),
                Func(camera.setPosHpr, render, 34, 19.88, 3.48, -90, -2.36, 0),
                Func(base.localAvatar.animFSM.request, 'neutral'),
                Func(base.localAvatar.setPosHpr, 40.31, 22.0, -0.47, 150.0,
                     360.0, 0.0),
                Wait(0.5),
                Func(self.tutorialTom.reparentTo, render),
                Func(self.tutorialTom.show),
                Func(self.tutorialTom.setPosHpr, 40.29, 17.9, -0.47, 11.31,
                     0.0, 0.07),
                Func(self.tutorialTom.animFSM.request, 'TeleportIn'),
                Wait(1.517),
                Func(self.tutorialTom.animFSM.request, 'neutral'),
                Func(self.acceptOnce,
                     self.tutorialTom.uniqueName('doneChatPage'), doneChat1),
                Func(self.tutorialTom.addActive),
                Func(music.setVolume, self.musicVolume),
                Func(self.tutorialTom.setLocalPageChat,
                     TTLocalizer.MovieTutorialReward3, 0, None, [None]),
                name='tutorial-reward-3a')
            self.track2 = Sequence(
                Func(self.acceptOnce,
                     self.tutorialTom.uniqueName('doneChatPage'), doneChat2),
                Func(self.tutorialTom.setLocalPageChat,
                     TTLocalizer.MovieTutorialReward4, 1, None, [None]),
                Func(self.tutorialTom.setPlayRate, 1.5, 'right-hand-start'),
                Func(self.tutorialTom.play, 'right-hand-start'),
                Wait(self.tutorialTom.getDuration('right-hand-start') / 1.5),
                Func(self.tutorialTom.loop, 'right-hand'),
                name='tutorial-reward-3b')
            self.track3 = Parallel(
                Sequence(Func(self.tutorialTom.setPlayRate, -1.8,
                              'right-hand-start'),
                         Func(self.tutorialTom.play, 'right-hand-start'),
                         Wait(
                             self.tutorialTom.getDuration('right-hand-start') /
                             1.8),
                         Func(self.tutorialTom.animFSM.request, 'neutral'),
                         name='tutorial-reward-3ca'),
                Sequence(Wait(0.5),
                         Func(self.tutorialTom.setChatAbsolute,
                              TTLocalizer.MovieTutorialReward5,
                              CFSpeech | CFTimeout),
                         Wait(1.0),
                         Func(self.tutorialTom.animFSM.request, 'TeleportOut'),
                         Wait(self.tutorialTom.getDuration('teleport')),
                         Wait(1.0),
                         Func(self.playTutorialReward_3, 0),
                         name='tutorial-reward-3cb'),
                name='tutorial-reward-3c')
            self.track1.start()
        else:
            self.playTutorialReward_3()
Пример #26
0
    def load(self):
        self.done = 0
        self.geyserTrack = None
        SafeZoneLoader.load(self)
        self.birdSound = map(base.loader.loadSfx, [
            'phase_4/audio/sfx/SZ_TC_bird1.ogg',
            'phase_4/audio/sfx/SZ_TC_bird2.ogg',
            'phase_4/audio/sfx/SZ_TC_bird3.ogg'
        ])
        self.underwaterSound = base.loader.loadSfx(
            'phase_4/audio/sfx/AV_ambient_water.ogg')
        self.swimSound = base.loader.loadSfx(
            'phase_4/audio/sfx/AV_swim_single_stroke.ogg')
        self.submergeSound = base.loader.loadSfx(
            'phase_5.5/audio/sfx/AV_jump_in_water.ogg')
        geyserPlacer = self.geom.find('**/geyser*')
        waterfallPlacer = self.geom.find('**/waterfall*')
        binMgr = CullBinManager.getGlobalPtr()
        binMgr.addBin('water', CullBinManager.BTFixed, 29)
        binMgr = CullBinManager.getGlobalPtr()
        water = self.geom.find('**/water1*')
        water.setTransparency(1)
        water.setColorScale(1, 1, 1, 1)
        water.setBin('water', 51, 1)
        pool = self.geom.find('**/pPlane5*')
        pool.setTransparency(1)
        pool.setColorScale(1.0, 1.0, 1.0, 1.0)
        pool.setBin('water', 50, 1)
        self.geyserModel = loader.loadModel(
            'phase_6/models/golf/golf_geyser_model')
        self.geyserSound = loader.loadSfx('phase_6/audio/sfx/OZ_Geyser.ogg')
        self.geyserSoundInterval = SoundInterval(self.geyserSound,
                                                 node=geyserPlacer,
                                                 listenerNode=base.camera,
                                                 seamlessLoop=False,
                                                 volume=1.0,
                                                 cutOff=120)
        self.geyserSoundNoToon = loader.loadSfx(
            'phase_6/audio/sfx/OZ_Geyser_No_Toon.ogg')
        self.geyserSoundNoToonInterval = SoundInterval(
            self.geyserSoundNoToon,
            node=geyserPlacer,
            listenerNode=base.camera,
            seamlessLoop=False,
            volume=1.0,
            cutOff=120)
        if self.geyserModel:
            self.geyserActor = Actor.Actor(self.geyserModel)
            self.geyserActor.loadAnims(
                {'idle': 'phase_6/models/golf/golf_geyser'})
            self.geyserActor.reparentTo(render)
            self.geyserActor.setPlayRate(8.6, 'idle')
            self.geyserActor.loop('idle')
            self.geyserActor.setDepthWrite(0)
            self.geyserActor.setTwoSided(True, 11)
            self.geyserActor.setColorScale(1.0, 1.0, 1.0, 1.0)
            self.geyserActor.setBin('fixed', 0)
            mesh = self.geyserActor.find('**/mesh_tide1')
            joint = self.geyserActor.find('**/uvj_WakeWhiteTide1')
            mesh.setTexProjector(mesh.findTextureStage('default'), joint,
                                 self.geyserActor)
            self.geyserActor.setPos(geyserPlacer.getPos())
            self.geyserActor.setZ(geyserPlacer.getZ() - 100.0)
            self.geyserPos = geyserPlacer.getPos()
            self.geyserPlacer = geyserPlacer
            self.startGeyser()
            base.sfxPlayer.setCutoffDistance(160)
            self.geyserPoolSfx = loader.loadSfx(
                'phase_6/audio/sfx/OZ_Geyser_BuildUp_Loop.ogg')
            self.geyserPoolSoundInterval = SoundInterval(
                self.geyserPoolSfx,
                node=self.geyserPlacer,
                listenerNode=base.camera,
                seamlessLoop=True,
                volume=1.0,
                cutOff=120)
            self.geyserPoolSoundInterval.loop()
            self.bubbles = Bubbles.Bubbles(self.geyserPlacer, render)
            self.bubbles.renderParent.setDepthWrite(0)
            self.bubbles.start()
        self.collBase = render.attachNewNode('collisionBase')
        self.geyserCollSphere = CollisionSphere(0, 0, 0, 7.5)
        self.geyserCollSphere.setTangible(1)
        self.geyserCollNode = CollisionNode('barrelSphere')
        self.geyserCollNode.setIntoCollideMask(OTPGlobals.WallBitmask)
        self.geyserCollNode.addSolid(self.geyserCollSphere)
        self.geyserNodePath = self.collBase.attachNewNode(self.geyserCollNode)
        self.geyserNodePath.setPos(self.geyserPos[0], self.geyserPos[1],
                                   self.geyserPos[2] - 100.0)
        self.waterfallModel = loader.loadModel(
            'phase_6/models/golf/golf_waterfall_model')
        if self.waterfallModel:
            self.waterfallActor = Actor.Actor(self.waterfallModel)
            self.waterfallActor.loadAnims(
                {'idle': 'phase_6/models/golf/golf_waterfall'})
            self.waterfallActor.reparentTo(render)
            self.waterfallActor.setPlayRate(3.5, 'idle')
            self.waterfallActor.loop('idle')
            mesh = self.waterfallActor.find('**/mesh_tide1')
            joint = self.waterfallActor.find('**/uvj_WakeWhiteTide1')
            mesh.setTexProjector(mesh.findTextureStage('default'), joint,
                                 self.waterfallActor)
        self.waterfallActor.setPos(waterfallPlacer.getPos())
        self.accept('clientLogout', self._handleLogout)

        # If Chestnut Park is under construction, create the construction site:
        if base.config.GetBool('want-chestnut-park-construction', False):
            self.constructionSite = render.attachNewNode('constructionSite')

            self.constructionSiteBlocker = self.constructionSite.attachNewNode(
                CollisionNode('constructionSiteBlocker'))
            self.constructionSiteBlocker.setPos(-48, -154.5, 0)
            self.constructionSiteBlocker.node().addSolid(
                CollisionSphere(0, 0, 0, 35))

            self.coneModel = loader.loadModel(
                'phase_3.5/models/props/unpainted_barrier_cone.bam')

            self.cone0 = Actor.Actor(self.coneModel)
            self.cone0.loadAnims({
                'jumptwist':
                'phase_3.5/models/props/barrier_cone_chan_jumptwist.bam'
            })
            self.cone0.reparentTo(self.constructionSite)
            self.cone0.loop('jumptwist')
            self.cone0.setPos(-43, -142, 0.025)

            self.cone1 = Actor.Actor(self.coneModel)
            self.cone1.loadAnims({
                'walktrip':
                'phase_3.5/models/props/barrier_cone_chan_walktrip.bam'
            })
            self.cone1.reparentTo(self.constructionSite)
            self.cone1.loop('walktrip')
            self.cone1.setPos(-52, -145, 0.025)

            self.ladder = loader.loadModel('phase_5/models/props/ladder2.bam')
            self.ladder.reparentTo(self.constructionSite)
            self.ladder.setPosHpr(-36.460, -130.828, 0.30, 61, -90, 0)
            self.ladder.find('**/shadow').removeNode()

            self.paintersWantedSign = loader.loadModel(
                'phase_6/models/props/tti_painters_wanted_sign.bam')
            self.paintersWantedSign.reparentTo(self.constructionSite)
            self.paintersWantedSign.setPosHpr(-57, -129.613, 0.025, 160, 0, 0)

            self.constructionSign = loader.loadModel(
                'phase_4/models/props/construction_sign.bam')
            self.constructionSign.reparentTo(self.constructionSite)
            self.constructionSign.setPosHpr(-47.941, -138.724, 0.122, 181, 0,
                                            0)

            if base.config.GetBool('want-oz-painter-pete', False):
                self.painterPete = Toon.Toon()

                self.painterPete.setName('Painter Pete')
                self.painterPete.setPickable(0)
                self.painterPete.setPlayerType(NametagGlobals.CCNonPlayer)

                dna = ToonDNA.ToonDNA()
                dna.newToonFromProperties('hls', 'ss', 'm', 'm', 18, 0, 13, 9,
                                          0, 0, 0, 0, 2, 15)
                self.painterPete.setDNA(dna)

                self.painterPete.setHat(43, 0, 0)

                self.painterPete.animFSM.request('neutral')
                self.painterPete.reparentTo(self.constructionSite)
                self.painterPete.setPosHpr(-52.5, -133.5, 0.025, 338, 0, 0)

                self.painterPete.sadEyes()
                self.painterPete.blinkEyes()

                speechTextList = (
                    "Oh, brother. How am I going to clean up all of this? Those painters left a big mess here, and I can't finish the job without them!",
                    "I'm beginning to feel nervous about where all of my painters went off to. Construction can't continue without them!",
                    "These cones are out of my control. They're disobedient, and they will not listen to what I say.",
                    "What's a playground without color, anyway? Walking into something like that would be surreal for you all. As a painter, though, I'm pretty used to it.",
                    "The Cogs couldn't have done this... could they?",
                    "If anyone sees my painters anywhere, please let me know. Then maybe we'll get this playground done!",
                    "Looks like I'll have to finish this sign myself.",
                    'The documents for this project were just sitting right by this tunnel... Where could they have gone?'
                )
                self.painterPeteSpeech = Sequence()
                for speechText in speechTextList:
                    self.painterPeteSpeech.append(
                        Func(self.painterPete.setChatAbsolute, speechText,
                             CFSpeech))
                    self.painterPeteSpeech.append(
                        Wait(0.55 * len(speechText.split(' '))))
                    self.painterPeteSpeech.append(
                        Func(self.painterPete.clearChat))
                    self.painterPeteSpeech.append(Wait(6))
                self.painterPeteSpeech.loop(0)
Пример #27
0
    def load(self):
        CogdoGameMovie.load(self)
        self.toonDNA = ToonDNA.ToonDNA()
        self.toonDNA.newToonFromProperties('dss', 'ss', 'm', 'm', 2, 0, 2, 2,
                                           1, 8, 1, 8, 1, 14)
        self.toonHead = Toon.Toon()
        self.toonHead.setDNA(self.toonDNA)
        self.makeSuit('sc')
        self.toonHead.getGeomNode().setDepthWrite(1)
        self.toonHead.getGeomNode().setDepthTest(1)
        self.toonHead.loop('neutral')
        self.toonHead.setPosHprScale(-0.73, 0, -1.27, 180, 0, 0, 0.18, 0.18,
                                     0.18)
        self.toonHead.reparentTo(hidden)
        self.toonHead.startBlink()
        self.cogHead = Suit.Suit()
        self.cogDNA = SuitDNA.SuitDNA()
        self.cogDNA.newSuit('ms')
        self.cogHead.setDNA(self.cogDNA)
        self.cogHead.getGeomNode().setDepthWrite(1)
        self.cogHead.getGeomNode().setDepthTest(1)
        self.cogHead.loop('neutral')
        self.cogHead.setPosHprScale(-0.73, 0, -1.46, 180, 0, 0, 0.14, 0.14,
                                    0.14)
        self.cogHead.reparentTo(hidden)
        self.clipPlane = self.toonHead.attachNewNode(PlaneNode('clip'))
        self.clipPlane.node().setPlane(Plane(0, 0, 1, 0))
        self.clipPlane.setPos(0, 0, 2.45)
        audioMgr = base.cogdoGameAudioMgr
        self._cogDialogueSfx = audioMgr.createSfx('cogDialogue')
        self._toonDialogueSfx = audioMgr.createSfx('toonDialogue')
        suitData = Globals.SuitData[Globals.SuitTypes.Boss]
        bossSuit = Suit.Suit()
        d = SuitDNA.SuitDNA()
        d.newSuit(suitData['dnaName'])
        bossSuit.setDNA(d)
        bossSuit.setScale(suitData['scale'])
        bossSuit.loop('neutral')
        bossSuit.reparentTo(render)
        bossSuit.setPos(self._exit, -5, -5, 0)
        bossSuit.lookAt(self._exit)
        self._suits.append(bossSuit)
        self._camHelperNode = NodePath('CamHelperNode')
        self._camHelperNode.reparentTo(render)
        dialogue = TTLocalizer.CogdoMazeIntroMovieDialogue
        introDuration = Globals.IntroDurationSeconds
        waitDuration = introDuration / len(dialogue)

        def start():
            camera.wrtReparentTo(render)
            self._exit.open(animate=False)

        def showBoss():
            self._setCamTarget(bossSuit,
                               20,
                               offset=Point3(0, 0, 7),
                               angle=Point3(0, 15, 0))
            bossSuit.loop('victory')
            self._state = 1

        def showExit():
            self._setCamTarget(self._exit,
                               10,
                               offset=Point3(0, 0, 0),
                               angle=Point3(0, 60, 0))
            self._exit.close()
            self._state = 2

        showExitIval = Parallel(
            camera.posInterval(waitDuration * 0.5, (10, -25, 20),
                               other=self._exit,
                               blendType='easeInOut'),
            Sequence(
                Wait(waitDuration * 0.25), Func(bossSuit.play, 'effort'),
                camera.hprInterval(waitDuration * 0.25, (30, -30, 0),
                                   blendType='easeInOut'),
                Func(self._exit.close), Wait(waitDuration * 0.5)))

        def showWaterCooler():
            wc = self._maze.getWaterCoolers()[0]
            self._setCamTarget(wc, 25, angle=Point3(-30, 60, 0))
            camera.wrtReparentTo(self._camHelperNode)
            self._state = 3

        def end():
            self._stopUpdateTask()

        self._ival = Sequence(
            Func(start),
            Func(self.displayLine, 'toon', self._getRandomLine(dialogue[0])),
            showExitIval, Func(showWaterCooler),
            Func(self.displayLine, 'toon', self._getRandomLine(dialogue[1])),
            Wait(waitDuration), Func(showBoss),
            bossSuit.hprInterval(1.0,
                                 bossSuit.getHpr() + Point3(180, 0, 0),
                                 blendType='easeInOut'),
            Func(self.displayLine, 'toon', self._getRandomLine(dialogue[2])),
            Wait(waitDuration - 1.0), Func(end))
        self._startUpdateTask()
Пример #28
0
 def begin(self, range, label, gui, tipCategory, zoneId):
     info = self.textures[ZoneUtil.isCogHQZone(zoneId) if zoneId else 2]
     self.waitBar['range'] = range
     self.title['text'] = label
     self.__count = 0
     self.__expectedCount = range
     if gui:
         if base.localAvatarStyle:
             from toontown.toon import Toon
             bored = {
                 'emote': 'bored',
                 'frame': 135
             }  #must define before list
             run = {'emote': 'run', 'frame': 7}
             victory = {'emote': 'victory', 'frame': 10}
             applause = {'emote': 'applause', 'frame': 23}
             dust = {'emote': 'sprinkle-dust', 'frame': 40}
             hypno = {'emote': 'hypnotize', 'frame': 25}
             cringe = {'emote': 'cringe', 'frame': 25}
             wave = {'emote': 'wave', 'frame': 25}
             shrug = {'emote': 'shrug', 'frame': 30}
             duck = {'emote': 'duck', 'frame': 40}
             up = {'emote': 'up', 'frame': 60}
             pushup = {'emote': 'down', 'frame': 23}
             bow = {'emote': 'bow', 'frame': 45}
             emotelist = [
                 bored, run, victory, applause, dust, hypno, cringe, wave,
                 shrug, duck, up, pushup, bow
             ]
             emotechosen = random.choice(emotelist)
             self.toon = Toon.Toon()
             self.toon.setDNA(base.localAvatarStyle)
             self.toon.pose(emotechosen['emote'], emotechosen['frame'])
             self.toon.getGeomNode().setDepthWrite(1)
             self.toon.getGeomNode().setDepthTest(1)
             self.toon.setHpr(205, 0, 0)
             self.toon.setScale(0.18)
             self.toon.setPos(base.a2dBottomRight.getX() / 1.25, 0, -0.034)
             self.toon.reparentTo(self.waitBar)
         self.waitBar['frameSize'] = (base.a2dLeft + (base.a2dRight / 4.95),
                                      base.a2dRight -
                                      (base.a2dRight / 4.95), -0.03, 0.03)
         self.title['text_font'] = info[1]
         self.title['text_fg'] = info[2]
         self.title.reparentTo(base.a2dpBottomLeft,
                               LOADING_SCREEN_SORT_INDEX)
         self.title.setPos(base.a2dRight / 5, 0, 0.235)
         self.tip['text'] = self.getTip(tipCategory)
         self.gui.setPos(0, -0.1, 0)
         self.gui.reparentTo(aspect2d, LOADING_SCREEN_SORT_INDEX)
         self.gui.setTexture(info[0], 1)
         self.logo.reparentTo(base.a2dpTopCenter, LOADING_SCREEN_SORT_INDEX)
     else:
         self.title.reparentTo(base.a2dpBottomLeft,
                               LOADING_SCREEN_SORT_INDEX)
         self.gui.reparentTo(hidden)
         self.logo.reparentTo(hidden)
     self.tip.reparentTo(base.a2dpBottomCenter, LOADING_SCREEN_SORT_INDEX)
     self.waitBar.reparentTo(base.a2dpBottomCenter,
                             LOADING_SCREEN_SORT_INDEX)
     self.waitBar.update(self.__count)
Пример #29
0
    def load(self):
        gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_mainGui')
        gui.flattenMedium()
        guiAcceptUp = gui.find('**/tt_t_gui_mat_okUp')
        guiAcceptUp.flattenStrong()
        guiAcceptDown = gui.find('**/tt_t_gui_mat_okDown')
        guiAcceptDown.flattenStrong()
        guiCancelUp = gui.find('**/tt_t_gui_mat_closeUp')
        guiCancelUp.flattenStrong()
        guiCancelDown = gui.find('**/tt_t_gui_mat_closeDown')
        guiCancelDown.flattenStrong()
        guiNextUp = gui.find('**/tt_t_gui_mat_nextUp')
        guiNextUp.flattenStrong()
        guiNextDown = gui.find('**/tt_t_gui_mat_nextDown')
        guiNextDown.flattenStrong()
        guiNextDisabled = gui.find('**/tt_t_gui_mat_nextDisabled')
        guiNextDisabled.flattenStrong()
        skipTutorialUp = gui.find('**/tt_t_gui_mat_skipUp')
        skipTutorialUp.flattenStrong()
        skipTutorialDown = gui.find('**/tt_t_gui_mat_skipDown')
        skipTutorialDown.flattenStrong()
        rotateUp = gui.find('**/tt_t_gui_mat_arrowRotateUp')
        rotateUp.flattenStrong()
        rotateDown = gui.find('**/tt_t_gui_mat_arrowRotateDown')
        rotateDown.flattenStrong()
        self.guiTopBar = DirectFrame(relief=None,
                                     text=TTLocalizer.CreateYourToon,
                                     text_font=ToontownGlobals.getSignFont(),
                                     text_fg=(0.0, 0.65, 0.35, 1),
                                     text_scale=0.18,
                                     text_pos=(0, -0.03),
                                     pos=(0, 0, 0.86))
        self.guiTopBar.hide()
        self.guiBottomBar = DirectFrame(relief=None,
                                        image_scale=(1.25, 1, 1),
                                        pos=(0.01, 0, -0.86))
        self.guiBottomBar.hide()
        self.guiCheckButton = DirectButton(
            parent=self.guiBottomBar,
            relief=None,
            image=(guiAcceptUp, guiAcceptDown, guiAcceptUp, guiAcceptDown),
            image_scale=halfButtonScale,
            image1_scale=halfButtonHoverScale,
            image2_scale=halfButtonHoverScale,
            pos=(1.165, 0, -0.018),
            command=self.__handleNext,
            text=('', TTLocalizer.MakeAToonDone, TTLocalizer.MakeAToonDone),
            text_font=ToontownGlobals.getInterfaceFont(),
            text_scale=0.08,
            text_align=TextNode.ARight,
            text_pos=(0.075, 0.13),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1))
        self.guiCheckButton.setPos(-0.13, 0, 0.13)
        self.guiCheckButton.reparentTo(base.a2dBottomRight)
        self.guiCheckButton.hide()
        self.guiCancelButton = DirectButton(
            parent=self.guiBottomBar,
            relief=None,
            image=(guiCancelUp, guiCancelDown, guiCancelUp, guiCancelDown),
            image_scale=halfButtonScale,
            image1_scale=halfButtonHoverScale,
            image2_scale=halfButtonHoverScale,
            pos=(-1.179, 0, -0.011),
            command=self.__handleCancel,
            text=('', TTLocalizer.MakeAToonCancel,
                  TTLocalizer.MakeAToonCancel),
            text_font=ToontownGlobals.getInterfaceFont(),
            text_scale=TTLocalizer.MATguiCancelButton,
            text_pos=(0, 0.115),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1))
        self.guiCancelButton.setPos(0.13, 0, 0.13)
        self.guiCancelButton.reparentTo(base.a2dBottomLeft)
        self.guiCancelButton.hide()
        self.guiNextButton = DirectButton(
            parent=self.guiBottomBar,
            relief=None,
            image=(guiNextUp, guiNextDown, guiNextUp, guiNextDisabled),
            image_scale=(0.3, 0.3, 0.3),
            image1_scale=(0.35, 0.35, 0.35),
            image2_scale=(0.35, 0.35, 0.35),
            pos=(1.165, 0, -0.018),
            command=self.__handleNext,
            text=('', TTLocalizer.MakeAToonNext, TTLocalizer.MakeAToonNext,
                  ''),
            text_font=ToontownGlobals.getInterfaceFont(),
            text_scale=TTLocalizer.MATguiNextButton,
            text_pos=(0, 0.115),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1))
        self.guiNextButton.setPos(-0.13, 0, 0.13)
        self.guiNextButton.reparentTo(base.a2dBottomRight)
        self.guiNextButton.hide()
        self.guiLastButton = DirectButton(
            parent=self.guiBottomBar,
            relief=None,
            image=(guiNextUp, guiNextDown, guiNextUp, guiNextDown),
            image3_color=Vec4(0.5, 0.5, 0.5, 0.75),
            image_scale=(-0.3, 0.3, 0.3),
            image1_scale=(-0.35, 0.35, 0.35),
            image2_scale=(-0.35, 0.35, 0.35),
            pos=(0.825, 0, -0.018),
            command=self.__handleLast,
            text=('', TTLocalizer.MakeAToonLast, TTLocalizer.MakeAToonLast,
                  ''),
            text_font=ToontownGlobals.getInterfaceFont(),
            text_scale=0.08,
            text_pos=(0, 0.115),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1))
        self.guiLastButton.setPos(-0.37, 0, 0.13)
        self.guiLastButton.reparentTo(base.a2dBottomRight)
        self.guiLastButton.hide()
        self.rotateLeftButton = DirectButton(parent=self.guiBottomBar,
                                             relief=None,
                                             image=(rotateUp, rotateDown,
                                                    rotateUp, rotateDown),
                                             image_scale=(-0.4, 0.4, 0.4),
                                             image1_scale=(-0.5, 0.5, 0.5),
                                             image2_scale=(-0.5, 0.5, 0.5),
                                             pos=(-0.355, 0, 0.36))
        self.rotateLeftButton.flattenMedium()
        self.rotateLeftButton.reparentTo(base.a2dBottomCenter)
        self.rotateLeftButton.hide()
        self.rotateLeftButton.bind(DGG.B1PRESS, self.rotateToonLeft)
        self.rotateLeftButton.bind(DGG.B1RELEASE, self.stopToonRotateLeftTask)
        self.rotateRightButton = DirectButton(parent=self.guiBottomBar,
                                              relief=None,
                                              image=(rotateUp, rotateDown,
                                                     rotateUp, rotateDown),
                                              image_scale=(0.4, 0.4, 0.4),
                                              image1_scale=(0.5, 0.5, 0.5),
                                              image2_scale=(0.5, 0.5, 0.5),
                                              pos=(0.355, 0, 0.36))
        self.rotateRightButton.flattenStrong()
        self.rotateRightButton.reparentTo(base.a2dBottomCenter)
        self.rotateRightButton.hide()
        self.rotateRightButton.bind(DGG.B1PRESS, self.rotateToonRight)
        self.rotateRightButton.bind(DGG.B1RELEASE,
                                    self.stopToonRotateRightTask)
        gui.removeNode()
        self.roomDropActor = Actor()
        self.roomDropActor.loadModel('phase_3/models/makeatoon/roomAnim_model')
        self.roomDropActor.loadAnims(
            {'drop': 'phase_3/models/makeatoon/roomAnim_roomDrop'})
        self.roomDropActor.reparentTo(render)
        self.dropJoint = self.roomDropActor.find('**/droppingJoint')
        self.roomSquishActor = Actor()
        self.roomSquishActor.loadModel(
            'phase_3/models/makeatoon/roomAnim_model')
        self.roomSquishActor.loadAnims(
            {'squish': 'phase_3/models/makeatoon/roomAnim_roomSquish'})
        self.roomSquishActor.reparentTo(render)
        self.squishJoint = self.roomSquishActor.find('**/scalingJoint')
        self.propSquishActor = Actor()
        self.propSquishActor.loadModel(
            'phase_3/models/makeatoon/roomAnim_model')
        self.propSquishActor.loadAnims(
            {'propSquish': 'phase_3/models/makeatoon/roomAnim_propSquish'})
        self.propSquishActor.reparentTo(render)
        self.propSquishActor.pose('propSquish', 0)
        self.propJoint = self.propSquishActor.find('**/propJoint')
        self.spotlightActor = Actor()
        self.spotlightActor.loadModel(
            'phase_3/models/makeatoon/roomAnim_model')
        self.spotlightActor.loadAnims({
            'spotlightShake':
            'phase_3/models/makeatoon/roomAnim_spotlightShake'
        })
        self.spotlightActor.reparentTo(render)
        self.spotlightJoint = self.spotlightActor.find('**/spotlightJoint')
        ee = DirectFrame(pos=(-1, 1, 1),
                         frameSize=(-.01, 0.01, -.01, 0.01),
                         frameColor=(0, 0, 0, 0.05),
                         state='normal')
        ee.bind(DGG.B1PRESS, lambda x, ee=ee: self.toggleSlide())
        self.eee = ee
        self.room = loader.loadModel(
            'phase_3/models/makeatoon/tt_m_ara_mat_room')
        self.room.flattenMedium()
        self.genderWalls = self.room.find('**/genderWalls')
        self.genderWalls.flattenStrong()
        self.genderProps = self.room.find('**/genderProps')
        self.genderProps.flattenStrong()
        self.bodyWalls = self.room.find('**/bodyWalls')
        self.bodyWalls.flattenStrong()
        self.bodyProps = self.room.find('**/bodyProps')
        self.bodyProps.flattenStrong()
        self.colorWalls = self.room.find('**/colorWalls')
        self.colorWalls.flattenStrong()
        self.colorProps = self.room.find('**/colorProps')
        self.colorProps.flattenStrong()
        self.clothesWalls = self.room.find('**/clothWalls')
        self.clothesWalls.flattenMedium()
        self.clothesProps = self.room.find('**/clothProps')
        self.clothesProps.flattenMedium()
        self.nameWalls = self.room.find('**/nameWalls')
        self.nameWalls.flattenStrong()
        self.nameProps = self.room.find('**/nameProps')
        self.nameProps.flattenStrong()
        self.background = self.room.find('**/background')
        self.background.flattenStrong()
        self.background.reparentTo(render)
        self.floor = self.room.find('**/floor')
        self.floor.flattenStrong()
        self.floor.reparentTo(render)
        self.spotlight = self.room.find('**/spotlight')
        self.spotlight.reparentTo(self.spotlightJoint)
        self.spotlight.setColor(1, 1, 1, 0.3)
        self.spotlight.setPos(1.18, -1.27, 0.41)
        self.spotlight.setScale(2.6)
        self.spotlight.setHpr(0, 0, 0)
        smokeSeqNode = SequenceNode('smoke')
        smokeModel = loader.loadModel(
            'phase_3/models/makeatoon/tt_m_ara_mat_smoke')
        smokeFrameList = list(smokeModel.findAllMatches('**/smoke_*'))
        smokeFrameList.reverse()
        for smokeFrame in smokeFrameList:
            smokeSeqNode.addChild(smokeFrame.node())

        smokeSeqNode.setFrameRate(12)
        self.smoke = render.attachNewNode(smokeSeqNode)
        self.smoke.setScale(1, 1, 0.75)
        self.smoke.hide()
        if self.warp:
            self.dna = ToonDNA.ToonDNA()
            self.dna.makeFromNetString(self.namelessPotAv.dna)
            self.toon = Toon.Toon()
            self.toon.setDNA(self.dna)
            self.toon.useLOD(1000)
            self.toon.setNameVisible(0)
            self.toon.startBlink()
            self.toon.startLookAround()
        self.gs.load()
        self.bs.load()
        self.cos.load()
        self.cls.load()
        self.ns.load()
        self.music = base.loader.loadMusic(
            'phase_3/audio/bgm/create_a_toon.ogg')
        self.musicVolume = base.config.GetFloat('makeatoon-music-volume', 1)
        self.sfxVolume = base.config.GetFloat('makeatoon-sfx-volume', 1)
        self.soundBack = base.loader.loadSfx(
            'phase_3/audio/sfx/GUI_create_toon_back.ogg')
        self.crashSounds = map(base.loader.loadSfx, [
            'phase_3/audio/sfx/tt_s_ara_mat_crash_boing.ogg',
            'phase_3/audio/sfx/tt_s_ara_mat_crash_glassBoing.ogg',
            'phase_3/audio/sfx/tt_s_ara_mat_crash_wood.ogg',
            'phase_3/audio/sfx/tt_s_ara_mat_crash_woodBoing.ogg',
            'phase_3/audio/sfx/tt_s_ara_mat_crash_woodGlass.ogg'
        ])
Пример #30
0
    def playTutorialReward_3(self, value):
        self.tutRewardDialog_2.cleanup()
        from toontown.toon import Toon
        from toontown.toon import ToonDNA

        def doneChat1(page, elapsed=0):
            self.track2.start()

        def doneChat2(elapsed):
            self.track2.pause()
            self.track3.start()

        def uniqueName(hook):
            return "TutorialTom-" + hook

        self.tutorialTom = Toon.Toon()
        dna = ToonDNA.ToonDNA()
        dnaList = ("dls", "ms", "m", "m", 7, 0, 7, 7, 2, 6, 2, 6, 2, 16)
        dna.newToonFromProperties(*dnaList)
        self.tutorialTom.setDNA(dna)
        self.tutorialTom.setName(TTLocalizer.NPCToonNames[20000])
        self.tutorialTom.uniqueName = uniqueName

        if ConfigVariableString("language",
                                "english").getValue() == "japanese":
            self.tomDialogue03 = base.loader.loadSfx(
                "phase_3.5/audio/dial/CC_tom_movie_tutorial_reward01.mp3")
            self.tomDialogue04 = base.loader.loadSfx(
                "phase_3.5/audio/dial/CC_tom_movie_tutorial_reward02.mp3")
            self.tomDialogue05 = base.loader.loadSfx(
                "phase_3.5/audio/dial/CC_tom_movie_tutorial_reward03.mp3")
            self.musicVolume = ConfigVariableDouble("tutorial-music-volume",
                                                    0.5).getValue()
        else:
            self.tomDialogue03 = None
            self.tomDialogue04 = None
            self.tomDialogue05 = None
            self.musicVolume = 0.9

        # Need to lower battle music during dialogue
        music = base.cr.playGame.place.loader.battleMusic

        # import pdb; pdb.set_trace()

        # Quest list is generated in playTutorialReward before the avatar's quest description
        # is updated to reflect defeating the flunky
        if self.questList:
            self.track1 = Sequence(
                Wait(1.0),
                Func(self.rewardPanel.initQuestFrame, base.localAvatar,
                     copy.deepcopy(base.localAvatar.quests)),
                Wait(1.0),
                Sequence(*self.questList),
                Wait(1.0),
                Func(self.rewardPanel.hide),
                Func(camera.setPosHpr, render, 34, 19.88, 3.48, -90, -2.36, 0),
                Func(base.localAvatar.animFSM.request, "neutral"),
                Func(base.localAvatar.setPosHpr, 40.31, 22.00, -0.47, 150.00,
                     360.00, 0.00),
                Wait(0.5),
                Func(self.tutorialTom.reparentTo, render),
                Func(self.tutorialTom.show),
                Func(self.tutorialTom.setPosHpr, 40.29, 17.9, -0.47, 11.31,
                     0.00, 0.07),
                Func(self.tutorialTom.animFSM.request, 'TeleportIn'),
                Wait(1.5169999999999999),
                Func(self.tutorialTom.animFSM.request, 'neutral'),
                Func(self.acceptOnce,
                     self.tutorialTom.uniqueName("doneChatPage"), doneChat1),
                Func(self.tutorialTom.addActive),
                Func(music.setVolume, self.musicVolume),
                Func(self.tutorialTom.setLocalPageChat,
                     TTLocalizer.MovieTutorialReward3, 0, None,
                     [self.tomDialogue03]),
                name='tutorial-reward-3a')
            self.track2 = Sequence(
                Func(self.acceptOnce,
                     self.tutorialTom.uniqueName("doneChatPage"), doneChat2),
                Func(self.tutorialTom.setLocalPageChat,
                     TTLocalizer.MovieTutorialReward4, 1, None,
                     [self.tomDialogue04]),
                Func(self.tutorialTom.setPlayRate, 1.5, "right-hand-start"),
                Func(self.tutorialTom.play, "right-hand-start"),
                Wait(self.tutorialTom.getDuration("right-hand-start") / 1.5),
                Func(self.tutorialTom.loop, "right-hand"),
                name='tutorial-reward-3b')
            self.track3 = Parallel(
                Sequence(Func(self.tutorialTom.setPlayRate, -1.8,
                              "right-hand-start"),
                         Func(self.tutorialTom.play, "right-hand-start"),
                         Wait(
                             self.tutorialTom.getDuration("right-hand-start") /
                             1.8),
                         Func(self.tutorialTom.animFSM.request, 'neutral'),
                         name='tutorial-reward-3ca'),
                Sequence(Wait(0.5),
                         Func(self.tutorialTom.setChatAbsolute,
                              TTLocalizer.MovieTutorialReward5,
                              CFSpeech | CFTimeout, self.tomDialogue05),
                         Wait(1.0),
                         Func(self.tutorialTom.animFSM.request, 'TeleportOut'),
                         Wait(self.tutorialTom.getDuration("teleport")),
                         Wait(1.0),
                         Func(self.playTutorialReward_4, 0),
                         name='tutorial-reward-3cb'),
                name='tutorial-reward-3c')

            self.track1.start()
        else:
            self.playTutorialReward_4(0)
        return