protected override void Start() { base.Start(); episodeQuestSelect.SetPosition(new Vector2(0, -44), new Vector2(0, -251)); // episodeQuestSelect.BackGroundImage = BGSprite; episodeQuestSelect.EpisodeTitle = "エピソード名"; episodeQuestSelect.AreaTitle = "エリア名"; Sprite select1 = ResourceManager.Instance.Load("icon_circle_1"); Sprite select2 = ResourceManager.Instance.Load("icon_circle_2"); for (int i = 0; i < AreaCount; i++) { uint index = (uint)i; var model = new EpisodeDataListItemModel(index); model.OnClicked += () => { }; EpisodeDataContext newEpisode = new EpisodeDataContext(model); if (i == 0) { newEpisode.SelectImage = select2; newEpisode.IsSelected = true; } else { newEpisode.SelectImage = select1; newEpisode.IsSelected = false; } newEpisode.m_EpisodeId = index; episodeQuestSelect.EpisodeList.Add(newEpisode); } for (int i = 0; i < QuestCount; i++) { uint index = (uint)i; var model = new ListItemModel(index); model.OnClicked += () => { }; QuestDataContext newQuest = new QuestDataContext(model); //cnewQuest.BackGroundTexture = BGSprite.texture; newQuest.Title = "クエスト" + index.ToString(); newQuest.Index = index; newQuest.Point = ((uint)(index * 5) + 5).ToString(); newQuest.SelectImage = select2; newQuest.IconLabel = "BOSS"; newQuest.m_QuestId = index; episodeQuestSelect.QuestList.Add(newQuest); // TODO : 演出を入れるならその場所に移動 model.Appear(); model.SkipAppearing(); } }
/// <summary> /// クエスト決定 /// </summary> /// <param name="quest_id"></param> private void SelectQuest(uint quest_index) { SoundUtil.PlaySE(SEID.SE_MENU_OK2); EpisodeDataContext selectArea = m_QuestSelect.EpisodeList[m_SelectAreaIndex]; QuestDataContext selectQuest = m_QuestSelect.QuestList[(int)quest_index]; switch (m_QuestSelect.QuestList[(int)quest_index].m_QuestType) { case QuestDataContext.ExecType.Quest: break; case QuestDataContext.ExecType.Quest2: { { MainMenuParam.m_QuestStamina = 0; MainMenuParam.m_QuestKey = 0; MainMenuParam.m_QuestTicket = 0; switch (selectQuest.master.consume_type) { case 1: MainMenuParam.m_QuestStamina = selectQuest.m_Point; break; case 2: MainMenuParam.m_QuestKey = selectQuest.m_Point; break; case 3: MainMenuParam.m_QuestTicket = selectQuest.m_Point; break; } MainMenuParam.m_QuestAreaAmendList = selectArea.amend.m_AreaMasterDataAmendList; } if (MainMenuManager.HasInstance) { MainMenuParam.m_QuestSelectAreaID = selectArea.master.fix_id; MainMenuParam.m_QuestSelectMissionID = selectQuest.master.fix_id; MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_QUEST_SELECT_DETAIL, false, false); } } break; case QuestDataContext.ExecType.Event: { //---------------------------------------- // パラメータリミットチェック //---------------------------------------- //チェック対象:コイン、チケット、フレンドポイント PRM_LIMIT_ERROR_TYPE ret = MainMenuUtil.ChkPrmLimit(1, 1, 1, 0, 0); //チェック対象:消費アイテム全て ret = MainMenuUtil.ChkPrmLimitItem(1, -1, ret); //チェック対象:クエストキー全て ret = MainMenuUtil.ChkPrmLimitQuestKey(1, -1, ret); MainMenuUtil.ShowParamLimitDialog(ret, DialogType.DialogYesNo, (isPositive) => { if (isPositive == true) { //---------------------------------------- // ストーリー画面の表示 //---------------------------------------- StoryView cutin = StoryView.Create(); cutin.SetScenario(selectQuest.master.story, selectQuest.master.fix_id); cutin.SetReloadQuestListEvent(() => { int hasAreaCount = 0; bool hasSelectArea = false; selectQuest.SetFlag(selectQuest.master.fix_id); updateEpisodeListInfo(ref hasAreaCount, ref hasSelectArea); // 表示しているエリアが期限切れ if (hasSelectArea == false) { openWarningAreaDialog(); } }); cutin.Show(() => { #if BUILD_TYPE_DEBUG Debug.Log("StoryView Completed"); #endif }); } }); } break; } }
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); } }); }