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