Esempio n. 1
0
	def _main(self):
		def launch(pos, drawParam, num, baseSpeed):
			drawParam.dst = pos.makeRect(
				drawParam.dst.w, drawParam.dst.h, True)
			NWay.launchLinearCircle(
				pos, 
				self.angle, 
				num, 
				int(drawParam.dst.w/4), 
				drawParam, 
				baseSpeed)
		
		drawParam = Auxs.createBulletRedDrawParam(
			self.pos, Std.Vector2DF(16, 16))
		launch(self.pos, drawParam, 
			self.regulation.circleBulletNum, self.regulation.circleBulletSpeed)
		
		rand = Ctrl.getRandom()
		drawParam = Auxs.createBulletRedDrawParam(
			self.pos, Std.Vector2DF(16, 8))
		for _ in range(int(self.regulation.randomBulletLaunchFrameNum)):
			for _ in range(int(self.regulation.randomBulletLaunchNum)):
				posVariance = Std.Vector2DF(
					rand.getFloat(*self.regulation.randomBulletPosVariance), 
					rand.getFloat(*self.regulation.randomBulletPosVariance))
				pos = self.pos + posVariance
				launch(pos, drawParam, 1, self.regulation.randomBulletSpeed)
			yield
Esempio n. 2
0
	def __init__(self, core, pos, angle, toggle, radius, baseDamage, spAttack = False):
		if not spAttack:
			size = Std.Vector2DF(radius * 2, 96)
		else:
			size = Std.Vector2DF(radius * 2, 128)
		drawParam = Std.Sprite.DrawParam()
		super().__init__(core, pos, angle, radius, size, self.SPEED, 
			baseDamage, self.DAMAGE_RATE_DEC, self.DAMAGE_RATE_MIN, 
			self.LOCK_SPEED, 
			drawParam, 90, core.resource.se_ShotHit)
		
		self.hp = Regulation.lockMainShotAttenuationResistance
		
		self.toggle = toggle
		self.particleSize = Std.Vector2DF(radius * 6, radius * 6)
		
		if not spAttack:
			drawParam.color.a = 0.8
			if toggle:
				drawParam.texture = core.resource.lockMainShot_1
			else:
				drawParam.texture = core.resource.lockMainShot_2
		else:
			drawParam.alphaBlend = Std.Sprite.AlphaBlend.Add
			drawParam.color.a = 0.6
			if Ctrl.getRandom().getBool():
				drawParam.flipX()
			if toggle:
				drawParam.texture = core.resource.spLockMainShot_1
			else:
				drawParam.texture = core.resource.spLockMainShot_2
		drawParam.src = Std.RectF(0, 0, 128, 256)
		drawParam.dst = self.locator.position.makeRect(size, True)
		drawParam.priority = Ctrl.DrawPriority.myShot
		drawParam.rotDegree = angle + 90
Esempio n. 3
0
	def update(self):
		dirX = Ctrl.getController().direction.x
		if dirX > 0 and not self.core.moveForbidFlag:
			self.rollAmount += self.ROLL_SPEED
		elif dirX < 0 and not self.core.moveForbidFlag:
			self.rollAmount -= self.ROLL_SPEED
		else:
			if self.rollAmount < 0:
				self.rollAmount += self.ROLL_SPEED
				if self.rollAmount > 0:
					self.rollAmount = 0
			elif self.rollAmount > 0:
				self.rollAmount -= self.ROLL_SPEED
				if self.rollAmount < 0:
					self.rollAmount = 0
		
		self._setDrawParam()
		
		if not self.hitMarkerAnimation.playing:
			self.hitMarkerAnimation.play()
		else:
			self.hitMarkerAnimation.update()
		updateDst(self.hitMarkerAnimation, self.core.position, self.HIT_MARKER_SIZE)
		
		if not self.backFireAnimation.playing:
			self.backFireAnimation.play()
		else:
			self.backFireAnimation.update()
		updateDst(self.backFireAnimation, self.backFirePos, self.BACK_FIRE_SIZE)
Esempio n. 4
0
	def createParticle(self, 
					num = 1, 
					priority = Ctrl.DrawPriority.enemyBulletB1, 
					sizeRate = 0.3, 
					speed = 1):
		rand = Ctrl.getRandom()
		
		drawParam = Std.Sprite.DrawParam()
		drawParam.texture = self.drawParam.texture
		drawParam.src = Std.RectF(0, 0, 64, 64)
		drawParam.dst = self.locator.position.makeRect(self.size * sizeRate, True)
		drawParam.priority = priority
		drawParam.alphaBlend = Std.Sprite.AlphaBlend.Add
		drawParam.rotDegree = rand.getFloat(-180, 180)
		
		param = Auxs.Particle.Param()
		param.drawParameter = drawParam
		param.setPosition(self.locator.position)
		param.setSpeedRange(speed * 0.5, speed * 1.5)
		param.setZoomRateRange(0.8, 1)
		param.setZoomDecRateRange(0.015, 0.025)
		param.setRotSpeedRange(self.rotSpeed - 0.5, self.rotSpeed + 0.5)
		
		creator = Auxs.Particle.Creator(param)
		creator.create(num)
Esempio n. 5
0
	def _input(self):
		controller = Ctrl.getController()
		
		if not self.disappeared:
			if not self.moveForbidFlag:
				self.locator.speed = controller.direction * self.moveSpeed
				self.locator.update()
				
				pos = self.locator.position
				size = self.shipSize
				rightBorder = Std.Consts.ScreenSize.x - Std.Consts.StgInfAreaSize.x
				bottomBorder = Std.Consts.ScreenSize.y
				if pos.x - size.x/2 < 0:
					pos.x = size.x/2
				elif pos.x + size.x/2 > rightBorder:
					pos.x = rightBorder - size.x/2
				if pos.y - size.y/2 < 0:
					pos.y = size.y/2
				elif pos.y + size.y/2 > bottomBorder:
					pos.y = bottomBorder - size.y/2
				self.locator.position = pos
			if(not self.shotForbidFlag and 
			controller.isHold(Std.Input.KeyId.Z)):
				self.shot()
			if(not self.specialAttackForbidFlag and 
			controller.isPush(Std.Input.KeyId.X)):
				self.specialAttack()
Esempio n. 6
0
	def __init__(self, core, position, angle):
		super().__init__(position, self.RADIUS, self.BASE_DAMAGE)
		self.noDamage = True
		self.core = core
		self.prevValidArea = self.isHitRect(self.VALID_AREA)
		
		self.locator = Std.Locator.LinearF(position)
		self.locator.speed.setUnitVector(angle)
		self.locator.speed *= self.SPEED
		
		self.damageRateDec = self.DAMAGE_RATE_DEC
		self.damageRateMin = self.DAMAGE_RATE_MIN
		
		self.blast = PlasmaBlast(self.core, self.position)
		self.blasted = False
		
		drawParam = Std.Sprite.DrawParam()
		drawParam.src = Std.RectF(0, 0, 64, 64)
		drawParam.dst = position.makeRect(self.SIZE, True)
		drawParam.priority = Ctrl.DrawPriority.myShot
		self.animation = createSequenceAnimation(
			core.resource.plasmaBallTexList, drawParam)
		rand = Ctrl.getRandom()
		self.animation.play(
			rand.getInt(0, self.animation.frameHolder.frameNum - 1))
		
		self.se_PlasmaBlast = core.resource.se_PlasmaBlast
Esempio n. 7
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
Esempio n. 8
0
	def __init__(self, validRect):
		self.valid = True
		self.setValidAreaMargin(self.INIT_VALID_AREA_MARGIN)
		self.validRect = validRect
		self.validFrameNum = self.INIT_VALID_FRAME_NUM
		self.frameCount = 0
		self.frameCounting = True
		self._objectId = Ctrl.genObjectId()
Esempio n. 9
0
	def getVariantVector(self, baseVector, variantVector):
		rand = Ctrl.getRandom()
		vx = rand.getFloat(
			baseVector.x - variantVector.x, 
			baseVector.x + variantVector.x)
		vy = rand.getFloat(
			baseVector.y - variantVector.y, 
			baseVector.y + variantVector.y)
		return Std.Vector2DF(vx, vy)
Esempio n. 10
0
def createSpNormalShot(core, pos, angle, 
					damage, paDamage, damageToBullet, shotHp, 
					damageKickbackRateToBullet = 1.0):
	speed = Regulation.spNormalShotSpeed
	radius = 32
	damageRateDec = Regulation.spNormalShotDamageRateDecrease
	damageRateMin = Regulation.spNormalShotDamageRateMin
	
	rand = Ctrl.getRandom()
	drawParam = Std.Sprite.DrawParam()
	drawParam.texture = core.resource.spNormalShot
	drawParam.src = Std.RectF(0, 0, 128, 256)
	drawParam.dst = pos.makeRect(radius*2, 96, True)
	drawParam.priority = Ctrl.DrawPriority.myShot
	drawParam.rotDegree = angle + 90
	drawParam.alphaBlend = Std.Sprite.AlphaBlend.Add
	drawParam.color.a = 0.6
	if rand.getBool():
		drawParam.flipX()
	
	particleSize = Std.Vector2DF(radius*6, radius*6)
	vanishDrawParam = Std.Sprite.DrawParam()
	vanishDrawParam.src = Std.RectF(0, 0, 128, 128)
	vanishDrawParam.dst = pos.makeRect(particleSize, True)
	vanishDrawParam.priority = Ctrl.DrawPriority.myShot
	vanishDrawParam.alphaBlend = Std.Sprite.AlphaBlend.Add
	vanishDrawParam.color.a = 0.3
	if rand.getBool():
		vanishDrawParam.flipX()
	vanishAnimation = createSequenceAnimation(
		core.resource.spNormalParticleTexList, vanishDrawParam)
	vanishAnimation.frameInterval = 0.4
	
	shot = createSimpleShot(
		pos, angle, speed, radius, 
		damage, damageRateDec, damageRateMin, paDamage, 
		drawParam, 90, vanishAnimation, 
		core.resource.se_ShotHit)
	shot.hp = shotHp
	
	shot.damageToBullet = damageToBullet
	shot.damageKickbackRateToBullet = damageKickbackRateToBullet
	def damageToBulletCallback(locator):
		drawParam = Std.Sprite.DrawParam(vanishDrawParam)
		drawParam.rotDegree = locator.speed.getAngle() + 90
		drawParam.alphaBlend = Std.Sprite.AlphaBlend.Add
		drawParam.color.a = 0.3
		if rand.getBool():
			drawParam.flipX()
		animation = createSequenceAnimation(
			core.resource.spNormalParticleTexList, drawParam)
		animation.frameInterval = 0.4
		
		rect = Std.Hit.RectI(locator.position, particleSize, True)
		animeObj = Auxs.Animation(rect, animation)
		Ctrl.Actor.registerActor(animeObj)
	shot.setDamageToBulletCallback(damageToBulletCallback)
Esempio n. 11
0
    def onUpdate(self):
        self.locator.update()
        rand = Ctrl.getRandom()
        vibration = Std.Vector2DF(rand.getFloat(*self.POS_VARIANCE), rand.getFloat(*self.POS_VARIANCE))
        self.pos = self.locator.position + vibration

        if self.task.alive:
            self.task.resume()

        self.drawParam.dst = self.position.makeRect(self.SIZE, True)
Esempio n. 12
0
	def update(self):
		self.onUpdate()
		
		if not self.finish:
			if not self._currentStage is None:
				self._currentStage.update()
			
			if self._currentStage is None:
				self._currentStage = Ctrl.getNextStage()
				self._currentStage._internalPyObject.stageSetRef = weakref.ref(self)
			elif self._currentStage.end:
				nextStage = Ctrl.getNextStage()
				if nextStage is None:
					self.finish = True
					self.onFinish()
				else:
					nextStage._internalPyObject.stageSetRef = weakref.ref(self)
					self._currentStage = nextStage
		
		self.infArea.update()
Esempio n. 13
0
	def _createTree(self):
		rand = Ctrl.getRandom()
		
		pos = Std.Vector2DF()
		pos.x = rand.getFloat(
			-_Tree.VALID_SIZE.x/2, 
			Std.Consts.ScreenSize.x - Std.Consts.StgInfAreaSize.x + _Tree.VALID_SIZE.x/2)
		pos.y = -_Tree.VALID_SIZE.y / 2
		
		tree = _Tree(pos, self.stageSet)
		Ctrl.Actor.registerActor(tree)
		self.treeList.insert(0, tree)
Esempio n. 14
0
	def wait(self):
		random = Ctrl.getRandom()
		
		waitCount = 60 * 10
		while waitCount > 0:
			if waitCount % 20 == 0:
				idiot01 = Idiot01(
					Std.Vector2DF(random.getFloat(0, 440), -32), 
					self.stage.resource, self.stageSetRef().scoreManager)
				Ctrl.Actor.registerEnemy(idiot01)
			
			waitCount -= 1
			yield
Esempio n. 15
0
    def task(self, bit):
        rotSpeed = 15
        if not self.clockwise:
            rotSpeed *= -1
        rotSum = 0
        while abs(rotSum) < 360:
            bit.angle += rotSpeed
            rotSum += rotSpeed
            yield

        bit.circling.circling = True
        bit.circling.circlingAngle = 15

        wait = createWait(self.regulation.aimingFrameNum)
        rand = Ctrl.getRandom()
        angleError = rand.getFloat(*self.regulation.angleError)
        while wait():
            targetAngle = bit.locator.position.getAngle(Ctrl.Actor.myShip.position) + angleError
            bit.circling.targetAngle = targetAngle
            yield

        bit.circling.circling = False
        bit.circling.circlingAngle = bit.CIRCLING_ANGLE

        if self.clockwise:
            crossLaunchAngle = bit.angle - 90
        else:
            crossLaunchAngle = bit.angle + 90
        cross = _TracingCross(self.core.resource, bit.nozzlePos, crossLaunchAngle, self.rank, self.clockwise)
        Ctrl.Actor.registerBullet(cross)

        drawParam = Auxs.createBulletRedDrawParam(bit.nozzlePos, Std.Vector2DF(16, 8))
        for i in range(int(self.regulation.launchRepeat)):
            NWay.launchLinear(
                bit.nozzlePos,
                bit.angle,
                self.regulation.angleInterval,
                self.regulation.wayNum,
                int(drawParam.dst.w / 2),
                drawParam,
                self.regulation.speed(i),
                self.regulation.accel(i),
            )

            wait = createWait(self.regulation.launchInterval)
            while wait():
                yield

        wait = createWait(self.regulation.endWait)
        while wait():
            yield
Esempio n. 16
0
			def __init__(self, locator, size, relPos, drawParam):
				self.locator = locator
				self.stdSize = size
				self.size = size * 6
				self.relPos = relPos
				self.appeared = False
				
				self.drawParam = drawParam
				self.drawParam.color.a = 0
				self.drawParam.rotDegree = Ctrl.getRandom().getFloat(-180, 180)
				
				self.taskList = []
				self.taskList.append(Coroutine(self._alphaTask))
				self.taskList.append(Coroutine(self._sizeTask))
				self.taskList.append(Coroutine(self._rotateTask))
Esempio n. 17
0
	def onUpdate(self):
		if self.levelChangeWaitCount > 0:
			self.levelChangeWaitCount -= 1
		controller = Ctrl.getController()
		if(controller.isHold(Std.Input.KeyId.C) and 
		self.levelChangeWaitCount == 0):
			def change(level):
				self.level += level
				self.levelChangeWaitCount = 60
				self.core.lockManager.adjust()
				self.core.resource.se_ChangeOption.play()
			dirY = controller.direction.y
			if dirY < -0.3 and self.level < self.maxLevel:
				change(1)
			elif dirY > 0.3 and self.level > 1:
				change(-1)
Esempio n. 18
0
	def __init__(self, core, position):
		super().__init__(position, self.RADIUS, self.BASE_DAMAGE)
		self.noDamage = True
		self.locator = Std.Locator.LinearF(position)
		self.paBaseDamage = self.PA_BASE_DAMAGE
		self.forcibleForPA = True
		self.frameCounnt = self.LONGEVITY
		
		drawParam = Std.Sprite.DrawParam()
		drawParam.src = Std.RectF(0, 0, 128, 128)
		drawParam.dst = position.makeRect(self.SIZE, True)
		drawParam.priority = Ctrl.DrawPriority.myShot
		self.animation = createSequenceAnimation(
			core.resource.plasmaBlastTexList, drawParam)
		rand = Ctrl.getRandom()
		self.animation.play(
			rand.getInt(0, self.animation.frameHolder.frameNum - 1))
Esempio n. 19
0
	def onErase(self):
		dst = self.position.makeRect(self.particleSize, True)
		drawParam = Std.Sprite.DrawParam()
		drawParam.src = Std.RectF(0, 0, 128, 128)
		drawParam.dst = dst
		drawParam.priority = Ctrl.DrawPriority.myShot
		drawParam.rotDegree = self.drawParam.rotDegree
		if Ctrl.getRandom().getBool():
			drawParam.flipX()
		if self.toggle:
			texList = self.core.resource.lockMainParticleTexList_1
		else:
			texList = self.core.resource.lockMainParticleTexList_2
		animation = createSequenceAnimation(texList, drawParam)
		animation.frameInterval = 0.6
		animeObj = Auxs.Animation(Std.Hit.RectI(dst), animation)
		Ctrl.Actor.registerActor(animeObj)
Esempio n. 20
0
		def launch():
			rand = Ctrl.getRandom()
			while True:
				drawParam = Auxs.createBulletRedDrawParam(
					bit.nozzlePos, Std.Vector2DF(16, 8))
				NWay.launchLinear(
					bit.nozzlePos, 
					bit.circling.angle, 
					self.regulation.angleInterval, 
					self.regulation.wayNum, 
					int(drawParam.dst.w/2), 
					drawParam, 
					self.regulation.speed)
				
				launchWait = createWait(
					rand.getFloat(*self.regulation.launchInterval))
				while launchWait(): yield
Esempio n. 21
0
	def onUpdate(self):
		self.slow = Ctrl.getController().isHold(Std.Input.KeyId.LShift)
		self.drawing.update()
		
		self.shipLauncher.update()
		self.optionManager.update()
		
		if self.spFrameCount > 0:
			self.spFrameCount -= 1
			if self.spFrameCount <= 0:
				self.spFinished()
			elif self.spFrameCount == 60:
				self.drawing.spFinishingAnimation.play()
		
		if self.spFinishedForceFrameCount > 0:
			self.applySpFinishedForce()
			self.spFinishedForceFrameCount -= 1
Esempio n. 22
0
	def update(self):
		if self.controlFlag:
			targetDistance = self.core.locator.position.getDistance(
				self.core.locator.targetPosition)
			if(self.changeTargetCount == self.CHANGE_TARGET_FREQUENCY
			or targetDistance <= self.baseSpeed):
				random = Ctrl.getRandom()
				
				nextTargetPos = Std.Vector2DF()
				while True:
					randX = random.getFloat(0, self.MOVE_AREA_SIZE.x)
					randX -= self.MOVE_AREA_SIZE.x / 2
					randY = random.getFloat(0, self.MOVE_AREA_SIZE.y)
					randY -= self.MOVE_AREA_SIZE.y / 2
					
					nextTargetPos = Std.Vector2DF(
						self.basePos.x + randX, self.basePos.y + randY)
					nextTargetDistance = self.core.locator.position.getDistance(nextTargetPos)
					if nextTargetDistance > self.baseSpeed:
						break
				
				self.core.locator.targetPosition = nextTargetPos
				
				self.changeTargetCount = 0
			else:
				self.changeTargetCount += 1
		
		self.core.locator.update()
		
		if self.controlFlag:
			currentSpeed = self.core.locator.speed.getAbs()
			speedDir = self.core.locator.speed.getAngle()
			self.core.locator.speed.setUnitVector(speedDir)
			if currentSpeed > self.baseSpeed:
				if currentSpeed - self.SPEED_CORRECTION_AMOUNT < self.baseSpeed:
					self.core.locator.speed *= self.baseSpeed
				else:
					self.core.locator.speed *= currentSpeed - self.SPEED_CORRECTION_AMOUNT
			elif currentSpeed < self.baseSpeed:
				if currentSpeed + self.SPEED_CORRECTION_AMOUNT > self.baseSpeed:
					self.core.locator.speed *= self.baseSpeed
				else:
					self.core.locator.speed *= currentSpeed + self.SPEED_CORRECTION_AMOUNT
Esempio n. 23
0
    def __init__(self, core):
        controller = Ctrl.getController()

        def task():
            yes = 0
            no = 1
            arrow = Std.ArrowLocator(yes, yes, no)
            arrow.controller = controller
            arrow.setMoveCallback(lambda: core.resource.se_Select1.play())

            def drawTask():
                basePos = Std.Point2DF(100, 200)
                color = Std.ColorF()
                while True:
                    font = core.resource.font_Common32
                    font.setPriority(Ctrl.DrawPriority.pauseStr)
                    font.shakable = False
                    font.draw(basePos, color, "コンティニューしますか?")
                    for i in range(no + 1):
                        dst = Std.Point2DF(basePos.x, basePos.y + font.size * (i + 1))
                        if i == yes:
                            font.draw(dst, color, "はい")
                        elif i == no:
                            font.draw(dst, color, "いいえ")
                    dst = Std.Point2DF(basePos.x - font.size, basePos.y + font.size * (arrow.position + 1))
                    font.draw(dst, color, "→")
                    yield

            self.drawTask = Coroutine(drawTask)

            while True:
                arrow.update()
                if controller.isPush(Std.Input.KeyId.Z):
                    core.resource.se_Select3.play()
                    if arrow.position == yes:
                        core.end = True
                        self.drawTask = None
                    elif arrow.position == no:
                        core.fadeOut(30, lambda: Std.Scene.changeScene(GameOverScene()))
                yield

        self.task = Coroutine(task)
        self.drawTask = None
Esempio n. 24
0
	def update(self):
		self.repCounter.update()
		
		rand = Ctrl.getRandom()
		for _ in range(self.repCounter.repeatCount):
			pos = self._getPos()
			baseAngle = 90 + rand.getFloat(-45, 45)
			
			drawParam = Auxs.createBulletBlueDrawParam(
				pos, Std.Vector2DF(16, 16))
			drawParam.dst = pos.makeRect(
				drawParam.dst.w, drawParam.dst.h, True)
			
			NWay.launchLinear(
				pos, 
				baseAngle, 
				self.regulation.angleInterval, 
				self.regulation.wayNum, 
				int(drawParam.dst.w/4), 
				drawParam, 
				self.regulation.speed)
Esempio n. 25
0
	def _destruct(self):
		self.core.destructBullets()
		self.core.move.controlFlag = False
		self.core.locator.tracing = False
		self.core.locator.accel *= 0
		self.core.locator.speed = Std.Vector2DF(0, 0.2)
		self.core.primalArmor.enabled = False
		
		self.core.resource.se_BossDestruction1_1.play()
		for i in range(60 * 4 + 52): 
			if i % 2 == 0:
				expObjList = self.core.drawing.createExplosion(
					Ctrl.DrawPriority.enemy4, 
					1, 
					self.core.locator.position, 
					96, 
					0.7, 
					Std.Vector2DF(100, 80), 
					0.3)
				for expObj in expObjList:
					angle = self.core.locator.position.getAngle(
						expObj.position)
					rand = Ctrl.getRandom()
					speed = rand.getFloat(0, 3)
					expObj.locator.speed.setUnitVector(angle)
					expObj.locator.speed *= speed
			yield
		
		self.core.resource.se_BossDestruction1_1.stop()
		self.core.resource.se_BossDestruction1_2.play()
		self.core.drawing.createExplosion(
			Ctrl.DrawPriority.enemy4, 
			50, 
			self.core.locator.position, 
			384, 
			4, 
			Std.Vector2DF(200, 150), 
			0.3)
		Std.Sprite.setShake(20, 0.2)
		self.core.valid = False
Esempio n. 26
0
	def __init__(self, core):
		controller = Ctrl.getController()
		
		def task():
			yes = 0; no = 1
			arrow = Std.ArrowLocator(yes, yes, no)
			arrow.controller = controller
			def drawTask():
				basePos = Std.Point2DF(100, 200)
				color = Std.ColorF()
				while True:
					font = Resource.getFont(
						"font32", Ctrl.DrawPriority.pauseStr, False, 32)
					font.draw(basePos, color, "コンティニューしますか?")
					for i in range(no + 1):
						dst = Std.Point2DF(
							basePos.x, basePos.y + font.size*(i + 1))
						if i == yes:
							font.draw(dst, color, "はい")
						elif i == no:
							font.draw(dst, color, "いいえ")
					dst = Std.Point2DF(
						basePos.x - font.size, 
						basePos.y + font.size*(arrow.position + 1))
					font.draw(dst, color, "→")
					yield
			self.drawTask = Coroutine(drawTask)
			
			while True:
				arrow.update()
				if controller.isPush(Std.Input.KeyId.Z):
					if arrow.position == yes:
						core.end = True
						self.drawTask = None
					elif arrow.position == no:
						core.fadeOut(
							30, lambda : Std.Scene.changeToSTGTitle())
				yield
		self.task = Coroutine(task)
		self.drawTask = None
Esempio n. 27
0
	def createExplosion(self, drawPri, num, pos, size, 
					frameItv = 1, 
					posVariance = Std.Vector2DF(), 
					sizeVarianceRate = 0, 
					frameItvVarianceRate = 0):
		rand = Ctrl.getRandom()
		expObjList = []
		for _ in range(num):
			sizeRate = rand.getFloat(
				-sizeVarianceRate, 
				sizeVarianceRate)
			correctedSize = size + size*sizeRate
			itv = rand.getFloat(
				frameItv - frameItv*frameItvVarianceRate, 
				frameItv + frameItv*frameItvVarianceRate)
			
			expObjList.append(Auxs.createExplosion2(
				self.getVariantVector(pos, posVariance), 
				Std.Vector2DF(correctedSize, correctedSize), 
				itv, 
				drawPri))
		return expObjList
Esempio n. 28
0
			def createParticle(self):
				num = 20
				size = Std.Vector2DF(self.size, self.size)
				speed = 2
				rotSpeed = 6
				
				drawParam = Std.Sprite.DrawParam(self.drawParam)
				drawParam.dst = self.position.makeRect(size, True)
				drawParam.priority = Ctrl.DrawPriority.scoreRate2
				drawParam.color.a = 1
				drawParam.rotDegree = Ctrl.getRandom().getFloat(-180, 180)
				
				param = Auxs.Particle.Param()
				param.drawParameter = drawParam
				param.setPosition(self.position)
				param.setSpeedRange(speed * 0.5, speed * 1.5)
				param.setZoomRateRange(0.8, 1.2)
				param.setZoomDecRateRange(0.015, 0.025)
				param.setRotSpeedRange(rotSpeed * 0.5, rotSpeed * 1.5)
				
				creator = Auxs.Particle.Creator(param)
				creator.create(num)
Esempio n. 29
0
		def createSmoke(left):
			rand = Ctrl.getRandom()
			for _ in range(self.smokeRepCounter.repeatCount):
				pos = self.getVariantVector(
					self.core.locator.position, 
					Std.Vector2DF(6, 24))
				if left:
					pos.x += 150 - 76/2
				else:
					pos.x -= 150 - 76/2
				pos.y += 40
				
				baseSize = Std.Vector2DF(48, 48)
				sizeRate = rand.getFloat(-0.5, 0.5)
				correctedSize = baseSize + baseSize*sizeRate
				
				smoke = Auxs.createSmoke(
					pos, 
					correctedSize, 
					1, 
					Ctrl.DrawPriority.enemy2, 
					0.2)
				smoke.locator.speed.y = 2
Esempio n. 30
0
		def selectTask():
			arrow = Std.ArrowLocator(
				initPos, enum.returnToGame, enum.option)
			arrow.setMoveCallback(lambda: core.resource.se_Select1.play())
			def drawTask():
				basePos = Std.Point2DF(100, 200)
				color = Std.ColorF()
				while True:
					font = core.resource.font_Common32
					font.setPriority(Ctrl.DrawPriority.pauseStr)
					font.shakable = False
					for i in range(enum.option + 1):
						dst = Std.Point2DF(basePos.x, basePos.y + font.size*i)
						if i == enum.returnToGame:
							font.draw(dst, color, "ゲームに戻る")
						elif i == enum.restart:
							font.draw(dst, color, "最初から始める")
						elif i == enum.returnToTitle:
							font.draw(dst, color, "タイトル画面へ")
						elif i == enum.option:
							font.draw(dst, color, "オプション")
					dst = Std.Point2DF(
						basePos.x - font.size, 
						basePos.y + font.size*arrow.position)
					font.draw(dst, color, "→")
					yield
			self.drawTask = Coroutine(drawTask)
			
			while True:
				arrow.update()
				
				if(controller.isPush(Std.Input.KeyId.Space) or 
				controller.isPush(Std.Input.KeyId.X)):
					core.resource.se_Cancel.play()
					core.end = True
					self.drawTask = None
				elif controller.isPush(Std.Input.KeyId.Z):
					def confirmTask(action):
						yes = 0; no = 1
						confArrow = Std.ArrowLocator(no, yes, no)
						confArrow.setMoveCallback(lambda: core.resource.se_Select1.play())
						def confDrawTask():
							basePos = Std.Point2DF(100, 200)
							color = Std.ColorF()
							while True:
								font = core.resource.font_Common32
								font.setPriority(Ctrl.DrawPriority.pauseStr)
								font.shakable = False
								font.draw(basePos, color, "本当に?")
								for i in range(no + 1):
									dst = Std.Point2DF(
										basePos.x, basePos.y + font.size*(i + 1))
									if i == yes:
										font.draw(dst, color, "はい")
									elif i == no:
										font.draw(dst, color, "いいえ")
								dst = Std.Point2DF(
									basePos.x - font.size, 
									basePos.y + font.size*(confArrow.position + 1))
								font.draw(dst, color, "→")
								yield
						self.drawTask = Coroutine(confDrawTask)
						
						while True:
							confArrow.update()
							if controller.isPush(Std.Input.KeyId.X):
								core.resource.se_Cancel.play()
								break
							elif controller.isPush(Std.Input.KeyId.Z):
								if confArrow.position == yes:
									core.resource.se_Select3.play()
									core.fadeOut(30, action)
								elif confArrow.position == no:
									core.resource.se_Cancel.play()
									break
							yield
						self.drawTask = Coroutine(drawTask)
					if arrow.position == enum.returnToGame:
						core.resource.se_Cancel.play()
						core.end = True
						self.drawTask = None
					elif arrow.position == enum.restart:
						core.resource.se_Select2.play()
						confTask = Coroutine(confirmTask)
						yield
						while confTask.alive:
							confTask.resume(lambda : Ctrl.restart())
							yield
					elif arrow.position == enum.returnToTitle:
						core.resource.se_Select2.play()
						confTask = Coroutine(confirmTask)
						yield
						while confTask.alive:
							confTask.resume(lambda : Std.Scene.changeToSTGTitle())
							yield
					elif arrow.position == enum.option:
						core.resource.se_Select2.play()
						core.view = OptionTop(core)
				yield