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