Elin Decompiled Documentation EA 23.197 Nightly Patch 1
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
208 {
209 get
210 {
211 if (!EInput.isShiftDown)
212 {
213 return 10;
214 }
215 return 25;
216 }
217 }
218
219 public virtual bool AltitudeAsDir => false;
220
221 public virtual bool UseMountHeight => false;
222
223 public virtual bool UseHangZFix => false;
224
225 public virtual bool UseLowBlock => false;
226
227 public virtual bool RemoveOnFloorChange => true;
228
229 public virtual bool AllowObj => false;
230
231 public virtual bool AllowMultiInstall => true;
232
233 public virtual bool FreeStyle => false;
234
235 public virtual byte slopeHeight => 0;
236
237 public virtual float MountHeight => 0f;
238
239 public virtual float FloorHeight => 0f;
240
241 public virtual float RepeatSize => 1f;
242
243 public virtual int FloorAltitude => 0;
244
245 public virtual int LiquidLV => 0;
246
247 public virtual bool AllowLitter => true;
248
249 public virtual bool AllowBlood => true;
250
251 public virtual bool ShowPillar => true;
252
253 public virtual bool AlwaysShowShadow => false;
254
255 public virtual bool RepeatBlock => false;
256
257 public virtual bool ForceRpeatBlock => false;
258
259 public virtual bool CanBeHeld => true;
260
261 public virtual bool EditorTile => false;
262
263 public virtual bool IsFloodDoor => false;
264
265 public virtual bool Invisible => false;
266
267 public virtual bool IgnoreBuildRule => false;
268
269 public virtual bool RenderWaterBlock => true;
270
272
274
276
278
279 public bool IsMountBlock => MountHeight > 0f;
280
281 public static void Init()
282 {
283 dict.Clear();
284 FieldInfo[] fields = typeof(TileType).GetFields(BindingFlags.Static | BindingFlags.Public);
285 foreach (FieldInfo fieldInfo in fields)
286 {
287 if (typeof(TileType).IsAssignableFrom(fieldInfo.FieldType))
288 {
289 dict[fieldInfo.Name] = (TileType)fieldInfo.GetValue(null);
290 }
291 }
292 }
293
294 public virtual bool CanRotate(bool buildMode)
295 {
296 return true;
297 }
298
299 public HitResult _HitTest(Point pos, Card target, bool canIgnore = true)
300 {
301 if ((EClass.debug.ignoreBuildRule || IgnoreBuildRule) && canIgnore)
302 {
303 return HitResult.Valid;
304 }
305 if (!CanBuiltOnArea && pos.HasArea)
306 {
307 return HitResult.Invalid;
308 }
309 if (pos.IsSky && !(this is TileTypeFloor))
310 {
311 return HitResult.Invalid;
312 }
313 if (pos.cell.IsTopWater)
314 {
315 if (!CanBuiltOnWater)
316 {
317 return HitResult.Invalid;
318 }
319 }
320 else if (!CanBuiltOnFloor)
321 {
322 return HitResult.Invalid;
323 }
324 if (!CanBuiltOnBridge && pos.cell._bridge != 0)
325 {
326 return HitResult.Invalid;
327 }
328 if (target != null)
329 {
330 if (target.sourceCard.multisize && (pos.Installed != null || pos.cell.blocked || (pos.HasChara && pos.FirstChara.IsHostile(EClass.pc))))
331 {
332 return HitResult.Invalid;
333 }
334 if (pos.Installed != null && pos.Installed != target)
335 {
336 TileType tileType = pos.Installed.TileType;
337 TileType tileType2 = target.TileType;
338 if (!tileType.AllowMultiInstall || !tileType2.AllowMultiInstall)
339 {
340 return HitResult.Invalid;
341 }
342 }
343 if (!target.trait.CanBuiltAt(pos))
344 {
345 return HitResult.Invalid;
346 }
347 }
348 else if (pos.Installed != null && !CanBuiltOnThing && !pos.cell.hasDoor)
349 {
350 return HitResult.Invalid;
351 }
352 if (pos.HasBlock)
353 {
354 if (!CanBuiltOnBlock && pos.sourceBlock.tileType.IsOccupyCell && !EClass.core.config.test.allowBlockOnItem)
355 {
356 return HitResult.Invalid;
357 }
358 if (IsDoor && !pos.HasWallOrFence)
359 {
360 }
361 }
362 else if (IsDoor)
363 {
364 return HitResult.Invalid;
365 }
366 return HitTest(pos);
367 }
368
369 protected virtual HitResult HitTest(Point pos)
370 {
371 if (pos.HasObj)
372 {
373 return HitResult.Warning;
374 }
375 return HitResult.Valid;
376 }
377
378 public virtual int GetDesiredDir(Point p, int d)
379 {
380 return -1;
381 }
382
383 public virtual void GetMountHeight(ref Vector3 v, Point p, int d, Card target = null)
384 {
385 v += EClass.screen.tileMap.altitudeFix * target.altitude;
386 }
387
388 public Vector3 GetRampFix(int dir, SourcePref pref = null)
389 {
390 int num = (int)Ramp * 2 - 2 + ((dir > 1) ? 1 : 0);
391 Vector3 vector = EClass.setting.render.rampFix[num];
392 if (pref != null && Ramp == RampType.Flat)
393 {
394 vector.y += pref.height;
395 }
396 return new Vector3(vector.x * (float)((dir % 2 == 0) ? 1 : (-1)), vector.y, vector.z);
397 }
398}
BlockRenderMode
HitResult
Definition: HitResult.cs:2
Definition: Card.cs:11
TileType TileType
Definition: Card.cs:2097
Trait trait
Definition: Card.cs:51
virtual CardRow sourceCard
Definition: Card.cs:2093
byte _bridge
Definition: Cell.cs:46
bool IsTopWater
Definition: Cell.cs:700
bool hasDoor
Definition: Cell.cs:258
bool IsHostile()
Definition: Chara.cs:6272
bool allowBlockOnItem
Definition: CoreConfig.cs:551
bool ignoreBuildRule
Definition: CoreDebug.cs:185
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
Definition: EInput.cs:8
static bool isShiftDown
Definition: EInput.cs:261
RenderSetting render
Definition: GameSetting.cs:301
Definition: Point.cs:9
Thing Installed
Definition: Point.cs:315
SourceBlock.Row sourceBlock
Definition: Point.cs:63
bool IsSky
Definition: Point.cs:212
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:273
virtual bool AllowLitter
Definition: TileType.cs:247
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:223
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:233
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:263
virtual void GetMountHeight(ref Vector3 v, Point p, int d, Card target=null)
Definition: TileType.cs:383
virtual bool CastAmbientShadow
Definition: TileType.cs:185
virtual bool IsDoor
Definition: TileType.cs:197
virtual bool AllowMultiInstall
Definition: TileType.cs:231
virtual bool Invisible
Definition: TileType.cs:265
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:275
RampType
Definition: TileType.cs:8
virtual int MaxAltitude
Definition: TileType.cs:208
static TileTypeScaffold Scaffold
Definition: TileType.cs:37
static TileTypeBridgeDeco BridgeDeco
Definition: TileType.cs:67
static void Init()
Definition: TileType.cs:281
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:241
static TileTypeObjFloat ObjFloat
Definition: TileType.cs:81
virtual int LiquidLV
Definition: TileType.cs:245
virtual bool CanBuiltOnFloor
Definition: TileType.cs:199
static TileTypeSlope Slope
Definition: TileType.cs:25
virtual bool ShowPillar
Definition: TileType.cs:251
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:243
virtual RampType Ramp
Definition: TileType.cs:149
virtual bool AlwaysShowShadow
Definition: TileType.cs:253
virtual bool IsLadder
Definition: TileType.cs:151
virtual BaseTileSelector.SelectType SelectType
Definition: TileType.cs:271
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:279
static TileTypeSlopeFlat SlopeFlat
Definition: TileType.cs:27
virtual bool AltitudeAsDir
Definition: TileType.cs:219
static TileTypeObjBig ObjBig
Definition: TileType.cs:75
virtual HitResult HitTest(Point pos)
Definition: TileType.cs:369
virtual bool UseLowBlock
Definition: TileType.cs:225
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:261
virtual bool ForceRpeatBlock
Definition: TileType.cs:257
virtual bool IsSkipFloor
Definition: TileType.cs:131
static Dictionary< string, TileType > dict
Definition: TileType.cs:121
virtual bool IgnoreBuildRule
Definition: TileType.cs:267
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:378
virtual bool RemoveOnFloorChange
Definition: TileType.cs:227
static TileTypeTent Tent
Definition: TileType.cs:89
virtual bool UseMountHeight
Definition: TileType.cs:221
static TileTypeSeed Seed
Definition: TileType.cs:91
virtual bool CanRotate(bool buildMode)
Definition: TileType.cs:294
virtual bool IsFence
Definition: TileType.cs:171
virtual int MinAltitude
Definition: TileType.cs:205
virtual BlockRenderMode blockRenderMode
Definition: TileType.cs:277
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:239
Vector3 GetRampFix(int dir, SourcePref pref=null)
Definition: TileType.cs:388
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:259
virtual bool RenderWaterBlock
Definition: TileType.cs:269
virtual byte slopeHeight
Definition: TileType.cs:235
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:249
HitResult _HitTest(Point pos, Card target, bool canIgnore=true)
Definition: TileType.cs:299
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:255
virtual float MountHeight
Definition: TileType.cs:237
virtual bool AllowObj
Definition: TileType.cs:229
virtual bool CanBuiltAt(Point p)
Definition: Trait.cs:720
Definition: Window.cs:13
Definition: Wall.cs:2