Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
InspectGroup.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3
4public class InspectGroup : EClass
5{
6 public class Item
7 {
8 public string text;
9
10 public string idSprite;
11
12 public Action<IInspect> action;
13
14 public int priority;
15
16 public bool auto;
17
18 public bool sound;
19
20 public bool multi;
21
22 public Func<string> textFunc;
23 }
24
25 public Type type;
26
27 public List<Item> actions = new List<Item>();
28
29 public List<IInspect> targets = new List<IInspect>();
30
32
33 public bool Solo => targets.Count == 1;
34
35 public virtual string MultiName => type.ToString();
36
37 public static InspectGroup Create(IInspect t)
38 {
39 InspectGroup inspectGroup = null;
40 if (t is Area)
41 {
42 inspectGroup = new InspectGroupArea();
43 }
44 else if (t is Chara)
45 {
46 inspectGroup = new InspectGroupChara();
47 }
48 else if (t is Thing)
49 {
50 inspectGroup = new InspectGroupThing();
51 }
52 else if (t is TaskPoint)
53 {
54 inspectGroup = new InspectGroupTask();
55 }
56 else if (t is ObjInfo)
57 {
58 inspectGroup = new InspectGroupObj();
59 }
60 else if (t is BlockInfo)
61 {
62 inspectGroup = new InspectGroupBlock();
63 }
64 else if (t is EloPos)
65 {
66 inspectGroup = new InspectGroupEloPos();
67 }
68 inspectGroup.type = t.GetType();
69 inspectGroup.targets.Add(t);
70 return inspectGroup;
71 }
72
73 public bool CanInspect()
74 {
75 for (int num = targets.Count - 1; num >= 0; num--)
76 {
77 if (!targets[num].CanInspect)
78 {
79 targets.RemoveAt(num);
80 }
81 }
82 if (targets.Count > 0)
83 {
85 }
86 return false;
87 }
88
89 public virtual bool Contains(IInspect t)
90 {
91 return targets.Contains(t);
92 }
93
94 public string GetName()
95 {
96 if (!Solo)
97 {
98 return MultiName + " x " + targets.Count;
99 }
101 }
102
103 public virtual void SetActions()
104 {
105 }
106}
107public class InspectGroup<T> : InspectGroup where T : IInspect
108{
109 public new T FirstTarget => (T)base.FirstTarget;
110
111 public sealed override void SetActions()
112 {
113 actions.Clear();
114 OnSetActions();
115 }
116
117 public virtual void OnSetActions()
118 {
119 }
120
121 public Item Add(string text, string idSprite, Action action, bool sound = false, int priority = 0, bool auto = false)
122 {
123 Item item = new Item
124 {
125 text = text,
126 idSprite = idSprite,
127 action = delegate
128 {
129 action();
130 },
131 sound = sound,
132 priority = priority,
133 auto = auto
134 };
135 actions.Add(item);
136 return item;
137 }
138
139 public Item Add(string text, string idSprite, Action<T> action, bool sound = false, int priority = 0, bool auto = false)
140 {
141 Item item = new Item
142 {
143 text = text,
144 idSprite = idSprite,
145 action = delegate(IInspect a)
146 {
147 action((T)a);
148 },
149 sound = sound,
150 priority = priority,
151 auto = auto,
152 multi = true
153 };
154 actions.Add(item);
155 return item;
156 }
157}
Definition: Area.cs:4
Definition: Chara.cs:10
Definition: EClass.cs:5
Definition: EloPos.cs:5
Action< IInspect > action
Definition: InspectGroup.cs:12
Func< string > textFunc
Definition: InspectGroup.cs:22
virtual bool Contains(IInspect t)
Definition: InspectGroup.cs:89
bool CanInspect()
Definition: InspectGroup.cs:73
virtual string MultiName
Definition: InspectGroup.cs:35
Item Add(string text, string idSprite, Action< T > action, bool sound=false, int priority=0, bool auto=false)
virtual void SetActions()
string GetName()
Definition: InspectGroup.cs:94
virtual void OnSetActions()
IInspect FirstTarget
Definition: InspectGroup.cs:31
Item Add(string text, string idSprite, Action action, bool sound=false, int priority=0, bool auto=false)
List< IInspect > targets
Definition: InspectGroup.cs:29
static InspectGroup Create(IInspect t)
Definition: InspectGroup.cs:37
List< Item > actions
Definition: InspectGroup.cs:27
Definition: Thing.cs:8
string InspectName
Definition: IInspect.cs:16
bool CanInspect
Definition: IInspect.cs:14