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