using Cal.DataTable; using System; using System.Collections.Generic; using System.Text; namespace ET { public class UnitTaskDestroySystem : DestroySystem { public override void Destroy(UnitTask self) { self.CompleteTaskIdList.Clear(); self.FinishTaskIdList.Clear(); self.RunningTaskList.Clear(); for (int i = self.DateTimeArr.Length - 1; i >= 0; i--) { self.DateTimeArr[i] = 0; } } } public static class UnitTaskSystem { public static Task CreateTask(this UnitTask self,TaskBase taskBase) { Task task = EntityFactory.CreateWithId(self.Domain, taskBase.Id); TaskTargetType type = (TaskTargetType)taskBase.TargetType; task.TaskTargetType = type; switch (type) { case TaskTargetType.KillSpecialTask: case TaskTargetType.SubmitTask: case TaskTargetType.CollectionTask: int len =taskBase. CountTargetArr.Length; task.TotalAmountList = new int[len]; task.CurrAmountList = new int[len]; for (int i = 0; i < len; i++) { TaskBase.CountTarget countTarget = taskBase.CountTargetArr[i]; task.TotalAmountList[i] = countTarget.CountTarget_Count; } break; case TaskTargetType.KillAnyTask: task.TotalAmountList = new int[1]; task.CurrAmountList = new int[1]; task.TotalAmountList[0] = taskBase.AnyTargetCount; break; case TaskTargetType.DialogTask: case TaskTargetType.ChangeMapTask: case TaskTargetType.LevelTask: case TaskTargetType.CompleteTask: task.TotalAmountList = new int[1]; task.CurrAmountList = new int[1]; task.TotalAmountList[0] = 1; break; } return task; } public static void CompleteTask(this UnitTask self,TaskBase taskBase) { for (int i = 0; i < self.RunningTaskList.Count; i++) { Task task = self.RunningTaskList[i]; if (task.Id == taskBase.Id) { task.Dispose(); self.RunningTaskList.RemoveAt(i); self.CompleteTaskIdList.Add((int)taskBase.Id); //!更新客户端 TaskComponent.Instance.SendTaskState(self.GetParent(),taskBase.SubmitNPCId); return; } } } } }