Ejemplo n.º 1
0
    /*
     * ================================================
     * ゲームメインループ
     * ================================================
     */
    //メインループのコルーチン
    IEnumerator MyUpdate()
    {
        /* 初期化(読み込み処理) */
        // Startの内部処理にはしない。
        // (他オブジェクトのStartより後に呼ばれることを保証するべき)
        yield return(BattleInit());

        /* キー入力を待つ(戦闘開始前に) */
        yield return(Utility._Wait.WaitKey());

        int battleResult;

        while (true)
        {
            /* 行動できるキャラが出てくるまで CTB を進行 */
            yield return(DecideNextActionCharacter());

            /* 行動可能キャラクターをカウントし、実際のアクションを行う*/
            yield return(PlayAction());

            yield return(AfterAction());

            /* 終了判定 */
            battleResult = CheckFinish();
            if (battleResult != 0)
            {
                break;
            }
        }

        /* 勝敗表示 */
        yield return(Utility._Wait.WaitFrame(60));

        if (battleResult == 1)
        {
            yield return(BattleResult.ResultWinScene(cd, canvas));
        }
        else
        {
            yield return(BattleResult.ResultLoseScene(cd, canvas));
        }
        yield return(BattleResult.ResultFadeout(canvas));

        /* 戦闘終了時に行うべき処理をまとめる */
        BattleEnd();

        /* 戦闘が終わったので元のマップに返す */
        yield return(Utility._Scene.MoveScene(party.nowScene, Variables.BackGround.black, 60));
    }