81 lines
2.8 KiB
C#
81 lines
2.8 KiB
C#
using Cal.DataTable;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace ET
|
|
{
|
|
|
|
public class UnitTaskDestroySystem : DestroySystem<UnitTask>
|
|
{
|
|
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<Task>(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<Unit>(),taskBase.SubmitNPCId);
|
|
return;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|