Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
GoalWork.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2
3public class GoalWork : Goal
4{
5 public virtual bool IsHobby => false;
6
7 public virtual List<Hobby> GetWorks()
8 {
9 return owner.ListWorks();
10 }
11
12 public override IEnumerable<Status> Run()
13 {
14 if (FindWork(owner))
15 {
16 yield return Success();
17 }
18 yield return DoIdle();
19 }
20
21 public void ValidateHobby(Chara c)
22 {
23 owner = c;
24 WorkSummary workSummary = owner.GetWorkSummary();
25 List<Hobby> list = owner.ListHobbies();
26 workSummary.hobbies.Clear();
27 Room room = owner.FindRoom();
28 for (int i = 0; i < list.Count; i++)
29 {
30 if (room != null)
31 {
32 Lot lot = room.lot;
33 if (TryWork(room, list[i], setAI: false))
34 {
35 continue;
36 }
37 bool flag = false;
38 foreach (Room item in EClass._map.rooms.listRoom)
39 {
40 if (item.lot == lot && item != room && TryWork(item, list[i], setAI: false))
41 {
42 flag = true;
43 break;
44 }
45 }
46 if (flag)
47 {
48 continue;
49 }
50 }
51 TryWork(null, list[i], setAI: false);
52 }
53 }
54
55 public bool FindWork(Chara c, bool setAI = true)
56 {
57 owner = c;
58 WorkSummary workSummary = owner.GetWorkSummary();
59 if (IsHobby)
60 {
61 workSummary.hobbies.Clear();
62 }
63 else
64 {
65 workSummary.work = null;
66 }
67 Room room = owner.FindRoom();
68 if (room != null)
69 {
70 if (TryWork(room, setAI))
71 {
72 return true;
73 }
74 Lot lot = room.lot;
75 foreach (Room item in EClass._map.rooms.listRoom)
76 {
77 if (item.lot == lot && item != room && !item.IsPrivate && TryWork(item, setAI))
78 {
79 return true;
80 }
81 }
82 }
83 if (TryWork(null, setAI))
84 {
85 return true;
86 }
87 return false;
88 }
89
90 public bool TryWork(BaseArea destArea, bool setAI = true)
91 {
92 List<Hobby> works = GetWorks();
93 if (IsHobby)
94 {
95 Hobby h = works.RandomItem();
96 if (TryWork(destArea, h, setAI))
97 {
98 return true;
99 }
100 return false;
101 }
102 foreach (Hobby item in works)
103 {
104 if (TryWork(destArea, item, setAI))
105 {
106 return true;
107 }
108 }
109 return false;
110 }
111
112 public bool TryWork(BaseArea destArea, Hobby h, bool setAI)
113 {
114 AIWork aI = h.GetAI(owner);
115 aI.destArea = destArea;
116 if (aI.SetDestination())
117 {
118 WorkSummary workSummary = owner.GetWorkSummary();
119 if (IsHobby)
120 {
121 workSummary.hobbies.Add(aI.GetSession());
122 }
123 else
124 {
125 workSummary.work = aI.GetSession();
126 }
127 if (setAI)
128 {
129 owner.SetAI(aI);
130 }
131 return true;
132 }
133 return false;
134 }
135
136 public override void OnSimulatePosition()
137 {
138 Room room = owner.FindRoom();
139 if (room != null)
140 {
142 }
143 }
144}
new Chara owner
Definition: AIAct.cs:14
Status DoIdle(int repeat=3)
Definition: AIAct.cs:523
Definition: AIWork.cs:5
bool SetDestination()
Definition: AIWork.cs:55
virtual WorkSession GetSession()
Definition: AIWork.cs:117
Point GetRandomFreePos()
Definition: BaseArea.cs:60
void MoveImmediate(Point p, bool focus=true, bool cancelAI=true)
Definition: Card.cs:5127
Definition: Chara.cs:10
WorkSummary GetWorkSummary()
Definition: Chara.cs:8308
AIAct SetAI(AIAct g)
Definition: Chara.cs:8045
List< Hobby > ListHobbies(bool useMemberType=true)
Definition: Chara.cs:8136
List< Hobby > ListWorks(bool useMemberType=true)
Definition: Chara.cs:8109
Room FindRoom()
Definition: Chara.cs:7161
Definition: EClass.cs:5
static Map _map
Definition: EClass.cs:18
bool TryWork(BaseArea destArea, Hobby h, bool setAI)
Definition: GoalWork.cs:112
virtual List< Hobby > GetWorks()
Definition: GoalWork.cs:7
void ValidateHobby(Chara c)
Definition: GoalWork.cs:21
bool TryWork(BaseArea destArea, bool setAI=true)
Definition: GoalWork.cs:90
override void OnSimulatePosition()
Definition: GoalWork.cs:136
virtual bool IsHobby
Definition: GoalWork.cs:5
bool FindWork(Chara c, bool setAI=true)
Definition: GoalWork.cs:55
override IEnumerable< Status > Run()
Definition: GoalWork.cs:12
Definition: Goal.cs:4
Definition: Hobby.cs:4
AIWork GetAI(Chara c)
Definition: Hobby.cs:11
Definition: Lot.cs:5
RoomManager rooms
Definition: Map.cs:31
List< Room > listRoom
Definition: RoomManager.cs:13
Definition: Room.cs:4
Lot lot
Definition: Room.cs:21
List< WorkSession > hobbies
Definition: WorkSummary.cs:13