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