Elin Decompiled Documentation EA 23.256 Nightly Patch 1
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 public bool elec;
62 }
63
64 public static WidgetStatsBar Instance;
65
66 public LayoutGroup layout;
67
68 public List<Item> items = new List<Item>();
69
70 public Sprite iconMoney;
71
72 public Sprite iconMoney2;
73
74 public Sprite iconPlat;
75
76 public Sprite iconMedal;
77
78 public Sprite iconKarma;
79
80 public Sprite iconWeight;
81
82 public Sprite iconInfluence;
83
84 public Sprite iconMaxAlly;
85
86 public Sprite iconGodMood;
87
88 public Sprite iconHearth;
89
90 public Sprite iconTourismValue;
91
92 public Sprite iconFame;
93
94 public Sprite iconDvPv;
95
96 public Sprite iconMaxMinion;
97
98 public Sprite iconFertility;
99
100 public Sprite iconElec;
101
102 private UIItem mold;
103
104 public Extra extra => base.config.extra as Extra;
105
106 public Color colorDefault => base.config.skin.BG.colors.textDefault;
107
108 public Color colorBad => base.config.skin.BG.colors.textBad;
109
110 public Color colorVeryBad => base.config.skin.BG.colors.textBad;
111
112 public override object CreateExtra()
113 {
114 return new Extra();
115 }
116
117 public override void OnActivate()
118 {
119 Instance = this;
120 mold = layout.CreateMold<UIItem>();
121 if (extra == null)
122 {
123 base.config.extra = CreateExtra();
124 }
125 Build();
126 InvokeRepeating("Refresh", 0.2f, 0.2f);
127 }
128
129 public void Build()
130 {
131 items.Clear();
132 layout.DestroyChildren();
133 if (extra.attributes)
134 {
135 foreach (Element item in EMono.pc.elements.ListElements((Element e) => e.HasTag("primary")))
136 {
137 Add(item);
138 }
140 }
141 if (extra.dv)
142 {
143 Add(null, "dvpv", iconDvPv, () => EMono.pc.DV + "/" + EMono.pc.PV);
144 }
145 if (extra.maxAlly)
146 {
147 Add(null, "maxAlly", iconMaxAlly, () => EMono.pc.party.members.Count - 1 + "/" + EMono.player.MaxAlly, () => (EMono.player.lastEmptyAlly >= 0) ? FontColor.Default : FontColor.Bad);
148 }
149 if (extra.maxMinion)
150 {
151 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);
152 }
153 if (extra.money)
154 {
155 Add(null, "money", iconMoney, () => EMono.pc.GetCurrency().ToString("#,0") ?? "");
156 }
157 if (extra.money2)
158 {
159 Add(null, "money2", iconMoney2, () => EMono.pc.GetCurrency("money2").ToString("#,0") ?? "");
160 }
161 if (extra.plat)
162 {
163 Add(null, "plat", iconPlat, () => EMono.pc.GetCurrency("plat").ToString("#,0") ?? "");
164 }
165 if (extra.medal)
166 {
167 Add(null, "medal", iconMedal, () => EMono.pc.GetCurrency("medal").ToString("#,0") ?? "");
168 }
169 if (extra.karma)
170 {
171 Add(null, "karma", iconKarma, () => EMono.player.karma.ToString() ?? "");
172 }
173 if (extra.mood)
174 {
175 Add(null, "mood", iconGodMood, () => EMono.pc.faith.TextMood ?? "");
176 }
177 if (extra.fame)
178 {
179 Add(null, "fame", iconFame, () => EMono.player.fame.ToFormat());
180 }
181 if (extra.influence)
182 {
183 Add(null, "influence", iconInfluence, () => EMono._zone.influence.ToFormat(), null, () => EMono._zone.influence != 0);
184 }
186 {
187 Add(null, "tourism_value", iconTourismValue, () => (EMono.Branch != null) ? EMono.Branch.tourism.ToFormat() : "", null, () => EMono._zone.IsPCFaction);
188 }
189 if (extra.hearthLv)
190 {
191 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);
192 }
193 if (extra.fertility)
194 {
195 Add(null, "fertility", iconFertility, delegate
196 {
197 object obj;
198 if (EMono.Branch != null || EMono._zone is Zone_Tent)
199 {
200 obj = (EMono._zone.MaxSoil - EMono._zone.GetSoilCost()).ToString();
201 if (obj == null)
202 {
203 return "";
204 }
205 }
206 else
207 {
208 obj = "";
209 }
210 return (string)obj;
211 }, () => ((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);
212 }
213 if (extra.elec)
214 {
215 Add(null, "elec", iconElec, () => (EMono.Branch != null || EMono._zone is Zone_Tent) ? (EMono._zone.GetElectricity(cost: true) + " / " + EMono._zone.GetElectricity()) : "", () => ((EMono.Branch == null && !(EMono._zone is Zone_Tent)) || EMono._zone.GetElectricity() - EMono._zone.GetElectricity(cost: true) >= 0) ? FontColor.Default : FontColor.Bad, () => EMono._zone.IsPCFaction || EMono._zone is Zone_Tent);
216 }
217 if (extra.weight)
218 {
219 Add(null, "weight", iconWeight, () => ((float)EMono.pc.ChildrenWeight / 1000f).ToString("F1") + " / " + ((float)EMono.pc.WeightLimit / 1000f).ToString("F1"), () => EMono.pc.burden.GetPhase() switch
220 {
221 1 => FontColor.Warning,
222 0 => FontColor.Default,
223 _ => FontColor.Bad,
224 });
225 }
226 Refresh();
227 }
228
229 public UIItem Add(Element ele, string id = "", Sprite sprite = null, Func<string> func = null, Func<FontColor> funcCol = null, Func<bool> funcShow = null)
230 {
231 UIItem uIItem = Util.Instantiate(mold, layout);
232 Item item = new Item
233 {
234 ele = ele,
235 component = uIItem,
236 id = id,
237 func = func,
238 funcCol = funcCol,
239 funcShow = funcShow
240 };
241 if ((bool)sprite)
242 {
243 uIItem.image1.sprite = sprite;
244 }
245 else
246 {
247 uIItem.image1.sprite = ele.GetIcon("_m");
248 }
249 uIItem.image1.SetNativeSize();
250 uIItem.text1.skinRoot = base.skinRoot;
251 Shadow component = uIItem.text1.GetComponent<Shadow>();
252 if ((bool)component)
253 {
254 component.enabled = base.config.skin.BG.textShadow;
255 }
256 items.Add(item);
257 return uIItem;
258 }
259
260 public void Refresh()
261 {
262 bool flag = false;
263 foreach (Item item in items)
264 {
265 string text = item.component.text1.text;
266 string text2 = "";
267 FontColor fontColor = FontColor.Default;
268 if (!item.id.IsEmpty())
269 {
270 text2 = item.func();
271 if (item.funcCol != null)
272 {
273 fontColor = item.funcCol();
274 }
275 }
276 else
277 {
278 Element ele = item.ele;
279 text2 = ele.DisplayValue.ToString() ?? "";
280 if (ele.DisplayValue < ele.ValueWithoutLink)
281 {
282 text2 = text2 + " (" + ele.ValueWithoutLink + ")";
283 }
284 int num = ((EMono.pc.tempElements != null) ? EMono.pc.tempElements.Value(ele.id) : 0);
285 foreach (Condition condition in EMono.pc.conditions)
286 {
287 num += (condition.GetElementContainer()?.GetElement(ele.id)?.Value).GetValueOrDefault();
288 }
289 if (ele.DisplayValue < ele.ValueWithoutLink || num < 0)
290 {
291 fontColor = FontColor.Bad;
292 }
293 else if (num > 0)
294 {
295 fontColor = FontColor.Good;
296 }
297 }
298 if (text2 != text || item.lastColor != fontColor)
299 {
300 item.component.text1.SetText(text2, fontColor);
301 item.component.RebuildLayout();
302 flag = true;
303 item.lastColor = fontColor;
304 }
305 if (item.funcShow != null)
306 {
307 item.component.SetActive(item.funcShow());
308 }
309 }
310 if (flag)
311 {
312 layout.RebuildLayout();
313 this.RebuildLayout();
314 }
315 }
316
317 public override void OnSetContextMenu(UIContextMenu m)
318 {
319 UIContextMenu uIContextMenu = m.AddChild("setting");
320 uIContextMenu.AddToggle("attributes", extra.attributes, delegate(bool a)
321 {
322 extra.attributes = a;
323 Build();
324 });
325 uIContextMenu.AddToggle("dvpv", extra.dv, delegate(bool a)
326 {
327 extra.dv = a;
328 Build();
329 });
330 uIContextMenu.AddToggle("maxAlly", extra.maxAlly, delegate(bool a)
331 {
332 extra.maxAlly = a;
333 Build();
334 });
335 uIContextMenu.AddToggle("maxMinion", extra.maxMinion, delegate(bool a)
336 {
337 extra.maxMinion = a;
338 Build();
339 });
340 uIContextMenu.AddToggle("money", extra.money, delegate(bool a)
341 {
342 extra.money = a;
343 Build();
344 });
345 uIContextMenu.AddToggle("money2", extra.money2, delegate(bool a)
346 {
347 extra.money2 = a;
348 Build();
349 });
350 uIContextMenu.AddToggle("plat", extra.plat, delegate(bool a)
351 {
352 extra.plat = a;
353 Build();
354 });
355 uIContextMenu.AddToggle("medal", extra.medal, delegate(bool a)
356 {
357 extra.medal = a;
358 Build();
359 });
360 uIContextMenu.AddToggle("karma", extra.karma, delegate(bool a)
361 {
362 extra.karma = a;
363 Build();
364 });
365 uIContextMenu.AddToggle("fame", extra.fame, delegate(bool a)
366 {
367 extra.fame = a;
368 Build();
369 });
370 uIContextMenu.AddToggle("influence", extra.influence, delegate(bool a)
371 {
372 extra.influence = a;
373 Build();
374 });
375 if ((bool)EMono.debug)
376 {
377 uIContextMenu.AddToggle("godMood", extra.mood, delegate(bool a)
378 {
379 extra.mood = a;
380 Build();
381 });
382 }
383 uIContextMenu.AddToggle("tourism_value", extra.tourism_value, delegate(bool a)
384 {
385 extra.tourism_value = a;
386 Build();
387 });
388 uIContextMenu.AddToggle("hearth_lv", extra.hearthLv, delegate(bool a)
389 {
390 extra.hearthLv = a;
391 Build();
392 });
393 uIContextMenu.AddToggle("fertility", extra.fertility, delegate(bool a)
394 {
395 extra.fertility = a;
396 Build();
397 });
398 uIContextMenu.AddToggle("elec", extra.elec, delegate(bool a)
399 {
400 extra.elec = a;
401 Build();
402 });
403 uIContextMenu.AddToggle("invWeight", extra.weight, delegate(bool a)
404 {
405 extra.weight = a;
406 Build();
407 });
408 SetBaseContextMenu(m);
409 }
410
411 public override void OnApplySkin()
412 {
413 base.OnApplySkin();
414 Build();
415 }
416}
FontColor
Definition: FontColor.cs:2
virtual ElementContainer GetElementContainer()
ElementContainerCard elements
Definition: Card.cs:41
int ChildrenWeight
Definition: Card.cs:2013
int GetCurrency(string id="money")
Definition: Card.cs:3977
Party party
Definition: Chara.cs:43
ElementContainer tempElements
Definition: Chara.cs:36
List< Condition > conditions
Definition: Chara.cs:211
override int WeightLimit
Definition: Chara.cs:710
int MaxSummon
Definition: Chara.cs:714
override int DV
Definition: Chara.cs:729
override int PV
Definition: Chara.cs:758
Stats burden
Definition: Chara.cs:1144
Religion faith
Definition: Chara.cs:439
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:288
int ValueWithoutLink
Definition: ELEMENT.cs:294
int id
Definition: ELEMENT.cs:250
virtual Sprite GetIcon(string suffix="")
Definition: ELEMENT.cs:448
bool HasTag(string tag)
Definition: ELEMENT.cs:473
int Value
Definition: ELEMENT.cs:292
int GetNextExp(int _lv=-1)
List< Chara > members
Definition: Party.cs:19
int karma
Definition: Player.cs:878
int MaxAlly
Definition: Player.cs:1278
int fame
Definition: Player.cs:881
int lastEmptyAlly
Definition: Player.cs:1193
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:3739
int GetElectricity(bool cost=false)
Definition: Zone.cs:2926
virtual int MaxSoil
Definition: Zone.cs:516
bool IsPCFaction
Definition: Zone.cs:473
int GetSoilCost()
Definition: Zone.cs:3752