/// <summary>強制アップデートの対象かどうか /// </summary> /// <returns>true:アップデート対象、false:対象ではない</returns> public static bool IsForceUpdate() { string currentVersion = Application.version; Debug.Log("!!!currentVersion:" + currentVersion); string forceUpdateVersion = OshiroRemoteConfig.Instance().ForceUpdateVersion; Debug.Log("!!!forceUpdateVersion:" + forceUpdateVersion); int[] currentVersions = Array.ConvertAll(currentVersion.Split('.'), int.Parse); int[] forceUpdateVersions = Array.ConvertAll(forceUpdateVersion.Split('.'), int.Parse); for (var i = 0; i < forceUpdateVersions.Length; i++) { if (currentVersions[i] < forceUpdateVersions[i]) { return(true); } if (currentVersions[i] > forceUpdateVersions[i]) { return(false); } } return(false); }
/// <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); } }
/// <summary>現在上げることができる階級の上限まで達しているかどうかのチェック /// <param name="careerNum">身分</param> /// <param name="careerExpMeter">身分経験値</param> /// <returns>true:上限になっている、false:上限になっていない</returns> /// </summary> public static bool IsCareerLimit(int careerNum, float careerExpMeter) { // 身分上限のメーターチェックはメーター止まった状態の最大値と比較する if (careerNum < (int)StatusCalcBasis.Career.大名 && careerNum >= OshiroRemoteConfig.Instance().CareerUpLimit && careerExpMeter >= StatusPanel.Fill_AMOUNT_BEFORE_UP) { return(true); } else { return(false); } }
/** * クイズ種類選択 */ private async UniTask SelectQuizType(int selectType) { // 階級挑戦問題説明文の初期化 statusPanelController.OutputCareerDescription(""); // RemoteConfigのFetch日時が古い場合はFetchを行う if (OshiroRemoteConfig.Instance().IsNeedFetch()) { UnityAction callback = () => OshiroRemoteConfig.Instance().RemoteConfigFetch(); OshiroFirebases oshiroFirebases = new OshiroFirebases(); oshiroFirebases.FirebaseAsyncAction(callback); } // 強制アップデートチェック if (OshiroUtil.IsForceUpdate()) { var modalWindow = GameObject.FindWithTag("Modal"); if (modalWindow == null) { var canvas = GameObject.Find("Canvas"); var forceUpdate = Instantiate(this.forceUpdatePrefab); forceUpdate.tag = "Modal"; forceUpdate.transform.SetParent(canvas.transform, false); } return; } // 階級挑戦クイズはメンテナンス中は実施不可 if (OshiroRemoteConfig.Instance().IsMaintenance) { if ((int)GamePlayInfo.QuizType.CareerQuiz == selectType) { statusPanelController.OutputCareerDescription("メンテナンス中のため階級挑戦問題で遊ぶことができません"); return; } } SoundController.instance.QuizStart(); // Loading表示 loadingText.Display(); // ロード中状態に変更 this.quizOutputStatus = QuizOutputStatus.QuizLoad; // 選択したクイズ種類を設定 if ((int)GamePlayInfo.QuizType.RegularQuiz == selectType) { // レギュラークイズ GamePlayInfo.PlayQuizType = GamePlayInfo.QuizType.RegularQuiz; quizMaker = new RegularQuizMaker(); // クイズ情報ロード ((RegularQuizMaker)quizMaker).QuizDataLoad(); } else { // 身分クイズ GamePlayInfo.PlayQuizType = GamePlayInfo.QuizType.CareerQuiz; quizMaker = new CareerQuizMaker(); // クイズ情報ロード bool isSuccess = await this.apiController.CareerQuizLoad((CareerQuizMaker)quizMaker, GamePlayInfo.BeforeCareer); // 失敗時は1回だけリトライ if (!isSuccess) { await UniTask.Delay(2500); isSuccess = await this.apiController.CareerQuizLoad((CareerQuizMaker)quizMaker, GamePlayInfo.BeforeCareer); } // ロードリトライも失敗時 if (!isSuccess) { statusPanelController.OutputCareerDescription("サーバーとの通信に失敗しました。"); // Loading表示の解除 loadingText.Hidden(); // ステータスをクイズ開始前に戻す quizOutputStatus = QuizOutputStatus.BeforeQuiz; return; } } // Loading表示の解除 loadingText.Hidden(); // パネルを切り替え this.selectUIPanel.SetActive(false); this.statusPanelController.DisplayChange(false); this.gameUIPanel.SetActive(true); this.questionPanel.SetActive(true); // 出題状況チェックしてクイズを作成 StartCoroutine(quizOutputCheck()); this.charactorController.QuizStartTrigger(); }