Elin Decompiled Documentation EA 23.345.1 Nightly
Loading...
Searching...
No Matches
AIWork.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class AIWork : AIAct
6{
7 public enum Work_Type
8 {
11 }
12
14
15 public Point destPos;
16
18
20
21 public override string Name => sourceWork.name_JP;
22
23 public virtual int destDist => 0;
24
25 public override int MaxRestart => 3;
26
27 public virtual Work_Type WorkType => Work_Type.Default;
28
29 public override IEnumerable<Status> Run()
30 {
31 yield return DoIdle(100);
32 _ = WorkType;
33 SetDestPos();
34 if (destPos != null)
35 {
36 yield return DoGoto(destPos, destDist);
37 }
38 else
39 {
40 destPos = new Point(owner.pos);
41 }
42 AIAct work = GetWork(destPos);
43 if (work != null)
44 {
45 owner.Talk("work_" + sourceWork.talk);
46 yield return Do(work, base.KeepRunning);
47 }
48 yield return Restart();
49 }
50
51 public virtual AIAct GetWork(Point p)
52 {
53 return new AI_Idle();
54 }
55
56 public bool SetDestination()
57 {
58 if (WorkType == Work_Type.Explore)
59 {
61 {
62 return false;
63 }
64 return true;
65 }
66 if (!sourceWork.workTag.IsEmpty())
67 {
68 if (destArea != null)
69 {
71 }
72 else
73 {
75 }
76 if (destThing != null)
77 {
78 return true;
79 }
80 }
81 if (!sourceWork.destTrait.IsEmpty())
82 {
83 Type type = Type.GetType("Trait" + sourceWork.destTrait + ", Elin");
84 if (type == null)
85 {
86 if (Application.isEditor)
87 {
88 Debug.Log(sourceWork.destTrait + "/" + sourceWork.alias);
89 }
90 return false;
91 }
92 if (destArea != null)
93 {
95 return destThing != null;
96 }
98 return destThing != null;
99 }
100 SetDestPos();
101 return destPos != null;
102 }
103
104 public virtual void SetDestPos()
105 {
106 if (destThing != null && destThing.ExistsOnMap)
107 {
109 }
110 }
111
112 public bool _FuncWorkPoint(Point p)
113 {
114 Room room = destThing.pos.cell.room;
115 if (p.cell.room != room)
116 {
117 return false;
118 }
119 return FuncWorkPoint(p);
120 }
121
122 public virtual bool FuncWorkPoint(Point p)
123 {
124 return true;
125 }
126
127 public virtual WorkSession GetSession()
128 {
129 WorkSession workSession = new WorkSession
130 {
131 id = sourceWork.id,
132 efficiency = 80
133 };
134 if (destThing != null)
135 {
136 workSession.efficiency = destThing.GetEfficiency();
137 }
138 else if (destArea != null)
139 {
140 workSession.efficiency = destArea.type.GetEfficiency();
141 }
142 OnGetSession(workSession);
143 return workSession;
144 }
145
146 public virtual void OnGetSession(WorkSession s)
147 {
148 }
149
150 public void AddDeliverable(Thing t)
151 {
153 }
154
155 public virtual void OnPerformWork(bool realtime)
156 {
157 }
158
159 public void DailyOutcome()
160 {
161 }
162}
Definition: AIAct.cs:6
Status Do(AIAct _seq, Func< Status > _onChildFail=null)
Definition: AIAct.cs:430
new Chara owner
Definition: AIAct.cs:14
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:446
Status DoIdle(int repeat=3)
Definition: AIAct.cs:537
Status KeepRunning()
Definition: AIAct.cs:335
Status Restart()
Definition: AIAct.cs:251
Definition: AIWork.cs:6
Thing destThing
Definition: AIWork.cs:17
SourceHobby.Row sourceWork
Definition: AIWork.cs:19
void DailyOutcome()
Definition: AIWork.cs:159
override string Name
Definition: AIWork.cs:21
override IEnumerable< Status > Run()
Definition: AIWork.cs:29
override int MaxRestart
Definition: AIWork.cs:25
bool SetDestination()
Definition: AIWork.cs:56
Work_Type
Definition: AIWork.cs:8
bool _FuncWorkPoint(Point p)
Definition: AIWork.cs:112
virtual Work_Type WorkType
Definition: AIWork.cs:27
Point destPos
Definition: AIWork.cs:15
virtual void OnPerformWork(bool realtime)
Definition: AIWork.cs:155
virtual WorkSession GetSession()
Definition: AIWork.cs:127
virtual bool FuncWorkPoint(Point p)
Definition: AIWork.cs:122
void AddDeliverable(Thing t)
Definition: AIWork.cs:150
BaseArea destArea
Definition: AIWork.cs:13
virtual void OnGetSession(WorkSession s)
Definition: AIWork.cs:146
virtual int destDist
Definition: AIWork.cs:23
virtual void SetDestPos()
Definition: AIWork.cs:104
virtual AIAct GetWork(Point p)
Definition: AIWork.cs:51
virtual int GetEfficiency()
Definition: AreaType.cs:49
AreaType type
Definition: BaseArea.cs:32
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7205
bool ExistsOnMap
Definition: Card.cs:2137
Point pos
Definition: Card.cs:60
Trait trait
Definition: Card.cs:54
int GetInt(string id, int? defaultInt=null)
Definition: Card.cs:2567
Room room
Definition: Cell.cs:122
WorkSummary GetWorkSummary()
Definition: Chara.cs:9759
bool IsExpired(int time)
Definition: Date.cs:338
Definition: EClass.cs:6
static World world
Definition: EClass.cs:41
static Map _map
Definition: EClass.cs:19
Thing FindThing(Func< Thing, bool > func)
Definition: Map.cs:2765
Definition: Point.cs:9
Cell cell
Definition: Point.cs:51
Definition: Room.cs:4
Definition: Thing.cs:8
int GetEfficiency()
Definition: Thing.cs:159
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:848
void AddThing(Thing t)
Definition: WorkSummary.cs:87
GameDate date
Definition: World.cs:6