//------------------------------------------------------------------------ /*! * @brief 初期化処理 */ //------------------------------------------------------------------------ protected override void Start() { base.Start(); if (SceneModeContinuousBattle.Instance != null) { MasterDataQuest2 master = MasterDataUtil.GetQuest2ParamFromID(SceneModeContinuousBattle.Instance.m_QuestMissionID); if (master != null) { if (m_InGameMenuQuest2 != null) { m_QuestName = master.quest_name; } if (master.enable_autoplay != MasterDataDefineLabel.BoolType.ENABLE) { // オートプレイ禁止でなければ、オートプレイボタンの初期状態を設定(出撃画面での設定値を反映) LocalSaveOption cOption = LocalSaveManager.Instance.LoadFuncOption(); bool is_auto_play = (cOption.m_OptionAutoPlayEnable == (int)LocalSaveDefine.OptionAutoPlayEnable.ON); if (is_auto_play) { BattleParam.setAutoPlayState(BattleParam.AutoPlayState.ON); } else { BattleParam.setAutoPlayState(BattleParam.AutoPlayState.OFF); } } else { // オートプレイ禁止 BattleParam.setAutoPlayState(BattleParam.AutoPlayState.NONE); } } } }
private void sendQuestRetire() { m_PageSwitchNext = false; m_QuestId = SceneGoesParam.Instance.m_SceneGoesParamToMainMenuRetire.m_QuestID; bool is_auto_play = SceneGoesParam.Instance.m_SceneGoesParamToMainMenuRetire.m_IsUsedAutoPlay; m_QuestMaster = MasterDataUtil.GetQuest2ParamFromID(m_QuestId); if (m_QuestMaster != null) { m_AreaMaster = MasterFinder <MasterDataArea> .Instance.Find((int)m_QuestMaster.area_id); } //-------------------------------- // ローカルセーブにあるリザルト情報を破棄 //-------------------------------- LocalSaveManager.Instance.SaveFuncGoesToMenuRetire(null); switch (MasterDataUtil.GetQuestType(m_QuestId)) { case MasterDataDefineLabel.QuestType.NORMAL: { ServerDataUtilSend.SendPacketAPI_QuestRetire(m_QuestId, is_auto_play) .setSuccessAction(_data => { resultSuccess(_data); }) .setErrorAction(_data => { resultError(_data); }) .SendStart(); } break; case MasterDataDefineLabel.QuestType.CHALLENGE: { ServerDataUtilSend.SendPacketAPI_ChallengeQuestRetire(m_QuestId, is_auto_play) .setSuccessAction(_data => { resultSuccess(_data); }) .setErrorAction(_data => { resultError(_data); }) .SendStart(); } break; default: //Home画面へ m_PageSwitchNext = true; break; } }
static public bool MoveQuestDetail(MasterDataQuest2 quest2Master) { if (quest2Master == null) { return(false); } MasterDataArea areaMaster = MasterFinder <MasterDataArea> .Instance.Find((int)quest2Master.area_id); MainMenuQuestSelect.AreaAmendParam areaAmendParam = MainMenuUtil.CreateAreaParamAmend(areaMaster); MainMenuParam.m_QuestStamina = 0; MainMenuParam.m_QuestKey = 0; MainMenuParam.m_QuestTicket = 0; switch (quest2Master.consume_type) { case 1: if (areaAmendParam.m_QuestSelectAreaAmendStamina == 100) { MainMenuParam.m_QuestStamina = (uint)quest2Master.consume_value; } else { uint point = (uint)((float)quest2Master.consume_value * ((float)areaAmendParam.m_QuestSelectAreaAmendStamina / 100.0f)); MainMenuParam.m_QuestStamina = point; } break; case 2: MainMenuParam.m_QuestKey = (uint)quest2Master.consume_value; break; case 3: MainMenuParam.m_QuestTicket = (uint)quest2Master.consume_value; break; } if (MainMenuManager.HasInstance) { MainMenuParam.m_QuestSelectAreaID = areaMaster.fix_id; MainMenuParam.m_QuestSelectMissionID = quest2Master.fix_id; MainMenuParam.m_QuestAreaAmendList = areaAmendParam.m_AreaMasterDataAmendList; MainMenuParam.m_QuestStaminaAmend = (float)areaAmendParam.m_QuestSelectAreaAmendStamina / 100.0f; MainMenuParam.m_QuestSelectAreaCateID = areaMaster.area_cate_id; m_jmpQuestSelectAreaCateID = areaMaster.area_cate_id; m_jmpQuestSelectAreaID = areaMaster.fix_id; MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_QUEST_SELECT_DETAIL, false, false, true); } return(true); }
/// <summary> /// リストが選択された時 /// </summary> public void OnClickItem() { if (GlobalMenuManager.Instance.IsPageClosing() == true) { return; } if (Achievement.quest_id == 0) { return; } MasterDataQuest2 questMaster = MasterDataUtil.GetQuest2ParamFromID(Achievement.quest_id); if (questMaster == null) { return; } SoundUtil.PlaySE(SEID.SE_MENU_OK); Dialog newDialog = Dialog.Create(DialogType.DialogYesNo); newDialog.SetDialogTextFromTextkey(DialogTextType.Title, "mission_questtub_title"); newDialog.SetDialogTextFromTextkey(DialogTextType.MainText, "mission_questtub_text"); newDialog.SetDialogTextFromTextkey(DialogTextType.YesText, "mission_questtub_button"); newDialog.SetDialogTextFromTextkey(DialogTextType.NoText, "common_button1"); newDialog.SetDialogEvent(DialogButtonEventType.YES, () => { //--------------------------------- // クエスト詳細に遷移する //--------------------------------- MainMenuParam.MoveQuestDetail(questMaster); // メニュー閉じる MainMenuManager.Instance.CloseGlobalMenu(); }); newDialog.SetDialogEvent(DialogButtonEventType.NO, () => { }); newDialog.Show(); }
//---------------------------------------------------------------------------- /*! * @brief 新クエスト情報セットアップ * @param[in] uint (unQuestID) クエストID * @retval bool [正常終了/エラー] */ //---------------------------------------------------------------------------- public bool Quest2Setup(uint unQuestID) { MasterDataQuest2 assign = MasterDataUtil.GetQuest2ParamFromID(unQuestID); if (assign == null) { return(false); } // クエストクリア時の獲得データ情報を受け取る m_InGameEXP = assign.clear_exp; m_InGameMoney = assign.clear_money; // m_InGameTicket = assign.clear_ticket; // フラグ等のリセット m_InGameClear = false; m_InGameRetire = false; return(true); }
private void setupFriend() { List<FriendDataSetting> friendList = new List<FriendDataSetting>(); MasterDataQuest2 cQuestMasterData = MasterDataUtil.GetQuest2ParamFromID(MainMenuParam.m_QuestSelectMissionID); uint requirement_id = 0; if (cQuestMasterData != null) { requirement_id = cQuestMasterData.quest_requirement_id; } CreateFriendList(ref friendList, requirement_id); setupFriendList(ref friendList); m_FriendList.FriendBaseList.Body = friendList; m_FriendList.SetUpSortData(LocalSaveManager.Instance.LoadFuncSortFilterQuestFriend()); m_FriendList.OnClickSortButtonAction = OnClockSortButton; m_FriendList.OnClickReloadButtonAction = OnClickReloadButton; m_FriendList.Init(); }
/// <summary> /// クエストIDからリージョンIDを探す /// </summary> /// <param name="quest_id"></param> /// <returns></returns> public static uint getAreaCategoryIDFromQuestID(uint quest_id) { uint area_category_id = 0; MasterDataQuest2 master_data_quest = MasterDataUtil.GetQuest2ParamFromID(quest_id); if (master_data_quest != null) { MasterDataArea master_data_area = MasterFinder <MasterDataArea> .Instance.Find((int)master_data_quest.area_id); if (master_data_area != null) { MasterDataAreaCategory master_data_area_category = MasterFinder <MasterDataAreaCategory> .Instance.Find((int)master_data_area.area_cate_id); if (master_data_area_category != null) { area_category_id = master_data_area_category.fix_id; } } } return(area_category_id); }
//---------------------------------------------------------------------------- /*! * @brief 固定パーティ情報で上書き */ //---------------------------------------------------------------------------- private void FixPartyAssign(ref UserDataUnitParam[] acUnitParam, uint unMissonID) { MasterDataQuest2 quest_param = MasterDataUtil.GetQuest2ParamFromID(unMissonID); if (quest_param == null) { return; } MasterDataQuestRequirement requirement_param = MasterDataUtil.GetMasterDataQuestRequirementFromID(quest_param.quest_requirement_id); if (requirement_param == null) { return; } // 書き換え:リーダーユニット FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.LEADER], GlobalDefine.PartyCharaIndex.LEADER, requirement_param); FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.MOB_1], GlobalDefine.PartyCharaIndex.MOB_1, requirement_param); FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.MOB_2], GlobalDefine.PartyCharaIndex.MOB_2, requirement_param); FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.MOB_3], GlobalDefine.PartyCharaIndex.MOB_3, requirement_param); FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.FRIEND], GlobalDefine.PartyCharaIndex.FRIEND, requirement_param); }
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); } }); }
//ページ初期化処理 protected override void PageSwitchSetting(bool initalize) { base.PageSwitchSetting(initalize); //戻るボタン抑制 SetSuspendReturn(true); if (m_QuestDetailBG == null) { m_QuestDetailBG = m_CanvasObj.GetComponentInChildren <QuestDetailBG>(); m_QuestDetailBG.Load(MainMenuParam.m_QuestSelectAreaCateID); m_QuestDetailBG.SetPositionAjustStatusBar(new Vector2(0, -25), new Vector2(0, -215)); } if (m_QuestDetailInfo == null) { m_QuestDetailInfo = m_CanvasObj.GetComponentInChildren <QuestDetailInfo>(); m_QuestDetailInfo.SetModel(m_model); } if (m_QuestDetailMessage == null) { m_QuestDetailMessage = m_CanvasObj.GetComponentInChildren <QuestDetailMessage>(); m_QuestDetailMessage.SetModel(m_model); } if (m_QuestDetailMission == null) { m_QuestDetailMission = m_CanvasObj.GetComponentInChildren <QuestDetailMission>(); //m_QuestDetailMission.SetPosition(new Vector2(0, 270), new Vector2(0, -546)); m_QuestDetailMission.SetModel(m_model); } if (m_QuestDetailInfo.tab == null) { m_QuestDetailInfo.tab = m_CanvasObj.GetComponentInChildren <QuestDetailTab>(); m_QuestDetailInfo.tab.m_IsReady = false; } m_MasterDataAreaCategory = MasterFinder <MasterDataAreaCategory> .Instance.Find((int)MainMenuParam.m_QuestSelectAreaCateID); m_MasterDataArea = MasterFinder <MasterDataArea> .Instance.Find((int)MainMenuParam.m_QuestSelectAreaID); m_AreaAmendParam = MainMenuUtil.CreateAreaParamAmend(m_MasterDataArea); if (MainMenuUtil.IsRenewQuest(m_MasterDataAreaCategory)) { // TODO: MasterDataQuestをコメントアウトする。問題がなければ削除する。 //m_MasterDataQuest = null; m_MasterDataQuest2 = MasterDataUtil.GetQuest2ParamFromID(MainMenuParam.m_QuestSelectMissionID); updateQuest2Detail(); } m_bReturnHome = false; SetUpAppearAnimation(); MainMenuManager.Instance.currentCategory = MAINMENU_CATEGORY.QUEST; #if BUILD_TYPE_DEBUG if (DebugOption.Instance.disalbeDebugMenu == false) { // デバッグ用メニューの生成 QuestDetailDebugMenu debugMenu = QuestDetailDebugMenu.Create(m_CanvasObj.transform); if (debugMenu != null) { debugMenu.m_QuestDetailBG = m_QuestDetailBG; debugMenu.m_InitCharaID = m_MasterDataQuest2.boss_chara_id; debugMenu.SetPositionAjustStatusBar(new Vector2(0, -66), new Vector2(0, -132)); } } #endif StartCoroutine(MainMenuWebViewShowChk.PopupWebViewStart(MainMenuWebViewShowChk.PopupWebViewType.QuestStart, MainMenuParam.m_QuestSelectMissionID)); }
//---------------------------------------------------------------------------- /*! * @brief 通信処理 */ //---------------------------------------------------------------------------- private void ServerCommunicate() { //-------------------------------- // サーバーに送る情報を構築 //-------------------------------- uint unQuestID = (uint)MainMenuParam.m_QuestSelectMissionID; uint unQuestState = 0; if (MainMenuParam.m_QuestSelectAreaAmendStamina != 100) { unQuestState = (int)MasterDataDefineLabel.AmendType.STAMINA; } // エリア補正タイプ:補正:スタミナ半減 else if (MainMenuParam.m_QuestSelectAreaAmendEXP != 100) { unQuestState = (int)MasterDataDefineLabel.AmendType.EXP; } // エリア補正タイプ:補正:経験値アップ else if (MainMenuParam.m_QuestSelectAreaAmendCoin != 100) { unQuestState = (int)MasterDataDefineLabel.AmendType.MONEY; } // エリア補正タイプ:補正:コイン else if (MainMenuParam.m_QuestSelectAreaAmendDrop != 100) { unQuestState = (int)MasterDataDefineLabel.AmendType.DROP; } // エリア補正タイプ:補正:ドロップ率 else if (MainMenuParam.m_QuestSelectAreaAmendTicket != 100) { unQuestState = (int)MasterDataDefineLabel.AmendType.TICKET; } // エリア補正タイプ:補正:チケット //---------------------------------------- // 選択されている助っ人を取得 //---------------------------------------- // PacketStructFriend cHelper = UserDataAdmin.Instance.SearchHelper( MainMenuParam.m_QuestHelperUserID ); PacketStructFriend cHelper = MainMenuParam.m_QuestHelper; if (cHelper == null) { Debug.LogError("SelectFriendNone"); return; } //---------------------------------------- // フレンド使用のサイクルをもとにFP発生判定。 // ここでも使用宣言が走るので使用情報を書き込んでおく //---------------------------------------- // 指定のフレンドがフレンドポイント取得可能かどうか // bugweb3907対応、以前はクエストの取得可能情報も得ていたが、サーバーサイドに移動し、フレンドのみ見るように bool bFriendPointActive = (LocalSaveManager.Instance.GetLocalSaveUseFriend(cHelper.user_id) == null); //---------------------------------------- // フレンドポイント付与情報をセーブ。 //---------------------------------------- uint unGetFriendPt = 0; if (bFriendPointActive == true) { // フレンドポイントを取得 unGetFriendPt = MainMenuUtil.GetSelectFriendPoint(cHelper, MainMenuParam.m_QuestEventFP); } LocalSaveManager.Instance.SaveFuncQuestFriendPointActive(unGetFriendPt, UserDataAdmin.Instance.m_StructPlayer.have_friend_pt); //---------------------------------------- //エリア補正リストを取得 //---------------------------------------- TemplateList <MasterDataAreaAmend> AreaAmendList = MainMenuParam.m_QuestAreaAmendList; uint[] aunAreaAmendID = new uint[AreaAmendList.m_BufferSize]; for (int cnt = 0; cnt < AreaAmendList.m_BufferSize; cnt++) { aunAreaAmendID[cnt] = AreaAmendList[cnt].fix_id; } bool is_auto_play = false; MasterDataQuest2 master = MasterDataUtil.GetQuest2ParamFromID(unQuestID); if (master.enable_autoplay != MasterDataDefineLabel.BoolType.ENABLE) { LocalSaveOption cOption = LocalSaveManager.Instance.LoadFuncOption(); is_auto_play = (cOption.m_OptionAutoPlayEnable == (int)LocalSaveDefine.OptionAutoPlayEnable.ON); } //-------------------------------- // API通信リクエスト発行 //-------------------------------- switch (MasterDataUtil.GetQuestType(unQuestID)) { case MasterDataDefineLabel.QuestType.NORMAL: { ServerDataUtilSend.SendPacketAPI_Quest2Start( unQuestID , unQuestState , cHelper.user_id , cHelper.unit , bFriendPointActive , UserDataAdmin.Instance.m_StructPlayer.unit_party_current , MainMenuParam.m_QuestEventFP , (MainMenuParam.m_BeginnerBoost != null) ? (int)MainMenuParam.m_BeginnerBoost.fix_id : 0 , aunAreaAmendID , is_auto_play , cHelper.unit_link ) .setSuccessAction(_data => { requestSuccessQuest2(_data); }) .setErrorAction(_data => { requestError(_data); }) .SendStart(); } break; case MasterDataDefineLabel.QuestType.CHALLENGE: { ServerDataUtilSend.SendPacketAPI_ChallengeQuestStart( unQuestID , (uint)MainMenuParam.m_ChallengeQuestLevel , MainMenuParam.m_bChallengeQuestSkip , unQuestState , cHelper.user_id , cHelper.unit , bFriendPointActive , UserDataAdmin.Instance.m_StructPlayer.unit_party_current , MainMenuParam.m_QuestEventFP , (MainMenuParam.m_BeginnerBoost != null) ? (int)MainMenuParam.m_BeginnerBoost.fix_id : 0 , aunAreaAmendID , is_auto_play , cHelper.unit_link ) .setSuccessAction(_data => { requestSuccessChallengeQuest(_data); }) .setErrorAction(_data => { requestError(_data); }) .SendStart(); } break; case MasterDataDefineLabel.QuestType.NONE: break; default: break; } }
// Update is called once per frame void Update() { if (DebugOptionInGame.Instance == null) { return; } if (m_TestGameManager == null) { return; } switch (m_Status) { case eStatus.API_QUEST_START: { if (DebugOptionInGame.Instance.inGameDebugDO.m_UseAPI == true) { m_HelperIndex = RandManager.GetRand(0, (uint)(UserDataAdmin.Instance.m_StructHelperList.Length - 1)); PacketStructFriend cHelper = null; if (UserDataAdmin.Instance.m_StructFriendList.Length > 0 && UserDataAdmin.Instance.m_StructFriendList[0] != null) { cHelper = UserDataAdmin.Instance.m_StructFriendList[0]; } else if (UserDataAdmin.Instance.m_StructHelperList.Length > 0) { cHelper = UserDataAdmin.Instance.m_StructHelperList[m_HelperIndex]; } { ServerDataUtilSend.SendPacketAPI_Quest2Start( DebugOptionInGame.Instance.inGameDebugDO.m_QuestId, 0, cHelper.user_id, cHelper.unit, false, UserDataAdmin.Instance.m_StructPlayer.unit_party_current, 0, 0, null, false ) .setSuccessAction(_data => { if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = _data.GetResult <RecvQuest2Start>().result.quest; m_Status = eStatus.DATA_CREATE; }) .setErrorAction(data => { Debug.LogErrorFormat("[TestGameMain] Quest2Start API Error [{0}] : QuestId = {1}", data.m_PacketCode.ToString(), DebugOptionInGame.Instance.inGameDebugDO.m_QuestId.ToString()); m_TestGameManager.Message_text = "API Error\r\n [" + data.m_PacketCode.ToString() + "]"; }) .SendStart(); m_Status = eStatus.NONE; } } else { if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } { MasterDataQuest2 masterDataQuest2 = MasterDataUtil.GetQuest2ParamFromID(DebugOptionInGame.Instance.inGameDebugDO.m_QuestId); PacketStructQuest2Build cQuestBuild = new PacketStructQuest2Build(); int floor_size = 2; //---------------------------------------- // 最終的な構築情報を格納する領域を確保 //---------------------------------------- TemplateList <PacketStructQuest2BuildBattle> acQuestBuildBattle = new TemplateList <PacketStructQuest2BuildBattle>(); TemplateList <PacketStructQuest2BuildDrop> acQuestBuildDrop = new TemplateList <PacketStructQuest2BuildDrop>(); acQuestBuildBattle.Alloc(64); int nFloorDataAccess = 0; cQuestBuild.boss = new int[floor_size]; for (int i = 0; i < floor_size; i++) { nFloorDataAccess = (i - 1); if (nFloorDataAccess < 0) { continue; } //---------------------------------------- // 0番目要素ダミーデータの入力 //---------------------------------------- PacketStructQuest2BuildBattle build_param_battle = new PacketStructQuest2BuildBattle(); if (build_param_battle != null) { build_param_battle.unique_id = 0; build_param_battle.enemy_list = null; build_param_battle.drop_list = null; build_param_battle.chain = 0; build_param_battle.chain_turn_offset = 0; build_param_battle.bgm_id = 0; acQuestBuildBattle.Add(build_param_battle); } //---------------------------------------- // 戦闘情報を設定 //---------------------------------------- int battle_num = MasterDataUtil.GetQuest2BattleNum(masterDataQuest2.fix_id); for (int j = 0; j < battle_num; j++) { uint enemy_group_id = MasterDataUtil.GetQuest2EnemyGroup(masterDataQuest2.fix_id, j); if (enemy_group_id == 0) { continue; } MasterDataEnemyGroup acMasterGroupEnemy = ServerFogery_GetEnemyGroupFromID(enemy_group_id); if (acMasterGroupEnemy == null) { Debug.LogError("EnemyGroup not found id = " + enemy_group_id); continue; } CreateQuestBuildBattle( i , ref acQuestBuildBattle , ref acQuestBuildDrop , acMasterGroupEnemy ); } //---------------------------------------- // ボス戦闘情報を設定 //---------------------------------------- cQuestBuild.boss[i] = 0; if (masterDataQuest2.boss_group_id > 0) { MasterDataEnemyGroup cBossEnemyGroup = ServerFogery_GetEnemyGroupFromID(masterDataQuest2.boss_group_id); if (cBossEnemyGroup != null) { cQuestBuild.boss[i] = CreateQuestBuildBattle( i , ref acQuestBuildBattle , ref acQuestBuildDrop , cBossEnemyGroup ); } else { Debug.LogError("EnemyGroup not found Boss id = " + masterDataQuest2.boss_group_id); } } } TemplateList <MasterDataParamEnemy> e_param_list = new TemplateList <MasterDataParamEnemy>(); TemplateList <MasterDataEnemyActionParam> e_act_param_list = new TemplateList <MasterDataEnemyActionParam>(); TemplateList <MasterDataEnemyActionTable> e_act_table_list = new TemplateList <MasterDataEnemyActionTable>(); for (int i = 0; i < acQuestBuildBattle.m_BufferSize; i++) { if (acQuestBuildBattle[i] == null) { continue; } if (acQuestBuildBattle[i].enemy_list == null) { continue; } for (int j = 0; j < acQuestBuildBattle[i].enemy_list.Length; j++) { if (acQuestBuildBattle[i].enemy_list[j] == 0) { continue; } MasterDataParamEnemy enemy_param = ServerForgery_GetEnemyParamFromID(acQuestBuildBattle[i].enemy_list[j]); e_param_list.Add(enemy_param); int[] table_id = { enemy_param.act_table1, enemy_param.act_table2, enemy_param.act_table3, enemy_param.act_table4, enemy_param.act_table5, enemy_param.act_table6, enemy_param.act_table7, enemy_param.act_table8 }; for (int k = 0; k < table_id.Length; k++) { if (table_id[k] == 0) { continue; } MasterDataEnemyActionTable table = ServerFogery_GetEnemyActionTable(table_id[k]); e_act_table_list.Add(table); int[] action_id = { table.action_param_id1, table.action_param_id2, table.action_param_id3, table.action_param_id4, table.action_param_id5, table.action_param_id6, table.action_param_id7, table.action_param_id8 }; for (int l = 0; l < action_id.Length; l++) { e_act_param_list.Add(GetEnemyActionParam(action_id[l])); } } } } //---------------------------------------- // 構築した動的要素を配列化して受け渡し //---------------------------------------- cQuestBuild.list_drop = acQuestBuildDrop.ToArray(); cQuestBuild.list_battle = acQuestBuildBattle.ToArray(); cQuestBuild.list_e_param = e_param_list.ToArray(); cQuestBuild.list_e_actparam = e_act_param_list.ToArray(); cQuestBuild.list_e_acttable = e_act_table_list.ToArray(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = cQuestBuild; } m_Status = eStatus.DATA_CREATE; } } break; case eStatus.DATA_CREATE: { { MasterDataQuest2 masterDataQuest = MasterDataUtil.GetQuest2ParamFromID(DebugOptionInGame.Instance.inGameDebugDO.m_QuestId); //---------------------------------------- // ダミーパラメータを設定 //---------------------------------------- if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2 == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = new SceneGoesParamToQuest2(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestAreaID = masterDataQuest.area_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestMissionID = masterDataQuest.fix_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestRandSeed = RandManager.GetRand(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_IsUsedAutoPlay = false; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param = new UserDataUnitParam(); if (DebugOptionInGame.Instance.inGameDebugDO.m_DebugParty == false && UserDataAdmin.Instance != null && UserDataAdmin.Instance.m_StructHelperList.IsNullOrEmpty() != true && UserDataAdmin.Instance.m_StructPartyAssign.IsNullOrEmpty() != true) { PacketStructFriend cHelper = UserDataAdmin.Instance.m_StructHelperList[m_HelperIndex]; int nPartyCurrent = UserDataAdmin.Instance.m_StructPlayer.unit_party_current; PacketStructUnit[] acUnitStruct = { UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][0] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][1] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][2] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][3] , cHelper.unit }; UserDataUnitParam[] acUnitParam = { SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param, }; for (int i = 0; i < acUnitStruct.Length; i++) { if (acUnitStruct[i] != null) { acUnitParam[i].m_UnitDataID = acUnitStruct[i].id; acUnitParam[i].m_UnitParamLevel = (int)acUnitStruct[i].level; acUnitParam[i].m_UnitParamEXP = (int)acUnitStruct[i].exp; acUnitParam[i].m_UnitParamUniqueID = acUnitStruct[i].unique_id; acUnitParam[i].m_UnitParamLimitBreakLV = (int)acUnitStruct[i].limitbreak_lv; acUnitParam[i].m_UnitParamLimitOverLV = (int)acUnitStruct[i].limitover_lv; acUnitParam[i].m_UnitParamPlusPow = (int)acUnitStruct[i].add_pow; acUnitParam[i].m_UnitParamPlusHP = (int)acUnitStruct[i].add_hp; } } } else { SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara0_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara1_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara2_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara3_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara4_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara0_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara1_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara2_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara3_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara4_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamUniqueID = 1; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamUniqueID = 2; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamUniqueID = 3; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamUniqueID = 4; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamUniqueID = 5; } LocalSaveManager.Instance.SaveFuncGoesToQuest2Start(SceneGoesParam.Instance.m_SceneGoesParamToQuest2); LocalSaveManager.Instance.SaveFuncGoesToQuest2Restore(null); DebugOptionInGame.Instance.m_Quest2Build = SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild; SceneCommon.Instance.ChangeScene(SceneType.SceneQuest2); } m_Status = eStatus.NONE; } break; case eStatus.DATA_RESTORE: { { SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = LocalSaveManager.Instance.LoadFuncGoesToQuest2Start(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2Restore = LocalSaveManager.Instance.LoadFuncGoesToQuest2Restore(); if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = DebugOptionInGame.Instance.m_Quest2Build; SceneCommon.Instance.ChangeScene(SceneType.SceneQuest2); } m_Status = eStatus.NONE; } break; default: break; } }
public static void QuestInitialize(SceneModeContinuousBattle continuous_battle) { if (SceneGoesParam.HasInstance && SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build != null && SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild != null) { m_QuestBuild = SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild; } loadBattlePrefab(); m_AchievementTotalingInBattle = new AchievementTotalingInBattle(); m_AchievementTotalingInBattle.initQuset(); initBattleParam(continuous_battle); for (int idx = 0; idx < m_PlayerParty.getPartyMemberMaxCount(); idx++) { CharaOnce chara_once = m_PlayerParty.getPartyMember((GlobalDefine.PartyCharaIndex)idx, CharaParty.CharaCondition.EXIST); if (chara_once != null) { chara_once.m_PartyCharaIndex = (GlobalDefine.PartyCharaIndex)idx; } } // プレイスコア m_PlayScoreInfo = new ServerDataDefine.PlayScoreInfo(); #if false //v5.1.0ではプレイスコアの機能を無効にする { // クエストスコア補正値 int quest_base_score = 0; int quest_play_score_rate = 0; MasterDataQuest2 master_data_quest = MasterDataUtil.GetQuest2ParamFromID(continuous_battle.m_QuestMissionID); // プレイスコア計算対象クエストかどうかを調べる if (master_data_quest != null) { uint quest_score_fix_id = master_data_quest.quest_score_id; MasterDataRenewQuestScore master_data_quest_score = MasterFinder <MasterDataRenewQuestScore> .Instance.Find((int)quest_score_fix_id); if (master_data_quest_score != null) { quest_base_score = master_data_quest_score.base_score; quest_play_score_rate = master_data_quest_score.play_score_rate; } if (quest_play_score_rate > 0) { if (master_data_quest.consume_type == 1) { if (master_data_quest.consume_value > 0) { m_PlayScoreInfo.setPlayScoreQuestFlag(true); } } } } // 中断復帰していない時だけ有効(なので中断復帰用のローカル保存もしていない) if (getRestoreData() == null && m_PlayScoreInfo.isPlayScoreQuest() ) { // プレイスコア設定値取得 MasterDataPlayScore[] master_data_play_score_array = MasterFinder <MasterDataPlayScore> .Instance.GetAll(); if (master_data_play_score_array.IsNullOrEmpty() == false && quest_base_score > 0 && quest_play_score_rate > 0 ) { m_PlayScoreInfo.init(master_data_play_score_array, quest_base_score, quest_play_score_rate); } } } #endif BattleParam.m_MasterDataCache.CachePlayerMasterData(BattleParam.m_PlayerParty); BattleSceneManager.Instance.setShowHandAreaAlways(true); BattleSceneManager.Instance.PRIVATE_FIELD.QuestInitialize(); return; }
/// <summary> /// レコードの追加 /// </summary> private void AddRecord(Category category, EventScheduleInfo data) { var contex = new EventRecordListItemContex(); contex.FixId = (int)data.m_MasterDataEvent.fix_id; contex.EventId = (int)data.m_MasterDataEvent.event_id; // アイコンイメージの設定 //クエスト情報 contex.questType = MasterDataDefineLabel.QuestType.NONE; //通常クエスト MasterDataQuest2 lastQuestMaster = MasterFinder <MasterDataQuest2> .Instance.SelectFirstWhere("where area_id = ? AND boss_chara_id > 0 AND story = 0 ORDER BY fix_id DESC" , data.m_MasterDataEvent.area_id); if (lastQuestMaster != null) { contex.questType = MasterDataDefineLabel.QuestType.NORMAL; } else { //成長ボスクエスト lastQuestMaster = MasterFinder <MasterDataChallengeQuest> .Instance.SelectFirstWhere("where area_id = ? AND boss_chara_id > 0 AND story = 0 ORDER BY fix_id DESC" , data.m_MasterDataEvent.area_id); if (lastQuestMaster != null) { contex.questType = MasterDataDefineLabel.QuestType.CHALLENGE; //タイトル差し替え setupChallengeTitle(data); } } if (lastQuestMaster == null) { // ボスが居ない場合の画像 contex.IconImage = ResourceManager.Instance.Load("divine1", ResourceType.Common); #if BUILD_TYPE_DEBUG DialogManager.Open1B_Direct("EventSchedule AddRecord", "renew_quest_masterのarea_idに下記の\nidが含まれていません。\nプランナーさんに画面を見せるか\n画面キャプチャーして報告してください。\n\n" + "area_id: " + data.m_MasterDataEvent.area_id, "common_button7", true, true). SetOkEvent(() => { }); #endif Debug.LogError("[none x.boss_chara_id > 0]: " + data.m_MasterDataEvent.area_id); } else { UnitIconImageProvider.Instance.Get( lastQuestMaster.boss_chara_id, sprite => { contex.IconImage = sprite; }); } // 予約済みアイコンの設定 if (category == Category.Furture) { LocalSaveEventNotification cEventNotification = LocalSaveManager.Instance.CheckFuncNotificationRequest((uint)data.m_MasterDataEvent.fix_id); if (cEventNotification != null) { contex.IsReserveBadge = cEventNotification.m_Push; } } // タイトル(エリア名称)表示 contex.CaptionText01 = data.m_AreaName; // 枠色変更 contex.IconColor = this.IconColor[(int)category]; contex.FrameColor = this.FrameColor[(int)category]; // ボタン挙動 contex.DidSelectItem += OnClickedRecordButton; // レコードの追加先の指定 switch (category) { case Category.Active: // 日付表示 contex.CaptionText02 = data.m_MasterDataEvent.timing_end != 0 ? string.Format(GameTextUtil.GetText("schedule_held_text"), TimingFormat(data.m_MasterDataEvent.timing_end, true)) : ""; Records0.Add(contex); break; case Category.Furture: contex.CaptionText02 = data.m_MasterDataEvent.timing_start != 0 ? string.Format(GameTextUtil.GetText("schedule_plans_text"), TimingFormat(data.m_MasterDataEvent.timing_start)) : ""; Records1.Add(contex); break; default: return; } }