Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
WidgetTracker.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using System.Linq;
3
4public class WidgetTracker : Widget
5{
6 public class Extra
7 {
8 public bool potential;
9 }
10
11 public static WidgetTracker Instance;
12
13 private FastString sb = new FastString();
14
15 private FastString lastSb = new FastString();
16
17 public UIText text;
18
19 public Extra extra => base.config.extra as Extra;
20
21 public override object CreateExtra()
22 {
23 return new Extra();
24 }
25
26 public static void Toggle(Element e)
27 {
28 if (e.owner != EMono.pc.elements)
29 {
30 SE.Beep();
31 return;
32 }
33 HashSet<int> trackedElements = EMono.player.trackedElements;
34 if (trackedElements.Contains(e.id))
35 {
36 trackedElements.Remove(e.id);
37 if (trackedElements.Count == 0 && (bool)Instance)
38 {
40 }
41 }
42 else
43 {
44 trackedElements.Add(e.id);
45 if (!Instance)
46 {
47 EMono.ui.widgets.ActivateWidget("Tracker");
48 }
49 }
50 SE.ClickGeneral();
51 if ((bool)Instance)
52 {
54 }
55 }
56
57 public override void OnActivate()
58 {
59 Instance = this;
60 Refresh();
61 }
62
63 private void OnEnable()
64 {
65 InvokeRepeating("Refresh", 0.5f, 0.5f);
66 }
67
68 private void OnDisable()
69 {
70 CancelInvoke();
71 }
72
73 public void Refresh()
74 {
75 sb.Clear();
76 HashSet<int> trackedElements = EMono.player.trackedElements;
77 if (trackedElements.Count == 0)
78 {
79 sb.Append("none".lang());
80 }
81 else
82 {
83 int num = trackedElements.Last();
84 foreach (int item in trackedElements)
85 {
87 if (element != null)
88 {
89 string text = element.Name + " " + element.Value;
90 if (element.ShowXP)
91 {
92 text = text + "." + (element.vExp / 10).ToString("D2");
93 }
94 if (extra.potential)
95 {
96 text += (" (" + element.Potential + ")").TagSize(13);
97 }
98 if (item != num)
99 {
100 text += "\n";
101 }
102 sb.Append(text);
103 }
104 }
105 }
106 if (sb.IsEmpty())
107 {
108 sb.Append("none".lang());
109 }
110 if (!sb.Equals(lastSb))
111 {
112 this.text.text = sb.ToString();
113 lastSb.Set(sb);
114 this.RebuildLayout();
115 }
116 }
117
118 public override void OnSetContextMenu(UIContextMenu m)
119 {
120 m.AddToggle("showPotential", extra.potential, delegate(bool a)
121 {
122 extra.potential = a;
123 Refresh();
124 });
125 m.AddButton("clear", delegate
126 {
128 EMono.ui.widgets.DeactivateWidget(this);
129 });
131 }
132}
ElementContainerCard elements
Definition: Card.cs:37
Definition: EMono.cs:4
static Chara pc
Definition: EMono.cs:13
static Player player
Definition: EMono.cs:11
static UI ui
Definition: EMono.cs:15
Element GetElement(string alias)
virtual bool ShowXP
Definition: ELEMENT.cs:307
int id
Definition: ELEMENT.cs:240
ElementContainer owner
Definition: ELEMENT.cs:256
int Value
Definition: ELEMENT.cs:282
override string ToString()
Definition: FastString.cs:36
FastString Append(string value)
Definition: FastString.cs:119
FastString Clear()
Definition: FastString.cs:112
bool IsEmpty()
Definition: FastString.cs:27
void Set(string str)
Definition: FastString.cs:66
HashSet< int > trackedElements
Definition: Player.cs:862
UIContextMenuItem AddToggle(string idLang="", bool isOn=false, UnityAction< bool > action=null)
void AddButton(Func< string > funcText, UnityAction action=null)
Definition: UIText.cs:6
FastString sb
static WidgetTracker Instance
override void OnSetContextMenu(UIContextMenu m)
FastString lastSb
override void OnActivate()
static void Toggle(Element e)
void OnDisable()
override object CreateExtra()
Definition: Widget.cs:7
void SetBaseContextMenu(UIContextMenu m)
Definition: Widget.cs:608
void Close()
Definition: Widget.cs:319