Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    /*
     * ================================================
     * 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());
    }