Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
UIInspector.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3using UnityEngine.UI;
4
5public class UIInspector : ELayer
6{
8
9 public LayoutGroup layoutBody;
10
11 public LayoutGroup layoutButtons;
12
13 public UIButton mold;
14
15 public Vector3 offset;
16
17 public Vector3 modPos;
18
19 public SoundData soundPop;
20
22
23 public RectTransform rectInfo;
24
25 public RectTransform rectRoom;
26
27 public UINote note;
28
30
32
33 public UIImage bg;
34
35 public Point point;
36
37 private bool initialized;
38
39 public bool IsActive => base.gameObject.activeSelf;
40
41 public void SetVisible(bool enable)
42 {
43 base.gameObject.SetActive(enable && group != null);
44 if (enable && group != null)
45 {
46 Refresh();
47 }
48 }
49
50 public void Hide()
51 {
52 group = null;
53 point = null;
54 base.gameObject.SetActive(value: false);
55 }
56
57 public bool InspectUnderMouse()
58 {
60 {
61 return false;
62 }
63 List<IInspect> source = ELayer.scene.mouseTarget.pos.ListInspectorTargets();
65 Inspect(source.NextItem(group?.FirstTarget));
66 return true;
67 }
68
69 public void Inspect(IInspect newTarget)
70 {
71 if (group?.FirstTarget != newTarget)
72 {
73 Inspect(InspectGroup.Create(newTarget));
74 }
75 }
76
77 public void Inspect(InspectGroup g)
78 {
79 base.gameObject.SetActive(value: true);
80 if (!initialized)
81 {
83 initialized = true;
84 mold = layoutButtons.CreateMold<UIButton>();
85 IUISkin[] componentsInChildren = base.transform.GetComponentsInChildren<IUISkin>(includeInactive: true);
86 for (int i = 0; i < componentsInChildren.Length; i++)
87 {
88 componentsInChildren[i].ApplySkin();
89 }
91 }
92 group = g;
93 soundPop.Play();
94 Refresh();
95 }
96
97 public void OnUpdate()
98 {
99 if (group == null || !IsActive)
100 {
101 return;
102 }
103 if (!group.CanInspect())
104 {
105 Hide();
106 return;
107 }
108 foreach (IInspect target in group.targets)
109 {
110 DrawHighlight(target, selected: true);
111 }
112 }
113
114 public void Refresh()
115 {
116 if (!group.CanInspect())
117 {
118 Hide();
119 return;
120 }
122 layoutButtons.DestroyChildren();
123 foreach (InspectGroup.Item item in group.actions)
124 {
125 if (!group.Solo && !item.multi)
126 {
127 continue;
128 }
129 UIButton uIButton = Util.Instantiate(mold, layoutButtons);
130 uIButton.icon.sprite = SpriteSheet.Get(item.idSprite.IsEmpty("icon_" + item.text)) ?? uIButton.icon.sprite;
131 uIButton.mainText.SetText((item.textFunc != null) ? item.textFunc() : item.text.lang());
132 uIButton.onClick.AddListener(delegate
133 {
134 if (group.CanInspect())
135 {
136 if (item.sound)
137 {
138 soundPop.Play();
139 }
140 foreach (IInspect target in group.targets)
141 {
142 item.action(target);
143 }
144 }
145 if (group == null || !group.CanInspect())
146 {
147 Hide();
148 }
149 else
150 {
151 Refresh();
152 }
153 });
154 uIButton.RebuildLayout(recursive: true);
155 }
156 Chara chara = group.FirstTarget as Chara;
157 bool flag = group.Solo && chara != null && chara.IsHomeMember();
158 Room room = null;
159 if (!flag && ELayer.core.IsGameStarted && point != null)
160 {
161 room = point.cell.room;
162 }
163 bool flag2 = room != null;
164 windowChara.SetActive(flag);
165 rectInfo.SetActive(!flag);
166 rectRoom.SetActive(flag2);
167 note.Clear();
168 if (flag)
169 {
170 windowChara.SetChara(chara);
171 }
172 else if (group.Solo)
173 {
175 }
176 else
177 {
179 note.Build();
180 }
181 if (flag2)
182 {
183 UINote uINote = noteRoom;
184 uINote.Clear();
185 uINote.AddHeader("Room");
186 uINote.AddText(room.points.Count.ToString() ?? "");
187 uINote.Build();
188 }
189 layoutButtons.RebuildLayout(recursive: true);
190 layoutBody.RebuildLayout();
192 }
193
194 public void DrawHighlight(IInspect i, bool selected = false)
195 {
196 if (i is Area || i is EloPos)
197 {
198 return;
199 }
200 Vector3 v = i.InspectPosition;
201 Point inspectPoint = i.InspectPoint;
202 if (inspectPoint == null)
203 {
204 return;
205 }
206 MeshPass meshPass = ((inspectPoint.HasNonWallBlock || inspectPoint.HasBlockRecipe) ? ELayer.screen.guide.passGuideBlock : ELayer.screen.guide.passGuideFloor);
207 if (i is Chara)
208 {
209 v += ELayer.screen.pcOrbit.crystal.transform.position;
210 ELayer.screen.tileMap.passIcon.Add(ref v, 1f);
211 return;
212 }
213 if (i is Thing)
214 {
215 Thing thing = i as Thing;
216 if (thing.IsInstalled && thing.sourceCard.multisize)
217 {
218 if (selected)
219 {
220 thing.ForeachPoint(delegate(Point pos, bool main)
221 {
222 v = pos.Position();
223 v.z -= 0.01f;
225 });
226 }
227 return;
228 }
229 if (thing.TileType.IsBlockMount)
230 {
232 }
233 }
234 else if (i is TaskBuild)
235 {
236 Recipe recipe = (i as TaskBuild).recipe;
237 if (recipe.MultiSize)
238 {
239 if (selected)
240 {
241 i.InspectPoint.ForeachMultiSize(recipe.W, recipe.H, delegate(Point pos, bool main)
242 {
243 v = pos.Position();
244 v.z -= 0.01f;
246 });
247 }
248 return;
249 }
250 }
251 v.z -= 0.01f;
252 meshPass.Add(ref v, 7f);
253 }
254}
Definition: Area.cs:4
PointList points
Definition: BaseArea.cs:26
ScreenGuide guide
BaseTileMap tileMap
MeshPass passIcon
Definition: BaseTileMap.cs:185
void ForeachPoint(Action< Point, bool > action)
Definition: Card.cs:6942
TileType TileType
Definition: Card.cs:2011
bool IsInstalled
Definition: Card.cs:2241
Room room
Definition: Cell.cs:102
Definition: Chara.cs:10
bool IsHomeMember()
Definition: Chara.cs:5942
bool IsGameStarted
Definition: Core.cs:84
Definition: ELayer.cs:4
static Scene scene
Definition: ELayer.cs:27
static Core core
Definition: ELayer.cs:7
static BaseGameScreen screen
Definition: ELayer.cs:29
void InitInspector()
Definition: ELayer.cs:62
Definition: EloPos.cs:5
bool CanInspect()
Definition: InspectGroup.cs:73
virtual void SetActions()
string GetName()
Definition: InspectGroup.cs:94
IInspect FirstTarget
Definition: InspectGroup.cs:31
List< IInspect > targets
Definition: InspectGroup.cs:29
static InspectGroup Create(IInspect t)
Definition: InspectGroup.cs:37
List< Item > actions
Definition: InspectGroup.cs:27
List< Window > windows
Definition: Layer.cs:116
void Add(Point point, float tile=0f, float color=0f)
Definition: MeshPass.cs:122
Transform crystal
Definition: PCOrbit.cs:5
Definition: Point.cs:9
void ForeachMultiSize(int w, int h, Action< Point, bool > action)
Definition: Point.cs:1349
ref Vector3 Position(int height)
Definition: Point.cs:524
List< IInspect > ListInspectorTargets()
Definition: Point.cs:1316
bool HasBlockRecipe
Definition: Point.cs:205
bool IsValid
Definition: Point.cs:88
Cell cell
Definition: Point.cs:51
Definition: Recipe.cs:7
virtual int H
Definition: Recipe.cs:252
bool MultiSize
Definition: Recipe.cs:266
virtual int W
Definition: Recipe.cs:240
bool multisize
Definition: RenderRow.cs:64
Definition: Room.cs:4
Definition: Scene.cs:8
static Point HitPoint
Definition: Scene.cs:21
PointTarget mouseTarget
Definition: Scene.cs:129
MeshPass passGuideBlock
Definition: ScreenGuide.cs:5
MeshPass passGuideFloor
Definition: ScreenGuide.cs:7
static Sprite Get(string id)
Definition: SpriteSheet.cs:28
Definition: Thing.cs:8
override CardRow sourceCard
Definition: Thing.cs:47
virtual bool IsBlockMount
Definition: TileType.cs:163
Image icon
Definition: UIButton.cs:110
UIText mainText
Definition: UIButton.cs:102
LayoutGroup layoutButtons
Definition: UIInspector.cs:11
UINote note
Definition: UIInspector.cs:27
Vector3 offset
Definition: UIInspector.cs:15
UIButton mold
Definition: UIInspector.cs:13
void Refresh()
Definition: UIInspector.cs:114
SoundData soundPop
Definition: UIInspector.cs:19
RectTransform rectInfo
Definition: UIInspector.cs:23
bool IsActive
Definition: UIInspector.cs:39
bool initialized
Definition: UIInspector.cs:37
WindowChara windowChara
Definition: UIInspector.cs:21
void SetVisible(bool enable)
Definition: UIInspector.cs:41
LayoutGroup layoutBody
Definition: UIInspector.cs:9
Point point
Definition: UIInspector.cs:35
void Inspect(InspectGroup g)
Definition: UIInspector.cs:77
void DrawHighlight(IInspect i, bool selected=false)
Definition: UIInspector.cs:194
void Inspect(IInspect newTarget)
Definition: UIInspector.cs:69
InspectGroup group
Definition: UIInspector.cs:7
RectTransform rectRoom
Definition: UIInspector.cs:25
void Hide()
Definition: UIInspector.cs:50
bool InspectUnderMouse()
Definition: UIInspector.cs:57
UIText textName
Definition: UIInspector.cs:31
void OnUpdate()
Definition: UIInspector.cs:97
Vector3 modPos
Definition: UIInspector.cs:17
UINote noteRoom
Definition: UIInspector.cs:29
UIImage bg
Definition: UIInspector.cs:33
Definition: UINote.cs:6
void Clear()
Definition: UINote.cs:35
UIItem AddHeader(string text, Sprite sprite=null)
Definition: UINote.cs:79
UIItem AddText(string text, FontColor color=FontColor.DontChange)
Definition: UINote.cs:113
void Build()
Definition: UINote.cs:49
Definition: UIText.cs:6
void SetText(string s)
Definition: UIText.cs:159
void SetChara(Chara c)
Definition: WindowChara.cs:163
void OnInspect()
void WriteNote(UINote n, Action< UINote > onWriteNote=null, NoteMode mode=NoteMode.Default, Recipe recipe=null)
Point InspectPoint
Definition: IInspect.cs:18
Vector3 InspectPosition
Definition: IInspect.cs:20
void ApplySkin()