Exemple #1
0
	def tick(self):
		self.bob_mtx[9]=self.bob*0.6
		self.vel-=GRAVITY
		self.blob.position[2]+=self.vel
		self.on_floor=False
		rh=get_game().get_ring_height()+self.blob.size/2.0
		if rh>self.blob.position[2]:
			self.blob.position[2]=rh
			self.vel=0
			self.on_floor=True
		#apply damage
		enemies=list(get_game().mgr_team.obs[(self.blob.team+1)%2])
		me=Vector3(self.blob.position)
		for enemy in enemies:
			if self.vel<0.0 and not self.on_floor and not enemy.dead:
				them=Vector3(enemy.position)
				dist=(me-them).get_length()
				if 2*dist<self.blob.size+enemy.size:
					self.blob.position[2]-=self.vel
					enemy.damage(self.blob)
					self.on_floor=True
					self.jump()
					self.on_floor=False
					break
			elif self.on_floor and enemy.dead:
				them=Vector3(enemy.position)
				dist=(me-them).get_length()
				if 2*dist<self.blob.size+enemy.size:
					self.blob.position[2]-=self.vel
					enemy.remove_from_world()
					self.blob.size+=enemy.food*1.4
					game=get_game()
					if game.tower_height-1>=0 and self.blob.size>game.rings[game.tower_height-1].strength:
						game.tower_height-=1
						game.rings[game.tower_height].remove_from_world()
						game.rings=game.rings[:-1]
						remaining=len(game.rings)
						if remaining==2:
							Spawner(Enemy2,150).add_to_world()
						elif remaining==1:
							Spawner(Enemy3,75).add_to_world()
						elif remaining==0:
							inst=Enemy4()
							rot=random.randint(1,360)
							m=Matrix44.z_rotation(radians(rot))
							inst.zrot-=rot
							v=Vector3(inst.position)
							inst.position=list(m.transform(v))
							inst.add_to_world()
Exemple #2
0
	def tick(self):
		if not self.dead:
			if get_game().keys["left"]:
				self.behaviour.move_left()
			elif get_game().keys["right"]:
				self.behaviour.move_right()
			else:
				self.behaviour.stop_movement()
			if get_game().keys[" "]:
				self.behaviour.jump()
		old_level=get_game().tower_height
		self.behaviour.tick()
		if old_level!=get_game().tower_height:
			self.cam.follow=True
		elif self.behaviour.on_floor:
			self.cam.follow=False
Exemple #3
0
	def damage(self,source):
		d=0.2 if self.team==1 else source.damage_mod*source.size/10.0
		self.size-=d
		for i in range(4):
			Damage(self).add_to_world()
		if self.size<=0.6*self.original_size and self.team==1 or self.size<0.3 and self.team==0:
			self.dead=True
			if self.team==0:
				get_game().set_img("assets/fail.bmp")
				get_game().restart=True
			self.xrot=-90.0
			self.col_amb=[c*0.5 for c in self.col_amb]
			self.col_diff=[c*0.5 for c in self.col_diff]
			self.col_spec=[c*0.5 for c in self.col_spec]
			self.col_amb [3]=1.0
			self.col_diff[3]=1.0
			self.col_spec[3]=1.0
Exemple #4
0
	def __init__(self,size,color):
		Blob.__init__(self,size,color)
		self.position[1]=-5.0
		self.position[2]=0.5+get_game().get_ring_height()+60.0
		self.zrot=90.0
		self.team=1
		self.behaviour=BlobBehaviourPlayerOnRing(self,speed=0.6,jump_velocity=0.3)
		self.dead=False
		self.direction_right=True
		self.damage_mod=1.0
Exemple #5
0
	def __init__(self):
		global PLAYER
		PLAYER=self
		Blob.__init__(self,1,green)
		self.cam=None
		self.position[1]=-5.0
		self.position[2]=0.5+get_game().get_ring_height()+30.0
		self.zrot=90.0
		self.team=0
		self.behaviour=BlobBehaviourPlayerOnRing(self,speed=2.4,jump_velocity=0.4)
		self.dead=False
Exemple #6
0
	def setup_model(self):
		glMatrixMode(GL_MODELVIEW)
		glLoadIdentity()
		eye=self.position
		center=self.target
		if self.ob is not None:
			if self.follow:
				center=[self.ob.position[i]+self.offset[i] for i in range(3)]
				eye=[center[i]*4.0 for i in range(3)]
				eye[2]=center[2]+1.0
			else:
				center=[self.ob.position[i]+self.offset[i] for i in range(3)]
				center[2]=get_game().get_ring_height()+2.5
				eye=[center[i]*4.0 for i in range(3)]
				eye[2]=center[2]+1.0
		up=[0.0,0.0,1.0]
		args=eye+center+up
		gluLookAt(*args)
Exemple #7
0
	def tick(self):
		self.timer-=1
		if self.timer<=0:
			if len(get_game().mgr_team.obs[1])>=4:
				self.timer+=random.randint(1,150)
			else:
				self.timer=self.timeout
				inst=self.klass()
				rot=random.randint(1,360)
				m=Matrix44.z_rotation(radians(rot))
				inst.zrot-=rot
				v=Vector3(inst.position)
				inst.position=list(m.transform(v))
				#player=list(get_game().mgr_team.obs[0])
				#if player:
				#	player=player[0]
				#	inst.position=player.position[:]
				#	inst.position[2]+=10.0
				inst.add_to_world()
Exemple #8
0
	def add_to_world(self):
		get_game().mgr_game.add_object(self)
Exemple #9
0
	def remove_from_world(self):
		Visual.remove_from_world(self)
		get_game().mgr_game.remove_object(self)
Exemple #10
0
	def add_to_world(self):
		Visual.add_to_world(self)
		get_game().mgr_game.add_object(self)
Exemple #11
0
	def tick(self):
		if self.dead:
			get_game().set_img("assets/win.bmp")
			get_game().restart=True
		Enemy.tick(self)
Exemple #12
0
	def add_to_world(self):
		Visual.add_to_world(self)
		cam=self.cam=Cam(ob=self)
		get_game().mgr_render.cam=cam
		get_game().mgr_game.add_object(self)
		get_game().mgr_team.add_object(self,self.team)
Exemple #13
0
	def remove_from_world(self):
		get_game().mgr_render.remove_object(self)
Exemple #14
0
	def add_to_world(self):
		get_game().mgr_render.add_object(self,self.transparent)