Elin Decompiled Documentation EA 23.200 Stable
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 if (Application.isEditor && Type.GetType("Trait" + sourceWork.destTrait + ", Elin") == null)
84 {
85 Debug.Log(sourceWork.destTrait + "/" + sourceWork.alias);
86 }
87 if (destArea != null)
88 {
89 destThing = EClass._map.FindThing(Type.GetType("Trait" + sourceWork.destTrait + ", Elin"), destArea);
90 return destThing != null;
91 }
92 destThing = EClass._map.FindThing(Type.GetType("Trait" + sourceWork.destTrait + ", Elin"), owner);
93 return destThing != null;
94 }
95 SetDestPos();
96 return destPos != null;
97 }
98
99 public virtual void SetDestPos()
100 {
101 if (destThing != null && destThing.ExistsOnMap)
102 {
104 }
105 }
106
107 public bool _FuncWorkPoint(Point p)
108 {
109 Room room = destThing.pos.cell.room;
110 if (p.cell.room != room)
111 {
112 return false;
113 }
114 return FuncWorkPoint(p);
115 }
116
117 public virtual bool FuncWorkPoint(Point p)
118 {
119 return true;
120 }
121
122 public virtual WorkSession GetSession()
123 {
124 WorkSession workSession = new WorkSession
125 {
126 id = sourceWork.id,
127 efficiency = 80
128 };
129 if (destThing != null)
130 {
131 workSession.efficiency = destThing.GetEfficiency();
132 }
133 else if (destArea != null)
134 {
135 workSession.efficiency = destArea.type.GetEfficiency();
136 }
137 OnGetSession(workSession);
138 return workSession;
139 }
140
141 public virtual void OnGetSession(WorkSession s)
142 {
143 }
144
145 public void AddDeliverable(Thing t)
146 {
148 }
149
150 public virtual void OnPerformWork(bool realtime)
151 {
152 }
153
154 public void DailyOutcome()
155 {
156 }
157}
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:6
Thing destThing
Definition: AIWork.cs:17
SourceHobby.Row sourceWork
Definition: AIWork.cs:19
void DailyOutcome()
Definition: AIWork.cs:154
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:107
virtual Work_Type WorkType
Definition: AIWork.cs:27
Point destPos
Definition: AIWork.cs:15
virtual void OnPerformWork(bool realtime)
Definition: AIWork.cs:150
virtual WorkSession GetSession()
Definition: AIWork.cs:122
virtual bool FuncWorkPoint(Point p)
Definition: AIWork.cs:117
void AddDeliverable(Thing t)
Definition: AIWork.cs:145
BaseArea destArea
Definition: AIWork.cs:13
virtual void OnGetSession(WorkSession s)
Definition: AIWork.cs:141
virtual int destDist
Definition: AIWork.cs:23
virtual void SetDestPos()
Definition: AIWork.cs:99
virtual AIAct GetWork(Point p)
Definition: AIWork.cs:51
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:6489
bool ExistsOnMap
Definition: Card.cs:2047
Point pos
Definition: Card.cs:57
Trait trait
Definition: Card.cs:51
Room room
Definition: Cell.cs:102
WorkSummary GetWorkSummary()
Definition: Chara.cs:8790
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:2592
Definition: Point.cs:9
Cell cell
Definition: Point.cs:51
Definition: Room.cs:4
Definition: Thing.cs:8
int GetEfficiency()
Definition: Thing.cs:161
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:734
void AddThing(Thing t)
Definition: WorkSummary.cs:87
GameDate date
Definition: World.cs:6