/*---------------------------------------------------------------------*/ /// <summary> /// ゲームクリア時の処理 /// </summary> private void GameClear() { // スコアとボーナス燃料の取得 float score = 0; ScoreCalc(_Lander._Status, _Lander._LandingPoint, out score, out fBonusFuel); // 総合スコアの更新 fScore += score; // メッセージの情報更新と表示 _UIManager.SetMsgActive(UI_MSG_ITEM.OUT_OF_FUEL, false); _UIManager.SetMsgItem <GameClearMsg.INFO_ITEM>(UI_MSG_ITEM.GAME_CLEAR, GameClearMsg.INFO_ITEM.SCORE, (int)score); _UIManager.SetMsgItem <GameClearMsg.INFO_ITEM>(UI_MSG_ITEM.GAME_CLEAR, GameClearMsg.INFO_ITEM.BONUSFUEL, (int)fBonusFuel); _UIManager.SetMsgActive(UI_MSG_ITEM.GAME_CLEAR, true); // クリアフラグをTrueに設定 isClear = true; // 終了待ち処理の待ち開始時間の取得 fStartTime = Time.timeSinceLevelLoad; // 更新処理の設定 modeupdate = new ModeUpdate(GameClear_Update); }
/*---------------------------------------------------------------------*/ /// <summary> /// カメラモードの変更とモード初期設定 /// </summary> /// <param name="mode">変更するモード</param> private void ChangeMode(MODE mode) { // モードの変更 _Mode = mode; // ノーマルモードの初期設定 if (_Mode == MODE.NORMAL) { // カメラサイズの設定 _Camera.orthographicSize = Const.CameraData.MODE_NORMAL_SIZE; // 更新処理の設定 modeupdate = new ModeUpdate(NormalUpdate); // カメラの座標を設定 Vector3 vNormalPos = Vector3.zero; vNormalPos.z = this.transform.position.z; this.transform.position = vNormalPos; // 画面を上方向に動かすY座標を設定する。 vLeftTopLine.y = this.transform.position.y + Const.CameraData.NORMAL_TOP_LINE; } // ズームモードの初期設定 if (_Mode == MODE.ZOOM) { // カメラサイズの設定 _Camera.orthographicSize = Const.CameraData.MODE_ZOOM_SIZE; // 更新処理の設定 modeupdate = new ModeUpdate(ZoomUpdate); // カメラの座標を設定 Vector3 vZoomPos = _Lander.transform.position; // 範囲外を映している場合、X座標を移動させる。 float fZoomWidth = Mathf.Abs(this.transform.position.x - GetScreenLeftTop().x); if (vZoomPos.x - fZoomWidth <= normalLeftTop.x) { vZoomPos.x = normalLeftTop.x + fZoomWidth; } else if (normalRightBottom.x <= vZoomPos.x + fZoomWidth) { vZoomPos.x = normalRightBottom.x - fZoomWidth; } //vZoomPos.y += _Lander.transform.localScale.y; vZoomPos.z = this.transform.position.z; this.transform.position = vZoomPos; // ズーム時の座用を保持 vZoom = vZoomPos; // 画面を左右方向に動かすX座標を設定する。 vLeftTopLine.x = GetScreenLeftTop().x + Const.CameraData.ZOOM_LEFTRIGHT_LINE; vRightBottomLine.x = GetScreenRightBottom().x - Const.CameraData.ZOOM_LEFTRIGHT_LINE; // 画面を上方向に動かすY座標を設定する。 vLeftTopLine.y = vZoom.y + Const.CameraData.ZOOM_TOP_LINE; vRightBottomLine.y = vZoom.y - Const.CameraData.ZOOM_BOTTOM_LINE; } }
/*---------------------------------------------------------------------*/ /// <summary> /// ゲーム開始処理 /// </summary> private void GameStart() { // 初期化フラグをFalseに設定 _Lander.isInit = false; _Moon.isInit = false; _Camera.isInit = false; // クリアフラグがTrueならばステージクリア後とし、ランダーを初期化する。 if (isClear == true) { // ボーナス燃料を加算した値を渡す。 _Lander.Init(_Lander._Status.GetStatus().fuel + fBonusFuel); } else { _Lander.Init(); } _Camera.Init(); // カメラ初期化処理 _Moon.Init(); // 月面初期化処理 // クリアフラグをFalseに設定 isClear = false; if (isRetry == true) { nStage = 0; fScore = 0; isRetry = false; } // ステージ番号の更新 nStage++; // 開始待ち処理の待ち開始時間の取得 fStartTime = Time.timeSinceLevelLoad; // UIのステージ番号と総合スコアの更新 _UIManager.SetInfoItem(UI_INFO_ITEM.STAGE, nStage); _UIManager.SetInfoItem(UI_INFO_ITEM.SCORE, (int)fScore); // 表示する開始メッセージの情報更新と表示 _UIManager.SetMsgItem <GameStartMsg.INFO_ITEM> (UI_MSG_ITEM.GAME_START, GameStartMsg.INFO_ITEM.STAGE, nStage); _UIManager.SetMsgActive(UI_MSG_ITEM.GAME_START, true); // 燃料切れメッセージが出ている可能性があるので非表示にする。 _UIManager.SetMsgActive(UI_MSG_ITEM.OUT_OF_FUEL, false); // 初回ステージなら操作方法を表示する。 if (isFirst == true) { _UIManager.HowToStart(); } // 更新処理を設定 modeupdate = new ModeUpdate(GameStart_Update); }
/*---------------------------------------------------------------------*/ /// <summary> /// ゲームオーバー時の処理 /// </summary> private void GameOver() { // メッセージの情報更新と表示 _UIManager.SetMsgActive(UI_MSG_ITEM.OUT_OF_FUEL, false); _UIManager.SetMsgItem <GameOverMsg.INFO_ITEM>(UI_MSG_ITEM.GAME_OVER, GameOverMsg.INFO_ITEM.CLEARSTAGE, nStage - 1); _UIManager.SetMsgItem <GameOverMsg.INFO_ITEM>(UI_MSG_ITEM.GAME_OVER, GameOverMsg.INFO_ITEM.SCORE, (int)fScore); _UIManager.SetMsgActive(UI_MSG_ITEM.GAME_OVER, true); // ログイン状態ならプレイデータを送信する。 if (cGameManager.Instance.UserData.IsLogin) { isSendPlayData = true; StartCoroutine(SendPlayData()); } else { // 終了待ち処理の待ち開始時間の取得 fStartTime = Time.timeSinceLevelLoad; } // 更新処理の設定 modeupdate = new ModeUpdate(GameOver_Update); }
/*---------------------------------------------------------------------*/ /// <summary> /// ゲームモードに変更に伴う処理を実行する。 /// </summary> private void SwitchMode() { switch (_Mode) { case MAIN_GAME_MODE.GAME_START: GameStart(); break; case MAIN_GAME_MODE.GAME_PLAYING: modeupdate = new ModeUpdate(GamePlaying_Update); break; case MAIN_GAME_MODE.GAME_END_CLEAR: GameClear(); break; case MAIN_GAME_MODE.GAME_END_OVER: GameOver(); break; default: break; } }
public OneUpdate(ModeUpdate mode, Process changeProcess) { this.Mode = mode; this.Proc = changeProcess; }