예제 #1
0
 def __init__(self, cr):
     DistributedObject.__init__(self, cr)
     self.fsm = ClassicFSM.ClassicFSM('TutorialFSM', [
         State.State('off', self.enterOff, self.exitOff),
         State.State('newPlayerEmerge', self.enterPlayerEmerge,
                     self.exitPlayerEmerge, ['off', 'introSpeech']),
         State.State('introSpeech', self.enterGuideIntroSpeech,
                     self.exitGuideIntroSpeech,
                     ['off', 'introSpeech2Training']),
         State.State('introSpeech2Training', self.enterIntroSpeech2Training,
                     self.exitIntroSpeech2Training, ['off', 'training1']),
         State.State('training1', self.enterTrainingPT1,
                     self.exitTrainingPT1, ['off', 'training2info']),
         State.State('training2info', self.enterTraining2Info,
                     self.exitTraining2Info, ['off', 'training2']),
         State.State('training2', self.enterTrainingPT2,
                     self.exitTrainingPT2, ['off', 'training3info']),
         State.State('training3info', self.enterTraining3Info,
                     self.exitTraining3Info, ['off', 'training3']),
         State.State('training3', self.enterTrainingPT3,
                     self.exitTrainingPT3, ['off', 'trainingDone']),
         State.State('trainingDone', self.enterTrainingDone,
                     self.exitTrainingDone, ['off', 'leaveTutorial']),
         State.State('leaveTutorial', self.enterLeaveTutorial,
                     self.exitLeaveTutorial, ['off'])
     ], 'off', 'off')
     self.fsm.enterInitialState()
     self.dnaStore = DNAStorage()
     self.streetGeom = None
     self.sky = None
     self.skyUtil = SkyUtil()
     self.guide = None
     self.music = None
     self.battleMusic = None
     self.playerCamPos = None
     self.playerCamHpr = None
예제 #2
0
    def load(self):
        self.unload()
        if self.loadingText:
            self.loadingText.destroy()
            self.loadingText = None
        self.loadingText = OnscreenText(text='', font=CIGlobals.getMinnieFont(), fg=(1,
                                                                                     1,
                                                                                     1,
                                                                                     1))
        self.loadingText.setBin('gui-popup', 0)
        base.graphicsEngine.renderFrame()
        base.graphicsEngine.renderFrame()
        if self.levelName == 'momada':
            self.__momadaLoad()
        else:
            if self.levelName in ('cbhq', 'sbf'):
                modelPath = self.LevelData[self.levelName]['model']
                self.levelGeom = loader.loadModel(modelPath)
                self.levelGeom.flattenMedium()
                self.levelGeom.reparentTo(render)
                if self.LevelData[self.levelName]['sky'] != None:
                    self.skyModel = loader.loadModel(self.SkyData['cog'] + '/cog_sky.bam')
                    self.skyUtil = SkyUtil()
                    self.skyUtil.startSky(self.skyModel)
                    self.skyModel.reparentTo(render)
                    self.skyModel.setScale(self.LevelData[self.levelName].get('sky_scale', 1.0))
                if self.LevelData[self.levelName].get('occluders'):
                    self.occluders = loader.loadModel(self.LevelData[self.levelName]['occluders'])
                    for occluderNode in self.occluders.findAllMatches('**/+OccluderNode'):
                        base.render.setOccluder(occluderNode)
                        occluderNode.node().setDoubleSided(True)

                if self.levelName == 'sbf':
                    base.camLens.setFar(250)
            else:
                dnaFiles = self.LevelData[self.levelName]['dna']
                skyType = self.LevelData[self.levelName]['sky']
                skyPhase = self.SkyData[skyType]
                loadDNAFile(self.dnaStore, 'phase_4/dna/storage.pdna')
                for index in range(len(dnaFiles)):
                    if index == len(dnaFiles) - 1:
                        node = loadDNAFile(self.dnaStore, dnaFiles[index])
                        if node.getNumParents() == 1:
                            self.levelGeom = NodePath(node.getParent(0))
                            self.levelGeom.reparentTo(hidden)
                        else:
                            self.levelGeom = hidden.attachNewNode(node)
                        if self.levelName == 'ttc' and dnaFiles[index] == 'phase_4/dna/new_ttc_sz.pdna':
                            self.levelGeom.find('**/prop_gazebo_DNARoot').removeNode()
                        else:
                            self.levelGeom.flattenMedium()
                        gsg = base.win.getGsg()
                        if gsg:
                            self.levelGeom.prepareScene(gsg)
                        self.levelGeom.reparentTo(render)
                    else:
                        loadDNAFile(self.dnaStore, dnaFiles[index])

                children = self.levelGeom.findAllMatches('**/*doorFrameHole*')
                for child in children:
                    child.hide()

                self.skyModel = loader.loadModel(skyPhase + '/' + skyType + '_sky.bam')
                self.skyUtil = SkyUtil()
                self.skyUtil.startSky(self.skyModel)
                self.skyModel.reparentTo(camera)
                ce = CompassEffect.make(NodePath(), CompassEffect.PRot | CompassEffect.PZ)
                self.skyModel.node().setEffect(ce)
        if self.loadingText:
            self.loadingText.destroy()
            self.loadingText = None
        return
예제 #3
0
 def load(self):
     self.unload()
     if self.loadingText:
         self.loadingText.destroy()
         self.loadingText = None
     self.loadingText = OnscreenText(text = "",
         font = CIGlobals.getMinnieFont(), fg = (1, 1, 1, 1))
     self.loadingText.setBin('gui-popup', 0)
     base.graphicsEngine.renderFrame()
     base.graphicsEngine.renderFrame()
     if self.levelName == "momada":
         # momada is completely different from the other levels,
         # so it has it's own separate method for loading.
         self.__momadaLoad()
     elif self.levelName in ['cbhq', 'sbf']:
         # Cog hqs are just one model with everything in it. no dna loading needed.
         modelPath = self.LevelData[self.levelName]['model']
         self.levelGeom = loader.loadModel(modelPath)
         self.levelGeom.flattenMedium()
         self.levelGeom.reparentTo(render)
         if self.LevelData[self.levelName]['sky'] != None:
             self.skyModel = loader.loadModel(self.SkyData['cog'] + '/cog_sky.bam')
             self.skyUtil = SkyUtil()
             self.skyUtil.startSky(self.skyModel)
             self.skyModel.reparentTo(render)
             self.skyModel.setScale(self.LevelData[self.levelName].get('sky_scale', 1.0))
         if self.LevelData[self.levelName].get('occluders'):
             self.occluders = loader.loadModel(self.LevelData[self.levelName]['occluders'])
             for occluderNode in self.occluders.findAllMatches('**/+OccluderNode'):
                 base.render.setOccluder(occluderNode)
                 occluderNode.node().setDoubleSided(True)
         if self.levelName == 'sbf':
             base.camLens.setFar(250)
     else:
         # It's a playground with dna and stuff. Just do the
         # normal loading procedure.
         dnaFiles = self.LevelData[self.levelName]['dna']
         skyType = self.LevelData[self.levelName]['sky']
         skyPhase = self.SkyData[skyType]
         loadDNAFile(self.dnaStore, 'phase_4/dna/storage.pdna')
         for index in range(len(dnaFiles)):
             if index == len(dnaFiles) - 1:
                 node = loadDNAFile(self.dnaStore, dnaFiles[index])
                 if node.getNumParents() == 1:
                     self.levelGeom = NodePath(node.getParent(0))
                     self.levelGeom.reparentTo(hidden)
                 else:
                     self.levelGeom = hidden.attachNewNode(node)
                 if self.levelName == 'ttc' and dnaFiles[index] == 'phase_4/dna/new_ttc_sz.pdna':
                     self.levelGeom.find('**/prop_gazebo_DNARoot').removeNode()
                 else:
                     self.levelGeom.flattenMedium()
                 gsg = base.win.getGsg()
                 if gsg:
                     self.levelGeom.prepareScene(gsg)
                 self.levelGeom.reparentTo(render)
             else:
                 loadDNAFile(self.dnaStore, dnaFiles[index])
         children = self.levelGeom.findAllMatches('**/*doorFrameHole*')
         
         for child in children:
             child.hide()
         self.skyModel = loader.loadModel(skyPhase + "/" + skyType + "_sky.bam")
         self.skyUtil = SkyUtil()
         self.skyUtil.startSky(self.skyModel)
         self.skyModel.reparentTo(camera)
         ce = CompassEffect.make(NodePath(), CompassEffect.PRot | CompassEffect.PZ)
         self.skyModel.node().setEffect(ce)
     if self.loadingText:
         self.loadingText.destroy()
         self.loadingText = None