public void EnemyJumping(int index, bool direction, Vector pos, int width, int jumpPower, Vector target) { if (!BlockCheck.BlockCheckTop(pos.X, pos.Y, width, jumpPower)) { if (pos.Y - SystemOperator.PixelPerSecond(jumpPower) > 0) { lstEnemyData[index].jumpCount++; lstEnemyData[index].isJumping = true; } } if (lstEnemyData[index].isJumping) { if (lstEnemyData[index].jumpTotalLength < lstEnemyData[index].jumpMaxHeight) { lstEnemyData[index].position.Y -= SystemOperator.PixelPerSecond(jumpPower); lstEnemyData[index].jumpTotalLength += SystemOperator.PixelPerSecond(jumpPower); } else { lstEnemyData[index].isJumping = false; lstEnemyData[index].jumpTotalLength = 0; } } }
public static void SubWeaponPosUpdate(Canvas canvas) { if (ImageData.imgSubWeapon.Count == 1) { double posX = Canvas.GetLeft(ImageData.imgSubWeapon[0]); double posY = Canvas.GetTop(ImageData.imgSubWeapon[0]); if (subWeaponTotalDistance < subWeaponRange) { if (!subWeaponDirection) { posX -= SystemOperator.PixelPerSecond(subWeaponSpeed); } else { posX += SystemOperator.PixelPerSecond(subWeaponSpeed); } subWeaponTotalDistance += (int)SystemOperator.PixelPerSecond(subWeaponSpeed); Canvas.SetLeft(ImageData.imgSubWeapon[0], posX); Canvas.SetZIndex(ImageData.imgSubWeapon[0], ImageZindex.subWeapon); } else { subWeaponTotalDistance = 0; ImageData.imgSubWeapon[0].Name = ""; canvas.Children.Remove(ImageData.imgSubWeapon[0]); ImageData.imgSubWeapon.Remove(ImageData.imgSubWeapon[0]); } } }
private static void EnemyHorizontalMove(int index, bool direction, Vector pos, Vector size, int speed, bool wait) { if (!lstEnemyData[index].valueSetComp) { EnemyBehaviorValuesSetup(index); } if (lstEnemyData[index].totalDistance.X < lstEnemyData[index].targetDistance.X) { if (!direction) { if (!BlockCheck.BlockCheckLeft(pos.X, pos.Y, (int)size.Y, speed) && pos.X > 0) { if (pos.X - SystemOperator.PixelPerSecond(speed) > 0) { pos.X -= SystemOperator.PixelPerSecond(speed); } else { lstEnemyData[index].targetDistance = new Vector(0, lstEnemyData[index].targetDistance.Y); lstEnemyData[index].direction = true; } } } else { if (!BlockCheck.BlockCheckRight(pos.X, pos.Y, (int)size.X, (int)size.Y, speed) && pos.X + size.X < 1024 - lstEnemyData[index].size.X) { if (pos.X + SystemOperator.PixelPerSecond(speed) < 992) { pos.X += SystemOperator.PixelPerSecond(speed); } else { lstEnemyData[index].targetDistance = new Vector(0, lstEnemyData[index].targetDistance.Y); lstEnemyData[index].direction = false; } } } lstEnemyData[index].position.X = pos.X; lstEnemyData[index].totalDistance.X += SystemOperator.PixelPerSecond(speed); } else { if (wait) { lstEnemyData[index].isWaiting = true; lstEnemyData[index].totalWaitTime = 0; lstEnemyData[index].targetWaitTime = 2000; } lstEnemyData[index].targetDistance = new Vector(0, 0); lstEnemyData[index].totalDistance = new Vector(0, 0); lstEnemyData[index].valueSetComp = false; } }
public static void MainWeaponAttack(Canvas canvas) { double posx = Canvas.GetLeft(ImageData.imgPlayer); double posy = Canvas.GetTop(ImageData.imgPlayer); Canvas.SetLeft(imgMainWeapon, posx); Canvas.SetTop(imgMainWeapon, posy); if (PlayerStatus.meleeDirection) { if (rtMainWeapon.Angle < 360 + 45) { double temp = SystemOperator.PixelPerSecond(PlayerStatus.meleeSpeed); rtMainWeapon.Angle += Math.Round(temp, 0); double radian = rtMainWeapon.Angle * Math.PI / 180; for (int i = 0; i < lstMainWeaponCollider.Count; i++) { lstMainWeaponCollider[i] = new Vector(posx + 32 * (i + 1) * Math.Cos(radian), posy + 32 * (i + 1) * Math.Sin(radian)); } } else { rtMainWeapon.Angle = 270; imgMainWeapon.Visibility = Visibility.Hidden; PlayerStatus.isMainAttack = false; } } else { if (rtMainWeapon.Angle >= 180 - 45) { double temp = SystemOperator.PixelPerSecond(PlayerStatus.meleeSpeed); rtMainWeapon.Angle -= Math.Round(temp, 0); double radian = rtMainWeapon.Angle * Math.PI / 180; for (int i = 0; i < lstMainWeaponCollider.Count; i++) { lstMainWeaponCollider[i] = new Vector(posx + 32 * (i + 1) * Math.Cos(radian), posy + 32 * (i + 1) * Math.Sin(radian)); } } else { rtMainWeapon.Angle = 270; imgMainWeapon.Visibility = Visibility.Hidden; PlayerStatus.isMainAttack = false; } } }
public static void FallingPlayer() { if (!isLadder && !isPlat && !jumping) { if (!BlockCheck.BlockCheckBottom(playerPos.X, playerPos.Y, (int)playerSize.X, (int)playerSize.Y, weight)) { if (!isKnockBack) { playerPos.Y += SystemOperator.PixelPerSecond(weight); SystemOperator.moveCommonAmountY = SystemOperator.PixelPerSecond(weight); } if (!fallingStart) { fallingStartPoint = playerPos.Y; } fallingStart = true; isGround = false; } else { if (!isGround) { playerPos.Y = Math.Floor(playerPos.Y + SystemOperator.PixelPerSecond(weight) / 32) - 1; } if (fallingStart) { int block = 0; block = (int)(playerPos.Y - fallingStartPoint) / 32; if (block > fallingEndure) { Sound.SoundEffectSelector(SeName.Player_Damage); Sound.SoundEffectPlayer(SeName.Player_Damage); } } fallingStart = false; isGround = true; jumpCount = 0; } } Canvas.SetTop(ImageData.imgPlayer, playerPos.Y); }
public static void FallingItems() { for (int i = 0; i < lstItemData.Count; i++) { double posX = Canvas.GetLeft(lstItemData[i].imgItem); double posY = Canvas.GetTop(lstItemData[i].imgItem); if (!BlockCheck.BlockCheckBottom(posX, posY, (int)lstItemData[i].size.X, (int)lstItemData[i].size.Y, lstItemData[i].weight)) { posY += SystemOperator.PixelPerSecond(lstItemData[i].weight); } Canvas.SetTop(lstItemData[i].imgItem, posY); } }
private static void EnemyFalling(int index, bool direction, Vector pos, Vector size, int speed, Vector target) { if (!lstEnemyData[index].isLadder) { if ((!BlockCheck.BlockCheckBottom(pos.X, pos.Y, (int)size.X, (int)size.Y, lstEnemyData[index].weight))) { lstEnemyData[index].position.Y += SystemOperator.PixelPerSecond(lstEnemyData[index].weight); if (!lstEnemyData[index].isFalling) { lstEnemyData[index].fallingStartPoint = pos.Y; } lstEnemyData[index].isFalling = true; } else { if (lstEnemyData[index].isFalling) { int block = 0; block = (int)(pos.Y - lstEnemyData[index].fallingStartPoint) / 32; if (block > lstEnemyData[index].fallingEndure) { Sound.SoundEffectSelector(SeName.Shock); Sound.SoundEffectPlayer(SeName.Shock); lstEnemyData[index].life -= 1; } } lstEnemyData[index].isFalling = false; lstEnemyData[index].jumpCount = 0; } } }
public static void MovePlayer(Canvas canvas) { if (KeyController.keyLeft) { if (!BlockCheck.BlockCheckLeft(playerPos.X, playerPos.Y, (int)playerSize.Y, moveSpeed) && !ObjectChecker.obstacleLeft) { if (playerPos.X - SystemOperator.PixelPerSecond(moveSpeed) > 0) { playerPos.X -= SystemOperator.PixelPerSecond(moveSpeed); SystemOperator.moveCommonAmountX = moveSpeed; } playerDirection = false; } } if (KeyController.keyRight) { if (!BlockCheck.BlockCheckRight(playerPos.X, playerPos.Y, (int)playerSize.X, (int)playerSize.Y, moveSpeed) && !ObjectChecker.obstacleRight) { if (playerPos.X + SystemOperator.PixelPerSecond(moveSpeed) < 992) { playerPos.X += SystemOperator.PixelPerSecond(moveSpeed); SystemOperator.moveCommonAmountX = moveSpeed; } playerDirection = true; } } if (KeyController.keyLeft || KeyController.keyRight) { isMove = true; } else { isMove = false; } if (KeyController.keyUp && !TalkCommander.isTalk && !ObjectChecker.obstacleUp) { if (isLadder) { if (playerPos.Y - SystemOperator.PixelPerSecond(moveSpeed) > 0) { playerPos.Y -= SystemOperator.PixelPerSecond(moveSpeed); SystemOperator.moveCommonAmountY = moveSpeed; } } } if (KeyController.keyDown && !TalkCommander.isTalk && !ObjectChecker.obstacleDown) { if (isLadder) { if (playerPos.Y + SystemOperator.PixelPerSecond(moveSpeed) < 768) { playerPos.Y += SystemOperator.PixelPerSecond(moveSpeed); SystemOperator.moveCommonAmountY = moveSpeed; } } if (isPlat) { if (playerPos.Y + SystemOperator.PixelPerSecond(moveSpeed) < 768) { playerPos.Y += SystemOperator.PixelPerSecond(moveSpeed); SystemOperator.moveCommonAmountY = moveSpeed; } } if (!isLadder) { isSquat = true; } } else { isSquat = false; } //jump if (KeyController.keySpace && jumpCount == 0) { if (playerPos.Y - jumpPower > 0) { jumpCount++; jumping = true; } } if (jumping) { if (jumpTotalLength < jumpMaxHeight && !BlockCheck.BlockCheckTop(playerPos.X, playerPos.Y, (int)playerSize.X, jumpPower) && !ObjectChecker.obstacleUp) { playerPos.Y -= SystemOperator.PixelPerSecond(jumpPower); SystemOperator.moveCommonAmountY = SystemOperator.PixelPerSecond(jumpPower); jumpTotalLength += SystemOperator.PixelPerSecond(jumpPower); } else { jumping = false; jumpTotalLength = 0; } } //itemget if (KeyController.keyA) { PlayerItemGetting(canvas); } //Attack if (KeyController.keyS) { SubWeapon.SubWeaponGenerate(canvas, playerPos.X, playerPos.Y); } if (KeyController.keyD) { if (!isMainAttack) { MainWeapon.imgMainWeapon.Visibility = Visibility.Visible; meleeDirection = playerDirection; isMainAttack = true; } } if (KeyController.keyE) { if (ObjectChecker.isTrigger && !TalkCommander.isTalk) { ObjectBehavior.OnTriggerReactEvent(); } } if (isKnockBack) { SystemOperator.BoundObject(ref playerPos, boundDirectionX, ref knockBackTotalDis, knockBackTargetDis, ref knockBackBps, ref coefficient, ref boundDirectionY, weight, moveSpeed, jumpPower, playerSize, ref isKnockBack); } //image change if (GameTransition.gameTransition == GameTransitionType.StageDuring) { if (KeyController.keyLeft || KeyController.keyRight) { if (!playerDirection) { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteMoveL); } else { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteMoveR); } } else { if (!playerDirection) { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteIdleL); } else { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteIdleR); } } if (isSquat) { if (!playerDirection) { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteSquatL); } else { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteSquatR); } } if (jumping) { if (!playerDirection) { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteJumpL); } else { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteJumpR); } } if (isLadder && (KeyController.keyUp || KeyController.keyDown)) { ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(CategoryName.Player, StageData.lstDbPlayer.spriteLadder); } } Canvas.SetLeft(ImageData.imgPlayer, playerPos.X); Canvas.SetTop(ImageData.imgPlayer, playerPos.Y); }
//frameupdate protected void FrameUpdateTimer_Update(object sender, ElapsedEventArgs e) { try { this.Dispatcher.Invoke(() => { //TimeManagement this.GetNowTime(); elapsedTime = nowTime - lastTime; //debug lblDebugA.Content = PlayerStatus.playerPos.X + "," + PlayerStatus.playerPos.Y; lblDebugB.Content = SystemOperator.PixelPerSecond(PlayerStatus.weight); if (elapsedTime < 0) { elapsedTime += 59999; } KeyController.KeyInterval(); //GameTransition if (!GameTransition.duringTransition) { GameTransition.GameTransitionController(Canvas, CaLife, CaMana); } //EventAction if (GameTransition.eventStart) { if (GameTransition.lstEventTask.Count > 0) { GameTransition.EventTaskCommander(); } if (GameTransition.charaRenderStart) { GameTransition.CharaRender(); } if (GameTransition.screenFadeStart) { GameTransition.ScreenFade(Canvas); } if (!GameTransition.eventBalloonIsOpen) { if (GameTransition.eventCount < StageEvent.listEvent.Count) { GameTransition.EventController(Canvas); } } else { if (KeyController.keyReturn) { EnterKeyAction(Canvas); } } } if (KeyController.keyReturn) { EnterKeyAction(Canvas); } //got to Edit Mode if (GameTransition.gameTransition == GameTransitionType.Title) { if (KeyController.keyE) { mainCanvas.Children.Remove(ImageData.imgTitle[0]); mainCanvas.Children.Remove(ImageData.imgTitle[1]); countTime = 0; GameTransition.gameTransition = GameTransitionType.EditMode; timerFrameUpdate.Stop(); btnViewStageEditorWindow.IsEnabled = true; btnViewMaterialBrowser.IsEnabled = true; btnViewImageManager.IsEnabled = true; btnViewDatabaseWindow.IsEnabled = true; lblMode.Content = "ゲームモード:エディット"; } } //StageDuring game play if (GameTransition.gameTransition == GameTransitionType.StageDuring && !isDeactivated) { Animator.AnimationItem(); Animator.AnimationObject(); if (ObjectChecker.isTrigger && !TalkCommander.isTalk) { ObjectBehavior.OnTriggerTouchEvent(); } if (TalkCommander.isTalk && !TalkCommander.isTalkOpenBalloon) { TalkCommander.TalkWithNpc(Canvas); } if (TalkCommander.isTalkSelecting) { TalkCommander.TalkSelecting(Canvas); } //first action,last Processing including deletion of list SystemOperator.moveCommonAmountX = 0; SystemOperator.moveCommonAmountY = 0; ObjectChecker.CollisionPtoActionCollider(); PlayerBehavior.CollisionPtoE(); PlayerBehavior.MovePlayer(Canvas); PlayerBehavior.FallingPlayer(); Item.FallingItems(); EnemyBehavior.EnemyAction(); Animator.AnimationEnemy(); SubWeapon.SubWeaponPosUpdate(Canvas); if (PlayerStatus.isMainAttack) { MainWeapon.MainWeaponAttack(Canvas); MainWeapon.MainWeaponCollision(Canvas); } SubWeapon.CollisionSubWeapon(Canvas); PlayerStatus.PlayerStatusUpdate(); PlayerBehavior.DamageInvinsibleTimer(); SpawnEnemy.RemoveEnemy(Canvas); SpawnEnemy.ReSpawnEnemy(Canvas); } if (Sound.seStop) { if (Sound.sePlayTime < 60) { Sound.sePlayTime++; } else { Sound.sePlayTime = 0; Sound.seStop = false; } } lastTime = nowTime; }); } catch (TaskCanceledException) { } }