Пример #1
0
	def updateDestruction(self):
		Auxs.eraseBullets()
		
		frameCount = 0
		explosionInterval = Std.RepeatCounter(3)
		random = Ctrl.getRandom()
		
		self.locator.accel.setUnitVector(90)
		self.locator.accel *= 0.08
		
		while frameCount < 60:
			explosionInterval.update()
			for _ in range(explosionInterval.repeatCount):
				offset = Std.Vector2DF(
					random.getFloat(-self.SIZE.x/2, self.SIZE.x/2), 
					random.getFloat(-self.SIZE.y/2, self.SIZE.y/2))
				Auxs.createExplosion(
					self.locator.position + offset, 
					self.EXPLOSION_SIZE / 2.0)
			
			frameCount += 1
			yield
		else:
			Std.Sprite.setShake(20, 0.3)
			Auxs.createExplosion(
				self.position, self.EXPLOSION_SIZE, 2)
			self.valid = False
Пример #2
0
	def onDestruction(self):
		Auxs.createExplosion(
			self.position, self.EXPLOSION_SIZE)
		
		itemNum = 0
		if self.powerCount <= 2:
			itemNum = 2
		elif self.powerCount <= self.MAX_POWER:
			itemNum = self.powerCount
		else:
			assert False, "invalid power count"
		for i in range(itemNum):
			angle = -180/(itemNum + 1) * (i + 1)
			item = Auxs.Item.PowerUp(self.position, angle)
			Ctrl.Actor.registerItem(item)
		
		self.powerCount = 0
		self.shipLauncher.power = self.powerCount
		self.optionManager.power = self.powerCount
		self.spFrameCount = 0
		self.shipLauncher.spShot = False
		self.optionManager.spShot = False
		self.drawing.spGaugeAnimation.stop()