Elin Decompiled Documentation EA 23.193 Nightly
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 public override string[] ImportFields => new string[8] { "altname", "textPhase", "textExtra", "textInc", "textDec", "textAlt", "adjective", "levelBonus" };
283
284 public override Row CreateRow()
285 {
286 return new Row
287 {
288 id = SourceData.GetInt(0),
289 alias = SourceData.GetString(1),
290 name_JP = SourceData.GetString(2),
291 name = SourceData.GetString(3),
292 altname_JP = SourceData.GetString(4),
293 altname = SourceData.GetString(5),
294 aliasParent = SourceData.GetString(6),
295 aliasRef = SourceData.GetString(7),
296 aliasMtp = SourceData.GetString(8),
297 parentFactor = SourceData.GetFloat(9),
298 lvFactor = SourceData.GetInt(10),
299 encFactor = SourceData.GetInt(11),
300 encSlot = SourceData.GetString(12),
301 mtp = SourceData.GetInt(13),
302 LV = SourceData.GetInt(14),
303 chance = SourceData.GetInt(15),
304 value = SourceData.GetInt(16),
305 cost = SourceData.GetIntArray(17),
306 geneSlot = SourceData.GetInt(18),
307 sort = SourceData.GetInt(19),
308 target = SourceData.GetString(20),
309 proc = SourceData.GetStringArray(21),
310 type = SourceData.GetString(22),
311 group = SourceData.GetString(23),
312 category = SourceData.GetString(24),
313 categorySub = SourceData.GetString(25),
314 abilityType = SourceData.GetStringArray(26),
315 tag = SourceData.GetStringArray(27),
316 thing = SourceData.GetString(28),
317 eleP = SourceData.GetInt(29),
318 cooldown = SourceData.GetInt(30),
319 charge = SourceData.GetInt(31),
320 radius = SourceData.GetFloat(32),
321 max = SourceData.GetInt(33),
322 req = SourceData.GetStringArray(34),
323 idTrainer = SourceData.GetString(35),
324 partySkill = SourceData.GetInt(36),
325 tagTrainer = SourceData.GetString(37),
326 levelBonus_JP = SourceData.GetString(38),
327 levelBonus = SourceData.GetString(39),
328 foodEffect = SourceData.GetStringArray(40),
329 langAct = SourceData.GetStringArray(42),
330 detail_JP = SourceData.GetString(43),
331 detail = SourceData.GetString(44),
332 textPhase_JP = SourceData.GetString(45),
333 textPhase = SourceData.GetString(46),
334 textExtra_JP = SourceData.GetString(47),
335 textExtra = SourceData.GetString(48),
336 textInc_JP = SourceData.GetString(49),
337 textInc = SourceData.GetString(50),
338 textDec_JP = SourceData.GetString(51),
339 textDec = SourceData.GetString(52),
340 textAlt_JP = SourceData.GetStringArray(53),
341 textAlt = SourceData.GetStringArray(54),
342 adjective_JP = SourceData.GetStringArray(55),
343 adjective = SourceData.GetStringArray(56)
344 };
345 }
346
347 public override void SetRow(Row r)
348 {
349 map[r.id] = r;
350 }
351
352 public override void OnInit()
353 {
354 foreach (Row row in rows)
355 {
356 if (row.id >= 100 && row.id < 400)
357 {
358 hobbies.Add(row);
359 }
360 row.isAttribute = row.category == "attribute";
361 row.isPrimaryAttribute = row.isAttribute && row.tag.Contains("primary");
362 row.isSkill = row.category == "skill";
363 row.isSpell = row.categorySub == "spell";
364 row.isTrait = row.tag.Contains("trait");
365 }
366 }
367
368 public override void OnAfterImportData()
369 {
371 foreach (Row row in rows)
372 {
373 map[row.id] = row;
374 alias[row.GetAlias] = row;
375 }
376 int num = 50000;
377 int num2 = 0;
378 for (int i = 910; i < 927; i++)
379 {
380 Row ele = EClass.sources.elements.map[i];
381 AddRow(ele, num + num2 + 100, "ball_");
382 AddRow(ele, num + num2 + 200, "breathe_");
383 AddRow(ele, num + num2 + 300, "bolt_");
384 AddRow(ele, num + num2 + 400, "hand_");
385 AddRow(ele, num + num2 + 500, "arrow_");
386 AddRow(ele, num + num2 + 600, "funnel_");
387 AddRow(ele, num + num2 + 700, "miasma_");
388 AddRow(ele, num + num2 + 800, "weapon_");
389 AddRow(ele, num + num2 + 900, "puddle_");
390 AddRow(ele, num + num2 + 1000, "sword_");
391 num2++;
392 }
393 }
394
395 public void AddRow(Row ele, int id, string idOrg)
396 {
397 if (Application.isEditor || !map.ContainsKey(id))
398 {
399 Row row = EClass.sources.elements.alias[idOrg];
400 System.Reflection.FieldInfo[] fields = row.GetType().GetFields();
401 Row row2 = new Row();
402 System.Reflection.FieldInfo[] array = fields;
403 foreach (System.Reflection.FieldInfo fieldInfo in array)
404 {
405 row2.SetField(fieldInfo.Name, row.GetField<object>(fieldInfo.Name));
406 }
407 row2.id = id;
408 row2.idMold = row.id;
409 row2.alias = row.alias + ele.alias.Remove(0, 3);
410 row2.aliasRef = ele.alias;
411 row2.aliasParent = ele.aliasParent;
412 row2.chance = row.chance * ele.chance / 100;
413 row2.LV = row.LV;
414 row2.OnImportData(EClass.sources.elements);
415 rows.Add(row2);
416 }
417 }
418}
bool IsThrownWeapon
Definition: Card.cs:2207
bool IsEquipmentOrRangedOrAmmo
Definition: Card.cs:2192
bool IsEquipment
Definition: Card.cs:2135
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:586
Definition: EClass.cs:5
static Core core
Definition: EClass.cs:6
static SourceManager sources
Definition: EClass.cs:42
static GameSetting setting
Definition: EClass.cs:34
UD_String_ElementRef elements
Definition: GameSetting.cs:315
static float GetFloat(int id)
Definition: SourceData.cs:726
static string[] GetStringArray(int id)
Definition: SourceData.cs:741
static string GetString(int id)
Definition: SourceData.cs:746
static int GetInt(int id)
Definition: SourceData.cs:711
static int[] GetIntArray(int id)
Definition: SourceData.cs:736
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)
override string[] ImportFields
SourceElement elements
static Sprite Get(string id)
Definition: SpriteSheet.cs:28
Definition: Thing.cs:8