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