Elin Decompiled Documentation EA 23.102 Nightly
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Pages
TaskList.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using Newtonsoft.Json;
4
5public class TaskList : EClass
6{
7 public virtual Task GetTask(Chara chara, int radius = -1)
8 {
9 return null;
10 }
11
12 public virtual void OnLoad()
13 {
14 }
15
16 public virtual void SetAstLastItem(Task t)
17 {
18 }
19
20 public virtual bool TryAdd(Task t)
21 {
22 return false;
23 }
24
25 public virtual void Remove(Task t)
26 {
27 }
28}
29public class TaskList<T> : TaskList where T : Task
30{
31 [JsonProperty]
32 public List<T> items = new List<T>();
33
34 public override bool TryAdd(Task t)
35 {
36 return TryAdd(t as T);
37 }
38
39 public override void Remove(Task t)
40 {
41 Remove(t as T);
42 }
43
44 public override void SetAstLastItem(Task t)
45 {
46 SetAstLastItem(t as T);
47 }
48
49 public override void OnLoad()
50 {
51 foreach (T item in items)
52 {
53 OnAdd(item);
54 }
55 }
56
57 protected virtual bool TryAdd(T t)
58 {
59 items.Add(t);
60 OnAdd(t);
61 t.OnAdd();
62 return true;
63 }
64
65 public virtual void OnAdd(T t)
66 {
67 t.taskList = this;
68 }
69
70 protected virtual void Remove(T t)
71 {
72 items.Remove(t);
73 }
74
75 public virtual void SetAstLastItem(T t)
76 {
77 items.Remove(t);
78 items.Add(t);
79 }
80
81 public override Task GetTask(Chara chara, int radius = -1)
82 {
83 if (items.Count == 0)
84 {
85 return null;
86 }
87 foreach (T item in items)
88 {
89 if (item.owner == null && item.nextTry <= EClass.game.sessionMin && item.CanPerformTask(chara, radius))
90 {
91 return item;
92 }
93 }
94 return null;
95 }
96
97 public bool HaveTask(Point p)
98 {
99 foreach (T item in items)
100 {
101 if ((item as TaskPoint).pos.Equals(p))
102 {
103 return true;
104 }
105 }
106 return false;
107 }
108
109 public void DestroyAll<T1>() where T1 : T
110 {
111 foreach (T item in items.Copy())
112 {
113 if (item is T1)
114 {
115 item.Destroy();
116 }
117 }
118 }
119
120 public void DestroyAll(Func<T, bool> func)
121 {
122 foreach (T item in items.Copy())
123 {
124 if (func(item))
125 {
126 item.Destroy();
127 }
128 }
129 }
130}
Definition: Chara.cs:10
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
int sessionMin
Definition: Game.cs:227
Definition: Point.cs:9
override bool TryAdd(Task t)
Definition: TaskList.cs:34
virtual void OnLoad()
Definition: TaskList.cs:12
virtual void OnAdd(T t)
Definition: TaskList.cs:65
virtual bool TryAdd(T t)
Definition: TaskList.cs:57
void DestroyAll< T1 >()
Definition: TaskList.cs:109
bool HaveTask(Point p)
Definition: TaskList.cs:97
override void OnLoad()
Definition: TaskList.cs:49
virtual void SetAstLastItem(Task t)
Definition: TaskList.cs:16
override void SetAstLastItem(Task t)
Definition: TaskList.cs:44
void DestroyAll(Func< T, bool > func)
Definition: TaskList.cs:120
List< T > items
Definition: TaskList.cs:32
override Task GetTask(Chara chara, int radius=-1)
Definition: TaskList.cs:81
virtual void Remove(T t)
Definition: TaskList.cs:70
virtual void SetAstLastItem(T t)
Definition: TaskList.cs:75
virtual void Remove(Task t)
Definition: TaskList.cs:25
virtual Task GetTask(Chara chara, int radius=-1)
Definition: TaskList.cs:7
override void Remove(Task t)
Definition: TaskList.cs:39
virtual bool TryAdd(Task t)
Definition: TaskList.cs:20
Definition: Task.cs:4