/// <summary>ランク情報更新 /// <param name="correctNum">正解数</param> /// </summary> private void rankUpdate(int correctNum) { // 現在の経験値と今回獲得分の合計 int rankExpSum = this.beforeRankExp + correctNum; // 次のランクアップに必要な経験値(ステータス更新前の経験値のメーター算出用) int nextRankUpExp = StatusCalcBasis.CalcNextRankUpExp(this.beforeRank); int nextRank = this.beforeRank; // ランクアップの場合 if (nextRankUpExp <= rankExpSum) { nextRank++; this.afterRankExp = rankExpSum - nextRankUpExp; GamePlayInfo.QuizResult = GamePlayInfo.Result.RankUp; // 次のランクアップに必要な経験値を更新(ランクアップ後の経験値のメーター算出用) nextRankUpExp = StatusCalcBasis.CalcNextRankUpExp(nextRank); } else { this.afterRankExp = rankExpSum; GamePlayInfo.QuizResult = GamePlayInfo.Result.STAY; } // 更新後のランク this.afterRank = nextRank; // ランク更新後の経験値メーターを作成 this.afterRankMeter = StatusCalcBasis.CalcMeter(this.afterRankExp, nextRankUpExp); // 身分情報は変更がないので計算前の値をそのまま設定する this.afterCareer = this.beforeCareer; this.afterCareerExp = this.beforeCareerExp; this.afterCareerMeter = this.beforeCareerMeter; this.afterCastleDominance = this.beforeCastleDominance; this.afterDaimyouClass = this.beforeDaimyouClass; }
/// <summary>キャリア情報更新 /// <param name="correctDiff">正解不正解の差</param> /// </summary> private void careerUpdate(int correctDiff) { // 計算前が大名の場合は城支配数を加算する if (this.beforeCareer == (int)StatusCalcBasis.Career.大名) { this.updateCastleDominance(correctDiff); } else { // 計算前が大名ではない場合は身分経験値を加算する this.updateCareerExp(correctDiff); } Debug.Log("beforeDaimyouClass:" + this.beforeDaimyouClass); Debug.Log("afterDaimyouClass:" + this.afterDaimyouClass); // 身分または大名格が上下した場合はランクの計算結果でのアニメーション設定を上書きする if (this.beforeCareer < this.afterCareer || (this.afterCareer == (int)StatusCalcBasis.Career.大名 && this.beforeDaimyouClass < this.afterDaimyouClass)) { // 上がった時 GamePlayInfo.QuizResult = GamePlayInfo.Result.RankUp; } else if (this.beforeCareer > this.afterCareer || (this.afterCareer == (int)StatusCalcBasis.Career.大名 && this.beforeDaimyouClass > this.afterDaimyouClass)) { // 下がった時 GamePlayInfo.QuizResult = GamePlayInfo.Result.RankDown; } // 身分の経験値メーターを更新 // 大名は身分が最大なのでメーターはMAXを設定しておく if (this.afterCareer == (int)StatusCalcBasis.Career.大名) { this.afterCareerMeter = StatusPanel.Fill_AMOUNT_MAX; } else { // 現在のメーターの数値 int nowMeterPoint = 0; // メーターMAXの時の数値 int maxMeterPoint = 0; // 次の身分に上がるために必要な経験値 int nextCarrerUpExp = StatusCalcBasis.NextCareerUpExps[this.afterCareer]; // 一番下の身分より一つでも上がっている場合 if (this.afterCareer > (int)StatusCalcBasis.Career.足軽) { // 今の身分に上がる時の閾値だった経験値を取得 int prevCareerUpExp = StatusCalcBasis.NextCareerUpExps[afterCareer - 1]; // 現在の身分に上がるときの閾値時点が0で、次の身分に上がる直前がMAXのゲージ値を取得する nowMeterPoint = this.afterCareerExp - prevCareerUpExp; maxMeterPoint = nextCarrerUpExp - prevCareerUpExp; } else { nowMeterPoint = this.afterCareerExp; maxMeterPoint = nextCarrerUpExp; } // 次に経験値が上がるためのMAX値からの割合値を取得(小数点第2位まで) this.afterCareerMeter = StatusCalcBasis.CalcMeter(nowMeterPoint, maxMeterPoint); } Debug.Log("career: " + this.afterCareer); Debug.Log("nowCareerExp: " + this.afterCareerExp); }