Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
WidgetStatsBar.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4using UnityEngine.UI;
5
6public class WidgetStatsBar : Widget
7{
8 public class Item
9 {
11
12 public Element ele;
13
14 public string id;
15
16 public Sprite sprite;
17
18 public Func<string> func;
19
20 public Func<FontColor> funcCol;
21
22 public Func<bool> funcShow;
23
25 }
26
27 public class Extra
28 {
29 public bool attributes;
30
31 public bool money;
32
33 public bool money2;
34
35 public bool plat;
36
37 public bool medal;
38
39 public bool karma;
40
41 public bool mood;
42
43 public bool weight;
44
45 public bool influence;
46
47 public bool maxAlly;
48
49 public bool maxMinion;
50
51 public bool hearthLv;
52
53 public bool tourism_value;
54
55 public bool fame;
56
57 public bool dv;
58
59 public bool fertility;
60 }
61
62 public static WidgetStatsBar Instance;
63
64 public LayoutGroup layout;
65
66 public List<Item> items = new List<Item>();
67
68 public Sprite iconMoney;
69
70 public Sprite iconMoney2;
71
72 public Sprite iconPlat;
73
74 public Sprite iconMedal;
75
76 public Sprite iconKarma;
77
78 public Sprite iconWeight;
79
80 public Sprite iconInfluence;
81
82 public Sprite iconMaxAlly;
83
84 public Sprite iconGodMood;
85
86 public Sprite iconHearth;
87
88 public Sprite iconTourismValue;
89
90 public Sprite iconFame;
91
92 public Sprite iconDvPv;
93
94 public Sprite iconMaxMinion;
95
96 public Sprite iconFertility;
97
98 private UIItem mold;
99
100 public Extra extra => base.config.extra as Extra;
101
102 public Color colorDefault => base.config.skin.BG.colors.textDefault;
103
104 public Color colorBad => base.config.skin.BG.colors.textBad;
105
106 public Color colorVeryBad => base.config.skin.BG.colors.textBad;
107
108 public override object CreateExtra()
109 {
110 return new Extra();
111 }
112
113 public override void OnActivate()
114 {
115 Instance = this;
116 mold = layout.CreateMold<UIItem>();
117 if (extra == null)
118 {
119 base.config.extra = CreateExtra();
120 }
121 Build();
122 InvokeRepeating("Refresh", 0.2f, 0.2f);
123 }
124
125 public void Build()
126 {
127 items.Clear();
128 layout.DestroyChildren();
129 if (extra.attributes)
130 {
131 foreach (Element item in EMono.pc.elements.ListElements((Element e) => e.HasTag("primary")))
132 {
133 Add(item);
134 }
136 }
137 if (extra.dv)
138 {
139 Add(null, "dvpv", iconDvPv, () => EMono.pc.DV + "/" + EMono.pc.PV);
140 }
141 if (extra.maxAlly)
142 {
143 Add(null, "maxAlly", iconMaxAlly, () => EMono.pc.party.members.Count - 1 + "/" + EMono.player.MaxAlly, () => (EMono.player.lastEmptyAlly >= 0) ? FontColor.Default : FontColor.Bad);
144 }
145 if (extra.maxMinion)
146 {
147 Add(null, "maxMinion", iconMaxMinion, () => EMono._zone.CountMinions(EMono.pc) + "/" + EMono.pc.MaxSummon, () => (EMono.pc.MaxSummon - EMono._zone.CountMinions(EMono.pc) >= 0) ? FontColor.Default : FontColor.Bad);
148 }
149 if (extra.money)
150 {
151 Add(null, "money", iconMoney, () => EMono.pc.GetCurrency().ToString("#,0") ?? "");
152 }
153 if (extra.money2)
154 {
155 Add(null, "money2", iconMoney2, () => EMono.pc.GetCurrency("money2").ToString("#,0") ?? "");
156 }
157 if (extra.plat)
158 {
159 Add(null, "plat", iconPlat, () => EMono.pc.GetCurrency("plat").ToString("#,0") ?? "");
160 }
161 if (extra.medal)
162 {
163 Add(null, "medal", iconMedal, () => EMono.pc.GetCurrency("medal").ToString("#,0") ?? "");
164 }
165 if (extra.karma)
166 {
167 Add(null, "karma", iconKarma, () => EMono.player.karma.ToString() ?? "");
168 }
169 if (extra.mood)
170 {
171 Add(null, "mood", iconGodMood, () => EMono.pc.faith.TextMood ?? "");
172 }
173 if (extra.fame)
174 {
175 Add(null, "fame", iconFame, () => EMono.player.fame.ToString() ?? "");
176 }
177 if (extra.influence)
178 {
179 Add(null, "influence", iconInfluence, () => EMono._zone.influence.ToString() ?? "", null, () => EMono._zone.influence != 0);
180 }
182 {
183 Add(null, "tourism_value", iconTourismValue, () => (EMono.Branch != null) ? EMono.Branch.tourism.ToFormat() : "", null, () => EMono._zone.IsPCFaction);
184 }
185 if (extra.hearthLv)
186 {
187 Add(null, "hearth_lv", iconHearth, () => (EMono.Branch != null) ? EMono.Branch.TextLv : "", () => (EMono.Branch != null && EMono.Branch.exp < EMono.Branch.GetNextExp()) ? FontColor.Default : FontColor.Good, () => EMono._zone.IsPCFaction);
188 }
189 if (extra.fertility)
190 {
191 Add(null, "fertility", iconFertility, delegate
192 {
193 object obj;
194 if (EMono.Branch != null || EMono._zone is Zone_Tent)
195 {
196 obj = (EMono._zone.MaxSoil - EMono._zone.GetSoilCost()).ToString();
197 if (obj == null)
198 {
199 return "";
200 }
201 }
202 else
203 {
204 obj = "";
205 }
206 return (string)obj;
207 }, () => ((EMono.Branch == null && !(EMono._zone is Zone_Tent)) || EMono._zone.MaxSoil - EMono._zone.GetSoilCost() >= 0) ? FontColor.Default : FontColor.Bad, () => EMono._zone.IsPCFaction || EMono._zone is Zone_Tent);
208 }
209 if (extra.weight)
210 {
211 Add(null, "weight", iconWeight, () => ((float)EMono.pc.ChildrenWeight / 1000f).ToString("F1") + " / " + ((float)EMono.pc.WeightLimit / 1000f).ToString("F1"), () => EMono.pc.burden.GetPhase() switch
212 {
213 1 => FontColor.Warning,
214 0 => FontColor.Default,
215 _ => FontColor.Bad,
216 });
217 }
218 Refresh();
219 }
220
221 public UIItem Add(Element ele, string id = "", Sprite sprite = null, Func<string> func = null, Func<FontColor> funcCol = null, Func<bool> funcShow = null)
222 {
223 UIItem uIItem = Util.Instantiate(mold, layout);
224 Item item = new Item
225 {
226 ele = ele,
227 component = uIItem,
228 id = id,
229 func = func,
230 funcCol = funcCol,
231 funcShow = funcShow
232 };
233 if ((bool)sprite)
234 {
235 uIItem.image1.sprite = sprite;
236 }
237 else
238 {
239 uIItem.image1.sprite = ele.GetIcon("_m");
240 }
241 uIItem.image1.SetNativeSize();
242 uIItem.text1.skinRoot = base.skinRoot;
243 Shadow component = uIItem.text1.GetComponent<Shadow>();
244 if ((bool)component)
245 {
246 component.enabled = base.config.skin.BG.textShadow;
247 }
248 items.Add(item);
249 return uIItem;
250 }
251
252 public void Refresh()
253 {
254 bool flag = false;
255 foreach (Item item in items)
256 {
257 string text = item.component.text1.text;
258 string text2 = "";
259 FontColor fontColor = FontColor.Default;
260 if (!item.id.IsEmpty())
261 {
262 text2 = item.func();
263 if (item.funcCol != null)
264 {
265 fontColor = item.funcCol();
266 }
267 }
268 else
269 {
270 Element ele = item.ele;
271 text2 = ele.DisplayValue.ToString() ?? "";
272 if (ele.DisplayValue < ele.ValueWithoutLink)
273 {
274 text2 = text2 + " (" + ele.ValueWithoutLink + ")";
275 }
276 int num = ((EMono.pc.tempElements != null) ? EMono.pc.tempElements.Value(ele.id) : 0);
277 if (ele.DisplayValue < ele.ValueWithoutLink || num < 0)
278 {
279 fontColor = FontColor.Bad;
280 }
281 else if (num > 0)
282 {
283 fontColor = FontColor.Good;
284 }
285 }
286 if (text2 != text || item.lastColor != fontColor)
287 {
288 item.component.text1.SetText(text2, fontColor);
289 item.component.RebuildLayout();
290 flag = true;
291 item.lastColor = fontColor;
292 }
293 if (item.funcShow != null)
294 {
295 item.component.SetActive(item.funcShow());
296 }
297 }
298 if (flag)
299 {
300 layout.RebuildLayout();
301 this.RebuildLayout();
302 }
303 }
304
305 public override void OnSetContextMenu(UIContextMenu m)
306 {
307 UIContextMenu uIContextMenu = m.AddChild("setting");
308 uIContextMenu.AddToggle("attributes", extra.attributes, delegate(bool a)
309 {
310 extra.attributes = a;
311 Build();
312 });
313 uIContextMenu.AddToggle("dvpv", extra.dv, delegate(bool a)
314 {
315 extra.dv = a;
316 Build();
317 });
318 uIContextMenu.AddToggle("maxAlly", extra.maxAlly, delegate(bool a)
319 {
320 extra.maxAlly = a;
321 Build();
322 });
323 uIContextMenu.AddToggle("maxMinion", extra.maxMinion, delegate(bool a)
324 {
325 extra.maxMinion = a;
326 Build();
327 });
328 uIContextMenu.AddToggle("money", extra.money, delegate(bool a)
329 {
330 extra.money = a;
331 Build();
332 });
333 uIContextMenu.AddToggle("money2", extra.money2, delegate(bool a)
334 {
335 extra.money2 = a;
336 Build();
337 });
338 uIContextMenu.AddToggle("plat", extra.plat, delegate(bool a)
339 {
340 extra.plat = a;
341 Build();
342 });
343 uIContextMenu.AddToggle("medal", extra.medal, delegate(bool a)
344 {
345 extra.medal = a;
346 Build();
347 });
348 uIContextMenu.AddToggle("karma", extra.karma, delegate(bool a)
349 {
350 extra.karma = a;
351 Build();
352 });
353 uIContextMenu.AddToggle("fame", extra.fame, delegate(bool a)
354 {
355 extra.fame = a;
356 Build();
357 });
358 uIContextMenu.AddToggle("influence", extra.influence, delegate(bool a)
359 {
360 extra.influence = a;
361 Build();
362 });
363 if ((bool)EMono.debug)
364 {
365 uIContextMenu.AddToggle("godMood", extra.mood, delegate(bool a)
366 {
367 extra.mood = a;
368 Build();
369 });
370 }
371 uIContextMenu.AddToggle("tourism_value", extra.tourism_value, delegate(bool a)
372 {
373 extra.tourism_value = a;
374 Build();
375 });
376 uIContextMenu.AddToggle("hearth_lv", extra.hearthLv, delegate(bool a)
377 {
378 extra.hearthLv = a;
379 Build();
380 });
381 uIContextMenu.AddToggle("fertility", extra.fertility, delegate(bool a)
382 {
383 extra.fertility = a;
384 Build();
385 });
386 uIContextMenu.AddToggle("invWeight", extra.weight, delegate(bool a)
387 {
388 extra.weight = a;
389 Build();
390 });
391 SetBaseContextMenu(m);
392 }
393
394 public override void OnApplySkin()
395 {
396 base.OnApplySkin();
397 Build();
398 }
399}
FontColor
Definition: FontColor.cs:2
ElementContainerCard elements
Definition: Card.cs:37
int ChildrenWeight
Definition: Card.cs:1889
int GetCurrency(string id="money")
Definition: Card.cs:3652
Party party
Definition: Chara.cs:43
ElementContainer tempElements
Definition: Chara.cs:36
override int WeightLimit
Definition: Chara.cs:695
int MaxSummon
Definition: Chara.cs:699
override int DV
Definition: Chara.cs:714
override int PV
Definition: Chara.cs:743
Stats burden
Definition: Chara.cs:953
Religion faith
Definition: Chara.cs:424
Definition: EMono.cs:4
static Chara pc
Definition: EMono.cs:13
static Player player
Definition: EMono.cs:11
static Zone _zone
Definition: EMono.cs:19
static FactionBranch Branch
Definition: EMono.cs:21
static CoreDebug debug
Definition: EMono.cs:45
List< Element > ListElements(Func< Element, bool > shoudList=null, Comparison< Element > comparison=null)
int Value(int ele)
Element GetElement(string alias)
virtual int DisplayValue
Definition: ELEMENT.cs:278
int ValueWithoutLink
Definition: ELEMENT.cs:284
int id
Definition: ELEMENT.cs:240
virtual Sprite GetIcon(string suffix="")
Definition: ELEMENT.cs:438
bool HasTag(string tag)
Definition: ELEMENT.cs:463
int GetNextExp(int _lv=-1)
List< Chara > members
Definition: Party.cs:18
int karma
Definition: Player.cs:685
int MaxAlly
Definition: Player.cs:1079
int fame
Definition: Player.cs:688
int lastEmptyAlly
Definition: Player.cs:994
string TextMood
Definition: Religion.cs:42
int influence
Definition: Spatial.cs:214
override int GetPhase()
Definition: Stats.cs:117
UIContextMenuItem AddToggle(string idLang="", bool isOn=false, UnityAction< bool > action=null)
UIContextMenu AddChild(string idLang, TextAnchor anchor)
Definition: UIItem.cs:5
Image image1
Definition: UIItem.cs:14
UIText text1
Definition: UIItem.cs:6
Func< bool > funcShow
Func< FontColor > funcCol
Func< string > func
override void OnApplySkin()
Sprite iconInfluence
List< Item > items
override void OnSetContextMenu(UIContextMenu m)
Sprite iconFertility
Sprite iconTourismValue
static WidgetStatsBar Instance
override void OnActivate()
UIItem Add(Element ele, string id="", Sprite sprite=null, Func< string > func=null, Func< FontColor > funcCol=null, Func< bool > funcShow=null)
override object CreateExtra()
Sprite iconMaxMinion
LayoutGroup layout
Definition: Widget.cs:7
int CountMinions(Chara c)
Definition: Zone.cs:3420
virtual int MaxSoil
Definition: Zone.cs:507
bool IsPCFaction
Definition: Zone.cs:464
int GetSoilCost()
Definition: Zone.cs:3433