10 public static void Init()
13 foreach (FieldInfo fieldInfo
in typeof(
TileType).GetFields(BindingFlags.Static | BindingFlags.Public))
15 if (typeof(
TileType).IsAssignableFrom(fieldInfo.FieldType))
24 public virtual string LangPlaceType
34 public virtual bool CanStack
43 public virtual bool CanRotate(
bool buildMode)
50 public virtual bool ChangeBlockDir
60 public virtual bool IsSkipLowBlock
70 public virtual bool IsSkipFloor
80 public virtual bool IsUseBlockDir
90 public virtual bool IsFloorOrBridge
100 public virtual bool IsWall
110 public virtual bool IsFloor
120 public virtual bool IsBridge
130 public virtual bool IsWallOrFence
140 public virtual bool IsWallOrFullBlock
154 return this.Ramp >
TileType.RampType.None;
160 public virtual TileType.RampType Ramp
170 public virtual bool IsLadder
180 public virtual bool IsBlockPass
190 public virtual bool IsOccupyCell
200 public virtual bool IsBlockSight
210 public virtual bool IsOpenSight
220 public virtual bool IsBlockLiquid
230 public virtual bool IsWater
240 public virtual bool IsDeepWater
250 public virtual bool IsBlockMount
260 public virtual bool IsFullBlock
270 public virtual bool IsFence
280 public virtual bool IsFloodBlock
290 public virtual bool IsPlayFootSound
300 public virtual bool CanSpawnOnWater
310 public virtual bool IsWaterTop
320 public virtual bool CastShadowSelf
330 public virtual bool CastShadowBack
340 public virtual bool CastAmbientShadow
350 public virtual bool CastAmbientShadowBack
360 public virtual bool CanBuiltOnArea
370 public virtual bool CanBuiltOnWater
380 public virtual bool CanBuiltOnThing
390 public virtual bool CanBuiltOnBlock
400 public virtual bool IsDoor
410 public virtual bool CanBuiltOnFloor
420 public virtual bool CanBuiltOnBridge
430 public virtual bool CanInstaComplete
440 public virtual int MinAltitude
450 public virtual int MaxAltitude
460 public virtual bool AltitudeAsDir
470 public virtual bool UseLowWallTiles
480 public virtual bool UseMountHeight
490 public virtual bool UseHangZFix
500 public virtual bool UseLowBlock
510 public virtual bool RemoveOnFloorChange
520 public virtual bool AllowObj
530 public virtual bool AllowMultiInstall
540 public virtual bool FreeStyle
550 public virtual byte slopeHeight
560 public virtual float MountHeight
570 public virtual float FloorHeight
580 public virtual float RepeatSize
590 public virtual int FloorAltitude
600 public virtual int LiquidLV
610 public virtual bool AllowLitter
620 public virtual bool AllowBlood
630 public virtual bool ShowPillar
640 public virtual bool AlwaysShowShadow
650 public virtual bool RepeatBlock
660 public virtual bool ForceRpeatBlock
670 public virtual bool CanBeHeld
680 public virtual bool EditorTile
690 public virtual bool IsFloodDoor
700 public virtual bool Invisible
710 public virtual bool IgnoreBuildRule
720 public virtual bool RenderWaterBlock
730 public virtual BaseTileSelector.SelectType SelectType
740 public virtual BaseTileSelector.BoxType BoxType
750 public virtual BaseTileSelector.HitType HitType
760 public virtual BlockRenderMode blockRenderMode
764 return BlockRenderMode.Default;
770 public bool IsMountBlock
774 return this.MountHeight > 0f;
779 public HitResult _HitTest(
Point pos,
Card target,
bool canIgnore =
true)
781 if ((
EClass.debug.ignoreBuildRule ||
this.IgnoreBuildRule) && canIgnore)
783 return HitResult.Valid;
785 if (!this.CanBuiltOnArea && pos.HasArea)
787 return HitResult.Invalid;
789 if (pos.cell.IsTopWater)
791 if (!this.CanBuiltOnWater)
793 return HitResult.Invalid;
796 else if (!this.CanBuiltOnFloor)
798 return HitResult.Invalid;
800 if (!this.CanBuiltOnBridge && pos.cell._bridge != 0)
802 return HitResult.Invalid;
806 if (target.sourceCard.multisize && (pos.Installed !=
null || pos.cell.blocked || (pos.HasChara && pos.FirstChara.IsHostile(
EClass.pc))))
808 return HitResult.Invalid;
810 if (pos.Installed !=
null && pos.Installed != target)
812 TileType tileType = pos.Installed.TileType;
813 TileType tileType2 = target.TileType;
814 if (!tileType.AllowMultiInstall || !tileType2.AllowMultiInstall)
816 return HitResult.Invalid;
819 if (!target.trait.CanBuiltAt(pos))
821 return HitResult.Invalid;
824 else if (pos.Installed !=
null && !
this.CanBuiltOnThing && !pos.cell.hasDoor)
826 return HitResult.Invalid;
830 if (!this.CanBuiltOnBlock && pos.sourceBlock.tileType.IsOccupyCell)
832 return HitResult.Invalid;
834 if (this.IsDoor && pos.HasWallOrFence && pos.cell.blockDir == 2)
836 return HitResult.Invalid;
839 else if (this.IsDoor)
841 return HitResult.Invalid;
843 return this.HitTest(pos);
847 protected virtual HitResult HitTest(
Point pos)
851 return HitResult.Warning;
853 return HitResult.Valid;
857 public virtual int GetDesiredDir(
Point p,
int d)
863 public virtual void GetMountHeight(ref Vector3 v,
Point p,
int d,
Card target =
null)
865 v += EClass.screen.tileMap.altitudeFix * (float)target.altitude;
869 public Vector3 GetRampFix(
int dir)
871 int num = this.Ramp * TileType.RampType.Half - TileType.RampType.Half + ((dir <= 1) ? 0 : 1);
872 Vector3 vector =
EClass.setting.render.rampFix[num];
873 return new Vector3(vector.x * (
float)((dir % 2 == 0) ? 1 : -1), vector.y, vector.z);
1021 public static Dictionary<string, TileType> dict =
new Dictionary<string, TileType>();
1024 public enum RampType