Elin Decompiled Documentation EA 23.352.1 Stable
Loading...
Searching...
No Matches
SourceBlock.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class SourceBlock : SourceDataInt<SourceBlock.Row>
6{
7 [Serializable]
8 public class Row : TileRow
9 {
10 public string[] reqHarvest;
11
12 public string idThing;
13
14 public int[] anime;
15
16 public int roof;
17
18 public string autoFloor;
19
20 public bool concrete;
21
22 public bool transparent;
23
24 public int[] transition;
25
26 [NonSerialized]
27 public bool isBlockOrRamp;
28
29 [NonSerialized]
31
32 [NonSerialized]
33 public string name_L;
34
35 [NonSerialized]
36 public string detail_L;
37
38 public override bool UseAlias => true;
39
40 public override string GetAlias => alias;
41
42 public override string RecipeID => "b" + id;
43
45
46 public override void OnInit()
47 {
48 isBlockOrRamp = tileType == TileType.Block || tileType.IsRamp;
49 }
50
51 public override int GetTile(SourceMaterial.Row mat, int dir = 0)
52 {
53 return _tiles[dir % _tiles.Length];
54 }
55
56 public override RenderParam GetRenderParam(SourceMaterial.Row mat, int dir, Point point = null, int bridgeHeight = -1)
57 {
58 RenderParam renderParam = base.GetRenderParam(mat, dir, point, bridgeHeight);
60 {
61 int num = 104025;
62 Row row = ((id == 5) ? base.sources.blocks[mat.defBlock] : this);
63 renderParam.tile = row._tiles[0];
64 renderParam.matColor = ((row.colorMod == 0) ? num : BaseTileMap.GetColorInt(ref mat.matColor, row.colorMod));
65 renderParam.tile2 = row.sourceAutoFloor._tiles[0];
66 renderParam.halfBlockColor = ((row.sourceAutoFloor.colorMod == 0) ? num : BaseTileMap.GetColorInt(ref mat.matColor, row.sourceAutoFloor.colorMod));
67 }
68 return renderParam;
69 }
70 }
71
72 public static readonly IReadOnlyDictionary<string, int> RowMapping = new Dictionary<string, int>
73 {
74 ["id"] = 0,
75 ["alias"] = 1,
76 ["name_JP"] = 2,
77 ["name"] = 3,
78 ["sort"] = 4,
79 ["reqHarvest"] = 5,
80 ["hp"] = 6,
81 ["idThing"] = 7,
82 ["_tileType"] = 8,
83 ["_idRenderData"] = 9,
84 ["tiles"] = 10,
85 ["anime"] = 11,
86 ["snowTile"] = 12,
87 ["colorMod"] = 13,
88 ["colorType"] = 14,
89 ["value"] = 15,
90 ["LV"] = 16,
91 ["recipeKey"] = 17,
92 ["factory"] = 18,
93 ["components"] = 19,
94 ["defMat"] = 20,
95 ["category"] = 21,
96 ["roof"] = 22,
97 ["autoFloor"] = 23,
98 ["concrete"] = 24,
99 ["transparent"] = 25,
100 ["transition"] = 26,
101 ["tag"] = 27,
102 ["soundFoot"] = 28,
103 ["detail_JP"] = 29,
104 ["detail"] = 30
105 };
106
107 public static readonly IReadOnlyDictionary<string, string> TypeMapping = new Dictionary<string, string>
108 {
109 ["id"] = "int",
110 ["alias"] = "string",
111 ["name_JP"] = "string",
112 ["name"] = "string",
113 ["sort"] = "int",
114 ["reqHarvest"] = "string[]",
115 ["hp"] = "int",
116 ["idThing"] = "string",
117 ["_tileType"] = "string",
118 ["_idRenderData"] = "string",
119 ["tiles"] = "int[]",
120 ["anime"] = "int[]",
121 ["snowTile"] = "int",
122 ["colorMod"] = "int",
123 ["colorType"] = "string",
124 ["value"] = "int",
125 ["LV"] = "int",
126 ["recipeKey"] = "string[]",
127 ["factory"] = "string[]",
128 ["components"] = "string[]",
129 ["defMat"] = "string",
130 ["category"] = "string",
131 ["roof"] = "int",
132 ["autoFloor"] = "string",
133 ["concrete"] = "bool",
134 ["transparent"] = "bool",
135 ["transition"] = "int[]",
136 ["tag"] = "string[]",
137 ["soundFoot"] = "string",
138 ["detail_JP"] = "string",
139 ["detail"] = "string"
140 };
141
142 public Dictionary<int, Row> _rows = new Dictionary<int, Row>();
143
145
146 [NonSerialized]
148
150
151 public Row this[int id] => Lookup[id];
152
153 public override Row CreateRow()
154 {
155 return new Row
156 {
157 id = SourceData.GetInt(0),
158 alias = SourceData.GetString(1),
159 name_JP = SourceData.GetString(2),
160 name = SourceData.GetString(3),
161 sort = SourceData.GetInt(4),
162 reqHarvest = SourceData.GetStringArray(5),
163 hp = SourceData.GetInt(6),
164 idThing = SourceData.GetString(7),
165 _tileType = SourceData.GetString(8),
166 _idRenderData = SourceData.GetString(9),
167 tiles = SourceData.GetIntArray(10),
168 anime = SourceData.GetIntArray(11),
169 snowTile = SourceData.GetInt(12),
170 colorMod = SourceData.GetInt(13),
171 colorType = SourceData.GetString(14),
172 value = SourceData.GetInt(15),
173 LV = SourceData.GetInt(16),
174 recipeKey = SourceData.GetStringArray(17),
175 factory = SourceData.GetStringArray(18),
176 components = SourceData.GetStringArray(19),
177 defMat = SourceData.GetString(20),
178 category = SourceData.GetString(21),
179 roof = SourceData.GetInt(22),
180 autoFloor = SourceData.GetString(23),
181 concrete = SourceData.GetBool(24),
182 transparent = SourceData.GetBool(25),
183 transition = SourceData.GetIntArray(26),
184 tag = SourceData.GetStringArray(27),
185 soundFoot = SourceData.GetString(28),
186 detail_JP = SourceData.GetString(29),
187 detail = SourceData.GetString(30)
188 };
189 }
190
191 public override Row CreateRowByMapping(IReadOnlyDictionary<string, int> mapping)
192 {
193 return new Row
194 {
195 id = SourceData.GetInt(mapping["id"]),
196 alias = SourceData.GetString(mapping["alias"]),
197 name_JP = SourceData.GetString(mapping["name_JP"]),
198 name = SourceData.GetString(mapping["name"]),
199 sort = SourceData.GetInt(mapping["sort"]),
200 reqHarvest = SourceData.GetStringArray(mapping["reqHarvest"]),
201 hp = SourceData.GetInt(mapping["hp"]),
202 idThing = SourceData.GetString(mapping["idThing"]),
203 _tileType = SourceData.GetString(mapping["_tileType"]),
204 _idRenderData = SourceData.GetString(mapping["_idRenderData"]),
205 tiles = SourceData.GetIntArray(mapping["tiles"]),
206 anime = SourceData.GetIntArray(mapping["anime"]),
207 snowTile = SourceData.GetInt(mapping["snowTile"]),
208 colorMod = SourceData.GetInt(mapping["colorMod"]),
209 colorType = SourceData.GetString(mapping["colorType"]),
210 value = SourceData.GetInt(mapping["value"]),
211 LV = SourceData.GetInt(mapping["LV"]),
212 recipeKey = SourceData.GetStringArray(mapping["recipeKey"]),
213 factory = SourceData.GetStringArray(mapping["factory"]),
214 components = SourceData.GetStringArray(mapping["components"]),
215 defMat = SourceData.GetString(mapping["defMat"]),
216 category = SourceData.GetString(mapping["category"]),
217 roof = SourceData.GetInt(mapping["roof"]),
218 autoFloor = SourceData.GetString(mapping["autoFloor"]),
219 concrete = SourceData.GetBool(mapping["concrete"]),
220 transparent = SourceData.GetBool(mapping["transparent"]),
221 transition = SourceData.GetIntArray(mapping["transition"]),
222 tag = SourceData.GetStringArray(mapping["tag"]),
223 soundFoot = SourceData.GetString(mapping["soundFoot"]),
224 detail_JP = SourceData.GetString(mapping["detail_JP"]),
225 detail = SourceData.GetString(mapping["detail"])
226 };
227 }
228
229 public override void SetRow(Row r)
230 {
231 map[r.id] = r;
232 }
233
234 public override IReadOnlyDictionary<string, int> GetRowMapping()
235 {
236 return RowMapping;
237 }
238
239 public override IReadOnlyDictionary<string, string> GetTypeMapping()
240 {
241 return TypeMapping;
242 }
243
244 public override void BackupPref()
245 {
246 _rows.Clear();
247 foreach (Row row in rows)
248 {
249 _rows[row.id] = row;
250 }
251 }
252
253 public override void RestorePref()
254 {
255 foreach (Row row in rows)
256 {
257 row.pref = _rows.TryGetValue(row.id)?.pref ?? new SourcePref();
258 }
259 }
260
261 public override void ValidatePref()
262 {
263 foreach (Row row in rows)
264 {
265 row.pref.Validate();
266 }
267 }
268
269 public override void OnAfterImportData()
270 {
271 int num = 0;
272 foreach (Row row in rows)
273 {
274 if (row.sort != 0)
275 {
276 num = row.sort;
277 }
278 row.sort = num;
279 num++;
280 }
281 rows.Sort((Row r) => r.id);
282 }
283
284 public override void OnInit()
285 {
286 Lookup.Build();
287 FallbackRenderData = ResourceCache.Load<RenderData>("Scene/Render/Data/block");
288 Cell.blockSource = this;
289 Cell.blockList = rows;
291 foreach (Row row2 in rows)
292 {
293 row2.Init();
294 SourceFloor.Row row = (row2.autoFloor.IsEmpty() ? null : floors.alias.TryGetValue(row2.autoFloor));
295 if (row == null && !row2.autoFloor.IsEmpty())
296 {
297 Debug.LogWarning($"#source block {row2.id}/{row2.alias} has invalid floor alias '{row2.autoFloor}'");
298 }
299 row2.sourceAutoFloor = row ?? floors[40];
300 }
301 }
302}
static int GetColorInt(ref Color matColor, int p)
Definition: Core.cs:14
SourceManager sources
Definition: Core.cs:33
static new Core Instance
Definition: Core.cs:15
Definition: Point.cs:9
int sort
Definition: RenderRow.cs:18
SourcePref pref
Definition: RenderRow.cs:68
TileType tileType
Definition: RenderRow.cs:77
int[] _tiles
Definition: RenderRow.cs:12
int colorMod
Definition: RenderRow.cs:16
override void OnInit()
Definition: SourceBlock.cs:46
override RenderParam GetRenderParam(SourceMaterial.Row mat, int dir, Point point=null, int bridgeHeight=-1)
Definition: SourceBlock.cs:56
override RenderData defaultRenderData
Definition: SourceBlock.cs:44
override bool UseAlias
Definition: SourceBlock.cs:38
override string GetAlias
Definition: SourceBlock.cs:40
override string RecipeID
Definition: SourceBlock.cs:42
string autoFloor
Definition: SourceBlock.cs:18
string[] reqHarvest
Definition: SourceBlock.cs:10
SourceFloor.Row sourceAutoFloor
Definition: SourceBlock.cs:30
override int GetTile(SourceMaterial.Row mat, int dir=0)
Definition: SourceBlock.cs:51
override void ValidatePref()
Definition: SourceBlock.cs:261
override IReadOnlyDictionary< string, string > GetTypeMapping()
Definition: SourceBlock.cs:239
override void BackupPref()
Definition: SourceBlock.cs:244
override void RestorePref()
Definition: SourceBlock.cs:253
override void OnAfterImportData()
Definition: SourceBlock.cs:269
override void SetRow(Row r)
Definition: SourceBlock.cs:229
override void OnInit()
Definition: SourceBlock.cs:284
override Row CreateRow()
Definition: SourceBlock.cs:153
TileLookup< Row > Lookup
Definition: SourceBlock.cs:149
static RenderData FallbackRenderData
Definition: SourceBlock.cs:144
override Row CreateRowByMapping(IReadOnlyDictionary< string, int > mapping)
Definition: SourceBlock.cs:191
TileLookup< Row > _lookup
Definition: SourceBlock.cs:147
Dictionary< int, Row > _rows
Definition: SourceBlock.cs:142
static readonly IReadOnlyDictionary< string, int > RowMapping
Definition: SourceBlock.cs:72
static readonly IReadOnlyDictionary< string, string > TypeMapping
Definition: SourceBlock.cs:107
override IReadOnlyDictionary< string, int > GetRowMapping()
Definition: SourceBlock.cs:234
static string[] GetStringArray(int id)
Definition: SourceData.cs:1011
static string GetString(int id)
Definition: SourceData.cs:1016
static bool GetBool(int id)
Definition: SourceData.cs:986
static int GetInt(int id)
Definition: SourceData.cs:981
static int[] GetIntArray(int id)
Definition: SourceData.cs:1006
SourceFloor floors
void Validate()
Definition: SourcePref.cs:385
string alias
Definition: TileRow.cs:13
int id
Definition: TileRow.cs:9
void Init()
Definition: TileRow.cs:17
static TileTypeHalfBlock HalfBlock
Definition: TileType.cs:29
bool IsRamp
Definition: TileType.cs:155