You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
3.7 KiB
C#
145 lines
3.7 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
// Token: 0x0200018F RID: 399
|
|
public class TaskManager : Singleton<TaskManager>
|
|
{
|
|
// Token: 0x17000186 RID: 390
|
|
// (get) Token: 0x06000B72 RID: 2930 RVA: 0x00030E00 File Offset: 0x0002F000
|
|
// (set) Token: 0x06000B73 RID: 2931 RVA: 0x00030E08 File Offset: 0x0002F008
|
|
public bool IsTaskRunnning { get; private set; }
|
|
|
|
// Token: 0x06000B74 RID: 2932 RVA: 0x00030E14 File Offset: 0x0002F014
|
|
private void Awake()
|
|
{
|
|
this.IsTaskRunnning = false;
|
|
base.StartCoroutine("UpdateTask");
|
|
}
|
|
|
|
// Token: 0x06000B75 RID: 2933 RVA: 0x00030E2C File Offset: 0x0002F02C
|
|
private void Update()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000B76 RID: 2934 RVA: 0x00030E30 File Offset: 0x0002F030
|
|
public bool AddMainTask(UnityTask task_)
|
|
{
|
|
this.MainTaskList.Add(task_);
|
|
return true;
|
|
}
|
|
|
|
// Token: 0x06000B77 RID: 2935 RVA: 0x00030E40 File Offset: 0x0002F040
|
|
public bool AddSubTask(UnityTask task_)
|
|
{
|
|
this.SubTaskList.Add(task_);
|
|
return true;
|
|
}
|
|
|
|
// Token: 0x06000B78 RID: 2936 RVA: 0x00030E50 File Offset: 0x0002F050
|
|
public bool AddReadTask(UnityTask task_)
|
|
{
|
|
this.ReadTaskList.Add(task_);
|
|
return true;
|
|
}
|
|
|
|
// Token: 0x06000B79 RID: 2937 RVA: 0x00030E60 File Offset: 0x0002F060
|
|
public void UpdateReadTask()
|
|
{
|
|
base.StartCoroutine(this.RunReadTask());
|
|
}
|
|
|
|
// Token: 0x06000B7A RID: 2938 RVA: 0x00030E70 File Offset: 0x0002F070
|
|
public IEnumerator UpdateTask()
|
|
{
|
|
for (;;)
|
|
{
|
|
if (this.MainTaskList.Count == 0 && this.SubTaskList.Count == 0)
|
|
{
|
|
yield return 0;
|
|
}
|
|
while (this.SubTaskList.Count > 0)
|
|
{
|
|
this.IsTaskRunnning = true;
|
|
List<UnityTask> nowList = new List<UnityTask>(this.SubTaskList);
|
|
this.SubTaskList.Clear();
|
|
foreach (UnityTask item2 in nowList)
|
|
{
|
|
yield return base.StartCoroutine(this.RunReadTask());
|
|
switch (item2.type)
|
|
{
|
|
case TASK_TYPE.NEXT_FRAME:
|
|
yield return 0;
|
|
break;
|
|
case TASK_TYPE.TIME_WAIT:
|
|
yield return new WaitForSeconds(item2.param_float);
|
|
break;
|
|
case TASK_TYPE.EFFECT:
|
|
{
|
|
IEnumerator task = Singleton<UnityGraph>.Instance.Effect(item2.param_string, item2.param_float);
|
|
if (task != null)
|
|
{
|
|
yield return base.StartCoroutine(task);
|
|
}
|
|
break;
|
|
}
|
|
case TASK_TYPE.COROUTINE:
|
|
if (item2.task != null)
|
|
{
|
|
yield return base.StartCoroutine(item2.task);
|
|
}
|
|
break;
|
|
case TASK_TYPE.COROUTINE_NOUNITY:
|
|
if (item2.task != null)
|
|
{
|
|
while (item2.MoveNext())
|
|
{
|
|
yield return base.StartCoroutine(this.RunReadTask());
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
nowList.Clear();
|
|
this.IsTaskRunnning = false;
|
|
}
|
|
if (this.MainTaskList.Count > 0)
|
|
{
|
|
List<UnityTask> nowList2 = new List<UnityTask>(this.MainTaskList);
|
|
this.MainTaskList.Clear();
|
|
nowList2.ForEach(delegate(UnityTask item)
|
|
{
|
|
item.IsTaskEnd = !item.MoveNext();
|
|
});
|
|
nowList2.RemoveAll((UnityTask item) => item.IsTaskEnd);
|
|
this.MainTaskList.InsertRange(0, nowList2.GetRange(0, nowList2.Count));
|
|
nowList2.Clear();
|
|
}
|
|
yield return base.StartCoroutine(this.RunReadTask());
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000B7B RID: 2939 RVA: 0x00030E8C File Offset: 0x0002F08C
|
|
public IEnumerator RunReadTask()
|
|
{
|
|
List<UnityTask> nowList = new List<UnityTask>(this.ReadTaskList);
|
|
this.ReadTaskList.Clear();
|
|
foreach (UnityTask item in nowList)
|
|
{
|
|
yield return base.StartCoroutine(item.task);
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x04000903 RID: 2307
|
|
private List<UnityTask> MainTaskList = new List<UnityTask>();
|
|
|
|
// Token: 0x04000904 RID: 2308
|
|
private List<UnityTask> SubTaskList = new List<UnityTask>();
|
|
|
|
// Token: 0x04000905 RID: 2309
|
|
private List<UnityTask> ReadTaskList = new List<UnityTask>();
|
|
}
|