def createWorld(self):
        self.deleteWorld()

        self.arena = loader.loadModel(
            "phase_4/models/minigames/dodgeball_arena.egg")
        self.arena.reparentTo(render)
        self.arena.setScale(0.75)
        self.arena.find('**/team_divider').setBin('ground', 18)
        self.arena.find('**/floor').setBin('ground', 18)
        self.arena.find('**/team_divider_coll').setCollideMask(
            CIGlobals.FloorBitmask)

        for data in DistributedDodgeballGame.TreeData:
            code = data[0]
            pos = data[1]
            tree = self.__getSnowTree(code)
            tree.reparentTo(self.arena)
            tree.setPos(pos)
            self.trees.append(tree)

        for i in xrange(len(DistributedDodgeballGame.SnowballData)):
            snowdata = DistributedDodgeballGame.SnowballData[i]
            snowball = Snowball(self, i)
            snowball.load()
            snowball.reparentTo(render)
            snowball.setPos(snowdata)
            self.snowballs.append(snowball)

        self.olc = ZoneUtil.getOutdoorLightingConfig(ZoneUtil.TheBrrrgh)
        self.olc.setupAndApply()
예제 #2
0
    def __async_loadSZTask(self, task=None):
        dnas = HOOD_ID_2_DNA[self.choice.lastHood]
        for i in xrange(len(dnas)):
            dnaFile = dnas[i]
            if i == len(dnas) - 1:
                node = loader.loadDNAFile(self.dnaStore, dnaFile)
                if node.getNumParents() == 1:
                    self.szGeom = NodePath(node.getParent(0))
                    self.szGeom.reparentTo(render)
                else:
                    self.szGeom = render.attachNewNode(node)

                # The 2D trees should not be flattened, to do that, we're going to traverse
                # the scene graph for all trees, use #wrtReparentTo(render) on them, flatten
                # the scene with #flattenStrong(), and finally #wrtReparentTo(self.szGeom)
                # the trees back to the main scene node so they get cleaned up properly.
                trees = self.szGeom.findAllMatches('**/*tree*')
                #self.szGeom.find("**/shadow").removeNode()

                #from panda3d.core import CullBinAttrib
                #self.szGeom.find("**/shadow_crack").setAttrib(CullBinAttrib.make("foreground", 10), 10)
                #shs = self.szGeom.findAllMatches("**/*shadow*")
                #for sh in shs:
                #    sh.removeNode()

                # self.szGeom.ls()

                for tree in trees:
                    tree.wrtReparentTo(render)

                self.szGeom.flattenStrong()

                for tree in trees:
                    tree.wrtReparentTo(self.szGeom)

            else:
                loader.loadDNAFile(self.dnaStore, dnaFile)

        self.olc = ZoneUtil.getOutdoorLightingConfig(self.choice.lastHood)
        self.olc.setup()
        self.olc.apply()

        CIGlobals.preRenderScene(render)

        self.asyncSZLoadStatus = True

        #base.accept('l', render.ls)

        if task:
            return task.done
예제 #3
0
 def load(self):
     self.deleteWorld()
     self.track = loader.loadModel(self.trackPath)
     self.track.reparentTo(render)
     self.olc = ZoneUtil.getOutdoorLightingConfig(ZoneUtil.ToontownCentral)
     self.olc.setupAndApply()
     self.setMinigameMusic("phase_4/audio/bgm/MG_toontag.ogg")
     self.setDescription("Tap the left and right arrow keys repeatedly, in turns, as fast as " + \
         "you can to win the race! Every time your power bar hits the top, the boost bar starts" + \
         " to fill. When the boost bar is full, press CTRL to boost for a few seconds.")
     self.setWinnerPrize(100)
     self.setLoserPrize(5)
     self.d_requestToonLane()
     camera.reparentTo(render)
     camera.setPos(self.initialCamPos["pos"])
     camera.setHpr(self.initialCamPos["hpr"])
     DistributedMinigame.DistributedMinigame.load(self)
    def announceGenerate(self):
        DistributedBattleZone.announceGenerate(self)
        base.transitions.fadeScreen(0.0)
        self.guide = Toon(base.cr)
        self.guide.autoClearChat = False
        self.guide.parseDNAStrand(NPCGlobals.NPCToonDict[self.GUIDE_NPCID][2])
        self.guide.setName(NPCGlobals.NPCToonDict[self.GUIDE_NPCID][1])
        self.guide.generateToon()
        self.guide.nametag.setNametagColor(
            NametagGlobals.NametagColors[NametagGlobals.CCNPC])
        self.guide.nametag.setActive(0)
        self.guide.nametag.updateAll()
        self.guide.nametag.getNametag3d().setClickEvent('tutGuide-click')
        self.guide.nametag.getNametag2d().setClickEvent('tutGuide-click')
        self.guide.reparentTo(render)
        base.localAvatar.reparentTo(render)
        loader.loadDNAFile(self.dnaStore,
                           'phase_3.5/dna/storage_tutorial.pdna')
        node = loader.loadDNAFile(self.dnaStore,
                                  'phase_3.5/dna/tutorial_street.pdna')
        if node.getNumParents() == 1:
            self.streetGeom = NodePath(node.getParent(0))
            self.streetGeom.reparentTo(hidden)
        else:
            self.streetGeom = hidden.attachNewNode(node)
        self.streetGeom.flattenMedium()
        gsg = base.win.getGsg()
        if gsg:
            self.streetGeom.prepareScene(gsg)
        self.streetGeom.reparentTo(render)
        self.streetGeom.setPos(20.5, -20, 0)
        self.streetGeom.setH(90)

        self.olc = ZoneUtil.getOutdoorLightingConfig(ZoneUtil.ToontownCentral)
        self.olc.setupAndApply()

        base.playMusic('TC_SZ')
        self.fsm.request('newPlayerEmerge')
        base.localAvatar.inTutorial = True
예제 #5
0
 def load(self):
     spawn = random.choice(DGG.SpawnPoints)
     base.localAvatar.setPos(spawn)
     base.localAvatar.setHpr(0, 0, 0)
     self.soundPickUpBarrel = base.loadSfx(
         'phase_6/audio/sfx/SZ_MM_gliss.ogg')
     self.soundDropOff = base.loadSfx(
         'phase_4/audio/sfx/MG_sfx_travel_game_bell_for_trolley.ogg')
     self.soundBeep = base.loadSfx(
         'phase_4/audio/sfx/MG_delivery_truck_beep.ogg')
     self.soundDoorOpen = base.loadSfx(
         "phase_9/audio/sfx/CHQ_VP_door_open.ogg")
     self.setMinigameMusic('phase_4/audio/bgm/MG_Delivery.ogg')
     self.setDescription('A new supply of Gags were just shipped to Toontown! ' + \
         'Run over to a truck with Gag barrels to take a barrel out. Then, carry it over to the Gag Shop. ' + \
         'Try to unload and deliver as many barrels as you can to the Gag Shop. ' + \
         'Watch out for the Cogs - they might try to snatch a barrel!')
     self.setWinnerPrize(100)
     self.setLoserPrize(0)
     self.gagShop = loader.loadModel(
         'phase_4/models/modules/gagShop_TT.bam')
     self.gagShop.reparentTo(base.render)
     self.gagShop.setY(-70)
     sphere = CollisionSphere(0, 0, 0, 3)
     sphere.setTangible(0)
     node = CollisionNode('MGDeliveryGagShop')
     node.addSolid(sphere)
     self.gagShopCollNP = self.gagShop.attachNewNode(node)
     self.world = loader.loadModel(
         'phase_4/models/minigames/delivery_area.egg')
     self.world.setY(-5)
     self.world.reparentTo(base.render)
     self.world.find('**/ground').setBin('ground', 18)
     self.olc = ZoneUtil.getOutdoorLightingConfig(ZoneUtil.ToontownCentral)
     self.olc.setupAndApply()
     base.camera.setPos(20, 50, 30)
     base.camera.lookAt(20, 0, 7.5)
     DistributedMinigame.load(self)
예제 #6
0
    def __init__(self):
        self.gui = None
        self.mopath = None
        self.platform = None
        self.platformNode = None

        self.lLineSeg = None
        self.rLineSeg = None
        
        self.crates = []
        
        self.music = base.loadMusic('phase_4/audio/bgm/MG_Crash_brrrgh.ogg')

        self.dnaStore = DNAStorage()
        loadDNAFile(self.dnaStore, 'phase_4/dna/storage.pdna')
        loadDNAFile(self.dnaStore, 'phase_5/dna/storage_town.pdna')
        loadDNAFile(self.dnaStore, 'phase_8/dna/storage_BR.pdna')
        loadDNAFile(self.dnaStore, 'phase_8/dna/storage_BR_town.pdna')

        node = loadDNAFile(self.dnaStore, 'phase_4/dna/test_brrrgh_ch_lvl.pdna')

        if node.getNumParents() == 1:
            geom = NodePath(node.getParent(0))
            geom.reparentTo(hidden)
        else:
            geom = hidden.attachNewNode(node)
        gsg = base.win.getGsg()
        if gsg:
            geom.prepareScene(gsg)
        geom.setName('test_level')
        geom.reparentTo(render)
        
        self.olc = ZoneUtil.getOutdoorLightingConfig(CIGlobals.TheBrrrgh)
        self.olc.setupAndApply()

        self.area = geom
        self.area.setH(90)

        self.lastCamPos = Point3(0, 0, 0)
        self.lastCamHpr = Vec3(0, 0, 0)
        self.lastCamNodeH = 0.0

        self.camNode = render.attachNewNode('crashCamNode')
        camera.reparentTo(self.camNode)


        base.minigame = self

        

        #self.camCurve = loader.loadModel('crash_test_cam_path.egg')
        #self.camMoPath = NURBSMopath(self.camCurve)
        #self.camMoPath.node = camera

        #self.camNodes = self.camMoPath.evaluator.getVertices()

                         #       X   Y   Z    H 
        self.camNodes = [VBase4(-20, 0, 7.5, 0), VBase4(-20, 130, 7.5, -90),
                         VBase4(60, 130, 7.5, -90)]

        self.localAv = LocalCrashToon(base.localAvatar)

        #base.transitions.noTransitions()
        #base.enableMouse()

        #base.localAvatar.stopSmartCamera()
        #base.localAvatar.detachCamera()

        #self.cra = Actor('phase_4/models/minigames/crash_crate.egg', {'bounce': 'phase_4/models/minigames/crash_crate-bounce.egg'})
        #self.cra.reparentTo(render)
        #self.cra.loop('bounce')
        #self.cra.setPos(100, 100, 0)
        #self.cra.ls()
        
        base.acceptOnce('s', self.start)
예제 #7
0
    def load(self):
        if not self.level:
            self.notify.warning('Attempted to load a null level!')
            return

        self.unload()
        data = self.levelData[self.level]

        # Are we loading a DNA level?
        if data.get('dna'):
            dnaFiles = data['dna']
            loadDNAFile(self.dnaStore, 'phase_4/dna/storage.pdna')

            for index in range(len(dnaFiles)):
                if 'storage' not in dnaFiles[index]:
                    # It's an environment file, let's load that up and reparent it to render.
                    node = loader.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)
                    self.levelGeom.flattenMedium()
                    gsg = base.win.getGsg()
                    if gsg:
                        self.levelGeom.prepareScene(gsg)
                    self.levelGeom.reparentTo(render)
                else:
                    # It's just a storage file, let's just load that up.
                    loadDNAFile(self.dnaStore, dnaFiles[index])
        elif data.get('models'):
            models = data['models']
            for model, modifiers in models.items():
                mdl = loader.loadModel(model)

                if modifiers.get('name'):
                    mdl.setName(modifiers['name'])

                if modifiers.get('hpr'):
                    mdl.setHpr(modifiers['hpr'])

                if modifiers.get('pos'):
                    mdl.setPos(modifiers['pos'])

                if modifiers.get('scale'):
                    mdl.setScale(modifiers['scale'])

                if modifiers.get('parent'):
                    mdl.reparentTo(modifiers['parent'])
                else:
                    mdl.reparentTo(render)
                self.models.append(mdl)
        else:
            self.notify.warning(
                'Attempted to load a level with no data on how to generate it. Level is empty!'
            )
            return

        self.olc = ZoneUtil.getOutdoorLightingConfig(data.get('name'))
        self.olc.setupAndApply()

        self.levelLoaded()
    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].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']
            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.olc = ZoneUtil.getOutdoorLightingConfig(self.LevelData[self.levelName].get('name'))
        self.olc.setupAndApply()

        if self.loadingText:
            self.loadingText.destroy()
            self.loadingText = None