def load(self):
        self.arena = loader.loadModel(self.arenaModel)
        self.arena.reparentTo(self.root)
        ground = self.arena.find('**/ground')
        ground.setBin('ground', 1)
        entranceArrows = self.arena.findAllMatches('**/arrowFlat*')
        for arrow in entranceArrows:
            arrow.setBin('ground', 5)

        self.leftEntranceLocator = self.arena.find('**/leftEntrance_locator')
        self.rightEntranceLocator = self.arena.find('**/rightEntrance_locator')
        self.leftExitLocator = self.arena.find('**/leftExit_locator')
        self.rightExitLocator = self.arena.find('**/rightExit_locator')
        self.teamCamPosLocators = (self.arena.find('**/team0CamPos_locator'),
                                   self.arena.find('**/team1CamPos_locator'))
        self.teamCamAimLocators = (self.arena.find('**/team0CamAim_locator'),
                                   self.arena.find('**/team1CamAim_locator'))
        leftTeamLocator = NodePath('TeamLocator-%d' %
                                   PartyGlobals.TeamActivityTeams.LeftTeam)
        leftTeamLocator.reparentTo(self.root)
        leftTeamLocator.setH(90)
        rightTeamLocator = NodePath('TeamLocator-%d' %
                                    PartyGlobals.TeamActivityTeams.RightTeam)
        rightTeamLocator.reparentTo(self.root)
        rightTeamLocator.setH(-90)
        self.teamLocators = (leftTeamLocator, rightTeamLocator)
        self._lengthBetweenEntrances = self.leftEntranceLocator.getY(
        ) - self.rightExitLocator.getY()
        self._skyCollisionsCollection = self.arena.findAllMatches(
            '**/cogPieArena_sky*_collision')
        if len(self._skyCollisionsCollection) > 0:
            self._skyCollisionParent = self._skyCollisionsCollection[
                0].getParent()
        else:
            self._skyCollisionParent = self.arena
        self._wallCollisionsCollection = self.arena.findAllMatches(
            '**/cogPieArena_wall*_collision')
        self._arenaFlagGroups = (self.arena.find('**/flagsL_grp'),
                                 self.arena.find('**/flagsR_grp'))
        self._initArenaDoors()
        self.cogManager = PartyCogManager()
        self.arrows = []
        self.distanceLabels = []
        self.teamColors = list(PartyGlobals.CogActivityColors) + [
            PartyGlobals.TeamActivityStatusColor
        ]
        for i in range(3):
            start = self.arena.find('**/cog%d_start_locator' % (i + 1))
            end = self.arena.find('**/cog%d_end_locator' % (i + 1))
            cog = self.cogManager.generateCog(self.arena)
            cog.setEndPoints(start.getPos(), end.getPos())
            arrow1 = StretchingArrow(self.arena, useColor='orange')
            arrow2 = StretchingArrow(self.arena, useColor='blue')
            arrow1.setZ(0.1)
            arrow2.setZ(0.1)
            self.arrows.append([arrow1, arrow2])
            distanceLabel = self.createDistanceLabel(0, self.teamColors[1])
            distanceLabel[0].stash()
            distanceLabel2 = self.createDistanceLabel(0, self.teamColors[0])
            distanceLabel2[0].stash()
            self.distanceLabels.append([distanceLabel, distanceLabel2])

        self.winText = []
        text1 = self.createText(0, Point3(-0.5, 0.0, -0.5), self.teamColors[1])
        text2 = self.createText(1, Point3(0.5, 0.0, -0.5), self.teamColors[0])
        self.winText.append(text1)
        self.winText.append(text2)
        self.winStatus = self.createText(2, Point3(0.0, 0.0, -0.8),
                                         self.teamColors[0])
        signLocator = self.arena.find('**/eventSign_locator')
        self.activity.sign.setPos(signLocator.getPos(self.root))
        if self.texture:
            textureAlpha = self.texture[:-4] + '_a.rgb'
            reskinTexture = loader.loadTexture(self.texture, textureAlpha)
            self.arena.find('**/center_grp').setTexture(reskinTexture, 100)
            self.arena.find('**/leftSide_grp').setTexture(reskinTexture, 100)
            self.arena.find('**/rightSide_grp').setTexture(reskinTexture, 100)
        self.enable()
Пример #2
0
    def load(self):
        self.arena = loader.loadModel("phase_13/models/parties/cogPieArena_model")
        self.arena.reparentTo(self.root)
        
        ground = self.arena.find("**/ground")
        # Make the ground plane draw before the shadow!
        ground.setBin("ground", 1)
        
        entranceArrows = self.arena.findAllMatches("**/arrowFlat*")
        for arrow in entranceArrows:
            arrow.setBin("ground", 5)
        
        # Get Entrance/Exit Locations
        self.leftEntranceLocator = self.arena.find("**/leftEntrance_locator")
        self.rightEntranceLocator = self.arena.find("**/rightEntrance_locator")
        self.leftExitLocator = self.arena.find("**/leftExit_locator")
        self.rightExitLocator = self.arena.find("**/rightExit_locator")
        
        self.teamCamPosLocators = (
            self.arena.find("**/team0CamPos_locator"),
            self.arena.find("**/team1CamPos_locator")
            )
        
        self.teamCamAimLocators = (
            self.arena.find("**/team0CamAim_locator"),
            self.arena.find("**/team1CamAim_locator"),
            )
        
        # Setup team locators
        # Toons are parented to these guys in order to do
        # Orthowalk properly
        leftTeamLocator = NodePath("TeamLocator-%d" % PartyGlobals.TeamActivityTeams.LeftTeam)
        leftTeamLocator.reparentTo(self.root)
        leftTeamLocator.setH(90)
        
        rightTeamLocator = NodePath("TeamLocator-%d" % PartyGlobals.TeamActivityTeams.RightTeam)
        rightTeamLocator.reparentTo(self.root)
        rightTeamLocator.setH(-90)
        
        self.teamLocators = (
            leftTeamLocator,
            rightTeamLocator
            )
        
        # Used to place the toons in even spaces
        self._lengthBetweenEntrances = self.leftEntranceLocator.getY() - self.rightExitLocator.getY()
        
        # Setup Sky Collisions. Important for cannons.
        self._skyCollisionsCollection = self.arena.findAllMatches("**/cogPieArena_sky*_collision")
        
        if len(self._skyCollisionsCollection) > 0:
            self._skyCollisionParent = self._skyCollisionsCollection[0].getParent()
        else:
            self._skyCollisionParent = self.arena
            
        # Get all the wall collisions:
        self._wallCollisionsCollection = self.arena.findAllMatches("**/cogPieArena_wall*_collision")
            
        # Get a hold of the flags:
        self._arenaFlagGroups = (
            self.arena.find("**/flagsL_grp"),
            self.arena.find("**/flagsR_grp")
           )
        
        self._initArenaDoors()
        
        # Setup Cogs
        self.cogManager = PartyCogManager()
        self.arrows = []
        
        self.distanceLabels = []
        self.teamColors = list(PartyGlobals.CogActivityColors) + [PartyGlobals.TeamActivityStatusColor]
        
        for i in range(3):
            start = self.arena.find("**/cog%d_start_locator" % (i+1))
            end = self.arena.find("**/cog%d_end_locator" % (i+1))
            
            cog = self.cogManager.generateCog(self.arena)
            cog.setEndPoints(start.getPos(), end.getPos())
            
            arrow1 = StretchingArrow(self.arena, useColor="orange")
            arrow2 = StretchingArrow(self.arena, useColor="blue")
            arrow1.setZ(0.1)
            arrow2.setZ(0.1)
            self.arrows.append([arrow1, arrow2])
            
            distanceLabel = self.createDistanceLabel(0, self.teamColors[1])
            distanceLabel[0].stash()
            distanceLabel2 = self.createDistanceLabel(0, self.teamColors[0])
            distanceLabel2[0].stash()
            self.distanceLabels.append([distanceLabel, distanceLabel2])
        
        
        self.winText = []
        text1 = self.createText(0, Point3(-0.5,0.0,-0.5), self.teamColors[1])
        text2 = self.createText(1, Point3(0.5,0.0,-0.5), self.teamColors[0])
        self.winText.append(text1)
        self.winText.append(text2)
        
        self.winStatus = self.createText(2, Point3(0.0,0.0,-0.8), self.teamColors[0])

        signLocator = self.arena.find("**/eventSign_locator")
        self.activity.sign.setPos(signLocator.getPos(self.root))
        
        self.enable()