Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
GoalTask.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2
3public class GoalTask : Goal
4{
5 public Task task;
6
7 public Area area;
8
9 public bool manual;
10
12
14
15 public override IEnumerable<Status> Run()
16 {
17 if (manual)
18 {
19 yield return Do(task);
20 yield return Success();
21 }
22 if (EClass.rnd(2) == 0)
23 {
24 yield return Do(new AI_Clean());
25 }
26 if (EClass.rnd(3) == 0 && EClass._map.props.deconstructing.Count > 0)
27 {
28 yield return Do(new AI_Deconstruct());
29 }
30 area = null;
31 taskList = null;
33 {
34 yield return Status.Running;
35 if (!TryAssignAreaTask())
36 {
37 yield return Cancel();
38 }
39 }
40 do
41 {
42 yield return Do(task);
43 }
44 while (taskList != null && (TryAssignTask(1) || TryAssignTask(3) || TryAssignTask(9)));
45 }
46
47 public bool TryAssignAreaTask()
48 {
49 foreach (Area item in EClass._map.rooms.listArea)
50 {
52 {
53 area = item;
54 taskList = item.taskList;
55 return true;
56 }
57 }
58 return false;
59 }
60
61 public bool TryAssignAreaTask(Area a)
62 {
64 return task != null;
65 }
66
68 {
70 if (EClass.rnd(2) == 0 && TryAssignTask(designations.moveInstalled))
71 {
72 return true;
73 }
74 if (EClass.rnd(2) == 0 && TryAssignTask(designations.cut))
75 {
76 return true;
77 }
78 if (EClass.rnd(2) == 0 && TryAssignTask(designations.harvest))
79 {
80 return true;
81 }
82 if (EClass.rnd(2) == 0 && TryAssignTask(designations.mine))
83 {
84 return true;
85 }
86 if (EClass.rnd(2) == 0 && TryAssignTask(designations.dig))
87 {
88 return true;
89 }
90 if (EClass.rnd(2) == 0 && TryAssignTask(designations.build))
91 {
92 return true;
93 }
94 return false;
95 }
96
97 public bool TryAssignTask(TaskList list)
98 {
99 task = list.GetTask(owner);
100 if (task != null)
101 {
102 taskList = list;
103 return true;
104 }
105 return false;
106 }
107
108 public bool TryAssignTask(int radius)
109 {
110 if (area != null)
111 {
112 if (area.isDestroyed)
113 {
114 return false;
115 }
116 task = taskList.GetTask(owner, radius);
117 return task != null;
118 }
119 task = taskList.GetTask(owner, radius);
120 return task != null;
121 }
122}
Status Do(AIAct _seq, Func< Status > _onChildFail=null)
Definition: AIAct.cs:416
virtual Status Cancel()
Definition: AIAct.cs:291
new Chara owner
Definition: AIAct.cs:14
Status
Definition: AIAct.cs:8
Definition: Area.cs:4
TaskList< Task > taskList
Definition: Area.cs:6
bool isDestroyed
Definition: Area.cs:8
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Map _map
Definition: EClass.cs:18
Area area
Definition: GoalTask.cs:7
bool TryAssignAreaTask(Area a)
Definition: GoalTask.cs:61
Task task
Definition: GoalTask.cs:5
bool manual
Definition: GoalTask.cs:9
TaskList taskList
Definition: GoalTask.cs:11
bool TryAssignTask(int radius)
Definition: GoalTask.cs:108
bool TryAssignDesignations()
Definition: GoalTask.cs:67
bool TryAssignTask(TaskList list)
Definition: GoalTask.cs:97
TaskManager.Designations Designations
Definition: GoalTask.cs:13
bool TryAssignAreaTask()
Definition: GoalTask.cs:47
override IEnumerable< Status > Run()
Definition: GoalTask.cs:15
Definition: Goal.cs:4
PropsManager props
Definition: Map.cs:91
RoomManager rooms
Definition: Map.cs:31
TaskManager tasks
Definition: Map.cs:34
List< Card > deconstructing
Definition: PropsManager.cs:12
List< Area > listArea
Definition: RoomManager.cs:10
virtual Task GetTask(Chara chara, int radius=-1)
Definition: TaskList.cs:7
DesignationList< TaskMoveInstalled > moveInstalled
Definition: TaskManager.cs:24
DesignationList< TaskBuild > build
Definition: TaskManager.cs:21
DesignationList< TaskCut > cut
Definition: TaskManager.cs:15
DesignationList< TaskDig > dig
Definition: TaskManager.cs:12
DesignationList< TaskMine > mine
Definition: TaskManager.cs:9
DesignationList< TaskHarvest > harvest
Definition: TaskManager.cs:18
Designations designations
Definition: TaskManager.cs:62
Definition: Task.cs:4