summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/XTaskRecord.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-01-25 14:28:30 +0800
committerchai <chaifix@163.com>2021-01-25 14:28:30 +0800
commit6eb915c129fc90c6f4c82ae097dd6ffad5239efc (patch)
tree7dd2be50edf41f36b60fac84696e731c13afe617 /Client/Assets/Scripts/XMainClient/XTaskRecord.cs
+scripts
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/XTaskRecord.cs')
-rw-r--r--Client/Assets/Scripts/XMainClient/XTaskRecord.cs97
1 files changed, 97 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/XTaskRecord.cs b/Client/Assets/Scripts/XMainClient/XTaskRecord.cs
new file mode 100644
index 00000000..fe653a9a
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/XTaskRecord.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using KKSG;
+
+namespace XMainClient
+{
+ internal class XTaskRecord
+ {
+ public List<XTaskInfo> Tasks
+ {
+ get
+ {
+ return this.m_TaskList;
+ }
+ }
+
+ public XTaskInfo MainTask
+ {
+ get
+ {
+ return this.m_MainTask;
+ }
+ }
+
+ private List<XTaskInfo> m_TaskList = new List<XTaskInfo>();
+
+ private HashSet<uint> m_FinishedTasks = new HashSet<uint>();
+
+ private XTaskInfo m_MainTask = null;
+
+ public void InitFromServerData(RoleTask roleTask)
+ {
+ this.m_TaskList.Clear();
+ this.m_FinishedTasks.Clear();
+ bool flag = roleTask == null;
+ if (!flag)
+ {
+ for (int i = 0; i < roleTask.tasks.Count; i++)
+ {
+ XTaskInfo xtaskInfo = new XTaskInfo();
+ bool flag2 = xtaskInfo.Init(roleTask.tasks[i]);
+ if (flag2)
+ {
+ this.m_TaskList.Add(xtaskInfo);
+ this._UpdateMainTask(xtaskInfo);
+ }
+ }
+ for (int j = 0; j < roleTask.finished.Count; j++)
+ {
+ this.m_FinishedTasks.Add(roleTask.finished[j]);
+ }
+ this.m_TaskList.Sort(new Comparison<XTaskInfo>(XTaskDocument.SortInTaskList));
+ }
+ }
+
+ public XTaskInfo AddTask(TaskInfo info)
+ {
+ XTaskInfo xtaskInfo = new XTaskInfo();
+ bool flag = xtaskInfo.Init(info);
+ if (flag)
+ {
+ this.m_TaskList.Add(xtaskInfo);
+ this.m_TaskList.Sort(new Comparison<XTaskInfo>(XTaskDocument.SortInTaskList));
+ this._UpdateMainTask(xtaskInfo);
+ }
+ else
+ {
+ xtaskInfo = null;
+ }
+ return xtaskInfo;
+ }
+
+ public void FinishTask(uint taskid)
+ {
+ this.m_FinishedTasks.Add(taskid);
+ bool flag = this.m_MainTask != null && this.m_MainTask.ID == taskid;
+ if (flag)
+ {
+ this.m_MainTask = null;
+ }
+ }
+
+ public bool IsTaskFinished(uint taskid)
+ {
+ return this.m_FinishedTasks.Contains(taskid);
+ }
+
+ private void _UpdateMainTask(XTaskInfo info)
+ {
+ bool flag = this.m_MainTask == null && info.TableData.TaskType == 1u;
+ if (flag)
+ {
+ this.m_MainTask = info;
+ }
+ }
+ }
+}