Пример #1
0
 def __init__(self, mouse):
     ShowBase.__init__(self)
     self.mouse = mouse
     self.joy_x = None
     self.joy_y = None
     props = WindowProperties()
     props.setMouseMode(WindowProperties.MRelative)  # keep mouse in screen
     self.disableMouse()
     self.win.requestProperties(props)
     self.setBackgroundColor(0, 0, 0)
     # Make missiles glow
     self.filters = CommonFilters(self.win, self.cam)
     self.filters.setBloom(blend=(0, 0, 0, 1), desat=-0.5, intensity=3.0, size="large")
     self.screen_width = self.win.getXSize()
     self.screen_height = self.win.getYSize()
     self.center_x = self.screen_width/2
     self.center_y = self.screen_height/2
     # self.win.movePointer(0, self.center_x, self.center_y)
     self.enableParticles()
     self.cTrav = CollisionTraverser()
     # self.cTrav.setRespectPrevTransform(True)
     self.pusher = PhysicsCollisionHandler()
     self.pusher.addInPattern('%fn-into-%in')
     self.target = None
     self.maxvel = 50
     self.roll_time = 0
     self.fuel = 1000
     self.ship()
     self.sounds()
     self.hud()
     self.part = Spacedust(self)
     self.events()
     self.camLens.setFov(70)
     self.camLens.setNear(1)
     self.camLens.setFar(500)
     self.get_key = {
         "ACCEL": False,
         "DECEL": False,
         "FORWARD_THRUST": False,
         "REVERSE_THRUST": False,
         "ROLL_LEFT": False,
         "ROLL_RIGHT": False,
         "ROLL_LEFT_BEG": False,
         "ROLL_RIGHT_BEG": False,
         "FIRE": False,
         "FIRING": False,
         "LOCK": False,
         "LOCKING": False,
     }
     self.AIworld = AIWorld(self.render)
     self.taskMgr.add(self.update, "task-update")
     self.taskMgr.doMethodLater(1, self.fuel_usage, "task-fuel-usage")
     self.taskMgr.add(self.AI_update, "AI-update")
     self.gen_enemy()
Пример #2
0
 def setAI(self):
     collisions = render.getPythonTag('WorldCollisions')
     collisions.addCogGroundCollision(self.cog)
     self.AIWorld = AIWorld(render)
     self.AIChar = AICharacter('Cog', self.cog.getCog(), -125, 90, -14)
     self.AIWorld.addAiChar(self.AIChar)
     self.AIBehaviors = self.AIChar.getAiBehaviors()
     if self.support == False:
         self.AIBehaviors.pathFollow(8)
         self.AIBehaviors.addToPath(VBase3(110.60, -0.32, 4.57))
         checkpoints = self.spawn.getPath().getCheckpoints()
         for checkpoint in xrange(len(checkpoints)):
             self.AIBehaviors.addToPath(checkpoints[checkpoint].getPos())
         self.AIBehaviors.startFollow()
     else:
         self.AIBehaviors.pursue(render.find('**/Toon'))
     self.cog.getCog().loop('walk')
     base.taskMgr.add(self.AIUpdate, "AIUpdate")
Пример #3
0
    def __init__(self):
        # self.load_assets()
        base.cTrav = CollisionTraverser()
        base.pusher = CollisionHandlerPusher()
        base.groundHandler = CollisionHandlerQueue()
        self.AIworld = AIWorld(render)
        ConfigRender.__init__(self)

        self.elapsedSeconds = 0
        self.sound = ConfigSound()
        self.rpgField = RPGField()
        self.enemyData = EnemyModel()
        self.itemData = ItemModel()
        self.magicData = MagicModel()
        self.cutsceneManager = CutsceneManager()
        # print(PandaSystem.getVersionString())
        self.load_fonts()

        # this needs to be called only when game starts
        taskMgr.add(self.updateTime, 'updateTime')
Пример #4
0
    def __init__(self):
        '''
        class constructor
        Creates environment, player objects
        '''
        # initialize
        #ShowBase.__init__(self)
        # set keybinds
        setKeybinds()
        mission = self
        self.nextValidSpawn = 0
        # handle collisions
        # collision traversal 'traverses' instances of collides
        base.cTrav = CollisionTraverser()  #switched to base
        base.pusher = CollisionHandlerPusher()  #switched to base

        base.pusher.addInPattern('entityCollision')
        base.groundHandler = CollisionHandlerQueue()
        # add catch-all handler
        #base.entityCollisionHandler.addInPattern('entityCollision')

        # handle entity collisions
        # pass to entityCollided
        base.accept('entityCollision', entityCollided)
        # handle bullet collisions
        # accept this event and pass it to method bulletCollided
        base.accept('bulletCollision', bulletCollided)

        # self.render references base.render
        self.render = base.render

        mission.CAPTURE_TIME = 15  #time to capture single flag
        mission.CAPTURE_RADIUS = 300  #radius that needs to be controlled to cap flag

        #cleanup is list that saves items to destroy on mission end
        base.cleanup = []
        # entities is list of all entities in gamespace. Used for applying gravity etc
        base.entities = []
        # also keep a running list of all structures
        base.structures = []

        #setup for AI
        base.AIworld = AIWorld(base.render)

        # load environment
        self.makeEnviron("example")

        # sfx handler for 3D audio
        #base.audio3d = Audio3DManager(base.sfxManagerList[0], base.camera)
        #background music
        self.music = base.loader.loadSfx("sounds/dramatic.ogg")
        self.music.setLoop(True)
        self.music.setVolume(0.15)
        self.music.play()

        # load GUI
        self.makeGUI()

        #set up player and camera
        #set mouse mode to relative
        base.disableMouse()
        setMouseMode(1)

        #find nodes in environment and store on game object
        self.team0Node = self.environment.find("**/team0")
        self.team0BaseNode = self.environment.find("**/team0base")
        self.team1Node = self.environment.find("**/team1")
        self.team1BaseNode = self.environment.find("**/team1base")

        #load occlusion nodes from environment
        #format in blender:
        #occlusion planes all parented to base level 'occluders' empty
        #occlusion planes named 'occluder#'
        occluder_nodes = self.environment.findAllMatches(
            '**/occluders/+OccluderNode')
        for occluder_nodepath in occluder_nodes:
            base.render.setOccluder(occluder_nodepath)
            occluder_nodepath.node().setDoubleSided(True)

        #for now will attempt to load up to 12 flags, and reject entries that don't work
        #TODO: dynamically load based on amount of flag nodes found
        #also may change capture time depending on flag
        self.flags = []
        self.outposts = []
        for i in range(12):
            thisFlag = self.environment.find("**/flag" + str(i))
            #only append if found successfully
            if thisFlag.error_type == 0:
                self.flags.append(thisFlag)
                thisFlag.setPythonTag('lastCapture',
                                      None)  #last capture attempt
                thisFlag.setPythonTag('lastCaptureTeam',
                                      None)  #last team that tried to cap

        self.spawnPlayer()
        #standing=rifleman(base,self.team0Node.getPos(),0)
        #running = rifleman(base, self.team0Node.getPos(), 0)
        #soldat = rifleman(base, self.team0Node.getPos(), 0)
        #instancee=base.render.attachNewNode('blast')
        #instancee.setX(instancee.getX()+200)
        #instance=soldat.instanceTo(instancee)
        #instancee.setX(instancee.getX()-180)
        #enemy = rifleman(base, (20, 300, 0),1)
        #friendly = rifleman(base, self.team0Node.getPos(), 0)
        #friendly.setGoal(self.flags[1])

        #load gameplay logic

        # update all entities
        taskMgr.add(self.updateEntities, "updateEntitiesTask")
        self.playerScore = 0

        self.spawnBases()
        self.spawnEnemies()