| | |
| | | TaskAutoTime = int.Parse(Task_Auto.Numerical2); |
| | | mainTaskAutoWaitTime = int.Parse(Task_Auto.Numerical3) / 1000f; |
| | | var mapIds = ConfigParse.GetMultipleStr<int>(Task_Auto.Numerical4); |
| | | if (mapIds != null && mapIds.Length > 0)
|
| | | {
|
| | | allowAutoTaskMapIds.AddRange(mapIds);
|
| | | if (mapIds != null && mapIds.Length > 0) |
| | | { |
| | | allowAutoTaskMapIds.AddRange(mapIds); |
| | | } |
| | | |
| | | FairyAuTaskCount_Day = int.Parse(FuncConfigConfig.Get("RunTaskCnt").Numerical1.Split('|')[1].Split('_')[1]); |
| | |
| | | |
| | | var funcConfig = FuncConfigConfig.Get("AutoSelectTaskChain"); |
| | | var taskChainArray = LitJson.JsonMapper.ToObject<int[][]>(funcConfig.Numerical1); |
| | | if (taskChainArray != null)
|
| | | {
|
| | | for (int i = 0; i < taskChainArray.Length; i++)
|
| | | {
|
| | | priorityTaskChains.Add(taskChainArray[i]);
|
| | | }
|
| | | if (taskChainArray != null) |
| | | { |
| | | for (int i = 0; i < taskChainArray.Length; i++) |
| | | { |
| | | priorityTaskChains.Add(taskChainArray[i]); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | if (lastDescriptionIndex != DiscriptionIndex)
|
| | | {
|
| | | if (taskDescriptionRefresh != null)
|
| | | {
|
| | | taskDescriptionRefresh(MissionID);
|
| | | }
|
| | | if (lastDescriptionIndex != DiscriptionIndex) |
| | | { |
| | | if (taskDescriptionRefresh != null) |
| | | { |
| | | taskDescriptionRefresh(MissionID); |
| | | } |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | AddMission(MissionID, MissionState, DiscriptionIndex);//任务的添加
|
| | | if (taskDescriptionRefresh != null)
|
| | | {
|
| | | AddMission(MissionID, MissionState, DiscriptionIndex);//任务的添加 |
| | | if (taskDescriptionRefresh != null) |
| | | { |
| | | taskDescriptionRefresh(MissionID); |
| | | }
|
| | | } |
| | | if (Event_TaskToAdd != null) |
| | | { |
| | | Event_TaskToAdd(MissionID, MissionState, DiscriptionIndex); |
| | |
| | | } |
| | | } |
| | | |
| | | public ImpactRankModel.RankAwardItem GetRunTaskRward()//添加任务奖励
|
| | | {
|
| | | var runTaskAward = FuncConfigConfig.Get("RunTaskAward");
|
| | | ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem();
|
| | | var _jsonData = LitJson.JsonMapper.ToObject(runTaskAward.Numerical3);
|
| | | var jsonData2 = LitJson.JsonMapper.ToObject(runTaskAward.Numerical4);
|
| | | foreach (string key in _jsonData.Keys)
|
| | | {
|
| | | var _job = int.Parse(key);
|
| | | var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[key].ToJson());
|
| | | for (int j = 0; j < _itemArray.Length; j++)
|
| | | {
|
| | | _award.Add(_job, new Item(_itemArray[j][0], _itemArray[j][1]));
|
| | | }
|
| | | }
|
| | | foreach (string key in jsonData2.Keys)
|
| | | {
|
| | | var _job = int.Parse(key);
|
| | | _award.Add(_job, new Item(2301, 0));
|
| | |
|
| | | }
|
| | |
|
| | | return _award;
|
| | | public ImpactRankModel.RankAwardItem GetRunTaskRward()//添加任务奖励 |
| | | { |
| | | var runTaskAward = FuncConfigConfig.Get("RunTaskAward"); |
| | | ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem(); |
| | | var _jsonData = LitJson.JsonMapper.ToObject(runTaskAward.Numerical3); |
| | | var jsonData2 = LitJson.JsonMapper.ToObject(runTaskAward.Numerical4); |
| | | foreach (string key in _jsonData.Keys) |
| | | { |
| | | var _job = int.Parse(key); |
| | | var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[key].ToJson()); |
| | | for (int j = 0; j < _itemArray.Length; j++) |
| | | { |
| | | _award.Add(_job, new Item(_itemArray[j][0], _itemArray[j][1])); |
| | | } |
| | | } |
| | | foreach (string key in jsonData2.Keys) |
| | | { |
| | | var _job = int.Parse(key); |
| | | _award.Add(_job, new Item(2301, 0)); |
| | | |
| | | } |
| | | |
| | | return _award; |
| | | } |
| | | |
| | | public int GetLatestMainTaskId() |
| | |
| | | return taskId; |
| | | } |
| | | |
| | | public bool TryGetTaskData(int _taskId, out MissionDetailDates taskData)
|
| | | {
|
| | | return allMissionDict.TryGetValue(_taskId, out taskData);
|
| | | public bool TryGetTaskData(int _taskId, out MissionDetailDates taskData) |
| | | { |
| | | return allMissionDict.TryGetValue(_taskId, out taskData); |
| | | } |
| | | |
| | | void DefaultDialogue()//关于打开默认对话界面 |
| | |
| | | WindowCenter.Instance.Open<DefaultDialogueBoxWin>(); |
| | | WindowCenter.Instance.Close<MainInterfaceWin>(); |
| | | } |
| | | else
|
| | | {
|
| | | if (talkNpcIdUpdate != null)
|
| | | {
|
| | | talkNpcIdUpdate(NPCid);
|
| | | }
|
| | | else |
| | | { |
| | | if (talkNpcIdUpdate != null) |
| | | { |
| | | talkNpcIdUpdate(NPCid); |
| | | } |
| | | } |
| | | } |
| | | private void OnEventTalkEvent(int taskID)//NPC对话后的弹框 |
| | |
| | | vDetailData.descIndex = DiscriptionIndex; |
| | | |
| | | var canSwitchSelectTask = true; |
| | | if (GetNowTaskID != 0 && !IsMainTaskType(vDetailData.Type))
|
| | | {
|
| | | MissionDetailDates taskData;
|
| | | if (TryGetTaskData(GetNowTaskID, out taskData)
|
| | | && IsMainTaskType(taskData.Type)
|
| | | && taskData.MissionState != 3)
|
| | | {
|
| | | canSwitchSelectTask = false;
|
| | | }
|
| | | }
|
| | |
|
| | | if (isServerPrepare && PriorityTaskChainContains(MissionID))
|
| | | {
|
| | | canSwitchSelectTask = true;
|
| | | }
|
| | |
|
| | | if (canSwitchSelectTask)
|
| | | {
|
| | | if (GetNowTaskID != 0 && !IsMainTaskType(vDetailData.Type)) |
| | | { |
| | | MissionDetailDates taskData; |
| | | if (TryGetTaskData(GetNowTaskID, out taskData) |
| | | && IsMainTaskType(taskData.Type) |
| | | && taskData.MissionState != 3) |
| | | { |
| | | canSwitchSelectTask = false; |
| | | } |
| | | } |
| | | |
| | | if (isServerPrepare && PriorityTaskChainContains(MissionID)) |
| | | { |
| | | canSwitchSelectTask = true; |
| | | } |
| | | |
| | | if (canSwitchSelectTask) |
| | | { |
| | | GetNowTaskID = MissionID; |
| | | } |
| | | |
| | | allMissionDict.Add(MissionID, vDetailData);//添加任务 |
| | | } |
| | | |
| | | public bool PriorityTaskChainContains(int taskId)
|
| | | {
|
| | | for (int i = 0; i < priorityTaskChains.Count; i++)
|
| | | {
|
| | | if (taskId >= priorityTaskChains[i][0]
|
| | | && taskId <= priorityTaskChains[i][1])
|
| | | {
|
| | | return true;
|
| | | }
|
| | | }
|
| | | return false;
|
| | | public bool PriorityTaskChainContains(int taskId) |
| | | { |
| | | for (int i = 0; i < priorityTaskChains.Count; i++) |
| | | { |
| | | if (taskId >= priorityTaskChains[i][0] |
| | | && taskId <= priorityTaskChains[i][1]) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public bool IsMainTaskType(int type)
|
| | | {
|
| | | return type == (int)TaskTypenum.MainlineTaskType || type == (int)TaskTypenum.MainlineTaskTyp2;
|
| | | public bool IsMainTaskType(int type) |
| | | { |
| | | return type == (int)TaskTypenum.MainlineTaskType || type == (int)TaskTypenum.MainlineTaskTyp2; |
| | | } |
| | | |
| | | public enum TaskTypenum//任务类型分类 |
| | |
| | | |
| | | public void RequestGetTaskAward(string _answer, int taskId = 0) |
| | | { |
| | | if (taskId == clientGuardDugeonTask)
|
| | | {
|
| | | ClientGuardDungeon.RequestEnter();
|
| | | return;
|
| | | if (taskId == clientGuardDugeonTask) |
| | | { |
| | | ClientGuardDungeon.RequestEnter(); |
| | | return; |
| | | } |
| | | |
| | | var sendInfo = new C0802_tagCNPCAnswer(); |
| | |
| | | { |
| | | try |
| | | { |
| | | if (!allowAutoTaskMapIds.Contains(PlayerDatas.Instance.baseData.MapID))
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | var _hero = PlayerDatas.Instance.hero;
|
| | | if (_hero != null)
|
| | | {
|
| | | if (MapArea.IsInMapArea(_hero.CurMapArea, MapArea.E_Type.Boss))
|
| | | {
|
| | | return;
|
| | | }
|
| | | if (!allowAutoTaskMapIds.Contains(PlayerDatas.Instance.baseData.MapID)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | var _hero = PlayerDatas.Instance.hero; |
| | | if (_hero != null) |
| | | { |
| | | if (MapArea.IsInMapArea(_hero.CurMapArea, MapArea.E_Type.Boss)) |
| | | { |
| | | return; |
| | | } |
| | | } |
| | | |
| | | if (MainTaskDic.ContainsKey(_taskID))//主线任务 |
| | |
| | | yield return null; |
| | | } |
| | | |
| | | yield return WaitingForSecondConst.WaitMS500;
|
| | |
|
| | | // 如果有守护, 则不拾取
|
| | | yield return WaitingForSecondConst.WaitMS500; |
| | | |
| | | // 如果有守护, 则不拾取 |
| | | var equipIndex = EquipSet.ClientPlaceToServerPlace(new Int2(0, (int)RoleEquipType.Guard)); |
| | | var _itemModel = packModel.GetItemByIndex(PackType.Equip, equipIndex); |
| | | if (_itemModel == null || !GeneralDefine.GuardianPickUpID.Contains(_itemModel.itemId)) |
| | |
| | | } |
| | | } |
| | | |
| | | if (AdventureStage.Instance.IsInAdventureStage)
|
| | | {
|
| | | yield break;
|
| | | if (AdventureStage.Instance.IsInAdventureStage) |
| | | { |
| | | yield break; |
| | | } |
| | | |
| | | if (NewBieCenter.Instance.inGuiding || ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing |
| | |
| | | yield break; |
| | | } |
| | | |
| | | if (BossShowModel.Instance.BossShowing)
|
| | | {
|
| | | yield break;
|
| | | if (BossShowModel.Instance.BossShowing) |
| | | { |
| | | yield break; |
| | | } |
| | | |
| | | if (BountyDic.ContainsKey(_taskID) || FairyAuDic.ContainsKey(_taskID)) |
| | |
| | | } |
| | | } |
| | | |
| | | while(ClientSceneManager.Instance.isWaitPickup)
|
| | | {
|
| | | yield return null;
|
| | | while(ClientSceneManager.Instance.isWaitPickup) |
| | | { |
| | | yield return null; |
| | | } |
| | | |
| | | if (GA_Hero.s_MapSwitching) |
| | |
| | | if (Npcid != 0 && NPCShowDic.ContainsKey(Npcid)) |
| | | { |
| | | if (NPCShowDic[Npcid] == 0) |
| | | {
|
| | | { |
| | | GA_NpcFunc.SetNpcFuncVisible(Npcid, false); |
| | | } |
| | | else if (NPCShowDic[Npcid] == 1) |
| | |
| | | if (Npcid != 0 && NPCShowDic.ContainsKey(Npcid)) |
| | | { |
| | | if (NPCShowDic[Npcid] == 0) |
| | | {
|
| | | { |
| | | GA_NpcFunc.SetNpcFuncVisible(Npcid, false); |
| | | } |
| | | else if (NPCShowDic[Npcid] == 1) |
| | |
| | | if (taskListConfig != null) |
| | | { |
| | | int[] collectNPCList = taskListConfig.CollectNPC; |
| | | if ((collectNPCList.Length == 1 && collectNPCList[0] == 0) || GetTaskStatus(currentMission) != 0) |
| | | { |
| | | return false; |
| | | |
| | | } |
| | | var isTaskNPC = false; |
| | | for (int i = 0; i < collectNPCList.Length; i++) |
| | | { |
| | | if (collectNPCList[i] == npdId) |
| | | { |
| | | return true; |
| | | isTaskNPC = true; |
| | | break; |
| | | } |
| | | } |
| | | if (isTaskNPC) |
| | | { |
| | | if ((collectNPCList.Length == 1 && collectNPCList[0] == 0) || GetTaskStatus(currentMission) != 0) |
| | | { |
| | | return false; |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | return false; |
| | | return true; |
| | | } |
| | | |
| | | public static bool IsOPenAutoResolve()//任务面板不开启自动挂机状态 |
| | |
| | | foreach (var key in taskWaits.Keys) |
| | | { |
| | | if ((Time.realtimeSinceStartup - taskWaits[key]) < 1f) |
| | | {
|
| | | { |
| | | #if UNITY_EDITOR |
| | | DebugEx.LogFormat("<color=#00ffff>由于{0}开始任务等待</color>", GetTaskWaitTypeLabel(key));
|
| | | DebugEx.LogFormat("<color=#00ffff>由于{0}开始任务等待</color>", GetTaskWaitTypeLabel(key)); |
| | | #endif |
| | | return true; |
| | | } |
| | |
| | | public void Push(TaskWaitType type) |
| | | { |
| | | taskWaits[type] = Time.realtimeSinceStartup; |
| | | }
|
| | |
|
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | static string GetTaskWaitTypeLabel(TaskWaitType waitType)
|
| | | {
|
| | | switch (waitType)
|
| | | {
|
| | | case TaskWaitType.TaskComplete:
|
| | | return "主界面任务完成表现";
|
| | | case TaskWaitType.LevelUp:
|
| | | return "玩家升级表现";
|
| | | case TaskWaitType.TreasureProgress:
|
| | | return "法宝进度更新";
|
| | | case TaskWaitType.BetterEquip:
|
| | | return "获得更好装备";
|
| | | default:
|
| | | return waitType.ToString();
|
| | | }
|
| | | static string GetTaskWaitTypeLabel(TaskWaitType waitType) |
| | | { |
| | | switch (waitType) |
| | | { |
| | | case TaskWaitType.TaskComplete: |
| | | return "主界面任务完成表现"; |
| | | case TaskWaitType.LevelUp: |
| | | return "玩家升级表现"; |
| | | case TaskWaitType.TreasureProgress: |
| | | return "法宝进度更新"; |
| | | case TaskWaitType.BetterEquip: |
| | | return "获得更好装备"; |
| | | default: |
| | | return waitType.ToString(); |
| | | } |
| | | } |
| | | #endif |
| | | } |