public static void GameTransitionController(Canvas canvas, Canvas caLife, Canvas caMana) { switch (gameTransition) { case GameTransitionType.Title: if (!endSplashLogo) { splashLogoPhase = 4; switch (splashLogoPhase) { case 0: if (splashWaitTotal < 1000) { splashWaitTotal += MainWindow.elapsedTime; } else { splashLogoPhase++; splashWaitTotal = 0; } break; case 1: if (screenFadeTotal < 1) { double temp = (double)MainWindow.elapsedTime / 2000; screenFadeTotal += Math.Round(temp, 2); ImageData.imgTitle[0].Opacity = screenFadeTotal; } else { ImageData.imgTitle[0].Opacity = 1; splashLogoPhase++; } break; case 2: if (splashWaitTotal < 2000) { splashWaitTotal += MainWindow.elapsedTime; } else { splashLogoPhase++; splashWaitTotal = 0; } break; case 3: if (screenFadeTotal > 0) { double temp = (double)MainWindow.elapsedTime / 2000; screenFadeTotal -= Math.Round(temp, 2); ImageData.imgTitle[0].Opacity = screenFadeTotal; } else { ImageData.imgTitle[0].Opacity = 0; splashLogoPhase++; } break; case 4: if (splashWaitTotal < 1000) { splashWaitTotal += MainWindow.elapsedTime; } else { endSplashLogo = true; screenFadeTotal = 0; Sound.SoundBgmSelector(BgmName.Opening); Sound.bgm.Play(); MainWindow.TitleOpen(canvas); } break; } } else { MainWindow.countTime += MainWindow.elapsedTime; if (MainWindow.countTime >= 1000) { MainWindow.titleStrSwitch = !MainWindow.titleStrSwitch; MainWindow.countTime = 0; if (!MainWindow.titleStrSwitch) { ImageData.imgTitle[1].Visibility = Visibility.Hidden; } else { ImageData.imgTitle[1].Visibility = Visibility.Visible; } } } break; case GameTransitionType.StageInit: StageInit.InitBlockData(); StageDataSetting.SetData(); StageInit.StageBlockSet(canvas); StageManager.StageObjectsSetting(canvas); MainWindow.lblMode.Content = "ゲームモード:ステージ開始"; gameTransition = GameTransitionType.StageStart; break; case GameTransitionType.StageStart: if (!eventStart) { duringTransition = true; StageEvent.InitEvent(); eventCount = 0; eventStart = true; } break; case GameTransitionType.StageDuring: if (StageManager.StageClearCheck()) { gameTransition = GameTransitionType.StageEnd; MainWindow.lblMode.Content = "ゲームモード:ステージ終了"; } else { if (growthEnemy) { SpawnEnemy.SpawnSelect(canvas, ""); growthEnemy = false; } } break; case GameTransitionType.StageEnd: if (!eventStart) { duringTransition = true; eventStart = true; } break; case GameTransitionType.StageNext: if (!stageTestPlay) { StageManager.stageNum++; if (StageManager.stageNum >= StageOrder.lstStageOrder.Count) { MainWindow.timerFrameUpdate.Stop(); MessageBox.Show("すべてのステージが終わりました。ゲームを終了します。", "ゲームの終了", MessageBoxButton.OK, MessageBoxImage.Information); Application.Current.Shutdown(); } StageInit.StageBlockRemove(canvas); StageInit.StageObjectsRemove(canvas); StageInit.StageEnemyRemove(canvas); growthEnemy = false; StageInit.StageItemRemove(canvas); MainWindow.canScreenFade.Visibility = Visibility.Hidden; StageManager.lstClearCondition.Clear(); StageManager.clearFlag = false; MainWindow.lblMode.Content = "ゲームモード:ステージ準備"; gameTransition = GameTransitionType.StageInit; } else { MainWindow.timerFrameUpdate.Stop(); gameTransition = GameTransitionType.EditMode; stageTestPlay = false; StageManager.clearFlag = false; MainWindow.canScreenFade.Visibility = Visibility.Hidden; MainWindow.stageEditor.StageLoad(); MainWindow.stageEditor.StageEditorDataSetting(); StageEditorOperator.EditorPlayerPaletteSetting(); MainWindow.stageEditor.tbcEditSelect.IsEnabled = true; MainWindow.stageEditor.btnStageNumDecrease.IsEnabled = true; MainWindow.stageEditor.btnStageNumIncrease.IsEnabled = true; MainWindow.stageEditor.btnStageOrder.IsEnabled = true; MainWindow.stageEditor.btnStageTestPlay.IsEnabled = true; MainWindow.stageEditor.btnEventWindowOpen.IsEnabled = true; } break; case GameTransitionType.EditMode: break; } }
public static void EventController(Canvas canvas) { if (eventCount != StageEvent.listEvent.Count) { if (!eventWaiting && !screenFadeStart) { switch (StageEvent.listEvent[eventCount].eventType) { case EventCommandEnum.Wait: eventWaiting = true; EventWaiting(StageEvent.listEvent[eventCount].eventValue); Console.WriteLine("wait"); break; case EventCommandEnum.Balloon: Vector blpos = StageEvent.listEvent[eventCount].balloonPos; string blstring = StageEvent.listEvent[eventCount].balloonMsg; if (StageEvent.listEvent[eventCount].targetImgType == TargetType.Player) { eventTargetImage = ImageData.imgPlayer; } if (StageEvent.listEvent[eventCount].targetImgType == TargetType.Object) { eventTargetImage = ObjectChecker.lstObject[StageEvent.listEvent[eventCount].targetId].imgObject; } BalloonMessage.OpenBalloon(eventCount, canvas, blpos, eventTargetImage, blstring, false); eventBalloonIsOpen = true; break; case EventCommandEnum.UiVisibility: if (!StageEvent.listEvent[eventCount].uiVisible) { MainWindow.stpPlayerStatus.Visibility = Visibility.Hidden; } else { MainWindow.stpPlayerStatus.Visibility = Visibility.Visible; } break; case EventCommandEnum.KeyLock: KeyController.keyControlLocking = StageEvent.listEvent[eventCount].flagKeyLock; Console.WriteLine("keylock"); break; case EventCommandEnum.Move: lstEventTask.Add(new EventCommandTask { name = EventCommandEnum.Move }); if (StageEvent.listEvent[eventCount].targetImgType == TargetType.Player) { lstEventTask[lstEventTask.Count - 1].targetType = TargetType.Player; lstEventTask[lstEventTask.Count - 1].targetImage = ImageData.imgPlayer; lstEventTask[lstEventTask.Count - 1].moveDistance = StageEvent.listEvent[eventCount].moveDistance; } else if (StageEvent.listEvent[eventCount].targetImgType == TargetType.Object) { lstEventTask[lstEventTask.Count - 1].targetType = TargetType.Object; lstEventTask[lstEventTask.Count - 1].targetImage = ObjectChecker.lstObject[StageEvent.listEvent[eventCount].targetId].imgObject; lstEventTask[lstEventTask.Count - 1].targetID = StageEvent.listEvent[eventCount].targetId; lstEventTask[lstEventTask.Count - 1].moveDistance = StageEvent.listEvent[eventCount].moveDistance; } lstEventTask[lstEventTask.Count - 1].direction = StageEvent.listEvent[eventCount].direction; charaMoveStart = true; break; case EventCommandEnum.BgmPlay: Sound.SoundBgmSelector(StageEvent.listEvent[eventCount].bgmName); Sound.bgm.Play(); Console.WriteLine("bgm"); break; case EventCommandEnum.SePlay: Sound.SoundEffectSelector(StageEvent.listEvent[eventCount].seName); Sound.SoundEffectPlayer(StageEvent.listEvent[eventCount].seName); Console.WriteLine("se"); break; case EventCommandEnum.CharaFadeIn: ImageData.imgPlayer.Opacity = 0; ImageData.imgPlayer.Width = 32; ImageData.imgPlayer.Height = 64; renderRateTotal = 0; charaRenderIndex = eventCount; charaRenderStart = true; break; case EventCommandEnum.CharaImageChange: switch (StageEvent.listEvent[eventCount].targetImgType) { case TargetType.Player: ImageData.imgPlayer.Source = ImageData.ImageSourceSelector(StageEvent.listEvent[eventCount].categoryName, StageEvent.listEvent[eventCount].patternName); break; case TargetType.Enemy: // SpawnEnemy.lstEnemyData[0].imgEnemy.Source = ImageData.ImageSourceSelector(StageEvent.listEvent[eventCount].categoryName, StageEvent.listEvent[eventCount].patternName); break; case TargetType.Object: ObjectChecker.lstObject[StageEvent.listEvent[eventCount].targetId].imgObject.Source = ImageData.ImageSourceSelector(StageEvent.listEvent[eventCount].categoryName, StageEvent.listEvent[eventCount].patternName); break; case TargetType.Item: break; } break; case EventCommandEnum.ScreenFadeIn: switch (StageEvent.listEvent[eventCount].color) { case ColorEnum.White: MainWindow.canScreenFade.Background = new SolidColorBrush(Colors.White); break; case ColorEnum.Black: MainWindow.canScreenFade.Background = new SolidColorBrush(Colors.Black); break; } MainWindow.canScreenFade.Opacity = 0; MainWindow.canScreenFade.Visibility = Visibility.Visible; screenFadeTotal = 0; screenFadeIndex = eventCount; screenFadeStart = true; break; case EventCommandEnum.ScreenFadeOut: screenFadeTotal = 1; screenFadeIndex = eventCount; screenFadeStart = true; break; case EventCommandEnum.GenerateEnemy: SpawnEnemy.GenerateEnemy(canvas, 0, StageEvent.listEvent[eventCount].setPosition); break; case EventCommandEnum.EventEnd: duringTransition = false; eventStart = false; if (gameTransition == GameTransitionType.StageStart) { if (!StageEvent.listEvent[eventCount].eventOnly) { MainWindow.lblMode.Content = "ゲームモード:ステージプレイ"; gameTransition = GameTransitionType.StageDuring; } else { MainWindow.lblMode.Content = "ゲームモード:ステージ初期化"; gameTransition = GameTransitionType.StageNext; } } else if (gameTransition == GameTransitionType.StageEnd) { MainWindow.lblMode.Content = "ゲームモード:ステージ初期化"; gameTransition = GameTransitionType.StageNext; } Console.WriteLine("end"); break; } eventCount++; } } }