Exemple #1
0
 def setupEnviroCamera(self):
     clearColor = VBase4(0, 0, 0, 1)
     if self.enviroDR:
         clearColor = self.enviroDR.getClearColor()
         self.win.removeDisplayRegion(self.enviroDR)
     if not self.enviroCam:
         self.enviroCam = self.cam.attachNewNode(Camera('enviroCam'))
     mainDR = self.camNode.getDisplayRegion(0)
     if self.stereoEnabled:
         self.enviroDR = self.win.makeStereoDisplayRegion()
         if not mainDR.isStereo():
             self.win.removeDisplayRegion(mainDR)
             mainDR = self.win.makeStereoDisplayRegion()
             mainDR.setCamera(self.cam)
         ml = mainDR.getLeftEye()
         mr = mainDR.getRightEye()
         el = self.enviroDR.getLeftEye()
         er = self.enviroDR.getRightEye()
         el.setSort(-8)
         ml.setSort(-6)
         er.setSort(-4)
         er.setClearDepthActive(True)
         mr.setSort(-2)
         mr.setClearDepthActive(False)
     else:
         self.enviroDR = self.win.makeMonoDisplayRegion()
         if mainDR.isStereo():
             self.win.removeDisplayRegion(mainDR)
             mainDR = self.win.makeMonoDisplayRegion()
             mainDR.setCamera(self.cam)
         self.enviroDR.setSort(-10)
     self.enviroDR.setClearColor(clearColor)
     self.win.setClearColor(clearColor)
     self.enviroDR.setCamera(self.enviroCam)
     self.enviroCamNode = self.enviroCam.node()
     self.enviroCamNode.setLens(self.cam.node().getLens())
     self.enviroCamNode.setCameraMask(OTPRender.EnviroCameraBitmask)
     render.hide(OTPRender.EnviroCameraBitmask)
     self.camList.append(self.enviroCam)
     self.backgroundDrawable = self.enviroDR
     self.enviroDR.setTextureReloadPriority(-10)
     if self.pixelZoomSetup:
         self.setupAutoPixelZoom()
Exemple #2
0
    def createEnvironment(self):
        # Fog to hide a performance tweak:
        colour = (0.5, 0.5, 0.5)
        expfog = Fog("scene-wide-fog")
        expfog.setColor(*colour)
        expfog.setExpDensity(0.002)  # original : 0.004
        render.setFog(expfog)
        base.setBackgroundColor(*colour)

        # Our sky
        skysphere = self.loader.loadModel('blue-sky-sphere')
        skysphere.setEffect(CompassEffect.make(self.render))
        skysphere.setScale(0.08)

        # NOT render or you'll fly through the sky!:
        skysphere.reparentTo(self.camera)

        # Our lighting
        ambientLight = AmbientLight("ambientLight")
        ambientLight.setColor(Vec4(.6, .6, .6, 1))
        self.render.setLight(self.render.attachNewNode(ambientLight))

        directionalLight = DirectionalLight("directionalLight")
        directionalLight.setColor(VBase4(0.8, 0.8, 0.5, 1))
        dlnp = self.render.attachNewNode(directionalLight)
        dlnp.setPos(0, 0, 260)
        dlnp.lookAt(self.player)
        self.render.setLight(dlnp)

        # water
        self.water = self.loader.loadModel('square.egg')
        self.water.setSx(self.worldsize * 2)
        self.water.setSy(self.worldsize * 2)
        self.water.setPos(self.worldsize / 2, self.worldsize / 2,
                          25)  # sea level
        self.water.setTransparency(TransparencyAttrib.MAlpha)
        newTS = TextureStage('1')
        self.water.setTexture(newTS, self.loader.loadTexture('water.png'))
        self.water.setTexScale(newTS, 4)
        self.water.reparentTo(self.render)
        LerpTexOffsetInterval(self.water,
                              200, (1, 0), (0, 0),
                              textureStage=newTS).loop()
 def enterFree(self):
     self.resetPowerBar()
     if self.fadeTrack:
         self.fadeTrack.finish()
         self.fadeTrack = None
     self.prepareForPhaseFour()
     if self.avId == localAvatar.doId:
         self.tableGroup.setAlphaScale(0.3)
         self.tableGroup.setTransparency(1)
         taskMgr.doMethodLater(5, self.__allowDetect, self.triggerName)
         self.fadeTrack = Sequence(
             Func(self.tableGroup.setTransparency, 1),
             self.tableGroup.colorScaleInterval(0.2, VBase4(1, 1, 1, 0.3)))
         self.fadeTrack.start()
         self.allowLocalRequestControl = False
     else:
         self.allowLocalRequestControl = True
     self.avId = 0
     return
 def _updateVictoryBar(self):
     if not hasattr(self, '_victoryBalanceBar') and self._victoryBalanceBar:
         return None
     
     netDistance = 0
     for cog in self.cogs:
         netDistance = netDistance + cog.targetDistance
     
     teamDistance = netDistance / 6.0
     self._victoryBalanceBarOrange.setScale(PartyGlobals.CogActivityBarStartScale + teamDistance * 10 * PartyGlobals.CogActivityBarUnitScale, 1.0, 1.0)
     self._victoryBalanceBarPie.setX(PartyGlobals.CogActivityVictoryBarPiePos[0] + teamDistance * 10 * PartyGlobals.CogActivityBarPieUnitMove)
     self._victoryBalanceBarPie.setY(PartyGlobals.CogActivityVictoryBarPiePos[1])
     self._victoryBalanceBarPie.setZ(PartyGlobals.CogActivityVictoryBarPiePos[2])
     if teamDistance > 0.0:
         self._victoryBalanceBarArrow.setColor(PartyGlobals.CogActivityColors[1])
     elif teamDistance < 0.0:
         self._victoryBalanceBarArrow.setColor(PartyGlobals.CogActivityColors[0])
     else:
         self._victoryBalanceBarArrow.setColor(VBase4(1.0, 1.0, 1.0, 1.0))
Exemple #5
0
def projectCarelessly(point, lens=None):
    """
  Similar to Lens.project(), but never returns None.

  Source: http://www.panda3d.org / forums / viewtopic.php?t=2022 - by tarsierpi
  """

    lens = lens or base.camLens

    projection_mat = lens.getProjectionMat()
    print(projection_mat)
    full = projection_mat.xform(VBase4(point[0], point[1], point[2], 1.0))
    if full[3] == 0.0:
        # There is no meaningful projection for the nodal point of the lens.
        # So return a value that is Very Far Away.
        return (1000000.0, 1000000.0, -1000000.0)

    recip_full3 = 1.0 / full[3]
    return (full[0] * recip_full3, full[1] * recip_full3,
            full[2] * recip_full3)
    def startGame(self):
        '''
        Start the game
        '''

        base.enableParticles()
        # self.p = ParticleEffect()
        # self.loadParticleConfig('./data.parcticles/blowout_fire.ptf')
        # Start of the code from steam.ptf
        # self.p.cleanup()
        self.p = ParticleEffect()
        self.p.loadConfig('./data/particles/blowout_test.ptf')
        # Sets particles to birth relative to the teapot, but to render at toplevel
        self.p.start(render)
        self.p.setPos(0.000, 0.000, 0)

        # Load the Lights
        ambilight = AmbientLight('ambilight')
        ambilight.setColor(VBase4(0.2, 0.2, 0.2, 1))
        render.setLight(render.attachNewNode(ambilight))
Exemple #7
0
    def __init__(self, cr):
        DistributedObject.__init__(self, cr)

        self._waitingStartLabel = DirectLabel(
            text=TTL.MinigameWaitingForOtherPlayers,
            text_fg=VBase4(1, 1, 1, 1),
            relief=None,
            pos=(-0.6, 0, -0.75),
            scale=0.075)
        self._waitingStartLabel.hide()

        self.loadFSM = ClassicFSM.ClassicFSM(
            'DistCogdoGame.loaded',
            [
                State.State('NotLoaded', self.enterNotLoaded,
                            self.exitNotLoaded, ['Loaded']),
                State.State('Loaded', self.enterLoaded, self.exitLoaded,
                            ['NotLoaded'])
            ],
            # Initial state
            'NotLoaded',
            # Final state
            'NotLoaded')

        self.fsm = ClassicFSM.ClassicFSM(
            'DistCogdoGame',
            [
                State.State('Intro', self.enterIntro, self.exitIntro,
                            ['WaitServerStart']),
                State.State('WaitServerStart', self.enterWaitServerStart,
                            self.exitWaitServerStart, ['Game']),
                State.State('Game', self.enterGame, self.exitGame, ['Finish']),
                State.State('Finish', self.enterFinish, self.exitFinish,
                            ['Off']),
                State.State('Off', self.enterOff, self.exitOff, ['Intro'])
            ],
            # Initial state
            'Off',
            # Final state
            'Off')
        self.fsm.enterInitialState()
Exemple #8
0
    def __createEnvironment(self):
        # Fog
        expfog = Fog("scene-wide-fog")
        expfog.setColor(0.5, 0.5, 0.5)
        expfog.setExpDensity(0.002)
        self.render.setFog(expfog)

        # Our sky
        skysphere = self.loader.loadModel('volume1/models/blue-sky-sphere')
        skysphere.setEffect(CompassEffect.make(self.render))
        skysphere.setScale(0.08)
        # NOT render or you'll fly through the sky!:
        skysphere.reparentTo(self.camera)

        # Our lighting
        ambientLight = AmbientLight("ambientLight")
        ambientLight.setColor(Vec4(.6, .6, .6, 1))
        self.render.setLight(self.render.attachNewNode(ambientLight))

        directionalLight = DirectionalLight("directionalLight")
        directionalLight.setColor(VBase4(0.8, 0.8, 0.5, 1))
        dlnp = self.render.attachNewNode(directionalLight)
        dlnp.setPos(0, 0, 260)
        dlnp.setHpr(225, -60, 0)  #lookAt(self.player)
        self.render.setLight(dlnp)

        # water
        self.water = self.loader.loadModel('volume1/models/square.egg')
        self.water.setSx(self.worldsize * 2)
        self.water.setSy(self.worldsize * 2)
        self.water.setPos(self.worldsize / 2, self.worldsize / 2,
                          18)  # sea level
        self.water.setTransparency(TransparencyAttrib.MAlpha)
        nTS = TextureStage('1')
        self.water.setTexture(
            nTS, self.loader.loadTexture('volume1/models/water.png'))
        self.water.setTexScale(nTS, 4)
        self.water.reparentTo(self.render)
        LerpTexOffsetInterval(self.water,
                              200, (1, 0), (0, 0),
                              textureStage=nTS).loop()
 def _updateVictoryBar(self):
     if not ( hasattr(self, "_victoryBalanceBar") and self._victoryBalanceBar):
         return
     netDistance = 0
     for cog in self.cogs:
         netDistance = netDistance + cog.targetDistance
     teamDistance = netDistance/6.0
     self._victoryBalanceBarOrange.setScale(PartyGlobals.CogActivityBarStartScale + \
                                                         (teamDistance * 10 * PartyGlobals.CogActivityBarUnitScale),1.0,1.0)
     #self._victoryBalanceBar["value"] = 50 + (netDistance/6 * 100)
     self._victoryBalanceBarPie.setX(PartyGlobals.CogActivityVictoryBarPiePos[0] + \
                                                   (teamDistance * 10 *PartyGlobals.CogActivityBarPieUnitMove))         
     self._victoryBalanceBarPie.setY(PartyGlobals.CogActivityVictoryBarPiePos[1])        
     self._victoryBalanceBarPie.setZ(PartyGlobals.CogActivityVictoryBarPiePos[2])       
     
     if teamDistance>0.0:
         self._victoryBalanceBarArrow.setColor(PartyGlobals.CogActivityColors[1])
     elif teamDistance<0.0:
         self._victoryBalanceBarArrow.setColor(PartyGlobals.CogActivityColors[0])
     else:
         self._victoryBalanceBarArrow.setColor(VBase4(1.0,1.0,1.0,1.0))
 def __init__(self, cr):
     DistributedObject.__init__(self, cr)
     base.cogdoGame = self
     cr.cogdoGame = self
     self._waitingStartLabel = DirectLabel(
         text=TTL.MinigameWaitingForOtherPlayers,
         text_fg=VBase4(1, 1, 1, 1),
         relief=None,
         pos=(-0.6, 0, -0.75),
         scale=0.075)
     self._waitingStartLabel.hide()
     self.loadFSM = ClassicFSM.ClassicFSM('DistCogdoGame.loaded', [
         State.State('NotLoaded', self.enterNotLoaded, self.exitNotLoaded,
                     ['Loaded']),
         State.State('Loaded', self.enterLoaded, self.exitLoaded,
                     ['NotLoaded'])
     ], 'NotLoaded', 'NotLoaded')
     self.loadFSM.enterInitialState()
     self.fsm = ClassicFSM.ClassicFSM('DistCogdoGame', [
         State.State('Visible', self.enterVisible, self.exitVisible,
                     ['Intro']),
         State.State('Intro', self.enterIntro, self.exitIntro,
                     ['WaitServerStart']),
         State.State('WaitServerStart', self.enterWaitServerStart,
                     self.exitWaitServerStart, ['Game']),
         State.State('Game', self.enterGame, self.exitGame, ['Finish']),
         State.State('Finish', self.enterFinish, self.exitFinish, ['Off']),
         State.State('Off', self.enterOff, self.exitOff, ['Visible'])
     ], 'Off', 'Off')
     self.fsm.enterInitialState()
     self.difficultyOverride = None
     self.exteriorZoneOverride = None
     self._gotInterior = StateVar(False)
     self._toonsInEntranceElev = StateVar(False)
     self._wantStashElevator = StateVar(False)
     self._stashElevatorFC = FunctionCall(self._doStashElevator,
                                          self._toonsInEntranceElev,
                                          self._gotInterior,
                                          self._wantStashElevator)
     return
Exemple #11
0
    def initNode(self):
        '''
        Create a clear menu
        '''
        self.camera = None
        self.selected = 0
        self.options = []
        self.optionsModells = []
        self.menuNode = NodePath("menuNode")
        self.menuNode.reparentTo(render)
        self.menuNode.setPos(-4.5, 15, 3)
        self.menuNode.setH(40)

        self.colorA = Vec4(1, 1, 0, 0)
        self.colorB = Vec4(0, 1, 1, 0)

        # LICHT
        plight = PointLight('plight')
        plight.setColor(VBase4(10, 10, 10, 1))
        plnp = self.menuNode.attachNewNode(plight)
        plnp.setPos(-10, -800, 20)
        self.menuNode.setLight(plnp)
 def enterFree(self):
     if self.fadeTrack:
         self.fadeTrack.finish()
         self.fadeTrack = None
     self.restoreScaleTrack = Sequence(Wait(6),
                                       self.getRestoreScaleInterval(),
                                       name='restoreScaleTrack')
     self.restoreScaleTrack.start()
     if self.avId == localAvatar.doId:
         if not self.isDisabled():
             self.ballModel.setAlphaScale(0.3)
             self.ballModel.setTransparency(1)
             taskMgr.doMethodLater(5, self.__allowDetect, self.triggerName)
             self.fadeTrack = Sequence(Func(self.ballModel.setTransparency,
                                            1),
                                       self.ballModel.colorScaleInterval(
                                           0.2, VBase4(1, 1, 1, 0.3)),
                                       name='fadeTrack-enterFree')
             self.fadeTrack.start()
     else:
         self.trigger.unstash()
         self.accept(self.triggerEvent, self.__hitTrigger)
     self.avId = 0
Exemple #13
0
    def assign_display_region_to_camera(self):

        for i in range(0, len(self.display_regions)):
            display_region = self.display_regions[i]
            display_region.setClearColor(VBase4(0, 0, 0, 1))
            display_region.setClearColorActive(True)
            display_region.setClearDepthActive(True)
            if i == 0:
                display_region.setCamera(self.default_camera)
            else:
                camera_list = self.model.getCameraList()
                index = i - 1
                if index < len(camera_list):
                    camera = camera_list[index]
                    """camera_pos = camera.pos
		    print camera_pos
		    x_2d = (camera_pos[0]+90)*1.7/HEIGHT
		    y_2d = -camera_pos[2]*1.0/HEIGHT
		    print x_2d, " ", y_2d, "\n"
		    marker = makeArc(x_2d, y_2d)
		    marker.reparentTo(self.new_window_aspect2d)"""
                    camera_np = camera.getCameraNode()
                    display_region.setCamera(camera_np)
    def __init__(self):
        self.avatar = None
        self.active = True
        self.objectCode = None
        self.chatButton = NametagGlobals.noButton
        self.chatReversed = False
        self.font = None
        self.chatFont = None
        self.shadow = None
        self.marginManager = None
        self.visible3d = True
        self.chatType = NametagGlobals.CHAT
        self.chatBalloonType = NametagGlobals.CHAT_BALLOON
        self.nametagColor = NametagGlobals.NametagColors[
            NametagGlobals.CCNormal]
        self.chatColor = NametagGlobals.ChatColors[NametagGlobals.CCNormal]
        self.speedChatColor = VBase4(1, 1, 1, 1)
        self.wordWrap = 8
        self.chatWordWrap = 12
        self.text = ''
        self.chatPages = []
        self.chatPageIndex = 0
        self.chatTimeoutTask = None
        self.chatTimeoutTaskName = self.getUniqueName() + '-timeout'
        self.stompChatText = ''
        self.stompTask = None
        self.stompTaskName = self.getUniqueName() + '-stomp'
        self.icon = PandaNode('icon')
        self.nametag2d = Nametag2d()
        self.nametag3d = Nametag3d()
        self.nametags = set()
        self.add(self.nametag2d)
        self.add(self.nametag3d)

        # Add the tick task:
        self.tickTaskName = self.getUniqueName() + '-tick'
        self.tickTask = taskMgr.add(self.tick, self.tickTaskName, sort=45)
    def buildSpotlight(self, pos, fov, exponent, casts_shadow, shadow_caster,
                       pitch, near, far, color):
        """
    Builds a Panda3D Spotlight at the specified position with the specified
    field of view and color
    """
        self.light_counter += 1
        light = Spotlight("light%s" % self.light_counter)
        if casts_shadow:
            x, y = shadow_caster
            light.setShadowCaster(True, x, y)
            light.getLens().setFar(far)
        else:
            light.setShadowCaster(False)
            light.getLens().setFar(2)
        light.setColor(VBase4(*color))
        light.getLens().setNear(near)
        lightnp = render.attachNewNode(light)
        lightnp.setPos(*pos)
        lightnp.setP(pitch)
        light.getLens().setFov(fov)

        light.setExponent(exponent)
        return lightnp
 def __enableControlInterface(self):
     gui = loader.loadModel('phase_3.5/models/gui/avatar_panel_gui')
     self.closeButton = DirectButton(image=(gui.find('**/CloseBtn_UP'),
      gui.find('**/CloseBtn_DN'),
      gui.find('**/CloseBtn_Rllvr'),
      gui.find('**/CloseBtn_UP')), relief=None, scale=2, text=TTLocalizer.BossbotPitcherLeave, text_scale=0.04, text_pos=(0, -0.07), text_fg=VBase4(1, 1, 1, 1), pos=(1.05, 0, -0.82), command=self.__exitPitcher)
     self.accept('escape', self.__exitPitcher)
     self.accept(base.JUMP, self.__controlPressed)
     self.accept('control-up', self.__controlReleased)
     self.accept('InputState-forward', self.__upArrow)
     self.accept('InputState-reverse', self.__downArrow)
     self.accept('InputState-turnLeft', self.__leftArrow)
     self.accept('InputState-turnRight', self.__rightArrow)
     self.accept(base.MOVE_UP, self.__upArrowKeyPressed)
     self.accept(base.MOVE_DOWN, self.__downArrowKeyPressed)
     taskMgr.add(self.__watchControls, self.watchControlsName)
     taskMgr.doMethodLater(5, self.__displayPitcherAdvice, self.pitcherAdviceName)
     self.arrowVert = 0
     self.arrowHorz = 0
     self.powerBar.show()
     return
 def __allowDetect(self, task):
     if self.fadeTrack:
         self.fadeTrack.finish()
     self.fadeTrack = Sequence(self.tableGroup.colorScaleInterval(0.2, VBase4(1, 1, 1, 1)), Func(self.tableGroup.clearColorScale), Func(self.tableGroup.clearTransparency))
     self.fadeTrack.start()
     self.allowLocalRequestControl = True
 def _createPartyEditorPage(self):
     page = DirectFrame(self.frame)
     page.setName('PartyPlannerEditorPage')
     self.LayoutTitleLabel = DirectLabel(parent=page, relief=None, text=TTLocalizer.PartyPlannerEditorTitle, pos=self.gui.find('**/title_locator').getPos() + Point3(0.0, 0.0, 0.075), scale=self.titleScale)
     self.costLabel = DirectLabel(parent=page, pos=(-0.74, 0.0, 0.17), relief=None, text=TTLocalizer.PartyPlannerTotalCost % 0, text_align=TextNode.ACenter, scale=TTLocalizer.PPcostLabel, textMayChange=True)
     self.partyGridBackground = DirectFrame(parent=page, relief=None, geom=self.gui.find('**/partyGrid_flat'))
     self.partyGroundsLabel = DirectLabel(parent=page, relief=None, text=TTLocalizer.PartyPlannerPartyGrounds, text_font=ToontownGlobals.getSignFont(), text_fg=VBase4(1.0, 0.0, 0.0, 1.0), text_scale=TTLocalizer.PPpartyGroundsLabel, pos=self.gui.find('**/step_05_partyGrounds_text_locator').getPos(), scale=0.1)
     self.activityBackground = DirectFrame(parent=page, relief=None, geom=self.gui.find('**/activitiesDecorations_flat1'), pos=(0.0, 0.0, 0.04))
     pos = self.gui.find('**/step_05_instructions_locator').getPos()
     self.instructionLabel = DirectLabel(parent=page, relief=None, text=' ', text_pos=(pos[0], pos[2]), text_scale=TTLocalizer.PPinstructionLabel, textMayChange=True, geom=self.gui.find('**/instructions_flat'))
     self.elementTitleLabel = DirectLabel(parent=page, relief=None, text=' ', pos=self.gui.find('**/step_05_activitiesName_text_locator').getPos() + Point3(0.0, 0.0, 0.04), text_scale=TTLocalizer.PPelementTitleLabel, textMayChange=True)
     self.elementPriceNode = TextNode('ElementPrice')
     self.elementPriceNode.setAlign(TextNode.ALeft)
     self.elementPriceNode.setTextColor(0.0, 0.0, 0.0, 1.0)
     self.elementPriceNode.setFont(ToontownGlobals.getToonFont())
     self.elementPrice = page.attachNewNode(self.elementPriceNode)
     self.elementPrice.setScale(TTLocalizer.PPelementPriceNode)
     self.elementPrice.setPos(self.gui.find('**/step_05_activityPrice_text_locator').getPos() + Point3(-0.02, 0.0, 0.04))
     self.elementDescriptionNode = TextNode('ElementDescription')
     self.elementDescriptionNode.setAlign(TextNode.ACenter)
     self.elementDescriptionNode.setWordwrap(8)
     self.elementDescriptionNode.setFont(ToontownGlobals.getToonFont())
     self.elementDescriptionNode.setTextColor(0.0, 0.0, 0.0, 1.0)
     self.elementDescription = page.attachNewNode(self.elementDescriptionNode)
     self.elementDescription.setScale(TTLocalizer.PPelementDescription)
     self.elementDescription.setPos(self.gui.find('**/step_05_activityDescription_text_locator').getPos() + Point3(0.0, 0.0, 0.04))
     self.totalMoney = base.localAvatar.getTotalMoney()
     catalogGui = loader.loadModel('phase_5.5/models/gui/catalog_gui')
     self.beanBank = DirectLabel(parent=page, relief=None, text=str(self.totalMoney), text_align=TextNode.ARight, text_scale=0.075, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0.495, -0.53), text_font=ToontownGlobals.getSignFont(), textMayChange=True, image=catalogGui.find('**/bean_bank'), image_scale=(0.65, 0.65, 0.65), scale=0.9, pos=(-0.75, 0.0, 0.6))
     catalogGui.removeNode()
     del catalogGui
     self.accept(localAvatar.uniqueName('moneyChange'), self.__moneyChange)
     self.accept(localAvatar.uniqueName('bankMoneyChange'), self.__moneyChange)
     self.partyEditor = PartyEditor(self, page)
     self.partyEditor.request('Hidden')
     pos = self.gui.find('**/step_05_add_text_locator').getPos()
     self.elementBuyButton = DirectButton(parent=page, relief=None, text=TTLocalizer.PartyPlannerBuy, text_pos=(pos[0], pos[2]), text_scale=TTLocalizer.PPelementBuyButton, geom=(self.gui.find('**/add_up'), self.gui.find('**/add_down'), self.gui.find('**/add_rollover')), geom3_color=VBase4(0.5, 0.5, 0.5, 1.0), textMayChange=True, pos=(0.0, 0.0, 0.04), command=self.partyEditor.buyCurrentElement)
     self.okWithPartyGroundsLayoutEvent = 'okWithPartyGroundsLayoutEvent'
     self.accept(self.okWithPartyGroundsLayoutEvent, self.okWithPartyGroundsLayout)
     self.okWithGroundsGui = TTDialog.TTGlobalDialog(dialogName=self.uniqueName('PartyEditorOkGui'), doneEvent=self.okWithPartyGroundsLayoutEvent, message=TTLocalizer.PartyPlannerOkWithGroundsLayout, style=TTDialog.YesNo, okButtonText=OTPLocalizer.DialogYes, cancelButtonText=OTPLocalizer.DialogNo)
     self.okWithGroundsGui.doneStatus = ''
     self.okWithGroundsGui.hide()
     return page
Exemple #19
0
        arrow.set_length(start_length)
    else:
        t = task.time % time_to_full_length
        t = t / time_to_full_length
        length_diff = max_length - start_length
        new_length = start_length + t * length_diff
        arrow.set_length(new_length)
    return Task.cont


if __name__ == "__main__":
    from direct.directbase import DirectStart
    global base, render
    print "Arrow::main"
    arrow = Arrow()
    arrow.set_angle_x_z_plane(45)
    #arrow.set_length(0.5)
    base.disableMouse()
    base.camera.setPos(0, -5, .5)

    #taskMgr.add(rotate, 'rotate', extraArgs=[arrow.root_node_path,0.05,0], appendTask=True)
    #taskMgr.add(scale, 'scale', extraArgs=[arrow,1.0,0.5,1.0], appendTask=True)

    plight = PointLight('plight')
    plight.setColor(VBase4(1, 1, 1, 1))
    plnp = render.attachNewNode(plight)
    plnp.setPos(0, -10, 0)
    render.setLight(plnp)

    run()

def getModelWidthHeight(model):
    tightBounds = model.getTightBounds()
    if tightBounds is None:
        return 0, 0
    minPoint, maxPoint = tightBounds
    width = maxPoint.getX() - minPoint.getX()
    height = maxPoint.getZ() - minPoint.getZ()
    return width, height


# Foreground, background:
NametagColors = {
    CCNormal: (
        (VBase4(0.3, 0.3, 0.7, 1.0), VBase4(0.8, 0.8, 0.8, 0.375)),  # Normal
        (VBase4(0.3, 0.3, 0.7, 1.0), VBase4(0.2, 0.2, 0.2, 0.1875)),  # Down
        (VBase4(0.5, 0.5, 1.0, 1.0), VBase4(1.0, 1.0, 1.0,
                                            0.5625)),  # Rollover
        (VBase4(0.3, 0.3, 0.7, 1.0), VBase4(1.0, 1.0, 1.0, 0.375))  # Disabled
    ),
    CCNoChat: (
        (VBase4(0.8, 0.4, 0.0, 1.0), VBase4(0.8, 0.8, 0.8, 0.375)),  # Normal
        (VBase4(1.0, 0.5, 0.5, 1.0), VBase4(0.2, 0.2, 0.2, 0.1875)),  # Click
        (VBase4(1.0, 0.5, 0.0, 1.0), VBase4(1.0, 1.0, 1.0,
                                            0.5625)),  # Rollover
        (VBase4(0.8, 0.4, 0.0, 1.0), VBase4(0.8, 0.8, 0.8, 0.375))  # Disabled
    ),
    CCNonPlayer: (
        (VBase4(0.8, 0.4, 0.0, 1.0), VBase4(0.8, 0.8, 0.8, 0.375)),  # Normal
        (VBase4(0.8, 0.4, 0.0, 1.0), VBase4(0.8, 0.8, 0.8, 0.1875)),  # Down
 def exitInputChoice(self):
     if not self.controlKeyPressed:
         if self.controlKeyWarningIval:
             self.controlKeyWarningIval.finish()
             self.controlKeyWarningIval = None
         self.controlKeyWarningIval = Sequence(Func(self.controlKeyWarningLabel.show), self.controlKeyWarningLabel.colorScaleInterval(10, VBase4(1, 1, 1, 0), startColorScale=VBase4(1, 1, 1, 1)), Func(self.controlKeyWarningLabel.hide))
         self.controlKeyWarningIval.start()
     if self.timer != None:
         self.timer.destroy()
         self.timer = None
     self.timerStartTime = None
     self.hideForceArrows()
     self.arrowRotateSound.stop()
     self.arrowUpSound.stop()
     self.arrowDownSound.stop()
     taskMgr.remove(self.uniqueName('aimtask'))
     return
Exemple #22
0
 def __blink(self, task):
     blink = Sequence(LerpColorScaleInterval(self.suit, Globals.BlinkSpeed, VBase4(1.0, 1.0, 1.0, 1.0)), LerpColorScaleInterval(self.suit, Globals.BlinkSpeed, 
         Globals.BlinkColor))
     
     blink.start()
     return Task.again
 def __init__(self, cr):
     DistributedMinigame.DistributedMinigame.__init__(self, cr)
     DistributedIceWorld.DistributedIceWorld.__init__(self, cr)
     self.gameFSM = ClassicFSM.ClassicFSM('DistributedIceGame', [
         State.State('off', self.enterOff, self.exitOff, ['inputChoice']),
         State.State(
             'inputChoice', self.enterInputChoice, self.exitInputChoice,
             ['waitServerChoices', 'moveTires', 'displayVotes', 'cleanup']),
         State.State('waitServerChoices', self.enterWaitServerChoices,
                     self.exitWaitServerChoices, ['moveTires', 'cleanup']),
         State.State('moveTires', self.enterMoveTires, self.exitMoveTires,
                     ['synch', 'cleanup']),
         State.State('synch', self.enterSynch, self.exitSynch,
                     ['inputChoice', 'scoring', 'cleanup']),
         State.State('scoring', self.enterScoring, self.exitScoring,
                     ['cleanup', 'finalResults', 'inputChoice']),
         State.State('finalResults', self.enterFinalResults,
                     self.exitFinalResults, ['cleanup']),
         State.State('cleanup', self.enterCleanup, self.exitCleanup, [])
     ], 'off', 'cleanup')
     self.addChildGameFSM(self.gameFSM)
     self.cameraThreeQuarterView = (0, -22, 45, 0, -62.890000000000001, 0)
     self.tireDict = {}
     self.forceArrowDict = {}
     self.canDrive = False
     self.timer = None
     self.timerStartTime = None
     self.curForce = 0
     self.curHeading = 0
     self.headingMomentum = 0.0
     self.forceMomentum = 0.0
     self.allTireInputs = None
     self.curRound = 0
     self.curMatch = 0
     self.controlKeyWarningLabel = DirectLabel(
         text=TTLocalizer.IceGameControlKeyWarning,
         text_fg=VBase4(1, 0, 0, 1),
         relief=None,
         pos=(0.0, 0, 0),
         scale=0.14999999999999999)
     self.controlKeyWarningLabel.hide()
     self.waitingMoveLabel = DirectLabel(
         text=TTLocalizer.IceGameWaitingForPlayersToFinishMove,
         text_fg=VBase4(1, 1, 1, 1),
         relief=None,
         pos=(-0.59999999999999998, 0, -0.75),
         scale=0.074999999999999997)
     self.waitingMoveLabel.hide()
     self.waitingSyncLabel = DirectLabel(
         text=TTLocalizer.IceGameWaitingForAISync,
         text_fg=VBase4(1, 1, 1, 1),
         relief=None,
         pos=(-0.59999999999999998, 0, -0.75),
         scale=0.074999999999999997)
     self.waitingSyncLabel.hide()
     self.infoLabel = DirectLabel(text='',
                                  text_fg=VBase4(0, 0, 0, 1),
                                  relief=None,
                                  pos=(0.0, 0, 0.69999999999999996),
                                  scale=0.074999999999999997)
     self.updateInfoLabel()
     self.lastForceArrowUpdateTime = 0
     self.sendForceArrowUpdateAsap = False
     self.treasures = []
     self.penalties = []
     self.obstacles = []
     self.controlKeyPressed = False
     self.controlKeyWarningIval = None
 def __displayPitcherAdvice(self, task):
     if self.pitcherAdviceLabel == None:
         self.pitcherAdviceLabel = DirectLabel(text=TTLocalizer.BossbotPitcherAdvice, text_fg=VBase4(1, 1, 1, 1), text_align=TextNode.ACenter, relief=None, pos=(0, 0, 0.69), scale=0.1)
     return
 def showExiting(self):
     if self.closeButton:
         self.closeButton.destroy()
         self.closeButton = DirectLabel(relief=None, text=TTLocalizer.BossbotPitcherLeaving, pos=(1.05, 0, -0.88), text_pos=(0, 0), text_scale=0.06, text_fg=VBase4(1, 1, 1, 1))
     self.__cleanupPitcherAdvice()
     return
Exemple #26
0
# SuitGlobals are used to set the appearance of Cogs.
from toontown.suit import SuitDNA
from pandac.PandaModules import VBase4

SCALE_INDEX = 0  # The scale of the cog
HAND_COLOR_INDEX = 1  # The hand color
HEADS_INDEX = 2  # A list of heads
HEAD_TEXTURE_INDEX = 3  # The texture to use for the head
HEIGHT_INDEX = 4  # The height of the cog

aSize = 6.06  # Size of body type 'a'
bSize = 5.29  # Size of body type 'b'
cSize = 4.14  # Size of body type 'c'

ColdCallerHead = VBase4(0.25, 0.35, 1.0, 1.0)  # Head used by Cold Caller

# Bossbots
suitProperties = {
    'f': (4.0 / cSize, SuitDNA.corpPolyColor, ['flunky', 'glasses'], '', 4.88),
    'p': (3.35 / bSize, SuitDNA.corpPolyColor, ['pencilpusher'], '', 5.0),
    'ym': (4.125 / aSize, SuitDNA.corpPolyColor, ['yesman'], '', 5.28),
    'mm': (2.5 / cSize, SuitDNA.corpPolyColor, ['micromanager'], '', 3.25),
    'ds': (4.5 / bSize, SuitDNA.corpPolyColor, ['beancounter'], '', 6.08),
    'hh': (6.5 / aSize, SuitDNA.corpPolyColor, ['headhunter'], '', 7.45),
    'cr':
    (6.75 / cSize, VBase4(0.85, 0.55, 0.55,
                          1.0), ['flunky'], 'corporate-raider.jpg', 8.23),
    'tbc': (7.0 / aSize, VBase4(0.75, 0.95, 0.75,
                                1.0), ['bigcheese'], '', 9.34),
    # Lawbots
    'bf': (4.0 / cSize, SuitDNA.legalPolyColor, ['tightwad'],
    def enterScoring(self):
        sortedByDistance = []
        for avId in self.avIdList:
            np = self.getTireNp(avId)
            pos = np.getPos()
            pos.setZ(0)
            sortedByDistance.append((avId, pos.length()))

        def compareDistance(x, y):
            if x[1] - y[1] > 0:
                return 1
            elif x[1] - y[1] < 0:
                return -1
            else:
                return 0

        sortedByDistance.sort(cmp=compareDistance)
        self.scoreMovie = Sequence()
        curScale = 0.01
        curTime = 0
        self.scoreCircle.setScale(0.01)
        self.scoreCircle.show()
        self.notify.debug('newScores = %s' % self.newScores)
        circleStartTime = 0
        for index in xrange(len(sortedByDistance)):
            distance = sortedByDistance[index][1]
            avId = sortedByDistance[index][0]
            scorePanelIndex = self.avIdList.index(avId)
            time = (distance - curScale) / IceGameGlobals.ExpandFeetPerSec
            if time < 0:
                time = 0.01

            scaleXY = distance + IceGameGlobals.TireRadius
            self.notify.debug('circleStartTime = %s' % circleStartTime)
            self.scoreMovie.append(
                Parallel(
                    LerpScaleInterval(self.scoreCircle, time,
                                      Point3(scaleXY, scaleXY, 1.0)),
                    SoundInterval(self.scoreCircleSound,
                                  duration=time,
                                  startTime=circleStartTime)))
            circleStartTime += time
            startScore = self.scorePanels[scorePanelIndex].getScore()
            destScore = self.newScores[scorePanelIndex]
            self.notify.debug('for avId %d, startScore=%d, newScores=%d' %
                              (avId, startScore, destScore))

            def increaseScores(t,
                               scorePanelIndex=scorePanelIndex,
                               startScore=startScore,
                               destScore=destScore):
                oldScore = self.scorePanels[scorePanelIndex].getScore()
                diff = destScore - startScore
                newScore = int(startScore + diff * t)
                if newScore > oldScore:
                    base.playSfx(self.countSound)

                self.scorePanels[scorePanelIndex].setScore(newScore)
                self.scores[scorePanelIndex] = newScore

            duration = (destScore -
                        startScore) * IceGameGlobals.ScoreCountUpRate
            tireNp = self.tireDict[avId]['tireNodePath']
            self.scoreMovie.append(
                Parallel(
                    LerpFunctionInterval(increaseScores, duration),
                    Sequence(
                        LerpColorScaleInterval(tireNp, duration / 6.0,
                                               VBase4(1, 0, 0, 1)),
                        LerpColorScaleInterval(tireNp, duration / 6.0,
                                               VBase4(1, 1, 1, 1)),
                        LerpColorScaleInterval(tireNp, duration / 6.0,
                                               VBase4(1, 0, 0, 1)),
                        LerpColorScaleInterval(tireNp, duration / 6.0,
                                               VBase4(1, 1, 1, 1)),
                        LerpColorScaleInterval(tireNp, duration / 6.0,
                                               VBase4(1, 0, 0, 1)),
                        LerpColorScaleInterval(tireNp, duration / 6.0,
                                               VBase4(1, 1, 1, 1)))))
            curScale += distance

        self.scoreMovie.append(
            Func(self.sendUpdate, 'reportScoringMovieDone', []))
        self.scoreMovie.start()
Exemple #28
0
BodyTextures = {
    'dots': 'phase_4/maps/BeanbodyDots6.jpg',
    'threeStripe': 'phase_4/maps/Beanbody3stripes6.jpg',
    'tigerStripe': 'phase_4/maps/BeanbodyZebraStripes6.jpg',
    'turtle': 'phase_4/maps/BeanbodyTurtle.jpg',
    'giraffe': 'phase_4/maps/BeanbodyGiraffe1.jpg',
    'leopard': 'phase_4/maps/BeanbodyLepord2.jpg',
    'tummy': 'phase_4/maps/BeanbodyTummy6.jpg'
}
FeetTextures = {
    'normal': 'phase_4/maps/BeanFoot6.jpg',
    'turtle': 'phase_4/maps/BeanFootTurttle.jpg',
    'giraffe': 'phase_4/maps/BeanFootYellow3.jpg',
    'leopard': 'phase_4/maps/BeanFootYellow3.jpg'
}
AllPetColors = (VBase4(1.0, 1.0, 1.0,
                       1.0), VBase4(0.96875, 0.691406, 0.699219, 1.0),
                VBase4(0.933594, 0.265625, 0.28125,
                       1.0), VBase4(0.863281, 0.40625, 0.417969, 1.0),
                VBase4(0.710938, 0.234375, 0.4375,
                       1.0), VBase4(0.570312, 0.449219, 0.164062, 1.0),
                VBase4(0.640625, 0.355469, 0.269531,
                       1.0), VBase4(0.996094, 0.695312, 0.511719,
                                    1.0), VBase4(0.832031, 0.5, 0.296875, 1.0),
                VBase4(0.992188, 0.480469, 0.167969,
                       1.0), VBase4(0.996094, 0.898438, 0.320312, 1.0),
                VBase4(0.996094, 0.957031, 0.597656,
                       1.0), VBase4(0.855469, 0.933594, 0.492188, 1.0),
                VBase4(0.550781, 0.824219, 0.324219,
                       1.0), VBase4(0.242188, 0.742188, 0.515625, 1.0),
                VBase4(0.304688, 0.96875, 0.402344,
                       1.0), VBase4(0.433594, 0.90625, 0.835938, 1.0),
FireworksPostLaunchDelay = 5.0
RocketSoundDelay = 2.0
RocketDirectionDelay = 2.0
FireworksStartedEvent = 'PartyFireworksStarted'
FireworksFinishedEvent = 'PartyFireworksFinished'
FireworksTransitionToDisabledDelay = 3.0
TeamActivityTeams = PythonUtil.Enum(('LeftTeam', 'RightTeam'), start=0)
TeamActivityNeitherTeam = 3
TeamActivityTextScale = 0.135
TeamActivityStartDelay = 8.0
TeamActivityClientWaitDelay = 30.0
TeamActivityDefaultMinPlayersPerTeam = 1
TeamActivityDefaultMaxPlayersPerTeam = 4
TeamActivityDefaultDuration = 60.0
TeamActivityDefaultConclusionDuration = 4.0
TeamActivityStatusColor = VBase4(1.0, 1.0, 0.65, 1.0)
CogActivityBalanceTeams = True
CogActivityStartDelay = 15.0
CogActivityConclusionDuration = 12
CogActivityDuration = 90
CogActivityMinPlayersPerTeam = 1
CogActivityMaxPlayersPerTeam = 4
CogActivityColors = (VBase4(0.22, 0.4, 0.98, 1.0), VBase4(1.0, 0.43, 0.04, 1.0))
CogActivitySplatColorBase = VBase4(0.98, 0.9, 0.094, 1.0)
CogActivitySplatColors = (VBase4(CogActivityColors[0][0] / CogActivitySplatColorBase[0], CogActivityColors[0][1] / CogActivitySplatColorBase[1], CogActivityColors[0][2] / CogActivitySplatColorBase[2], 1.0), VBase4(CogActivityColors[1][0] / CogActivitySplatColorBase[0], CogActivityColors[1][1] / CogActivitySplatColorBase[1], CogActivityColors[1][2] / CogActivitySplatColorBase[2], 1.0))
CogPinataHeadZ = 4.7
CogActivityHitPoints = 1
CogActivityHitPointsForHead = 3
CogPinataPushBodyFactor = 0.05
CogPinataPushHeadFactor = CogPinataPushBodyFactor * abs(CogActivityHitPointsForHead - CogActivityHitPoints)
CogActivityAvgBeansPerSecond = 0.15
Exemple #30
0
    def __init__(self):
        """Initialise the scene."""

        # Show the framerate
        base.setFrameRateMeter(True)

        # Initialise terrain:
        # Make 4 terrain nodepath objects with different hilliness values
        # and arrange them side-by-side in a 2x2 grid, giving a big terrain
        # with variable hilly and flat areas.

        color = (0.6, 0.8, 0.5, 1)  # Bright green-ish
        scale = 12
        height = 18  # FIXME: For now we are raising the terrain so it
        # floats above the sea to prevent lakes from
        # appearing (but you still get them sometimes)

        t1 = Terrain(color=color,
                     scale=scale,
                     trees=0.7,
                     pos=P.Point3(0, 0, height))
        t1.prime.reparentTo(render)
        t2 = Terrain(color=color,
                     scale=scale,
                     h=24,
                     pos=P.Point3(32 * scale, 0, height),
                     trees=0.5)
        t2.prime.reparentTo(render)
        t3 = Terrain(color=color,
                     scale=scale,
                     h=16,
                     pos=P.Point3(32 * scale, 32 * scale, height),
                     trees=0.3)
        t3.prime.reparentTo(render)
        t4 = Terrain(color=color,
                     scale=scale,
                     h=2,
                     pos=P.Point3(0, 32 * scale, height),
                     trees=0.9)
        t4.prime.reparentTo(render)

        #tnp1.setPos(tnp1,-32,-32,terrainHeight)

        # Initialise sea
        sea = Sea()

        # Initialise skybox.
        self.box = loader.loadModel("models/skybox/space_sky_box.x")
        self.box.setScale(6)
        self.box.reparentTo(render)

        # Initialise characters
        self.characters = []
        self.player = C.Character(model='models/eve',
                                  run='models/eve-run',
                                  walk='models/eve-walk')
        self.player.prime.setZ(100)
        self.player._pos = SteerVec(32 * 12 + random.random() * 100,
                                    32 * 12 + random.random() * 100)
        self.player.maxforce = 0.4
        self.player.maxspeed = 0.55
        EdgeScreenTracker(self.player.prime, dist=200)  # Setup camera
        for i in range(0, 11):
            self.characters.append(C.Character())
            self.characters[i].prime.setZ(100)
            self.characters[i].wander()
            self.characters[i].maxforce = 0.3
            self.characters[i].maxspeed = 0.2
            self.characters[i]._pos = SteerVec(32 * 12 + random.random() * 100,
                                               32 * 12 + random.random() * 100)

        C.setContainer(
            ContainerSquare(pos=SteerVec(32 * 12, 32 * 12), radius=31 * 12))

        #C.toggleAnnotation()

        # Initialise keyboard controls.
        self.accept("c", C.toggleAnnotation)
        self.accept("escape", sys.exit)

        # Setup CollisionRay and CollisionHandlerQueue for mouse picking.
        self.pickerQ = P.CollisionHandlerQueue()
        self.picker = camera.attachNewNode(
            P.CollisionNode('Picker CollisionNode'))
        self.picker.node().addSolid(P.CollisionRay())
        # We want the picker ray to collide with the floor and nothing else.
        self.picker.node().setFromCollideMask(C.floorMASK)
        self.picker.setCollideMask(P.BitMask32.allOff())
        base.cTrav.addCollider(self.picker, self.pickerQ)
        try:
            handler.addCollider(self.picker, camera)
        except:
            pass
        self.accept('mouse1', self.onClick)

        # Set the far clipping plane to be far enough away that we can see the
        # skybox.
        base.camLens.setFar(10000)

        # Initialise lighting
        self.alight = AmbientLight('alight')
        self.alight.setColor(VBase4(0.35, 0.35, 0.35, 1))
        self.alnp = render.attachNewNode(self.alight)
        render.setLight(self.alnp)

        self.dlight = DirectionalLight('dlight')
        self.dlight.setColor(VBase4(0.4, 0.4, 0.4, 1))
        self.dlnp = render.attachNewNode(self.dlight)
        self.dlnp.setHpr(45, -45, 0)
        render.setLight(self.dlnp)

        self.plight = PointLight('plight')
        self.plight.setColor(VBase4(0.8, 0.8, 0.5, 1))
        self.plnp = render.attachNewNode(self.plight)
        self.plnp.setPos(160, 160, 50)

        self.slight = Spotlight('slight')
        self.slight.setColor(VBase4(1, 1, 1, 1))
        lens = PerspectiveLens()
        self.slight.setLens(lens)
        self.slnp = render.attachNewNode(self.slight)
        self.slnp.setPos(-20, -20, 20)
        self.slnp.lookAt(50, 50, 0)

        # Initialise some scene-wide exponential fog
        colour = (0.5, 0.8, 0.8)
        self.expfog = Fog("Scene-wide exponential Fog object")
        self.expfog.setColor(*colour)
        self.expfog.setExpDensity(0.0005)
        render.setFog(self.expfog)
        base.setBackgroundColor(*colour)

        # Add a task for this Plant to the global task manager.
        self.stepcount = 0
        taskMgr.add(self.step, "Plant step task")