//---------------------------------------------------------------------------- /*! * @brief 対応エリアのクエストキー所持数取得(v380 クエストキー合算対応) */ //---------------------------------------------------------------------------- private uint GetQuestKeyCntFromAreaCategory(MasterDataAreaCategory _master) { uint unCnt = 0; if (_master == null) { return(unCnt); } PacketStructQuestKey[] key_list = UserDataAdmin.Instance.m_StructPlayer.quest_key_list; if (key_list == null || key_list.Length == 0) { return(unCnt); } //---------------------------------------- // 現在有効なキー所持数をマージ //---------------------------------------- for (int iKey = 0; iKey < key_list.Length; iKey++) { if (key_list[iKey] == null || key_list[iKey].quest_key_id <= 0) { continue; } MasterDataQuestKey cQuestKeyMaster = MasterDataUtil.GetMasterDataQuestKeyFromID(key_list[iKey].quest_key_id); if (cQuestKeyMaster == null || cQuestKeyMaster.key_area_category_id != _master.fix_id) { continue; } //有効期限チェック if (cQuestKeyMaster.timing_end > 0) { bool bCheckWithinTime = TimeManager.Instance.CheckWithinTime(cQuestKeyMaster.timing_end); if (bCheckWithinTime == false) { continue; } } unCnt += key_list[iKey].quest_key_cnt; } return(unCnt); }
private void setupKey() { //---------------------------------------- // プレイヤー情報に持っているクエストキーリストを取得 // ※サーバーで有効期限の近い順でソートしてくれている //---------------------------------------- PacketStructQuestKey[] cKeyList = UserDataAdmin.Instance.m_StructPlayer.quest_key_list; //-------------------------------- // ぬるチェック //-------------------------------- if (cKeyList == null || cKeyList.Length <= 0) { return; } //-------------------------------- // 所持キーリストをアイテムリストに追加 // ※クエストキーはサーバーでソートしてくれてるのでそのまま追加 //-------------------------------- for (int iKey = 0; iKey < cKeyList.Length; iKey++) { if (cKeyList[iKey] == null || cKeyList[iKey].quest_key_cnt <= 0) { continue; } //クエストキーマスタ取得 MasterDataQuestKey cQuestKeyMaster = MasterFinder <MasterDataQuestKey> .Instance.Find((int)cKeyList[iKey].quest_key_id); if (cQuestKeyMaster == null) { Debug.LogError("QuestKey MasterData None! - " + cKeyList[iKey].quest_key_id); continue; } //クエストキーマスタに設定あり、クエストキー定義単位で表示 bool bRet = MainMenuUtil.ChkQuestKeyPlayableFromId(cQuestKeyMaster); if (bRet == false) { continue; } UIAtlas cIconAtlas = SceneObjReferMainMenu.Instance.m_MainMenuAtlas; string strSpriteName = "mm_quest_key"; //---------------------------------------- // ここまできたらチェックOK。表示対象としてリストに登録 //---------------------------------------- ItemKeyContext _newKey = new ItemKeyContext(); _newKey.Category = ItemKeyContext.CategoryType.QuestKey; _newKey.IconImage = cIconAtlas.GetSprite(strSpriteName); _newKey.keyMaster = cQuestKeyMaster; _newKey.Name = cQuestKeyMaster.key_name; _newKey.Count = cKeyList[iKey].quest_key_cnt.ToString(); _newKey.IsViewTime = false; _newKey.Time = ""; _newKey.timing_end = cQuestKeyMaster.timing_end; if (cQuestKeyMaster.timing_end != 0) { string timeFormat = GameTextUtil.GetText("common_expirationdate"); DateTime endTime = TimeUtil.GetDateTime(cQuestKeyMaster.timing_end).SubtractAMinute(); _newKey.Time = string.Format(timeFormat, endTime.ToString("yyyy/MM/dd (HH:mm)")); _newKey.IsViewTime = true; } _newKey.DidSelectItemKey = OnSelectKey; //リストに登録 m_Item.KeyList.Add(_newKey); } //期間でソート m_Item.KeyList.Sort((a, b) => (int)a.timing_end - (int)b.timing_end); }
private void setupQuest() { m_QuestSelect.isEndShowList = false; m_QuestSelect.QuestList.Clear(); m_questButtons.Clear(); if (m_SelectAreaIndex >= m_QuestSelect.EpisodeList.Count) { return; } EpisodeDataContext episodeData = m_QuestSelect.EpisodeList[m_SelectAreaIndex]; MasterDataArea areaMaster = episodeData.master; if (areaMaster == null) { return; } List <MasterDataQuest2> quest2List = MasterFinder <MasterDataQuest2> .Instance.SelectWhere("where area_id = ?", areaMaster.fix_id); quest2List.Sort((a, b) => (int)a.fix_id - (int)b.fix_id); MasterDataQuest2[] quest2Array = quest2List.ToArray(); if (quest2Array == null) { return; } MainMenuParam.m_QuestStaminaAmend = (float)episodeData.amend.m_QuestSelectAreaAmendStamina / 100.0f; //クエストリスト更新 { uint _count = 0; uint _notClearCount = 0; bool bSkip = false; for (int i = 0; i < quest2Array.Length; i++) { uint _index = _count; MasterDataQuest2 _masterQuest2 = quest2Array[i]; if (_masterQuest2.active != MasterDataDefineLabel.BoolType.ENABLE) { continue; } if (_masterQuest2.story != 0 && _notClearCount != 0) { //未クリアクエスト以降のシナリオはスキップ bSkip = true; } else if (_masterQuest2.story == 0 && !ServerDataUtil.ChkRenewBitFlag(ref UserDataAdmin.Instance.m_StructPlayer.flag_renew_quest_clear, quest2Array[i].fix_id)) { //1つめの未クリアは表示 if (_notClearCount != 0) { bSkip = true; } _notClearCount++; } if (bSkip) { continue; } var model = new ListItemModel(_index); model.OnClicked += () => { SelectQuest(_index); }; m_questButtons.Add(model); QuestDataContext newQuest = new QuestDataContext(model); newQuest.master = _masterQuest2; newQuest.area_category_id = m_MasterAreaCategory.fix_id; newQuest.boss = MasterDataUtil.GetGuerrillaBossParamFromQuestID(_masterQuest2.fix_id); newQuest.m_QuestId = _index + 1; if (_masterQuest2.story == 0) { newQuest.m_QuestType = QuestDataContext.ExecType.Quest2; newQuest.IconLabel = GameTextUtil.GetText("questselect_text1"); { //詳細情報テキスト差し替え MasterDataQuestAppearance[] questAppearance = MasterFinder <MasterDataQuestAppearance> .Instance.SelectWhere("where area_category_id = ?", MainMenuParam.m_QuestSelectAreaCateID).ToArray(); if (questAppearance.IsNullOrEmpty() == false) { // newQuest.IconLabel = GameTextUtil.GetText(questAppearance[0].boss_text_key); // テキストキーではなく直接テキストが入っている newQuest.IconLabel = questAppearance[0].boss_text_key; } } UnitIconImageProvider.Instance.Get( _masterQuest2.boss_chara_id, sprite => { newQuest.IconImage = sprite; }); } else { newQuest.m_QuestType = QuestDataContext.ExecType.Event; newQuest.IconLabel = GameTextUtil.GetText("questselect_text2"); newQuest.IconImage = ResourceManager.Instance.Load("storyicon"); } string titleFormat = GameTextUtil.GetText("questselect_questname1"); if (newQuest.boss != null) { titleFormat = GameTextUtil.GetText("questselect_questname2"); } newQuest.Title = string.Format(titleFormat, _masterQuest2.quest_name); newQuest.Index = _index; newQuest.SelectImage = m_SelectSprite; // newQuest.BackGroundTexture = m_QuestSelect.BackGroundImage.texture; newQuest.IsActivePoint = false; switch (_masterQuest2.consume_type) { case 1: //スタミナ newQuest.IsActivePoint = true; newQuest.PointLabel = GameTextUtil.GetText("questselect_text3"); if (episodeData.amend.m_QuestSelectAreaAmendStamina == 100) { newQuest.m_Point = (uint)_masterQuest2.consume_value; newQuest.Point = string.Format("{0}", _masterQuest2.consume_value); } else { uint point = (uint)((float)_masterQuest2.consume_value * ((float)episodeData.amend.m_QuestSelectAreaAmendStamina / 100.0f)); newQuest.m_Point = point; newQuest.Point = string.Format(GameTextUtil.GetText("stmina_bahutext"), point); } //スコア倍率アップ newQuest.AmendText = ""; if (_masterQuest2.story == 0 && _masterQuest2.consume_value != 0 && episodeData.amend.m_FlagAmendScore) { float score_rate = (float)episodeData.amend.m_QuestSelectAreaAmendScore / 100.0f; newQuest.AmendText = string.Format("スコア {0:0.0}倍", score_rate); } break; case 2: //Key { newQuest.IsActivePoint = true; newQuest.m_Point = (uint)_masterQuest2.consume_value; string strFormat = GameTextUtil.GetText("questselect_text5"); MasterDataQuestKey _keyMaster = MasterDataUtil.GetMasterDataQuestKeyFromAreaCategoryID(m_MasterAreaCategory.fix_id); if (_keyMaster != null) { newQuest.PointLabel = string.Format(strFormat, _keyMaster.key_name); } newQuest.Point = string.Format("{0}", _masterQuest2.consume_value); } break; case 3: //Ticket newQuest.IsActivePoint = true; newQuest.m_Point = (uint)_masterQuest2.consume_value; newQuest.PointLabel = GameTextUtil.GetText("questselect_text4"); newQuest.Point = string.Format("{0}", _masterQuest2.consume_value); break; } newQuest.SetFlag(quest2Array[i].fix_id); m_QuestSelect.QuestList.Add(newQuest); _count++; } //------------------------------------------------- // イベントスケジュールがあるが検索 //------------------------------------------------- MasterDataEvent eventMaster = MasterDataUtil.GetMasterDataEventFromID(areaMaster.event_id); m_QuestSelect.m_EventMaster = eventMaster; if (eventMaster != null && eventMaster.event_schedule_show == MasterDataDefineLabel.BoolType.ENABLE) { m_QuestSelect.IsViewDetailButton = true; } else { m_QuestSelect.IsViewDetailButton = false; } } // View更新 foreach (var episodeButton in m_episodeButtons) { episodeButton.HideArrow(); } // インジケーターを表示 if (LoadingManager.Instance != null) { LoadingManager.Instance.RequestLoadingStart(LOADING_TYPE.ASSETBUNDLE); } m_QuestSelect.Show(episodeData.masterDataAreaCategory.fix_id, () => { foreach (var questButton in m_questButtons) { questButton.Appear(); } foreach (var episodeButton in m_episodeButtons) { if (episodeButton.isSelected) { episodeButton.ShowArrow(); } else { episodeButton.HideArrow(); } } //戻るボタン抑制解除 SetSuspendReturn(false); StartCoroutine(WaitShowQuestList(() => { m_QuestSelect.isEndShowList = true; })); }, () => { // インジケーターを閉じる if (LoadingManager.Instance != null) { LoadingManager.Instance.RequestLoadingFinish(LOADING_TYPE.ASSETBUNDLE); } }); }