123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- using System.Collections.Generic;
- using UnityEngine;
- using System.Linq;
- using System;
- using System.Threading.Tasks;
- using Common.Utility.CombatEvent;
- using Excel2Json;
- using Fort23.Mono;
- using Fort23.UTool;
- using GameLogic.Combat;
- using Utility;
- public class TaskManager : Singleton<TaskManager>
- {
- private List<TaskConfig> allTasks;
- private Dictionary<int, AccountFileInfo.TaskData> allTsk;
- public TaskManager()
- {
- allTasks = ConfigComponent.Instance.GetAll<TaskConfig>().ToList();
- allTsk = new Dictionary<int, AccountFileInfo.TaskData>();
- foreach (var playerDataTask in AccountFileInfo.Instance.playerData.tasks)
- {
- allTsk.Add(playerDataTask.taskID, playerDataTask);
- }
- }
- // 接取任务
- public void AcceptTask(int taskID)
- {
- if (!allTsk.ContainsKey(taskID))
- {
- AccountFileInfo.TaskData taskData = new AccountFileInfo.TaskData();
- taskData.taskID = taskID;
- allTsk.Add(taskID, taskData);
- AccountFileInfo.Instance.playerData.tasks.Clear();
- AccountFileInfo.Instance.playerData.tasks.AddRange(allTsk.Values);
- AccountFileInfo.Instance.SavePlayerData();
- }
- }
- public void TriggerTask(int taskId)
- {
- if (allTsk.ContainsKey(taskId))
- {
- TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskId);
- if (taskConfig.finishConditionType == 3)
- {
- //触发对话
- DialoguePanel.OpenDialoguePanel(taskConfig.finishVlaue,null, ShowDialogueEventData.MessageShowType.Verbatim, (int? s) =>
- {
- OnDialog(taskConfig.ID);
- });
-
- }
- else if (taskConfig.finishConditionType == 2)
- {
- CombatDrive.Instance.LoadLevelBattleCombat(taskConfig.finishVlaue[0], (iswin) =>
- {
- if (iswin)
- {
- OnMonsterKilled(taskConfig.finishVlaue[0]);
- }
-
- });
- //进入战斗
- }
- //不能直接做任务 通过其他系统检测完成任务条件
- //这里直接弹出提示
- else
- {
-
- }
- }
- }
- public void OnDialog(int taskId)
- {
- foreach (var taskData in allTsk)
- {
- TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskData.Key);
- if (!IsTaskComplete(taskData.Key) && taskConfig.finishConditionType == 3 && taskConfig.ID== taskId)
- {
- taskData.Value.fishCount++;
- if (IsTaskComplete(taskData.Key))
- {
- CompleteTask(taskData.Key);
- }
- AccountFileInfo.Instance.SavePlayerData();
- }
- }
- }
- // 击杀怪物
- public void OnMonsterKilled(int leveBattleId)
- {
- foreach (var taskData in allTsk)
- {
- TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskData.Key);
- if (!IsTaskComplete(taskData.Key) && taskConfig.finishConditionType == 2 && taskConfig.finishVlaue[0] == leveBattleId)
- {
- taskData.Value.fishCount++;
- if (IsTaskComplete(taskData.Key))
- {
- CompleteTask(taskData.Key);
- }
- AccountFileInfo.Instance.SavePlayerData();
- }
- }
- }
- // 收集道具
- public void OnItemCollected(int itemID)
- {
- foreach (var taskData in allTsk)
- {
- TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskData.Key);
- if (!IsTaskComplete(taskData.Key) && taskConfig.finishConditionType == 1 && taskConfig.finishVlaue[0] == itemID)
- {
- taskData.Value.fishCount++;
- if (IsTaskComplete(taskData.Key))
- {
- CompleteTask(taskData.Key);
- }
- AccountFileInfo.Instance.SavePlayerData();
- }
- }
- }
- // 完成任务
- private void CompleteTask(int taskID)
- {
- TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskID);
- GrantReward(taskID);
- // 触发下一个任务(主线)
- if (taskConfig.nextTaskID != 0)
- {
- AcceptTask(taskConfig.nextTaskID);
- }
- //发送事件 更新主线任务
- }
- // 发放奖励
- private void GrantReward(int taskID)
- {
- }
- //获取任务数据
- public AccountFileInfo.TaskData GetTaskData(int taskID)
- {
- if (allTsk.ContainsKey(taskID))
- {
- return allTsk[taskID];
- }
- return null;
- }
- //任务是否完成
- public bool IsTaskComplete(int taskID)
- {
- if (allTsk.ContainsKey(taskID))
- {
- TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskID);
- return allTsk[taskID].fishCount >= taskConfig.finishCount;
- }
- return false;
- }
- //获得主线任务
- public AccountFileInfo.TaskData GetMainTaskData()
- {
- foreach (var keyValuePair in allTsk)
- {
- TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(keyValuePair.Key);
- if (taskConfig.taskType == 10 && !IsTaskComplete(keyValuePair.Key))
- {
- return keyValuePair.Value;
- }
- }
- return null;
- }
- }
|