Exemplo n.º 1
0
    void Update()
    {
        switch (phase)
        {
        case Phase.tellEncountEnemy:
            if (enemyNameCamera.enabled)
            {
                TellEncountEnemy(enemyCreate.LevelConfirm(2));    //絶望のレベルはここで設定
                phase = Phase.readyChangeBattleCamera;
            }
            break;

        case Phase.readyChangeBattleCamera:
            time += Time.deltaTime;
            if (time > ellapsedTime)
            {
                fade.FadeIn(0.5f);
                time  = 0;
                phase = Phase.changeBattleCamera;
            }
            break;

        case Phase.changeBattleCamera:
            time += Time.deltaTime;
            if (time > ellapsedTime - 1.5)
            {
                fade.FadeOut(0.5f);
                enemyNameCamera.enabled = false;
                battleCamera.enabled    = true;
                time  = 0;
                phase = Phase.battleStart;
            }
            break;

        case Phase.battleStart:    //直前準備。プレイヤーとか絶望のパラメータセットとか

            //プレイヤーがバトルで使えるエネルギー量を更新
            if (battleCamera.enabled)
            {
                onceFlag = 1;
                if (onceFlag == 1)
                {
                    playerEnergyAmount.text = gameProgress.energyCount.ToString();
                    onceFlag = 2;
                }
            }
            if (!battleCamera.enabled)
            {
                onceFlag = 0;
            }

            //絶望のパラメータセット
            //Hp(これを0にしたら勝利)
            enemyParam.set_Hp(enemyCreate.HpConfirm(enemyParam.Lv));
            //Atk(プレイヤーの被ダメ)
            enemyParam.set_Atk(enemyCreate.AtkConfirm(enemyParam.Lv));
            //Def(プレイヤーの与ダメを軽減)
            enemyParam.set_Def(enemyCreate.DefConfirm(enemyParam.Lv));
            //DefeatNumber(一番大きいプレイヤーの与ダメになるやつ)
            enemyParam.set_DefeatNumber(enemyCreate.DefeatNumberConfirm());
            print("DefeatNumber[1]=>" + enemyParam.DefeatNumber[1]);    //チェック用のプリント
            print("DefeatNumber[2]=>" + enemyParam.DefeatNumber[2]);    //チェック用のプリント
            print("DefeatNumber[3]=>" + enemyParam.DefeatNumber[3]);    //チェック用のプリント

            //TimeTillAttack(この時間が経過するたびにプレイヤーを攻撃&DefeatNumber更新&これが切れるときのタイミングで入力あると被ダメ軽減か0)
            enemyParam.set_TimeTillAttack(5.0f);

            //戦闘時の「希望」を押せるようにする(ずっとtrueにしてたら、バトル入る前から押してることになってたのでメインでfalseにしている)
            battleGameEnergyCanvas_mouseInput.enabled = true;

            phase = Phase.battle_inputOrderFirst;
            break;

        case Phase.battle_inputOrderFirst:
            // 1/3つ目を保持する
            getEnergyID[1]   = battleGameEnergyCanvas_mouseInput.GetEnergyID();
            inputEnergyID[1] = getEnergyID[1];

            if (inputEnergyID[1] > 0)
            {
                //押された希望がDefeatNumberのどれかかどうかでマテリアルを変える
                DefeatNumberCheckAndChangeMaterial(inputEnergyID[1]);
                //押された希望が正しいDefeatNumberの順番かどうかチェック
                if (inputEnergyID[1] == enemyParam.DefeatNumber[1])
                {
                    correctOrder += 1;
                }
                phase = Phase.battle_inputOrderSecond;
            }
            break;

        case Phase.battle_inputOrderSecond:
            // 2/3つ目を保持する
            getEnergyID[2] = battleGameEnergyCanvas_mouseInput.GetEnergyID();
            if (inputEnergyID[1] != getEnergyID[2] && getEnergyID[2] > 0)
            {
                inputEnergyID[2] = getEnergyID[2];
                //押された希望がDefeatNumberのどれかかどうかでマテリアルを変える
                DefeatNumberCheckAndChangeMaterial(inputEnergyID[2]);
                //押された希望が正しいDefeatNumberの順番かどうかチェック
                if (inputEnergyID[2] == enemyParam.DefeatNumber[2])
                {
                    correctOrder += 1;
                }
                phase = Phase.battle_inputOrderThird;
            }
            break;

        case Phase.battle_inputOrderThird:
            // 3/3つ目を保持する
            getEnergyID[3] = battleGameEnergyCanvas_mouseInput.GetEnergyID();
            if (inputEnergyID[2] != getEnergyID[3] && inputEnergyID[1] != getEnergyID[3] && getEnergyID[3] > 0)
            {
                inputEnergyID[3] = getEnergyID[3];
                //押された希望がDefeatNumberのどれかかどうかでマテリアルを変える
                DefeatNumberCheckAndChangeMaterial(inputEnergyID[3]);
                //押された希望が正しいDefeatNumberの順番かどうかチェック
                if (inputEnergyID[3] == enemyParam.DefeatNumber[3])
                {
                    correctOrder += 1;
                }
                phase = Phase.batlle_inputOrderEnd;
            }
            break;

        case Phase.batlle_inputOrderEnd:
            if (correctOrder == 3)
            {
                correctOrder = 0;
                print("ただしい順番で希望をおしたぞ!correctOrder=>" + correctOrder);
                DecreaseEnemyHpBigDamage();
            }
            else
            {
                correctOrder = 0;
                print("correctOrder=>" + correctOrder);
            }
            time += Time.deltaTime;
            if (time > ellapsedTime)
            {
                time = 0;
                for (int i = 1; i < 4; i++)
                {
                    //希望のマテリアルを全部元にもどしつつ、入力されたIDをリセット
                    battleGameEnergyMaterial[inputEnergyID[i]].material = defaultMaterial;
                    inputEnergyID[i] = 0;
                    getEnergyID[i]   = 0;
                    battleGameEnergyCanvas_mouseInput.ResetEnergyID();
                }
                phase = Phase.battle_inputOrderFirst;
            }

            break;

        case Phase.end:

            break;

        default:
            break;
        }

        enemyTimeTillAtk.SetActive(true);
        DecreaseEnemyTimeTillAtk();
    }