Elin Decompiled Documentation EA 23.153 Nightly
Loading...
Searching...
No Matches
TileType.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using System.Reflection;
3using UnityEngine;
4
5public class TileType : EClass
6{
7 public enum RampType
8 {
9 None,
10 Full,
11 Half,
12 Flat
13 }
14
15 public static TileTypeNone None = new TileTypeNone();
16
18
19 public static TileTypeBlock Block = new TileTypeBlock();
20
22
24
25 public static TileTypeSlope Slope = new TileTypeSlope();
26
28
30
31 public static TileTypeStairs Stairs = new TileTypeStairs();
32
34
36
38
39 public static TileTypeLadder Ladder = new TileTypeLadder();
40
41 public static TileTypePillar Pillar = new TileTypePillar();
42
44
45 public static TileTypeWall Wall = new TileTypeWall();
46
48
50
51 public static TileTypeFence Fence = new TileTypeFence();
52
54
55 public static TileTypeFloor Floor = new TileTypeFloor();
56
58
59 public static TileTypeWater FloorWater = new TileTypeWater();
60
62
64
65 public static TileTypeBridge Bridge = new TileTypeBridge();
66
68
70
71 public static TileTypeSky Sky = new TileTypeSky();
72
73 public static TileTypeObj Obj = new TileTypeObj();
74
75 public static TileTypeObjBig ObjBig = new TileTypeObjBig();
76
78
80
82
84
86
88
89 public static TileTypeTent Tent = new TileTypeTent();
90
91 public static TileTypeSeed Seed = new TileTypeSeed();
92
93 public static TileTypeTree Tree = new TileTypeTree();
94
95 public static TileTypeDoor Door = new TileTypeDoor();
96
98
100
101 public static TileTypeVine Vine = new TileTypeVine();
102
104
105 public static TileTypePaint Paint = new TileTypePaint();
106
107 public static TileTypeWindow Window = new TileTypeWindow();
108
109 public static TileTypeRoof Roof = new TileTypeRoof();
110
111 public static TileTypeRoad Road = new TileTypeRoad();
112
113 public static TileTypeChasm Chasm = new TileTypeChasm();
114
115 public static TileTypeBoat Boat = new TileTypeBoat();
116
117 public static TileTypeLiquid Liquid = new TileTypeLiquid();
118
119 public static TileTypeMarker Marker = new TileTypeMarker();
120
121 public static Dictionary<string, TileType> dict = new Dictionary<string, TileType>();
122
123 public virtual string LangPlaceType => "place_Obj";
124
125 public virtual bool CanStack => false;
126
127 public virtual bool ChangeBlockDir => false;
128
129 public virtual bool IsSkipLowBlock => false;
130
131 public virtual bool IsSkipFloor => false;
132
133 public virtual bool IsUseBlockDir => false;
134
135 public virtual bool IsFloorOrBridge => false;
136
137 public virtual bool IsWall => false;
138
139 public virtual bool IsFloor => false;
140
141 public virtual bool IsBridge => false;
142
143 public virtual bool IsWallOrFence => false;
144
145 public virtual bool IsWallOrFullBlock => false;
146
147 public bool IsRamp => Ramp != RampType.None;
148
149 public virtual RampType Ramp => RampType.None;
150
151 public virtual bool IsLadder => false;
152
153 public virtual bool IsBlockPass => false;
154
155 public virtual bool IsOccupyCell => true;
156
157 public virtual bool IsBlockSight => false;
158
159 public virtual bool IsOpenSight => false;
160
161 public virtual bool IsBlockLiquid => false;
162
163 public virtual bool IsWater => false;
164
165 public virtual bool IsDeepWater => false;
166
167 public virtual bool IsBlockMount => false;
168
169 public virtual bool IsFullBlock => false;
170
171 public virtual bool IsFence => false;
172
173 public virtual bool IsFloodBlock => false;
174
175 public virtual bool IsPlayFootSound => false;
176
177 public virtual bool CanSpawnOnWater => false;
178
179 public virtual bool IsWaterTop => false;
180
181 public virtual bool CastShadowSelf => false;
182
183 public virtual bool CastShadowBack => false;
184
185 public virtual bool CastAmbientShadow => false;
186
187 public virtual bool CastAmbientShadowBack => false;
188
189 public virtual bool CanBuiltOnArea => true;
190
191 public virtual bool CanBuiltOnWater => true;
192
193 public virtual bool CanBuiltOnThing => false;
194
195 public virtual bool CanBuiltOnBlock => false;
196
197 public virtual bool IsDoor => false;
198
199 public virtual bool CanBuiltOnFloor => true;
200
201 public virtual bool CanBuiltOnBridge => true;
202
203 public virtual bool CanInstaComplete => false;
204
205 public virtual int MinAltitude => 1;
206
207 public virtual int MaxAltitude => 10;
208
209 public virtual bool AltitudeAsDir => false;
210
211 public virtual bool UseMountHeight => false;
212
213 public virtual bool UseHangZFix => false;
214
215 public virtual bool UseLowBlock => false;
216
217 public virtual bool RemoveOnFloorChange => true;
218
219 public virtual bool AllowObj => false;
220
221 public virtual bool AllowMultiInstall => true;
222
223 public virtual bool FreeStyle => false;
224
225 public virtual byte slopeHeight => 0;
226
227 public virtual float MountHeight => 0f;
228
229 public virtual float FloorHeight => 0f;
230
231 public virtual float RepeatSize => 1f;
232
233 public virtual int FloorAltitude => 0;
234
235 public virtual int LiquidLV => 0;
236
237 public virtual bool AllowLitter => true;
238
239 public virtual bool AllowBlood => true;
240
241 public virtual bool ShowPillar => true;
242
243 public virtual bool AlwaysShowShadow => false;
244
245 public virtual bool RepeatBlock => false;
246
247 public virtual bool ForceRpeatBlock => false;
248
249 public virtual bool CanBeHeld => true;
250
251 public virtual bool EditorTile => false;
252
253 public virtual bool IsFloodDoor => false;
254
255 public virtual bool Invisible => false;
256
257 public virtual bool IgnoreBuildRule => false;
258
259 public virtual bool RenderWaterBlock => true;
260
262
264
266
268
269 public bool IsMountBlock => MountHeight > 0f;
270
271 public static void Init()
272 {
273 dict.Clear();
274 FieldInfo[] fields = typeof(TileType).GetFields(BindingFlags.Static | BindingFlags.Public);
275 foreach (FieldInfo fieldInfo in fields)
276 {
277 if (typeof(TileType).IsAssignableFrom(fieldInfo.FieldType))
278 {
279 dict[fieldInfo.Name] = (TileType)fieldInfo.GetValue(null);
280 }
281 }
282 }
283
284 public virtual bool CanRotate(bool buildMode)
285 {
286 return true;
287 }
288
289 public HitResult _HitTest(Point pos, Card target, bool canIgnore = true)
290 {
291 if ((EClass.debug.ignoreBuildRule || IgnoreBuildRule) && canIgnore)
292 {
293 return HitResult.Valid;
294 }
295 if (!CanBuiltOnArea && pos.HasArea)
296 {
297 return HitResult.Invalid;
298 }
299 if (pos.cell.IsTopWater)
300 {
301 if (!CanBuiltOnWater)
302 {
303 return HitResult.Invalid;
304 }
305 }
306 else if (!CanBuiltOnFloor)
307 {
308 return HitResult.Invalid;
309 }
310 if (!CanBuiltOnBridge && pos.cell._bridge != 0)
311 {
312 return HitResult.Invalid;
313 }
314 if (target != null)
315 {
316 if (target.sourceCard.multisize && (pos.Installed != null || pos.cell.blocked || (pos.HasChara && pos.FirstChara.IsHostile(EClass.pc))))
317 {
318 return HitResult.Invalid;
319 }
320 if (pos.Installed != null && pos.Installed != target)
321 {
322 TileType tileType = pos.Installed.TileType;
323 TileType tileType2 = target.TileType;
324 if (!tileType.AllowMultiInstall || !tileType2.AllowMultiInstall)
325 {
326 return HitResult.Invalid;
327 }
328 }
329 if (!target.trait.CanBuiltAt(pos))
330 {
331 return HitResult.Invalid;
332 }
333 }
334 else if (pos.Installed != null && !CanBuiltOnThing && !pos.cell.hasDoor)
335 {
336 return HitResult.Invalid;
337 }
338 if (pos.HasBlock)
339 {
340 if (!CanBuiltOnBlock && pos.sourceBlock.tileType.IsOccupyCell && !EClass.core.config.test.allowBlockOnItem)
341 {
342 return HitResult.Invalid;
343 }
344 if (IsDoor && !pos.HasWallOrFence)
345 {
346 }
347 }
348 else if (IsDoor)
349 {
350 return HitResult.Invalid;
351 }
352 return HitTest(pos);
353 }
354
355 protected virtual HitResult HitTest(Point pos)
356 {
357 if (pos.HasObj)
358 {
359 return HitResult.Warning;
360 }
361 return HitResult.Valid;
362 }
363
364 public virtual int GetDesiredDir(Point p, int d)
365 {
366 return -1;
367 }
368
369 public virtual void GetMountHeight(ref Vector3 v, Point p, int d, Card target = null)
370 {
371 v += EClass.screen.tileMap.altitudeFix * target.altitude;
372 }
373
374 public Vector3 GetRampFix(int dir, SourcePref pref = null)
375 {
376 int num = (int)Ramp * 2 - 2 + ((dir > 1) ? 1 : 0);
377 Vector3 vector = EClass.setting.render.rampFix[num];
378 if (pref != null && Ramp == RampType.Flat)
379 {
380 vector.y += pref.height;
381 }
382 return new Vector3(vector.x * (float)((dir % 2 == 0) ? 1 : (-1)), vector.y, vector.z);
383 }
384}
BlockRenderMode
HitResult
Definition: HitResult.cs:2
Definition: Card.cs:11
TileType TileType
Definition: Card.cs:2071
Trait trait
Definition: Card.cs:49
virtual CardRow sourceCard
Definition: Card.cs:2067
byte _bridge
Definition: Cell.cs:46
bool IsTopWater
Definition: Cell.cs:700
bool hasDoor
Definition: Cell.cs:258
bool IsHostile()
Definition: Chara.cs:6034
bool allowBlockOnItem
Definition: CoreConfig.cs:549
bool ignoreBuildRule
Definition: CoreDebug.cs:184
CoreConfig config
Definition: Core.cs:70
Definition: EClass.cs:5
static Core core
Definition: EClass.cs:6
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
static GameSetting setting
Definition: EClass.cs:34
RenderSetting render
Definition: GameSetting.cs:301
Definition: Point.cs:9
Thing Installed
Definition: Point.cs:315
SourceBlock.Row sourceBlock
Definition: Point.cs:63
bool HasWallOrFence
Definition: Point.cs:155
bool HasArea
Definition: Point.cs:223
bool HasObj
Definition: Point.cs:137
Chara FirstChara
Definition: Point.cs:276
bool HasBlock
Definition: Point.cs:141
Cell cell
Definition: Point.cs:51
bool HasChara
Definition: Point.cs:226
bool multisize
Definition: RenderRow.cs:64
virtual BaseTileSelector.BoxType BoxType
Definition: TileType.cs:263
virtual bool AllowLitter
Definition: TileType.cs:237
virtual bool IsUseBlockDir
Definition: TileType.cs:133
static TileTypeWallOpen WallOpen
Definition: TileType.cs:47
static TileTypeTree Tree
Definition: TileType.cs:93
static TileTypeLadder Ladder
Definition: TileType.cs:39
virtual bool CanBuiltOnArea
Definition: TileType.cs:189
virtual bool UseHangZFix
Definition: TileType.cs:213
static TileTypeBridge Bridge
Definition: TileType.cs:65
static TileTypeWater FloorWater
Definition: TileType.cs:59
static TileTypeObjWater ObjWater
Definition: TileType.cs:83
static TileTypeSky Sky
Definition: TileType.cs:71
virtual bool IsFloor
Definition: TileType.cs:139
virtual bool FreeStyle
Definition: TileType.cs:223
static TileTypePillar Pillar
Definition: TileType.cs:41
static TileTypeHalfBlock HalfBlock
Definition: TileType.cs:29
virtual bool IsWallOrFullBlock
Definition: TileType.cs:145
static TileTypeInvisibleBlock InvisiBlock
Definition: TileType.cs:17
static TileTypeRoad Road
Definition: TileType.cs:111
virtual bool CanStack
Definition: TileType.cs:125
virtual bool IsFloodDoor
Definition: TileType.cs:253
virtual void GetMountHeight(ref Vector3 v, Point p, int d, Card target=null)
Definition: TileType.cs:369
virtual bool CastAmbientShadow
Definition: TileType.cs:185
virtual bool IsDoor
Definition: TileType.cs:197
virtual bool AllowMultiInstall
Definition: TileType.cs:221
virtual bool Invisible
Definition: TileType.cs:255
static TileTypeWaterDeep FloorWaterDeep
Definition: TileType.cs:63
static TileTypeLiquid Liquid
Definition: TileType.cs:117
static TileTypeBridgePillar BridgePillar
Definition: TileType.cs:69
static TileTypeIllumination Illumination
Definition: TileType.cs:87
virtual bool CastAmbientShadowBack
Definition: TileType.cs:187
static TileTypeFloor Floor
Definition: TileType.cs:55
static TileTypeWallHang WallHang
Definition: TileType.cs:97
virtual BaseTileSelector.HitType HitType
Definition: TileType.cs:265
RampType
Definition: TileType.cs:8
virtual int MaxAltitude
Definition: TileType.cs:207
static TileTypeScaffold Scaffold
Definition: TileType.cs:37
static TileTypeBridgeDeco BridgeDeco
Definition: TileType.cs:67
static void Init()
Definition: TileType.cs:271
virtual bool CanBuiltOnBlock
Definition: TileType.cs:195
static TileTypeWaterShallow FloorWaterShallow
Definition: TileType.cs:61
static TileTypeWallHangSign WallHangSign
Definition: TileType.cs:99
static TileTypeMarker Marker
Definition: TileType.cs:119
virtual float RepeatSize
Definition: TileType.cs:231
static TileTypeObjFloat ObjFloat
Definition: TileType.cs:81
virtual int LiquidLV
Definition: TileType.cs:235
virtual bool CanBuiltOnFloor
Definition: TileType.cs:199
static TileTypeSlope Slope
Definition: TileType.cs:25
virtual bool ShowPillar
Definition: TileType.cs:241
static TileTypeStairs StairsHalf
Definition: TileType.cs:33
bool IsRamp
Definition: TileType.cs:147
static TileTypeBlockShip BlockShip
Definition: TileType.cs:23
virtual int FloorAltitude
Definition: TileType.cs:233
virtual RampType Ramp
Definition: TileType.cs:149
virtual bool AlwaysShowShadow
Definition: TileType.cs:243
virtual bool IsLadder
Definition: TileType.cs:151
virtual BaseTileSelector.SelectType SelectType
Definition: TileType.cs:261
static TileTypeChasm Chasm
Definition: TileType.cs:113
virtual bool IsWallOrFence
Definition: TileType.cs:143
static TileTypeObj Obj
Definition: TileType.cs:73
virtual bool IsBlockSight
Definition: TileType.cs:157
bool IsMountBlock
Definition: TileType.cs:269
static TileTypeSlopeFlat SlopeFlat
Definition: TileType.cs:27
virtual bool AltitudeAsDir
Definition: TileType.cs:209
static TileTypeObjBig ObjBig
Definition: TileType.cs:75
virtual HitResult HitTest(Point pos)
Definition: TileType.cs:355
virtual bool UseLowBlock
Definition: TileType.cs:215
virtual bool IsDeepWater
Definition: TileType.cs:165
virtual bool IsBlockLiquid
Definition: TileType.cs:161
virtual bool IsFullBlock
Definition: TileType.cs:169
virtual bool IsFloorOrBridge
Definition: TileType.cs:135
static TileTypeFenceClosed FenceClosed
Definition: TileType.cs:53
virtual string LangPlaceType
Definition: TileType.cs:123
static TileTypeWaterfall Waterfall
Definition: TileType.cs:43
virtual bool IsWall
Definition: TileType.cs:137
virtual bool IsOpenSight
Definition: TileType.cs:159
virtual bool CastShadowSelf
Definition: TileType.cs:181
virtual bool EditorTile
Definition: TileType.cs:251
virtual bool ForceRpeatBlock
Definition: TileType.cs:247
virtual bool IsSkipFloor
Definition: TileType.cs:131
static Dictionary< string, TileType > dict
Definition: TileType.cs:121
virtual bool IgnoreBuildRule
Definition: TileType.cs:257
virtual bool IsSkipLowBlock
Definition: TileType.cs:129
static TileTypeRoof Roof
Definition: TileType.cs:109
static TileTypeBoat Boat
Definition: TileType.cs:115
static TileTypeObjWaterTop ObjWaterTop
Definition: TileType.cs:85
virtual int GetDesiredDir(Point p, int d)
Definition: TileType.cs:364
virtual bool RemoveOnFloorChange
Definition: TileType.cs:217
static TileTypeTent Tent
Definition: TileType.cs:89
virtual bool UseMountHeight
Definition: TileType.cs:211
static TileTypeSeed Seed
Definition: TileType.cs:91
virtual bool CanRotate(bool buildMode)
Definition: TileType.cs:284
virtual bool IsFence
Definition: TileType.cs:171
virtual int MinAltitude
Definition: TileType.cs:205
virtual BlockRenderMode blockRenderMode
Definition: TileType.cs:267
virtual bool CastShadowBack
Definition: TileType.cs:183
static TileTypePaint Paint
Definition: TileType.cs:105
virtual bool IsPlayFootSound
Definition: TileType.cs:175
static TileTypeFloorScaffold FloorScaffold
Definition: TileType.cs:57
virtual float FloorHeight
Definition: TileType.cs:229
Vector3 GetRampFix(int dir, SourcePref pref=null)
Definition: TileType.cs:374
static TileTypeNone None
Definition: TileType.cs:15
virtual bool ChangeBlockDir
Definition: TileType.cs:127
virtual bool CanBuiltOnWater
Definition: TileType.cs:191
static TileTypeDoor Door
Definition: TileType.cs:95
virtual bool CanBuiltOnBridge
Definition: TileType.cs:201
virtual bool CanBeHeld
Definition: TileType.cs:249
virtual bool RenderWaterBlock
Definition: TileType.cs:259
virtual byte slopeHeight
Definition: TileType.cs:225
virtual bool CanSpawnOnWater
Definition: TileType.cs:177
virtual bool IsBlockPass
Definition: TileType.cs:153
static TileTypeObjCeil ObjCeil
Definition: TileType.cs:79
static TileTypeBlockOpen BlockOpen
Definition: TileType.cs:21
virtual bool IsWaterTop
Definition: TileType.cs:179
virtual bool IsFloodBlock
Definition: TileType.cs:173
static TileTypeObjHuge ObjHuge
Definition: TileType.cs:77
static TileTypeRooftop Rooftop
Definition: TileType.cs:35
virtual bool AllowBlood
Definition: TileType.cs:239
HitResult _HitTest(Point pos, Card target, bool canIgnore=true)
Definition: TileType.cs:289
virtual bool IsOccupyCell
Definition: TileType.cs:155
static TileTypeFence Fence
Definition: TileType.cs:51
static TileTypeVine Vine
Definition: TileType.cs:101
virtual bool CanInstaComplete
Definition: TileType.cs:203
virtual bool IsBlockMount
Definition: TileType.cs:167
virtual bool CanBuiltOnThing
Definition: TileType.cs:193
static TileTypeStairs Stairs
Definition: TileType.cs:31
virtual bool IsBridge
Definition: TileType.cs:141
virtual bool IsWater
Definition: TileType.cs:163
static TileTypeWallFake WallFake
Definition: TileType.cs:49
static TileTypeBlock Block
Definition: TileType.cs:19
static TileTypeWallMount WallMount
Definition: TileType.cs:103
virtual bool RepeatBlock
Definition: TileType.cs:245
virtual float MountHeight
Definition: TileType.cs:227
virtual bool AllowObj
Definition: TileType.cs:219
virtual bool CanBuiltAt(Point p)
Definition: Trait.cs:713
Definition: Window.cs:13
Definition: Wall.cs:2