Elin Decompiled Documentation EA 23.356.1 Nightly
Loading...
Searching...
No Matches
SourceFloor.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class SourceFloor : SourceDataInt<SourceFloor.Row>
6{
7 [Serializable]
8 public class Row : TileRow
9 {
10 public string idBiome;
11
12 public string[] reqHarvest;
13
14 public int[] anime;
15
16 public string defBlock;
17
18 public string bridgeBlock;
19
20 public int edge;
21
22 public int autotile;
23
24 public int autotilePriority;
25
26 public float autotileBrightness;
27
28 public bool nonGradient;
29
30 public bool isBeach;
31
32 public bool snowtile;
33
34 public bool ignoreTransition;
35
36 [NonSerialized]
38
39 [NonSerialized]
41
42 [NonSerialized]
44
45 [NonSerialized]
46 public string name_L;
47
48 [NonSerialized]
49 public string detail_L;
50
51 public override bool UseAlias => true;
52
53 public override string GetAlias => alias;
54
55 public override string RecipeID => "f" + id;
56
58
59 public override void OnInit()
60 {
61 ignoreTransition = tag.Contains("noTransition");
62 ignoreSnow = tag.Contains("noSnow");
63 isBeach = tag.Contains("beach");
64 snowtile = tag.Contains("snowtile");
65 if (!idBiome.IsEmpty())
66 {
68 }
69 }
70
71 public override int GetTile(SourceMaterial.Row mat, int dir = 0)
72 {
73 return _tiles[dir % _tiles.Length];
74 }
75 }
76
77 public static readonly IReadOnlyDictionary<string, int> RowMapping = new Dictionary<string, int>
78 {
79 ["id"] = 0,
80 ["alias"] = 1,
81 ["name_JP"] = 2,
82 ["name"] = 3,
83 ["sort"] = 4,
84 ["idBiome"] = 5,
85 ["reqHarvest"] = 6,
86 ["hp"] = 7,
87 ["_tileType"] = 8,
88 ["_idRenderData"] = 9,
89 ["tiles"] = 10,
90 ["anime"] = 11,
91 ["colorMod"] = 12,
92 ["value"] = 13,
93 ["LV"] = 14,
94 ["recipeKey"] = 15,
95 ["factory"] = 16,
96 ["components"] = 17,
97 ["defMat"] = 18,
98 ["defBlock"] = 19,
99 ["bridgeBlock"] = 20,
100 ["category"] = 21,
101 ["edge"] = 22,
102 ["autotile"] = 23,
103 ["autotilePriority"] = 24,
104 ["autotileBrightness"] = 25,
105 ["soundFoot"] = 26,
106 ["tag"] = 27,
107 ["detail_JP"] = 28,
108 ["detail"] = 29
109 };
110
111 public static readonly IReadOnlyDictionary<string, string> TypeMapping = new Dictionary<string, string>
112 {
113 ["id"] = "int",
114 ["alias"] = "string",
115 ["name_JP"] = "string",
116 ["name"] = "string",
117 ["sort"] = "int",
118 ["idBiome"] = "string",
119 ["reqHarvest"] = "string[]",
120 ["hp"] = "int",
121 ["_tileType"] = "string",
122 ["_idRenderData"] = "string",
123 ["tiles"] = "int[]",
124 ["anime"] = "int[]",
125 ["colorMod"] = "int",
126 ["value"] = "int",
127 ["LV"] = "int",
128 ["recipeKey"] = "string[]",
129 ["factory"] = "string[]",
130 ["components"] = "string[]",
131 ["defMat"] = "string",
132 ["defBlock"] = "string",
133 ["bridgeBlock"] = "string",
134 ["category"] = "string",
135 ["edge"] = "int",
136 ["autotile"] = "int",
137 ["autotilePriority"] = "int",
138 ["autotileBrightness"] = "float",
139 ["soundFoot"] = "string",
140 ["tag"] = "string[]",
141 ["detail_JP"] = "string",
142 ["detail"] = "string"
143 };
144
145 public Dictionary<int, Row> _rows = new Dictionary<int, Row>();
146
148
149 [NonSerialized]
151
153
154 public Row this[int id] => Lookup[id];
155
156 public override Row CreateRow()
157 {
158 return new Row
159 {
160 id = SourceData.GetInt(0),
161 alias = SourceData.GetString(1),
162 name_JP = SourceData.GetString(2),
163 name = SourceData.GetString(3),
164 sort = SourceData.GetInt(4),
165 idBiome = SourceData.GetString(5),
166 reqHarvest = SourceData.GetStringArray(6),
167 hp = SourceData.GetInt(7),
168 _tileType = SourceData.GetString(8),
169 _idRenderData = SourceData.GetString(9),
170 tiles = SourceData.GetIntArray(10),
171 anime = SourceData.GetIntArray(11),
172 colorMod = SourceData.GetInt(12),
173 value = SourceData.GetInt(13),
174 LV = SourceData.GetInt(14),
175 recipeKey = SourceData.GetStringArray(15),
176 factory = SourceData.GetStringArray(16),
177 components = SourceData.GetStringArray(17),
178 defMat = SourceData.GetString(18),
179 defBlock = SourceData.GetString(19),
180 bridgeBlock = SourceData.GetString(20),
181 category = SourceData.GetString(21),
182 edge = SourceData.GetInt(22),
183 autotile = SourceData.GetInt(23),
184 autotilePriority = SourceData.GetInt(24),
185 autotileBrightness = SourceData.GetFloat(25),
186 soundFoot = SourceData.GetString(26),
187 tag = SourceData.GetStringArray(27),
188 detail_JP = SourceData.GetString(28),
189 detail = SourceData.GetString(29)
190 };
191 }
192
193 public override Row CreateRowByMapping(IReadOnlyDictionary<string, int> mapping)
194 {
195 return new Row
196 {
197 id = SourceData.GetInt(mapping["id"]),
198 alias = SourceData.GetString(mapping["alias"]),
199 name_JP = SourceData.GetString(mapping["name_JP"]),
200 name = SourceData.GetString(mapping["name"]),
201 sort = SourceData.GetInt(mapping["sort"]),
202 idBiome = SourceData.GetString(mapping["idBiome"]),
203 reqHarvest = SourceData.GetStringArray(mapping["reqHarvest"]),
204 hp = SourceData.GetInt(mapping["hp"]),
205 _tileType = SourceData.GetString(mapping["_tileType"]),
206 _idRenderData = SourceData.GetString(mapping["_idRenderData"]),
207 tiles = SourceData.GetIntArray(mapping["tiles"]),
208 anime = SourceData.GetIntArray(mapping["anime"]),
209 colorMod = SourceData.GetInt(mapping["colorMod"]),
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 defBlock = SourceData.GetString(mapping["defBlock"]),
217 bridgeBlock = SourceData.GetString(mapping["bridgeBlock"]),
218 category = SourceData.GetString(mapping["category"]),
219 edge = SourceData.GetInt(mapping["edge"]),
220 autotile = SourceData.GetInt(mapping["autotile"]),
221 autotilePriority = SourceData.GetInt(mapping["autotilePriority"]),
222 autotileBrightness = SourceData.GetFloat(mapping["autotileBrightness"]),
223 soundFoot = SourceData.GetString(mapping["soundFoot"]),
224 tag = SourceData.GetStringArray(mapping["tag"]),
225 detail_JP = SourceData.GetString(mapping["detail_JP"]),
226 detail = SourceData.GetString(mapping["detail"])
227 };
228 }
229
230 public override void SetRow(Row r)
231 {
232 map[r.id] = r;
233 }
234
235 public override IReadOnlyDictionary<string, int> GetRowMapping()
236 {
237 return RowMapping;
238 }
239
240 public override IReadOnlyDictionary<string, string> GetTypeMapping()
241 {
242 return TypeMapping;
243 }
244
245 public override void BackupPref()
246 {
247 _rows.Clear();
248 foreach (Row row in rows)
249 {
250 _rows[row.id] = row;
251 }
252 }
253
254 public override void RestorePref()
255 {
256 foreach (Row row in rows)
257 {
258 row.pref = _rows.TryGetValue(row.id)?.pref ?? new SourcePref();
259 }
260 }
261
262 public override void ValidatePref()
263 {
264 foreach (Row row in rows)
265 {
266 row.pref.Validate();
267 }
268 }
269
270 public override void OnAfterImportData()
271 {
272 int num = 0;
273 foreach (Row row in rows)
274 {
275 if (row.sort != 0)
276 {
277 num = row.sort;
278 }
279 row.sort = num;
280 num++;
281 }
282 rows.Sort((Row r) => r.id);
283 }
284
285 public override void OnInit()
286 {
287 Lookup.Build();
288 FallbackRenderData = ResourceCache.Load<RenderData>("Scene/Render/Data/floor");
289 Cell.floorSource = this;
290 Cell.floorList = rows;
291 FLOOR.sourceSnow = this[39];
292 FLOOR.sourceSnow2 = this[56];
293 FLOOR.sourceIce = this[38];
294 FLOOR.sourceWood = this[21];
295 foreach (Row row in rows)
296 {
297 row.Init();
298 }
299 }
300
301 public void OnAfterInit()
302 {
304 foreach (Row row2 in rows)
305 {
306 row2._defBlock = Resolve(row2, row2.defBlock);
307 row2._bridgeBlock = Resolve(row2, row2.bridgeBlock);
308 row2.nonGradient = row2.ContainsTag("nonGradient");
309 }
310 SourceBlock.Row Resolve(Row r, string aliasName)
311 {
312 SourceBlock.Row row = blocks.alias.TryGetValue(aliasName);
313 if (row == null)
314 {
315 Debug.LogWarning($"#source floor {r.id}/{r.alias} has invalid block alias '{aliasName}'");
316 row = blocks[0];
317 }
318 return row;
319 }
320 }
321}
UD_Biome dict
Definition: CoreRef.cs:149
Biomes biomes
Definition: CoreRef.cs:344
CoreRef refs
Definition: Core.cs:51
Definition: EClass.cs:6
static Core core
Definition: EClass.cs:7
static SourceManager sources
Definition: EClass.cs:43
string[] tag
Definition: RenderRow.cs:58
int sort
Definition: RenderRow.cs:18
SourcePref pref
Definition: RenderRow.cs:68
bool ContainsTag(string _tag)
Definition: RenderRow.cs:162
int[] _tiles
Definition: RenderRow.cs:12
static float GetFloat(int id)
Definition: SourceData.cs:996
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 ignoreTransition
Definition: SourceFloor.cs:34
float autotileBrightness
Definition: SourceFloor.cs:26
SourceBlock.Row _defBlock
Definition: SourceFloor.cs:37
SourceBlock.Row _bridgeBlock
Definition: SourceFloor.cs:40
override RenderData defaultRenderData
Definition: SourceFloor.cs:57
override string GetAlias
Definition: SourceFloor.cs:53
override bool UseAlias
Definition: SourceFloor.cs:51
BiomeProfile biome
Definition: SourceFloor.cs:43
string bridgeBlock
Definition: SourceFloor.cs:18
override string RecipeID
Definition: SourceFloor.cs:55
string[] reqHarvest
Definition: SourceFloor.cs:12
override int GetTile(SourceMaterial.Row mat, int dir=0)
Definition: SourceFloor.cs:71
override void OnInit()
Definition: SourceFloor.cs:59
static readonly IReadOnlyDictionary< string, string > TypeMapping
Definition: SourceFloor.cs:111
void OnAfterInit()
Definition: SourceFloor.cs:301
override void RestorePref()
Definition: SourceFloor.cs:254
override void ValidatePref()
Definition: SourceFloor.cs:262
override Row CreateRowByMapping(IReadOnlyDictionary< string, int > mapping)
Definition: SourceFloor.cs:193
Dictionary< int, Row > _rows
Definition: SourceFloor.cs:145
TileLookup< Row > _lookup
Definition: SourceFloor.cs:150
override void OnInit()
Definition: SourceFloor.cs:285
override IReadOnlyDictionary< string, string > GetTypeMapping()
Definition: SourceFloor.cs:240
TileLookup< Row > Lookup
Definition: SourceFloor.cs:152
override IReadOnlyDictionary< string, int > GetRowMapping()
Definition: SourceFloor.cs:235
override Row CreateRow()
Definition: SourceFloor.cs:156
static RenderData FallbackRenderData
Definition: SourceFloor.cs:147
override void SetRow(Row r)
Definition: SourceFloor.cs:230
override void BackupPref()
Definition: SourceFloor.cs:245
static readonly IReadOnlyDictionary< string, int > RowMapping
Definition: SourceFloor.cs:77
override void OnAfterImportData()
Definition: SourceFloor.cs:270
SourceBlock blocks
void Validate()
Definition: SourcePref.cs:385
bool ignoreSnow
Definition: TileRow.cs:7
string alias
Definition: TileRow.cs:13
int id
Definition: TileRow.cs:9
void Init()
Definition: TileRow.cs:17