Elin Decompiled Documentation EA 23.295 Stable Patch 2
Loading...
Searching...
No Matches
SourceElement.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Reflection;
4using UnityEngine;
5using UnityEngine.UI;
6
7public class SourceElement : SourceDataInt<SourceElement.Row>
8{
9 [Serializable]
10 public class Row : BaseRow
11 {
12 public int id;
13
14 public string alias;
15
16 public string name_JP;
17
18 public string name;
19
20 public string altname_JP;
21
22 public string altname;
23
24 public string aliasParent;
25
26 public string aliasRef;
27
28 public string aliasMtp;
29
30 public float parentFactor;
31
32 public int lvFactor;
33
34 public int encFactor;
35
36 public string encSlot;
37
38 public int mtp;
39
40 public int LV;
41
42 public int chance;
43
44 public int value;
45
46 public int[] cost;
47
48 public int geneSlot;
49
50 public int sort;
51
52 public string target;
53
54 public string[] proc;
55
56 public string type;
57
58 public string group;
59
60 public string category;
61
62 public string categorySub;
63
64 public string[] abilityType;
65
66 public string[] tag;
67
68 public string thing;
69
70 public int eleP;
71
72 public int cooldown;
73
74 public int charge;
75
76 public float radius;
77
78 public int max;
79
80 public string[] req;
81
82 public string idTrainer;
83
84 public int partySkill;
85
86 public string tagTrainer;
87
88 public string levelBonus_JP;
89
90 public string levelBonus;
91
92 public string[] foodEffect;
93
94 public string[] langAct;
95
96 public string detail_JP;
97
98 public string detail;
99
100 public string textPhase_JP;
101
102 public string textPhase;
103
104 public string textExtra_JP;
105
106 public string textExtra;
107
108 public string textInc_JP;
109
110 public string textInc;
111
112 public string textDec_JP;
113
114 public string textDec;
115
116 public string[] textAlt_JP;
117
118 public string[] textAlt;
119
120 public string[] adjective_JP;
121
122 public string[] adjective;
123
124 [NonSerialized]
125 public bool isAttribute;
126
127 [NonSerialized]
129
130 [NonSerialized]
131 public bool isSkill;
132
133 [NonSerialized]
134 public bool isSpell;
135
136 [NonSerialized]
137 public bool isTrait;
138
139 public int idMold;
140
141 [NonSerialized]
142 public string name_L;
143
144 [NonSerialized]
145 public string altname_L;
146
147 [NonSerialized]
148 public string detail_L;
149
150 [NonSerialized]
151 public string textPhase_L;
152
153 [NonSerialized]
154 public string textExtra_L;
155
156 [NonSerialized]
157 public string textInc_L;
158
159 [NonSerialized]
160 public string textDec_L;
161
162 [NonSerialized]
163 public string levelBonus_L;
164
165 [NonSerialized]
166 public string[] textAlt_L;
167
168 [NonSerialized]
169 public string[] adjective_L;
170
171 public override bool UseAlias => true;
172
173 public override string GetAlias => alias;
174
175 public bool IsWeaponEnc
176 {
177 get
178 {
179 if (!tag.Contains("weaponEnc") && !(categorySub == "eleConvert") && !(categorySub == "eleAttack"))
180 {
181 return category == "ability";
182 }
183 return true;
184 }
185 }
186
187 public bool IsShieldEnc => encSlot == "shield";
188
189 public override string GetName()
190 {
191 if (idMold != 0)
192 {
193 return EClass.sources.elements.map[idMold].alias.lang(EClass.sources.elements.alias[aliasRef].GetAltname(0));
194 }
195 return base.GetName();
196 }
197
198 public Sprite GetSprite()
199 {
200 return SpriteSheet.Get("Media/Graphics/Icon/Element/icon_ability", alias) ?? SpriteSheet.Get("Media/Graphics/Icon/Element/icon_ability", type) ?? EClass.core.refs.icons.defaultAbility;
201 }
202
203 public void SetImage(Image image)
204 {
205 image.sprite = GetSprite() ?? EClass.core.refs.icons.defaultAbility;
206 if (!aliasRef.IsEmpty())
207 {
208 image.color = EClass.setting.elements[aliasRef].colorSprite;
209 }
210 else
211 {
212 image.color = Color.white;
213 }
214 }
215
216 public string GetAltname(int i)
217 {
218 return GetText("altname").Split(',').TryGet(i);
219 }
220
222 {
223 if (id == 10)
224 {
225 return true;
226 }
227 if (isTrait)
228 {
230 {
231 return false;
232 }
233 return true;
234 }
236 {
237 return false;
238 }
239 if (!t.IsEquipment)
240 {
241 return IsWeaponEnc;
242 }
243 return true;
244 }
245
247 {
248 if (encSlot.IsEmpty())
249 {
250 return false;
251 }
252 if (encSlot == "global")
253 {
254 return true;
255 }
256 int slot = cat.slot;
257 if (slot == 0)
258 {
259 return IsWeaponEnc;
260 }
261 switch (encSlot)
262 {
263 case "all":
264 return true;
265 case "weapon":
266 return cat.IsChildOf("weapon");
267 case "shield":
268 if (!cat.IsChildOf("shield"))
269 {
270 return cat.IsChildOf("martial");
271 }
272 return true;
273 default:
274 return encSlot.Contains(EClass.sources.elements.map[slot].alias);
275 }
276 }
277 }
278
279 [NonSerialized]
280 public List<Row> hobbies = new List<Row>();
281
282 [NonSerialized]
283 public Dictionary<string, string> fuzzyAlias = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
284
285 public override string[] ImportFields => new string[8] { "altname", "textPhase", "textExtra", "textInc", "textDec", "textAlt", "adjective", "levelBonus" };
286
287 public override Row CreateRow()
288 {
289 return new Row
290 {
291 id = SourceData.GetInt(0),
292 alias = SourceData.GetString(1),
293 name_JP = SourceData.GetString(2),
294 name = SourceData.GetString(3),
295 altname_JP = SourceData.GetString(4),
296 altname = SourceData.GetString(5),
297 aliasParent = SourceData.GetString(6),
298 aliasRef = SourceData.GetString(7),
299 aliasMtp = SourceData.GetString(8),
300 parentFactor = SourceData.GetFloat(9),
301 lvFactor = SourceData.GetInt(10),
302 encFactor = SourceData.GetInt(11),
303 encSlot = SourceData.GetString(12),
304 mtp = SourceData.GetInt(13),
305 LV = SourceData.GetInt(14),
306 chance = SourceData.GetInt(15),
307 value = SourceData.GetInt(16),
308 cost = SourceData.GetIntArray(17),
309 geneSlot = SourceData.GetInt(18),
310 sort = SourceData.GetInt(19),
311 target = SourceData.GetString(20),
312 proc = SourceData.GetStringArray(21),
313 type = SourceData.GetString(22),
314 group = SourceData.GetString(23),
315 category = SourceData.GetString(24),
316 categorySub = SourceData.GetString(25),
317 abilityType = SourceData.GetStringArray(26),
318 tag = SourceData.GetStringArray(27),
319 thing = SourceData.GetString(28),
320 eleP = SourceData.GetInt(29),
321 cooldown = SourceData.GetInt(30),
322 charge = SourceData.GetInt(31),
323 radius = SourceData.GetFloat(32),
324 max = SourceData.GetInt(33),
325 req = SourceData.GetStringArray(34),
326 idTrainer = SourceData.GetString(35),
327 partySkill = SourceData.GetInt(36),
328 tagTrainer = SourceData.GetString(37),
329 levelBonus_JP = SourceData.GetString(38),
330 levelBonus = SourceData.GetString(39),
331 foodEffect = SourceData.GetStringArray(40),
332 langAct = SourceData.GetStringArray(42),
333 detail_JP = SourceData.GetString(43),
334 detail = SourceData.GetString(44),
335 textPhase_JP = SourceData.GetString(45),
336 textPhase = SourceData.GetString(46),
337 textExtra_JP = SourceData.GetString(47),
338 textExtra = SourceData.GetString(48),
339 textInc_JP = SourceData.GetString(49),
340 textInc = SourceData.GetString(50),
341 textDec_JP = SourceData.GetString(51),
342 textDec = SourceData.GetString(52),
343 textAlt_JP = SourceData.GetStringArray(53),
344 textAlt = SourceData.GetStringArray(54),
345 adjective_JP = SourceData.GetStringArray(55),
346 adjective = SourceData.GetStringArray(56)
347 };
348 }
349
350 public override void SetRow(Row r)
351 {
352 map[r.id] = r;
353 }
354
355 public override void OnInit()
356 {
357 hobbies.Clear();
358 foreach (Row row in rows)
359 {
360 if (row.id >= 100 && row.id < 400)
361 {
362 hobbies.Add(row);
363 }
364 row.isAttribute = row.category == "attribute";
365 row.isPrimaryAttribute = row.isAttribute && row.tag.Contains("primary");
366 row.isSkill = row.category == "skill";
367 row.isSpell = row.categorySub == "spell";
368 row.isTrait = row.tag.Contains("trait");
369 }
370 fuzzyAlias.Clear();
371 foreach (string key in alias.Keys)
372 {
373 fuzzyAlias[key] = key;
374 }
375 }
376
377 public override void OnAfterImportData()
378 {
380 map.Clear();
381 alias.Clear();
382 foreach (Row row in rows)
383 {
384 map[row.id] = row;
385 alias[row.GetAlias] = row;
386 }
387 int num = 50000;
388 int num2 = 0;
389 for (int i = 910; i < 927; i++)
390 {
391 Row ele = EClass.sources.elements.map[i];
392 AddRow(ele, num + num2 + 100, "ball_");
393 AddRow(ele, num + num2 + 200, "breathe_");
394 AddRow(ele, num + num2 + 300, "bolt_");
395 AddRow(ele, num + num2 + 400, "hand_");
396 AddRow(ele, num + num2 + 500, "arrow_");
397 AddRow(ele, num + num2 + 600, "funnel_");
398 AddRow(ele, num + num2 + 700, "miasma_");
399 AddRow(ele, num + num2 + 800, "weapon_");
400 AddRow(ele, num + num2 + 900, "puddle_");
401 AddRow(ele, num + num2 + 1000, "sword_");
402 AddRow(ele, num + num2 + 1100, "bit_");
403 AddRow(ele, num + num2 + 1200, "flare_");
404 num2++;
405 }
406 initialized = false;
407 }
408
409 public void AddRow(Row ele, int id, string idOrg)
410 {
411 if (map.ContainsKey(id))
412 {
413 return;
414 }
415 Row row = EClass.sources.elements.alias[idOrg];
416 Dictionary<string, System.Reflection.FieldInfo> rowFields = row.GetRowFields();
417 Row row2 = new Row();
418 foreach (System.Reflection.FieldInfo value in rowFields.Values)
419 {
420 value.SetValue(row2, value.GetValue(row));
421 }
422 row2.id = id;
423 row2.idMold = row.id;
424 row2.alias = row.alias + ele.alias.Remove(0, 3);
425 row2.aliasRef = ele.alias;
426 row2.aliasParent = ele.aliasParent;
427 row2.chance = row.chance * ele.chance / 100;
428 row2.LV = row.LV;
429 row2.OnImportData(EClass.sources.elements);
430 rows.Add(row2);
431 }
432}
bool IsThrownWeapon
Definition: Card.cs:2285
bool IsEquipmentOrRangedOrAmmo
Definition: Card.cs:2270
Trait trait
Definition: Card.cs:54
bool IsEquipment
Definition: Card.cs:2213
Sprite defaultAbility
Definition: CoreRef.cs:118
Icons icons
Definition: CoreRef.cs:355
Definition: Core.cs:14
CoreRef refs
Definition: Core.cs:51
static Core SetCurrent(Core _current=null)
Definition: Core.cs:590
Definition: EClass.cs:6
static Core core
Definition: EClass.cs:7
static SourceManager sources
Definition: EClass.cs:43
static GameSetting setting
Definition: EClass.cs:35
UD_String_ElementRef elements
Definition: GameSetting.cs:315
static float GetFloat(int id)
Definition: SourceData.cs:897
static string[] GetStringArray(int id)
Definition: SourceData.cs:912
static string GetString(int id)
Definition: SourceData.cs:917
static int GetInt(int id)
Definition: SourceData.cs:882
static int[] GetIntArray(int id)
Definition: SourceData.cs:907
override string GetAlias
bool IsEncAppliable(SourceCategory.Row cat)
string[] abilityType
override string GetName()
override bool UseAlias
void SetImage(Image image)
bool IsMaterialEncAppliable(Thing t)
string GetAltname(int i)
override void OnInit()
override void OnAfterImportData()
List< Row > hobbies
override Row CreateRow()
void AddRow(Row ele, int id, string idOrg)
override void SetRow(Row r)
Dictionary< string, string > fuzzyAlias
override string[] ImportFields
SourceElement elements
static Sprite Get(string id)
Definition: SpriteSheet.cs:28
Definition: Thing.cs:8