IEnumerator PlayActionRamble(Vector2 countActionCharacterInfo) { // 敵のリーダーキャラクターの選択( 1体でも発動 ) int enemyLeader = SelectLeaderEnemy(countActionCharacterInfo); GameObject enemyLeaderObj = DrawEnemyLeader(enemyLeader); // 味方のリーダーキャラクター選択 selectedLeader = -1; while (selectedLeader == -1) { yield return(SelectLeaderPlayer(countActionCharacterInfo)); } DestroyObject(enemyLeaderObj); // 勝敗判定 int isPlayerWin = JudgeRamble(enemyCd[enemyLeader].cs.element); if (isPlayerWin == 1) { mCombo.AddPlayerCombo(); } else if (isPlayerWin == -1) { mCombo.AddEnemyCombo(); } // 少ない方にスタン処理&ダメージ。 int stunCtbNum = 7; if (isPlayerWin == 1) { OpeCharaList.CallStun(enemyCd, stunCtbNum); } else if (isPlayerWin == -1) { OpeCharaList.CallStun(cd, stunCtbNum); } // エフェクト表示 // ユニゾン・詠唱を終了 OpeCharaList.EndWaitUnison(cd); OpeCharaList.EndWaitUnison(enemyCd); OpeCharaList.EndMagic(cd); OpeCharaList.EndMagic(enemyCd); // CTB 値を再設定( waitAction の値を格納 ) CtbManager.SetCtbNum(cd, enemyCd); }
/* * ================================================ * PlayAction の内部処理 * ================================================ */ // 通常攻撃・ユニゾンの場合に呼ばれる処理 // ( コマンド入力を行い、処理を実行する ) IEnumerator PlayActionNoRamble(Vector2 countActionCharacterInfo) { // 行動サイドのユニゾン待機を終了 bool isPlayer = (countActionCharacterInfo.x >= 1); if (isPlayer) { OpeCharaList.EndWaitUnison(cd); } else { OpeCharaList.EndWaitUnison(enemyCd); } // 行動人数の情報を再度取得( コマンド選択前に ) countActionCharacterInfo = OpeCharaList.CountActionableCharacter(cd, enemyCd); // コマンド選択・リーダー決定・ターゲット選択を行う selectedCommand = -1; selectedLeader = -1; selectedTarget = -1; while (true) { if (selectedCommand == -1) { // コマンド選択を行う( 攻撃・待機・詠唱など ) yield return(SelectCommand(countActionCharacterInfo)); continue; } if (selectedLeader == -1) { // リーダーキャラクターの選択 yield return(SelectLeader(countActionCharacterInfo)); if (selectedLeader == -1) { selectedCommand = -1; } continue; } if (selectedTarget == -1) { // ターゲットキャラクターの選択 yield return(SelectTarget(countActionCharacterInfo)); if (selectedTarget == -1) // ターゲット選択でキャンセル { selectedLeader = -1; if (countActionCharacterInfo.x == 1 || countActionCharacterInfo.y == 1 || selectedCommand == (int)Command.Magic) { // リーダー選択が存在しないならば 2 ステップ戻す // ( 単体攻撃・詠唱の場合 ) selectedCommand = -1; } } continue; } break; } // 入力内容に応じて、処理を実行する yield return(CallCharacterAction()); }