コード例 #1
0
	def explosion(self,pos,vel=None,**kwargs):
		if(vel is None):vel=Vector2()
		go=GameObject("explosion")
		go.position=pos
		shp=go.addComponent("ShapeComponent")
		shp.setBaseShape("plane_boomMain")
		shp.setAnimated(True)
		shp.setColor((0,0,0))
		go.addComponent("ExplosionComponent").setVel(vel*1)
		return go
コード例 #2
0
	def createPlayer(self,pos):
		go=GameObject("PLAYER")
		shp=go.addComponent("ShapeComponent")
		shp.setBaseShape("plane_plane")
		shp.setColor((0.569,0.753,0.686))
		#shp.setAnimated(True)
		go.addComponent("PlaneComponent")
		go.addComponent("BoundingBoxComponent").readjust("8_0","8_0")
		go.addComponent("PlanePlayerControl")
		go.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(".*enemy.*")
		go.position=pos
		return go
コード例 #3
0
	def bigExplosion(self,pos,vel=None,time=1.0,**kwargs):
		go=GameObject("bigExplosion")
		go.position=pos
		be=go.addComponent("BigExplosionComponent")
		be.setTimer(time)
		if("jitterShape" in kwargs):
			be.setJitterShape(kwargs["jitterShape"])
		if("radius" in kwargs):
			be.setExplosionParams(radius=kwargs["radius"])
		return go
コード例 #4
0
	def createEnemySimple(self,shape,tag,pos,vel,sinAmp,sinFreq,sinOffset,lives=None,shooting=None,shootRowCount=None,projectilesCount=None,spreadHalfangle=None,shootRowDelay=None,shootReloadTime=None,shootAngle=None,destroyCallback=None,additionalComponents=None):
		go=GameObject("enemy_simple_Plane_"+tag)
		go.position=pos
		shp=go.addComponent("ShapeComponent")
		shp.setBaseShape(shape)
		#shp.setAnimated(True)
		go.addComponent("PlaneComponent")
		go.addComponent("BoundingBoxComponent").readjust("8_0","8_0")
		cnf=go.addComponent("PlaneEvilSimple")
		cnf.setConfig(vel,sinAmp,sinFreq,sinOffset,lives,shooting,shootRowCount,projectilesCount,spreadHalfangle,shootRowDelay,shootReloadTime,shootAngle,destroyCallback)
		ac=go.addComponent("ActiveCollisionCheckerComponent")
		ac.setCollisionMask("bullet_player")
		
		if(additionalComponents is not None):
			for compname in additionalComponents:
				go.addComponent(compname)
				
		return go
コード例 #5
0
	def fireBullet(self,pos,angle,speed,tag,clr=(1,1,0.36)):
		#print(len(self._bulletcache))
		if(len(self._bulletcache)==0):
			go=GameObject("bullet_"+tag)
			go.position=pos*1
			go.angle=angle
			shp=go.addComponent("ShapeComponent")
			shp.setBaseShape("plane_bullet")
			shp.setColor(clr)
			go.addComponent("PlaneBullet").setConfig(speed)
			go.addComponent("BoundingBoxComponent")
		else:
			cp=self._bulletcache.pop()
			cpgo=cp.gameObject()
			cpgo.position=pos
			cpgo.angle=angle
			cpgo.setName("bullet_"+tag)
			cp.shapeShortcut().setColor(clr)
			if(random.random()<0.1):
				cp.shapeShortcut().recreateHouNode()
			cp.setConfig(speed)
			cp.setActive(True)
コード例 #6
0
	def firePuff(self,pos,angle,vel=None,fwdShift=0,animSpeed=1):
		if(vel is None):vel=Vector2()
		if(len(self._firepuffcache)==0):
			go=GameObject("puff")
			go.angle=angle
			go.position=pos+go.fwd()*fwdShift
			shp=go.addComponent("ShapeComponent")
			shp.setBaseShape("plane_boomWhisp")
			shp.setAnimated(True)
			fpf=go.addComponent("FirePuffComponent")
			fpf.setVel(vel*1)
			fpf.setAnimSpeed(animSpeed)
			return go
		else:
			cp=self._firepuffcache.pop(0)
			cpgo=cp.gameObject()
			cpgo.angle=angle
			cpgo.position=pos+cpgo.fwd()*fwdShift
			cp.setActive(True)
			if(random.random()<0.1):
				cp.shapeShortcut().recreateHouNode()
			cp.setVel(vel)
			cp.setAnimSpeed(animSpeed)
			return cpgo
コード例 #7
0
    def onStart(self):
        gobj = self.gameObject()
        self.__shape = gobj.getComponent("ShapeComponent")
        if (self.__shape is None):
            self.__shape = gobj.addComponent("ShapeComponent")
        self.__shape.setBaseShape("big_boss_assfirelow")
        self.__shape.setAnimated(True)

        gm = GameObject("killzone_enemy_m")
        gm.transform.setParent(gobj.transform, False)
        gm.transform.localPosition = Vector2((0, -50))
        self.__gomeds = gm.addComponent("ShapeComponent")
        self.__gomeds.setBaseShape("big_boss_assfiremed")
        self.__gomeds.setAnimated(True)
        gm.addComponent("BoundingBoxComponent").readjust("0", "0")

        gh = GameObject("killzone_enemy_h")
        gh.transform.setParent(gobj.transform, False)
        gh.transform.localPosition = Vector2((0, -50))
        self.__gohigs = gh.addComponent("ShapeComponent")
        self.__gohigs.setBaseShape("big_boss_assfirehig")
        self.__gohigs.setAnimated(True)
        gh.addComponent("BoundingBoxComponent").readjust("0", "0")

        #self.__shapem=self.gameObject().addComponent("ShapeComponent")
        #self.__shapem.setBaseShape("big_boss_assfirelow")
        #self.__shapem.setAnimated(True)

        #self.__shapeh=self.gameObject().addComponent("ShapeComponent")
        #self.__shapeh.setBaseShape("big_boss_assfirelow")
        #self.__shapeh.setAnimated(True)

        bbx = self.gameObject().getComponent("BoundingBoxComponent")
        if (bbx is None):
            bbx = self.gameObject().addComponent("BoundingBoxComponent")
        bbx.readjust("0", "0")
        (self.__bbmin, self.__bbmax) = bbx.getInitBBox()
コード例 #8
0
class PlaneGameDirector(Component):

	__instance=None
	def __init__(self,gobj):
		super(PlaneGameDirector,self).__init__(gobj)
		self.__globalVel=Vector2()
		self.__level=None
		self.__timer=0
		self._bulletcache=[]
		self._firepuffcache=[]
		if(PlaneGameDirector.__instance is not None):raise Exception("TOO MANY DIRECTORS!!")
		PlaneGameDirector.__instance=self
		
		self.__clouds=[] #(px,py,sx,sy,depth)
		self.__neds=[]
		
		self.__playerCached=None
		self.__score=None
		self.__playerlives=None
		
		self.__levelinstances=[]
		self.__gameover=False
	
	def setNeds(self,neds):
		'''
		sets list of network editors to draw shapes onto
		'''
		self.__neds=neds
	
	@classmethod
	def instance(cls):
		return cls.__instance
	
	def onDestroy(self):
		PlaneGameDirector.__instance=None
		for ne in self.__neds:	
			ne.setShapes(())
	
	def stuffWasDestroyed(self,obj,byPlayer):
		if(obj in self.__levelinstances):
			self.__levelinstances.remove(obj)
			if(byPlayer):
				objname=obj.getName()
				if(objname=="enemy_simple_Plane_s"):
					self.__score.sendMessage("addScore",10)
				elif(objname=="enemy_simple_Plane_m"):
					self.__score.sendMessage("addScore",155)
				elif(objname=="enemy_BOSS"):
					self.__score.sendMessage("addScore",3333)
	
	def playerHit(self,livesleft):
		self.__playerlives.sendMessage("setCount",livesleft)
	
	def playerDied(self):
		print("GAMEOVER")
		self.__gameover=True
	
	def onStart(self):
		print("trying to load level...")
		levelnode=hou.node("/obj/plane_level") #_bosstest
		if(levelnode is None):
			print("level not found")
		else:
			nodes=[x for x in levelnode.children() if x.name().find("plane_")==0]
			nodes.sort(key=lambda x: x.position()[1])
			self.__level=[(x.position(),x) for x in nodes]
			print("level loaded")
			print(self.__level)
		
		self.__globalVel=Vector2(0,-10)
		
		self.__score=GameObject("SCORE")
		self.__score.addComponent("ScoreComponent")
		self.__score.position=Vector2(10.5,9.5)
		
		self.__playerlives=GameObject("PLIVES")
		self.__playerlives.position=Vector2(11.0,8.0)
		ssc=self.__playerlives.addComponent("StackShapesComponent")
		ssc.setBaseShape("plane_plane_8")
				
		player=self.createPlayer(Vector2(0,-8))
		
		ssc.setCount(player.getComponent("PlanePlayerControl").lives())
		
		#for i in range(8):
		#	self.createEnemySimple("plane_evil01",Vector2(-4+i,9),Vector2(0,-4),2,2,i*0.1)
		
	
	def __genCloud(self,xminsize,xmaxsize,yminsize,ymaxsize,mindepth,maxdepth):
		csx=random.uniform(xminsize,xmaxsize)
		csy=random.uniform(yminsize,ymaxsize)
		cx=random.uniform(-9-csx*0.5,9+csx*0.5)
		if(cx+csx*0.5>10):
			cx=0.5*(cx-0.5*csx+10)
			csx=2*(10-cx)
		if(cx-csx*0.5<-10):
			cx=0.5*(cx+0.5*csx-10)
			csx=2*(10+cx)
		cy=10+csy*0.5
		cd=random.uniform(mindepth,maxdepth)
		clr=0.4-(cd-1)/9.0*0.2
		return [cx,cy,csx,csy,cd,clr]
	
	
	def update(self):
		dt=self.time.deltaTime()
		self.__timer+=dt
		if(self.__gameover):
			self.__score.position=Vector2(7*math.sin(self.__timer*2),0)
		else:
			if(len(self.__level)==0 and len(self.__levelinstances)==0):
				print("--------------------")
				print("--CONGRATULATIONS!--")
				print("--------------------")
				print("YOU ARE THE WINRAR!!")
				print("--------------------")
				self.__score.sendMessage("addScore",self.getPlayer().getComponent("PlanePlayerControl").lives()*500)
				self.__gameover=True
			if(self.__level is not None):
				while(len(self.__level)>0 and self.__level[0][0][1]<self.__timer*10):
					entry=self.__level.pop(0)
					pos=entry[0]
					node=entry[1]
					#print(node.name())
					go=None
					if(node.name().find("plane_small")==0):
						go=self.createEnemySimple("plane_evil01","s",Vector2(pos[0],9.9),Vector2(node.evalParm("velx"),node.evalParm("vely")),node.evalParm("sinAmp"),node.evalParm("sinFreq"),node.evalParm("sinOffset"),destroyCallback=self.explosion)
					elif(node.name().find("plane_big")==0):
						go=self.createEnemySimple("plane_evil02","m",Vector2(pos[0],9.9),Vector2(node.evalParm("velx"),node.evalParm("vely")),node.evalParm("sinAmp"),node.evalParm("sinFreq"),node.evalParm("sinOffset"),node.evalParm("lives"),node.evalParm("shooting"),node.evalParm("shootRowCount"),node.evalParm("projectilesCount"),node.evalParm("spreadHalfangle"),node.evalParm("shootRowDelay"),node.evalParm("shootReloadTime"),node.evalParm("shootAngle"),self.bigExplosion)
					elif(node.name().find("plane_boss_type1")==0):
						go=self.createBoss(Vector2(pos[0],9.9))
					if(go is not None):
						self.__levelinstances.append(go)
		
		if(len(self.__neds)>0):
			needsort=False
			if(random.random()<0.7*dt):
				self.__clouds.append(self.__genCloud(1,20,1,20,1,10))
				needsort=True
			if(random.random()<0.35*dt):
				self.__clouds.append(self.__genCloud(2,4,2,4.5,1,1.25))
				needsort=True	
			if(needsort):
				self.__clouds.sort(key=lambda x:x[4],reverse=True)
				
			shapelist=[]
			removelist=[]
			for cloud in self.__clouds:
				cloud[0]+=self.__globalVel[0]*dt/cloud[4]
				cloud[1]+=self.__globalVel[1]*dt/cloud[4]
				if(cloud[1]+cloud[3]*0.5 < -10):
					removelist.append(cloud)
				else:
					clr=cloud[5]
					shapelist.append(hou.NetworkShapeBox(hou.BoundingRect(cloud[0]-cloud[2]*0.5,cloud[1]-cloud[3]*0.5,cloud[0]+cloud[2]*0.5,cloud[1]+cloud[3]*0.5),color=hou.Color((clr,clr,clr)),alpha=0.9,screen_space=False))
			for item in removelist:
				self.__clouds.remove(item)
			
			for ne in self.__neds:	
				ne.setShapes(shapelist)
		self.__playerCached=None #to update in case player was killed or shit
		
	#helper functions
	
	def getPlayer(self):
		if(self.__playerCached is None):
			self.__playerCached=GameObject.findObject("PLAYER$")
		return self.__playerCached
	
	def getGlobalVel(self):
		return self.__globalVel
	
	def isOutOfGameArea(self,pos):
		return pos[0]<-10 or pos[0]>10 or pos[1]<-10 or pos[1]>11
	
	def createPlayer(self,pos):
		go=GameObject("PLAYER")
		shp=go.addComponent("ShapeComponent")
		shp.setBaseShape("plane_plane")
		shp.setColor((0.569,0.753,0.686))
		#shp.setAnimated(True)
		go.addComponent("PlaneComponent")
		go.addComponent("BoundingBoxComponent").readjust("8_0","8_0")
		go.addComponent("PlanePlayerControl")
		go.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(".*enemy.*")
		go.position=pos
		return go
		
	def createEnemySimple(self,shape,tag,pos,vel,sinAmp,sinFreq,sinOffset,lives=None,shooting=None,shootRowCount=None,projectilesCount=None,spreadHalfangle=None,shootRowDelay=None,shootReloadTime=None,shootAngle=None,destroyCallback=None,additionalComponents=None):
		go=GameObject("enemy_simple_Plane_"+tag)
		go.position=pos
		shp=go.addComponent("ShapeComponent")
		shp.setBaseShape(shape)
		#shp.setAnimated(True)
		go.addComponent("PlaneComponent")
		go.addComponent("BoundingBoxComponent").readjust("8_0","8_0")
		cnf=go.addComponent("PlaneEvilSimple")
		cnf.setConfig(vel,sinAmp,sinFreq,sinOffset,lives,shooting,shootRowCount,projectilesCount,spreadHalfangle,shootRowDelay,shootReloadTime,shootAngle,destroyCallback)
		ac=go.addComponent("ActiveCollisionCheckerComponent")
		ac.setCollisionMask("bullet_player")
		
		if(additionalComponents is not None):
			for compname in additionalComponents:
				go.addComponent(compname)
				
		return go
		
	def createBoss(self,pos):
		go=GameObject("enemy_BOSS")
		go.position=pos+Vector2(0,20)
		go.addComponent("BossCoreComponent")
		
		return go
	
	def fireBullet(self,pos,angle,speed,tag,clr=(1,1,0.36)):
		#print(len(self._bulletcache))
		if(len(self._bulletcache)==0):
			go=GameObject("bullet_"+tag)
			go.position=pos*1
			go.angle=angle
			shp=go.addComponent("ShapeComponent")
			shp.setBaseShape("plane_bullet")
			shp.setColor(clr)
			go.addComponent("PlaneBullet").setConfig(speed)
			go.addComponent("BoundingBoxComponent")
		else:
			cp=self._bulletcache.pop()
			cpgo=cp.gameObject()
			cpgo.position=pos
			cpgo.angle=angle
			cpgo.setName("bullet_"+tag)
			cp.shapeShortcut().setColor(clr)
			if(random.random()<0.1):
				cp.shapeShortcut().recreateHouNode()
			cp.setConfig(speed)
			cp.setActive(True)
		
		
	def explosion(self,pos,vel=None,**kwargs):
		if(vel is None):vel=Vector2()
		go=GameObject("explosion")
		go.position=pos
		shp=go.addComponent("ShapeComponent")
		shp.setBaseShape("plane_boomMain")
		shp.setAnimated(True)
		shp.setColor((0,0,0))
		go.addComponent("ExplosionComponent").setVel(vel*1)
		return go
	
	def bigExplosion(self,pos,vel=None,time=1.0,**kwargs):
		go=GameObject("bigExplosion")
		go.position=pos
		be=go.addComponent("BigExplosionComponent")
		be.setTimer(time)
		if("jitterShape" in kwargs):
			be.setJitterShape(kwargs["jitterShape"])
		if("radius" in kwargs):
			be.setExplosionParams(radius=kwargs["radius"])
		return go
		
	def firePuff(self,pos,angle,vel=None,fwdShift=0,animSpeed=1):
		if(vel is None):vel=Vector2()
		if(len(self._firepuffcache)==0):
			go=GameObject("puff")
			go.angle=angle
			go.position=pos+go.fwd()*fwdShift
			shp=go.addComponent("ShapeComponent")
			shp.setBaseShape("plane_boomWhisp")
			shp.setAnimated(True)
			fpf=go.addComponent("FirePuffComponent")
			fpf.setVel(vel*1)
			fpf.setAnimSpeed(animSpeed)
			return go
		else:
			cp=self._firepuffcache.pop(0)
			cpgo=cp.gameObject()
			cpgo.angle=angle
			cpgo.position=pos+cpgo.fwd()*fwdShift
			cp.setActive(True)
			if(random.random()<0.1):
				cp.shapeShortcut().recreateHouNode()
			cp.setVel(vel)
			cp.setAnimSpeed(animSpeed)
			return cpgo
コード例 #9
0
	def createBoss(self,pos):
		go=GameObject("enemy_BOSS")
		go.position=pos+Vector2(0,20)
		go.addComponent("BossCoreComponent")
		
		return go
コード例 #10
0
 def __createAnotherShape(self):
     go = GameObject("stackshapepiece")
     go.addComponent("ShapeComponent").setBaseShape(self.__shapeBaseName)
     return go
コード例 #11
0
    def update(self):
        gobj = self.gameObject()
        dt = self.time.deltaTime()

        if (self.__state == "goto"):
            d = self.__targetpos - gobj.position
            speed = 2
            dl = d.length()
            if (dl <= 0.00001):
                self.__state = self.__nextState
                self.__nextState = ""
                return
            d = min(dl, speed * dt) * d / dl
            gobj.position += d
        elif (self.__state == "stage1"):  #STATE STAGE1
            #init
            if (self.__nextState == ""):
                self.__nextState = "stage1_tailremain"
                self.__parts["taill"].sendMessage("setActive", True)
                self.__parts["tailr"].sendMessage("setActive", True)
            #do stuff
            self.__stage1_timer += dt
            gobj.position[0] += 0.2 * cos(self.__stage1_timer)
            if (self.__parts["taill"] is None and self.__stage1_c % 2 == 0):
                self.__stage1_c += 1
                #fire up the ass a bit
                af = GameObject("assfire")
                af.transform.setParent(self.__parts["b4"].transform)
                af.transform.localPosition = Vector2((-1.351, -9.179))
                af.transform.localAngle = 107
                af.addComponent("BurningComponent").setConfig(
                    length=2, intensity=1, angleVariation=90)
            if (self.__parts["tailr"] is None
                    and (self.__stage1_c / 2) % 2 == 0):
                self.__stage1_c += 2
                #fire up the ass a bit
                af = GameObject("assfire")
                af.transform.setParent(self.__parts["b4"].transform)
                af.transform.localPosition = Vector2((1.351, -9.179))
                af.transform.localAngle = 253
                af.addComponent("BurningComponent").setConfig(
                    length=2, intensity=1, angleVariation=90)

            #translate
            if (self.__parts["taill"] is None
                    and self.__parts["tailr"] is None):
                self.__targetpos = Vector2(0, 15)
                self.__state = "goto"
                return
        elif (self.__state == "stage1_tailremain"):
            #init
            if (self.__nextState == ""):
                self.__nextState = "stage2"
                self.__parts["b4"].sendMessage("setActive", True)
            #do stuff
            self.__stage1_timer += dt
            gobj.position[0] += 0.4 * cos(self.__stage1_timer * 2)
            #translate
            if (self.__parts["b4"] is None):
                self.__targetpos = Vector2(9, 9)
                self.__state = "goto"

                #fire up the ass a bit
                af = GameObject("assfire")
                af.transform.setParent(self.__parts["b3"].transform)
                af.transform.localPosition = Vector2((0, -7.18))
                af.transform.localAngle = 180
                af.addComponent("BurningComponent").setConfig(length=4,
                                                              intensity=0.5)

                if (self.__assfire is None):
                    goass = GameObject("killzone_enemy")
                    goass.transform.setParent(self.__parts["b3"].transform,
                                              False)
                    self.__assfire = goass.addComponent("AssfireComponent")

        elif (self.__state == "stage2"):  #STATE STAGE2
            #init
            if (self.__nextState == ""):
                self.__nextState = "stage3"
                self.__parts["wingl"].sendMessage("setActive", True)
                self.__parts["wingr"].sendMessage("setActive", True)

            #do stuff
            self.__stage2_timer += dt
            x = self.__stage2_timer * 0.2
            x = (0.5 + 0.5 * cos(x))**(20**(-cos(x)))
            gobj.position[0] = 2 * (x - 0.5) * 9
            if (x < 0.05 or x > 0.95):
                self.__stage2_spawntimer += dt
                if (self.__stage2_spawntimer >= 0.7):
                    self.__stage2_spawntimer = 0
                    PlaneGameDirector.instance().createEnemySimple(
                        "plane_evil01",
                        "s",
                        Vector2((0, 9.9)),
                        Vector2((0, -4)),
                        2,
                        2,
                        0,
                        destroyCallback=PlaneGameDirector.instance().explosion)
                    #PlaneGameDirector.instance().createEnemySimple("plane_evil01","s", Vector2((4,9.9)), Vector2((0,-4)),2,2,0)
            self.__assfire.setFlameMode(
                int(1.5 + 1.5 * sin(self.__stage2_timer - radians(90))))

            if (self.__parts["wingl"] is None and self.__stage2_c % 2 == 0):
                self.__stage2_c += 1
                #fire up the ass a bit
                af = GameObject("assfire")
                af.transform.setParent(self.__parts["b2"].transform)
                af.transform.localPosition = Vector2((-1.803, -0.045))
                af.transform.localAngle = 90
                af.addComponent("BurningComponent").setConfig(
                    length=5, intensity=1, angleVariation=90)
            if (self.__parts["wingr"] is None
                    and (self.__stage2_c / 2) % 2 == 0):
                self.__stage2_c += 2
                #fire up the ass a bit
                af = GameObject("assfire")
                af.transform.setParent(self.__parts["b2"].transform)
                af.transform.localPosition = Vector2((1.803, -0.045))
                af.transform.localAngle = 270
                af.addComponent("BurningComponent").setConfig(
                    length=5, intensity=1, angleVariation=90)

            #translate
            if (self.__parts["wingl"] is None
                    and self.__parts["wingr"] is None):
                self.__targetpos = Vector2((0, 6))
                self.__assfire.setFlameMode(0)
                self.__state = "goto"
        elif (self.__state == "stage3"):  #STATE STAGE3
            #init
            if (self.__nextState == ""):
                self.__nextState = "destroy"
                self.__parts["b3"].sendMessage("setActive", True)
            #do stuff
            if (self.__parts["b3"] is None and self.__stage3_c == 0):
                self.__stage3_c = 1
                self.__parts["b2"].sendMessage("setActive", True)
                #fire up the ass a bit
                af = GameObject("assfire")
                af.transform.setParent(self.__parts["b2"].transform)
                af.transform.localPosition = Vector2((0, -3.0))
                af.transform.localAngle = 180
                af.addComponent("BurningComponent").setConfig(length=4,
                                                              intensity=1.5)
            if (self.__parts["b2"] is None and self.__stage3_c == 1):
                self.__stage3_c = 2
                self.__parts["b1"].sendMessage("setActive", True)
                #fire up the ass a bit
                af = GameObject("assfire")
                af.transform.setParent(self.__parts["b1"].transform)
                af.transform.localPosition = Vector2((0, 3.0))
                af.transform.localAngle = 180
                af.addComponent("BurningComponent").setConfig(length=4,
                                                              intensity=2)

            mult = 1 + self.__stage3_c * 0.5
            self.__stage3_timer += dt * mult
            if (self.__stage3_timer > 1.5):
                self.__stage3_speed = min(self.__stage3_speed + 3 * dt * mult,
                                          7)
                if (gobj.position[1] > 25):
                    self.__stage3_speed = 0
                    player = PlaneGameDirector.instance().getPlayer()
                    ppx = 0
                    if (player is not None): ppx = player.position[0]
                    gobj.position = Vector2((ppx, -16))
                    self.__stage3_timer = 0
            gobj.position += Vector2((0, self.__stage3_speed * dt))

            #translate
            if (self.__parts["b1"] is None):
                self.__targetpos = Vector2((0, 5))
                self.__state = "desetroy"
                PlaneGameDirector.instance().stuffWasDestroyed(
                    self.gameObject(), True)
                gobj.destroy()
                PlaneGameDirector.instance().bigExplosion(Vector2((0, 0)),
                                                          time=5,
                                                          radius=8)
コード例 #12
0
    def onStart(self):
        #here we create the boss himself
        gobj = self.gameObject()
        b1 = GameObject("enemy_BOSS_HEAD")
        b1.transform.setParent(gobj.transform, False)
        shp = b1.addComponent("ShapeComponent")
        shp.setBaseShape("big_boss_body1")
        shp.setColor((0.6, 0.6, 0.65))
        b1.addComponent("BoundingBoxComponent")
        b1.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        b1.addComponent("BossPartComponent").setLives(40)

        b2 = GameObject("enemy_BOSS_CENTER")
        b2.transform.setParent(gobj.transform, False)
        shp = b2.addComponent("ShapeComponent")
        shp.setBaseShape("big_boss_body2")
        shp.setColor((0.6, 0.6, 0.65))
        b2.addComponent("BoundingBoxComponent")
        b2.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        b2.addComponent("BossPartComponent").setLives(30)

        b3 = GameObject("enemy_BOSS_BODY")
        b3.transform.setParent(gobj.transform, False)
        shp = b3.addComponent("ShapeComponent")
        shp.setColor((0.6, 0.6, 0.65))
        shp.setBaseShape("big_boss_body3")
        b3.addComponent("BoundingBoxComponent")
        b3.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        b3.addComponent("BossPartComponent").setLives(70)

        b4 = GameObject("enemy_BOSS_TAIL")
        b4.transform.setParent(gobj.transform, False)
        shp = b4.addComponent("ShapeComponent")
        shp.setBaseShape("big_boss_body4")
        shp.setColor((0.6, 0.6, 0.65))
        b4.addComponent("BoundingBoxComponent")
        b4.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        b4.addComponent("BossPartComponent").setLives(70)

        wl = GameObject("enemy_BOSS_WINDL")
        wl.transform.setParent(gobj.transform, False)
        shp = wl.addComponent("ShapeComponent")
        shp.setBaseShape("big_boss_wingl")
        shp.setColor((0.6, 0.6, 0.65))
        wl.addComponent("BoundingBoxComponent")
        wl.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        wl.addComponent("BossPartComponent").setLives(200)

        wr = GameObject("enemy_BOSS_WINDR")
        wr.transform.setParent(gobj.transform, False)
        shp = wr.addComponent("ShapeComponent")
        shp.setBaseShape("big_boss_wingr")
        shp.setColor((0.6, 0.6, 0.65))
        wr.addComponent("BoundingBoxComponent")
        wr.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        wr.addComponent("BossPartComponent").setLives(200)

        tl = GameObject("enemy_BOSS_TAILL")
        tl.transform.setParent(gobj.transform, False)
        shp = tl.addComponent("ShapeComponent")
        shp.setBaseShape("big_boss_taill")
        shp.setColor((0.6, 0.6, 0.65))
        tl.addComponent("BoundingBoxComponent")
        tl.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        tl.addComponent("BossPartComponent").setLives(70)

        tr = GameObject("enemy_BOSS_TAILR")
        tr.transform.setParent(gobj.transform, False)
        shp = tr.addComponent("ShapeComponent")
        shp.setBaseShape("big_boss_tailr")
        shp.setColor((0.6, 0.6, 0.65))
        tr.addComponent("BoundingBoxComponent")
        tr.addComponent("ActiveCollisionCheckerComponent").setCollisionMask(
            "bullet_player")
        tr.addComponent("BossPartComponent").setLives(70)

        trtt = GameObject("enemy_TRturret")
        trtt.transform.setParent(tr.transform, False)
        trtt.transform.localPosition = Vector2((4.3, -10.0))
        trtt.transform.localAngle = 180
        shp = trtt.addComponent("ShapeComponent")
        shp.setBaseShape("turret")
        shp.setColor((0.3, 0.3, 0.35))
        trtt.addComponent("TurretComponent").setActive(False)

        tltt = GameObject("enemy_TLturret")
        tltt.transform.setParent(tl.transform, False)
        tltt.transform.localPosition = Vector2((-4.3, -10.0))
        tltt.transform.localAngle = 180
        shp = tltt.addComponent("ShapeComponent")
        shp.setBaseShape("turret")
        shp.setColor((0.3, 0.3, 0.35))
        tltt.addComponent("TurretComponent").setActive(False)

        b4tt = GameObject("enemy_B4turret")
        b4tt.transform.setParent(b4.transform, False)
        b4tt.transform.localPosition = Vector2((0, -9.0))
        b4tt.transform.localAngle = 180
        shp = b4tt.addComponent("ShapeComponent")
        shp.setBaseShape("turret")
        shp.setColor((0.3, 0.3, 0.35))
        b4tt.addComponent("TurretComponent").setActive(False)

        wltt = GameObject("enemy_WLturret")
        wltt.transform.setParent(wl.transform, False)
        wltt.transform.localPosition = Vector2((-9.0, -1.26))
        wltt.transform.localAngle = 180
        shp = wltt.addComponent("ShapeComponent")
        shp.setBaseShape("turret")
        shp.setColor((0.3, 0.3, 0.35))
        wltt.addComponent("TurretComponent").setActive(False)

        wrtt = GameObject("enemy_WRturret")
        wrtt.transform.setParent(wr.transform, False)
        wrtt.transform.localPosition = Vector2((9.0, -1.26))
        wrtt.transform.localAngle = 180
        shp = wrtt.addComponent("ShapeComponent")
        shp.setBaseShape("turret")
        shp.setColor((0.3, 0.3, 0.35))
        wrtt.addComponent("TurretComponent").setActive(False)

        self.__parts = {
            "b1": b1,
            "b2": b2,
            "b3": b3,
            "b4": b4,
            "wingl": wl,
            "wingr": wr,
            "taill": tl,
            "tailr": tr
        }