Elin Decompiled Documentation EA 23.102 Nightly
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 roof;
14
15 public string autoFloor;
16
17 public bool concrete;
18
19 public bool transparent;
20
21 public int[] transition;
22
23 [NonSerialized]
24 public bool isBlockOrRamp;
25
26 [NonSerialized]
28
29 [NonSerialized]
30 public string name_L;
31
32 [NonSerialized]
33 public string detail_L;
34
35 public override bool UseAlias => true;
36
37 public override string GetAlias => alias;
38
39 public override string RecipeID => "b" + id;
40
42
43 public override void OnInit()
44 {
45 isBlockOrRamp = tileType == TileType.Block || tileType.IsRamp;
46 }
47
48 public override int GetTile(SourceMaterial.Row mat, int dir = 0)
49 {
50 return _tiles[dir % _tiles.Length];
51 }
52
53 public override RenderParam GetRenderParam(SourceMaterial.Row mat, int dir, Point point = null, int bridgeHeight = -1)
54 {
55 RenderParam renderParam = base.GetRenderParam(mat, dir, point, bridgeHeight);
57 {
58 int num = 104025;
59 Row row = ((id == 5) ? base.sources.blocks.rows[mat.defBlock] : this);
60 renderParam.tile = row._tiles[0];
61 renderParam.matColor = ((row.colorMod == 0) ? num : BaseTileMap.GetColorInt(ref mat.matColor, row.colorMod));
62 renderParam.tile2 = row.sourceAutoFloor._tiles[0];
63 renderParam.halfBlockColor = ((row.sourceAutoFloor.colorMod == 0) ? num : BaseTileMap.GetColorInt(ref mat.matColor, row.sourceAutoFloor.colorMod));
64 }
65 return renderParam;
66 }
67 }
68
69 public Dictionary<int, Row> _rows = new Dictionary<int, Row>();
70
72
73 public override Row CreateRow()
74 {
75 return new Row
76 {
77 id = SourceData.GetInt(0),
78 alias = SourceData.GetString(1),
79 name_JP = SourceData.GetString(2),
80 name = SourceData.GetString(3),
81 sort = SourceData.GetInt(4),
82 reqHarvest = SourceData.GetStringArray(5),
83 hp = SourceData.GetInt(6),
84 idThing = SourceData.GetString(7),
85 _tileType = SourceData.GetString(8),
86 _idRenderData = SourceData.GetString(9),
87 tiles = SourceData.GetIntArray(10),
88 snowTile = SourceData.GetInt(11),
89 colorMod = SourceData.GetInt(12),
90 colorType = SourceData.GetString(13),
91 value = SourceData.GetInt(14),
92 LV = SourceData.GetInt(15),
93 recipeKey = SourceData.GetStringArray(16),
94 factory = SourceData.GetStringArray(17),
95 components = SourceData.GetStringArray(18),
96 defMat = SourceData.GetString(19),
97 category = SourceData.GetString(20),
98 roof = SourceData.GetInt(21),
99 autoFloor = SourceData.GetString(22),
100 concrete = SourceData.GetBool(23),
101 transparent = SourceData.GetBool(24),
102 transition = SourceData.GetIntArray(25),
103 tag = SourceData.GetStringArray(26),
104 soundFoot = SourceData.GetString(27),
105 detail_JP = SourceData.GetString(28),
106 detail = SourceData.GetString(29)
107 };
108 }
109
110 public override void SetRow(Row r)
111 {
112 map[r.id] = r;
113 }
114
115 public override void BackupPref()
116 {
117 _rows.Clear();
118 foreach (Row row in rows)
119 {
120 _rows[row.id] = row;
121 }
122 }
123
124 public override void RestorePref()
125 {
126 foreach (Row row in rows)
127 {
128 row.pref = _rows.TryGetValue(row.id)?.pref ?? new SourcePref();
129 }
130 }
131
132 public override void ValidatePref()
133 {
134 foreach (Row row in rows)
135 {
136 row.pref.Validate();
137 }
138 }
139
140 public override void OnAfterImportData()
141 {
142 int num = 0;
143 foreach (Row row in rows)
144 {
145 if (row.sort != 0)
146 {
147 num = row.sort;
148 }
149 row.sort = num;
150 num++;
151 }
152 rows.Sort((Row a, Row b) => a.id - b.id);
153 }
154
155 public override void OnInit()
156 {
157 FallbackRenderData = ResourceCache.Load<RenderData>("Scene/Render/Data/block");
158 Cell.blockList = rows;
160 foreach (Row row in rows)
161 {
162 row.Init();
163 row.sourceAutoFloor = (row.autoFloor.IsEmpty() ? floors.rows[40] : floors.alias[row.autoFloor]);
164 }
165 }
166}
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:43
override RenderParam GetRenderParam(SourceMaterial.Row mat, int dir, Point point=null, int bridgeHeight=-1)
Definition: SourceBlock.cs:53
override RenderData defaultRenderData
Definition: SourceBlock.cs:41
override bool UseAlias
Definition: SourceBlock.cs:35
override string GetAlias
Definition: SourceBlock.cs:37
override string RecipeID
Definition: SourceBlock.cs:39
string autoFloor
Definition: SourceBlock.cs:15
string[] reqHarvest
Definition: SourceBlock.cs:9
SourceFloor.Row sourceAutoFloor
Definition: SourceBlock.cs:27
override int GetTile(SourceMaterial.Row mat, int dir=0)
Definition: SourceBlock.cs:48
override void ValidatePref()
Definition: SourceBlock.cs:132
override void BackupPref()
Definition: SourceBlock.cs:115
override void RestorePref()
Definition: SourceBlock.cs:124
override void OnAfterImportData()
Definition: SourceBlock.cs:140
override void SetRow(Row r)
Definition: SourceBlock.cs:110
override void OnInit()
Definition: SourceBlock.cs:155
override Row CreateRow()
Definition: SourceBlock.cs:73
static RenderData FallbackRenderData
Definition: SourceBlock.cs:71
Dictionary< int, Row > _rows
Definition: SourceBlock.cs:69
static string[] GetStringArray(int id)
Definition: SourceData.cs:741
static string GetString(int id)
Definition: SourceData.cs:746
static bool GetBool(int id)
Definition: SourceData.cs:716
static int GetInt(int id)
Definition: SourceData.cs:711
static int[] GetIntArray(int id)
Definition: SourceData.cs:736
SourceFloor floors
void Validate()
Definition: SourcePref.cs:333
string alias
Definition: TileRow.cs:12
int id
Definition: TileRow.cs:8
void Init()
Definition: TileRow.cs:16
static TileTypeHalfBlock HalfBlock
Definition: TileType.cs:27
bool IsRamp
Definition: TileType.cs:143