Elin Decompiled Documentation EA 23.346 Nightly
Loading...
Searching...
No Matches
SourceObj.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class SourceObj : SourceDataInt<SourceObj.Row>
6{
7 [Serializable]
8 public class Row : TileRow
9 {
10 public string[] _growth;
11
12 public int costSoil;
13
14 public string objType;
15
16 public string[] vals;
17
18 public string[] reqHarvest;
19
20 public string valType;
21
22 public int[] anime;
23
24 public string matCategory;
25
26 public int idRoof;
27
28 [NonSerialized]
29 public bool HasGrowth;
30
31 [NonSerialized]
32 public bool autoTile;
33
35
37
38 [NonSerialized]
39 public string name_L;
40
41 [NonSerialized]
42 public string detail_L;
43
44 public override bool UseAlias => true;
45
46 public override string GetAlias => alias;
47
48 public override string RecipeID => "o" + id;
49
51
52 public override void OnInit()
53 {
54 if (valType.IsEmpty())
55 {
57 }
58 else if (!Enum.TryParse<ObjValType>(valType, ignoreCase: true, out objValType))
59 {
60 Debug.LogWarning($"#source obj {id}/{alias} has unknown val type '{valType}', using 'None'");
62 }
63 autoTile = tag.Contains("autotile");
64 HasGrowth = false;
65 growth = null;
66 if (_growth.IsEmpty())
67 {
68 return;
69 }
70 string arg = "GrowSystem" + _growth[0];
71 growth = ClassCache.Create<GrowSystem>(arg, "Elin");
72 if (growth == null)
73 {
74 Debug.LogWarning($"#source obj {id}/{alias} has unknown growth class '{arg}', growing disabled");
75 return;
76 }
77 try
78 {
79 growth.Init(this);
80 HasGrowth = true;
81 }
82 catch (Exception ex)
83 {
84 Debug.LogWarning($"#source obj {id}/{alias} has invalid _growth '{string.Join(',', _growth)}', growing disabled\n{ex.Message}");
85 growth = null;
86 }
87 }
88 }
89
90 public class Stage
91 {
92 public int step;
93
94 public int[] tiles;
95
96 public string idThing;
97
98 public bool harvest;
99 }
100
101 public static readonly IReadOnlyDictionary<string, int> RowMapping = new Dictionary<string, int>
102 {
103 ["id"] = 0,
104 ["alias"] = 1,
105 ["name_JP"] = 2,
106 ["name"] = 3,
107 ["_growth"] = 4,
108 ["costSoil"] = 5,
109 ["objType"] = 6,
110 ["vals"] = 7,
111 ["tag"] = 8,
112 ["sort"] = 9,
113 ["reqHarvest"] = 10,
114 ["hp"] = 11,
115 ["_tileType"] = 12,
116 ["valType"] = 13,
117 ["_idRenderData"] = 14,
118 ["tiles"] = 15,
119 ["anime"] = 16,
120 ["snowTile"] = 17,
121 ["colorMod"] = 18,
122 ["colorType"] = 19,
123 ["value"] = 20,
124 ["LV"] = 21,
125 ["chance"] = 22,
126 ["recipeKey"] = 23,
127 ["factory"] = 24,
128 ["components"] = 25,
129 ["defMat"] = 26,
130 ["matCategory"] = 27,
131 ["category"] = 28,
132 ["idRoof"] = 29,
133 ["detail_JP"] = 30,
134 ["detail"] = 31
135 };
136
137 public static readonly IReadOnlyDictionary<string, string> TypeMapping = new Dictionary<string, string>
138 {
139 ["id"] = "int",
140 ["alias"] = "string",
141 ["name_JP"] = "string",
142 ["name"] = "string",
143 ["_growth"] = "string[]",
144 ["costSoil"] = "int",
145 ["objType"] = "string",
146 ["vals"] = "string[]",
147 ["tag"] = "string[]",
148 ["sort"] = "int",
149 ["reqHarvest"] = "string[]",
150 ["hp"] = "int",
151 ["_tileType"] = "string",
152 ["valType"] = "string",
153 ["_idRenderData"] = "string",
154 ["tiles"] = "int[]",
155 ["anime"] = "int[]",
156 ["snowTile"] = "int",
157 ["colorMod"] = "int",
158 ["colorType"] = "string",
159 ["value"] = "int",
160 ["LV"] = "int",
161 ["chance"] = "int",
162 ["recipeKey"] = "string[]",
163 ["factory"] = "string[]",
164 ["components"] = "string[]",
165 ["defMat"] = "string",
166 ["matCategory"] = "string",
167 ["category"] = "string",
168 ["idRoof"] = "int",
169 ["detail_JP"] = "string",
170 ["detail"] = "string"
171 };
172
173 public Dictionary<int, Row> _rows = new Dictionary<int, Row>();
174
176
177 [NonSerialized]
179
181
182 public Row this[int id] => Lookup[id];
183
184 public override Row CreateRow()
185 {
186 return new Row
187 {
188 id = SourceData.GetInt(0),
189 alias = SourceData.GetString(1),
190 name_JP = SourceData.GetString(2),
191 name = SourceData.GetString(3),
192 _growth = SourceData.GetStringArray(4),
193 costSoil = SourceData.GetInt(5),
194 objType = SourceData.GetString(6),
195 vals = SourceData.GetStringArray(7),
196 tag = SourceData.GetStringArray(8),
197 sort = SourceData.GetInt(9),
198 reqHarvest = SourceData.GetStringArray(10),
199 hp = SourceData.GetInt(11),
200 _tileType = SourceData.GetString(12),
201 valType = SourceData.GetString(13),
202 _idRenderData = SourceData.GetString(14),
203 tiles = SourceData.GetIntArray(15),
204 anime = SourceData.GetIntArray(16),
205 snowTile = SourceData.GetInt(17),
206 colorMod = SourceData.GetInt(18),
207 colorType = SourceData.GetString(19),
208 value = SourceData.GetInt(20),
209 LV = SourceData.GetInt(21),
210 chance = SourceData.GetInt(22),
211 recipeKey = SourceData.GetStringArray(23),
212 factory = SourceData.GetStringArray(24),
213 components = SourceData.GetStringArray(25),
214 defMat = SourceData.GetString(26),
215 matCategory = SourceData.GetString(27),
216 category = SourceData.GetString(28),
217 idRoof = SourceData.GetInt(29),
218 detail_JP = SourceData.GetString(30),
219 detail = SourceData.GetString(31)
220 };
221 }
222
223 public override Row CreateRowByMapping(IReadOnlyDictionary<string, int> mapping)
224 {
225 return new Row
226 {
227 id = SourceData.GetInt(mapping["id"]),
228 alias = SourceData.GetString(mapping["alias"]),
229 name_JP = SourceData.GetString(mapping["name_JP"]),
230 name = SourceData.GetString(mapping["name"]),
231 _growth = SourceData.GetStringArray(mapping["_growth"]),
232 costSoil = SourceData.GetInt(mapping["costSoil"]),
233 objType = SourceData.GetString(mapping["objType"]),
234 vals = SourceData.GetStringArray(mapping["vals"]),
235 tag = SourceData.GetStringArray(mapping["tag"]),
236 sort = SourceData.GetInt(mapping["sort"]),
237 reqHarvest = SourceData.GetStringArray(mapping["reqHarvest"]),
238 hp = SourceData.GetInt(mapping["hp"]),
239 _tileType = SourceData.GetString(mapping["_tileType"]),
240 valType = SourceData.GetString(mapping["valType"]),
241 _idRenderData = SourceData.GetString(mapping["_idRenderData"]),
242 tiles = SourceData.GetIntArray(mapping["tiles"]),
243 anime = SourceData.GetIntArray(mapping["anime"]),
244 snowTile = SourceData.GetInt(mapping["snowTile"]),
245 colorMod = SourceData.GetInt(mapping["colorMod"]),
246 colorType = SourceData.GetString(mapping["colorType"]),
247 value = SourceData.GetInt(mapping["value"]),
248 LV = SourceData.GetInt(mapping["LV"]),
249 chance = SourceData.GetInt(mapping["chance"]),
250 recipeKey = SourceData.GetStringArray(mapping["recipeKey"]),
251 factory = SourceData.GetStringArray(mapping["factory"]),
252 components = SourceData.GetStringArray(mapping["components"]),
253 defMat = SourceData.GetString(mapping["defMat"]),
254 matCategory = SourceData.GetString(mapping["matCategory"]),
255 category = SourceData.GetString(mapping["category"]),
256 idRoof = SourceData.GetInt(mapping["idRoof"]),
257 detail_JP = SourceData.GetString(mapping["detail_JP"]),
258 detail = SourceData.GetString(mapping["detail"])
259 };
260 }
261
262 public override void SetRow(Row r)
263 {
264 map[r.id] = r;
265 }
266
267 public override IReadOnlyDictionary<string, int> GetRowMapping()
268 {
269 return RowMapping;
270 }
271
272 public override IReadOnlyDictionary<string, string> GetTypeMapping()
273 {
274 return TypeMapping;
275 }
276
277 public override void BackupPref()
278 {
279 _rows.Clear();
280 foreach (Row row in rows)
281 {
282 _rows[row.id] = row;
283 }
284 }
285
286 public override void RestorePref()
287 {
288 foreach (Row row in rows)
289 {
290 row.pref = _rows.TryGetValue(row.id)?.pref ?? new SourcePref();
291 }
292 }
293
294 public override void ValidatePref()
295 {
296 foreach (Row row in rows)
297 {
298 row.pref.Validate();
299 }
300 }
301
302 public string GetName(int id)
303 {
304 return map[id].GetName().ToTitleCase();
305 }
306
307 public override void OnAfterImportData()
308 {
309 int num = 0;
310 foreach (Row row in rows)
311 {
312 if (row.sort != 0)
313 {
314 num = row.sort;
315 }
316 row.sort = num;
317 num++;
318 }
319 rows.Sort((Row r) => r.id);
320 }
321
322 public override void OnInit()
323 {
324 Lookup.Build();
325 FallbackRenderData = ResourceCache.Load<RenderData>("Scene/Render/Data/obj");
326 Cell.objSource = this;
327 Cell.objList = rows;
328 foreach (Row row in rows)
329 {
330 row.Init();
331 }
332 }
333}
ObjValType
Definition: ObjValType.cs:2
void Init(SourceObj.Row _row)
Definition: GrowSystem.cs:154
string[] tag
Definition: RenderRow.cs:58
int sort
Definition: RenderRow.cs:18
SourcePref pref
Definition: RenderRow.cs:68
static string[] GetStringArray(int id)
Definition: SourceData.cs:1011
static string GetString(int id)
Definition: SourceData.cs:1016
static int GetInt(int id)
Definition: SourceData.cs:981
static int[] GetIntArray(int id)
Definition: SourceData.cs:1006
bool HasGrowth
Definition: SourceObj.cs:29
ObjValType objValType
Definition: SourceObj.cs:36
int[] anime
Definition: SourceObj.cs:22
string[] reqHarvest
Definition: SourceObj.cs:18
string detail_L
Definition: SourceObj.cs:42
override bool UseAlias
Definition: SourceObj.cs:44
string valType
Definition: SourceObj.cs:20
string[] _growth
Definition: SourceObj.cs:10
override string RecipeID
Definition: SourceObj.cs:48
override void OnInit()
Definition: SourceObj.cs:52
string objType
Definition: SourceObj.cs:14
GrowSystem growth
Definition: SourceObj.cs:34
string matCategory
Definition: SourceObj.cs:24
override RenderData defaultRenderData
Definition: SourceObj.cs:50
string name_L
Definition: SourceObj.cs:39
bool autoTile
Definition: SourceObj.cs:32
override string GetAlias
Definition: SourceObj.cs:46
string[] vals
Definition: SourceObj.cs:16
string idThing
Definition: SourceObj.cs:96
TileLookup< Row > Lookup
Definition: SourceObj.cs:180
override IReadOnlyDictionary< string, string > GetTypeMapping()
Definition: SourceObj.cs:272
TileLookup< Row > _lookup
Definition: SourceObj.cs:178
override Row CreateRowByMapping(IReadOnlyDictionary< string, int > mapping)
Definition: SourceObj.cs:223
string GetName(int id)
Definition: SourceObj.cs:302
override void OnInit()
Definition: SourceObj.cs:322
override void OnAfterImportData()
Definition: SourceObj.cs:307
override IReadOnlyDictionary< string, int > GetRowMapping()
Definition: SourceObj.cs:267
static readonly IReadOnlyDictionary< string, string > TypeMapping
Definition: SourceObj.cs:137
static readonly IReadOnlyDictionary< string, int > RowMapping
Definition: SourceObj.cs:101
override void RestorePref()
Definition: SourceObj.cs:286
override void SetRow(Row r)
Definition: SourceObj.cs:262
override void BackupPref()
Definition: SourceObj.cs:277
override Row CreateRow()
Definition: SourceObj.cs:184
static RenderData FallbackRenderData
Definition: SourceObj.cs:175
override void ValidatePref()
Definition: SourceObj.cs:294
Dictionary< int, Row > _rows
Definition: SourceObj.cs:173
void Validate()
Definition: SourcePref.cs:385
string alias
Definition: TileRow.cs:13
int id
Definition: TileRow.cs:9
void Init()
Definition: TileRow.cs:17