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