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()
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")
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')
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()