Example #1
0
        /// <summary>宿老以下の身分経験値を更新
        /// <param name="correctDiff">正解不正解の差</param>
        /// </summary>
        private void updateCareerExp(int correctDiff)
        {
            // 現在の身分経験値と今回獲得分を合計(0より小さくはならないように)
            int careerExp = Mathf.Max(0, this.beforeCareerExp + correctDiff);

            // 身分の上限になっている場合は経験値がメーターMAX分よりも多くならないように調整
            if (this.beforeCareer >= OshiroRemoteConfig.Instance().CareerUpLimit)
            {
                if (careerExp >= StatusCalcBasis.NextCareerUpExps[this.beforeCareer])
                {
                    careerExp = StatusCalcBasis.NextCareerUpExps[this.beforeCareer] - 1;
                }
            }
            this.afterCareerExp = careerExp;

            // 身分経験値から該当の身分を取得
            this.afterCareer = (int)StatusCalcBasis.CareerFromCareerExp(this.afterCareerExp);
            // 宿老から大名に上がった場合
            if (this.afterCareer == (int)StatusCalcBasis.Career.大名)
            {
                // 大名中は身分経験値は使用しないが、便宜上大名に上がった時の閾値の経験値を設定しておく
                this.afterCareerExp = StatusCalcBasis.NextCareerUpExps[this.afterCareer];

                // 大名に上がったときは城支配数は1からスタートする
                this.afterCastleDominance = 1;
                // 大名格を設定(デフォルト値だが念のため)
                this.afterDaimyouClass = (int)StatusCalcBasis.DaimyouClassFromCastleNum(this.afterCastleDominance);
            }
        }
Example #2
0
        /// <summary>大名の城支配数を更新
        /// <param name="correctDiff">正解不正解の差</param>
        /// </summary>
        private void updateCastleDominance(int correctDiff)
        {
            // 現在の城支配数にクイズ結果の値を加算
            int nextCastleDominance = this.beforeCastleDominance + castleDominanceUpdateAmount(correctDiff);

            // 城支配数がなくなったときは身分を落とす
            if (nextCastleDominance < 1)
            {
                // 身分
                this.afterCareer = (int)StatusCalcBasis.Career.宿老;
                // 身分が上がるために必要な経験値から少し減らした状態を設定(好成績を残せばすぐに上がれるくらい)
                this.afterCareerExp = StatusCalcBasis.NextCareerUpExps[this.afterCareer] - 4;
                nextCastleDominance = 0;
            }
            else
            {
                this.afterCareer = (int)StatusCalcBasis.Career.大名;
                // 大名中は身分経験値は使用しないが、便宜上閾値の経験値を設定しておく
                this.afterCareerExp = StatusCalcBasis.NextCareerUpExps[this.afterCareer];
            }

            // 城支配数更新
            this.afterCastleDominance = nextCastleDominance;
            // 大名格更新
            this.afterDaimyouClass = (int)StatusCalcBasis.DaimyouClassFromCastleNum(this.afterCastleDominance);
        }
Example #3
0
        /// <summary>城支配数の更新
        /// </summary>
        private async UniTask castleDominanceDisplayUpdate()
        {
            int    beforeCastleNum    = GamePlayInfo.BeforeCastleDominance;
            string beforeDaimyouClass = StatusCalcBasis.DaimyouClassFromCastleNum(beforeCastleNum).ToString();

            int    afterCastleNum    = GamePlayInfo.AfterCastleDominance;
            string afterDaimyouClass = StatusCalcBasis.DaimyouClassFromCastleNum(afterCastleNum).ToString();

//			StatusCalcBasis.DaimyouClass afterDaimyouClass = StatusCalcBasis.DaimyouClassFromCastleNum(afterNum);
//			StatusCalcBasis.DaimyouClass nextDaimyouClass = StatusCalcBasis.DaimyouClassFromCastleNum(beforeNum);

            // TODO UniTaskの中でUIを操作してもよいのか?

            // 上昇時
            if (beforeCastleNum < afterCastleNum)
            {
                // TODO 支配数増加時の音を鳴らす
                SoundController.instance.MeterUp();

                await UniTask.Delay(300);

                for (int castleNum = beforeCastleNum + 1; castleNum <= afterCastleNum; castleNum++)
                {
                    statusPanelController.CastleDominanceOutput(castleNum, beforeDaimyouClass);

                    await UniTask.Delay(300);
                }

                // TODO 支配数増加時の音を止める

                // 大名格が上がった場合
                if (!beforeDaimyouClass.Equals(afterDaimyouClass))
                {
                    // // TODO 大名格が上がった時の音を鳴らす
                    // SoundController.instance.MeterUp();
                }
            }
            else
            {
                // TODO 支配数減少時の音を鳴らす
                SoundController.instance.MeterDown();

                await UniTask.Delay(300);

                for (int castleNum = beforeCastleNum - 1; castleNum >= afterCastleNum; castleNum--)
                {
                    statusPanelController.CastleDominanceOutput(castleNum, beforeDaimyouClass);

                    await UniTask.Delay(300);
                }

                // TODO 支配数減少時の音を止める

                // 大名格が下がった場合
                if (!beforeDaimyouClass.Equals(afterDaimyouClass) || GamePlayInfo.AfterCastleDominance == 0)
                {
                    await UniTask.Delay(500);

                    // TODO 大名格が下がった時の音を鳴らす
                    SoundController.instance.MeterCrack();

                    // メーターが割れた演出
                    statusPanelController.setCareerCrack(true);

                    await UniTask.Delay(600);
                }
            }
        }