Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TileTypeWallHang.cs
Go to the documentation of this file.
1using UnityEngine;
2
4{
5 public static bool[] DIRS = new bool[4];
6
7 public override string LangPlaceType => "place_WallMount";
8
9 public override bool CanStack => true;
10
11 public override bool IsBlockMount => true;
12
13 public override bool UseMountHeight => true;
14
15 public override bool UseHangZFix => true;
16
17 public virtual bool NoBackSide => false;
18
19 public override int GetDesiredDir(Point p, int d)
20 {
22 {
23 return -1;
24 }
25 Cell cell = p.cell;
26 DIRS[0] = cell.Back.sourceBlock.tileType.IsMountBlock && (!cell.Back.sourceBlock.tileType.IsWallOrFence || cell.Back.blockDir != 1);
27 DIRS[1] = cell.Left.sourceBlock.tileType.IsMountBlock && (!cell.Left.sourceBlock.tileType.IsWallOrFence || cell.Left.blockDir != 0);
28 if (NoBackSide)
29 {
30 DIRS[2] = false;
31 DIRS[3] = false;
32 }
33 else
34 {
35 DIRS[2] = cell.Front.sourceBlock.tileType.IsMountBlock && (!cell.Front.sourceBlock.tileType.IsWallOrFence || cell.Front.blockDir != 1);
36 DIRS[3] = cell.Right.sourceBlock.tileType.IsMountBlock && (!cell.Right.sourceBlock.tileType.IsWallOrFence || cell.Right.blockDir != 0);
37 }
38 if (d == -1 || !DIRS[d])
39 {
40 if (d == -1)
41 {
42 d = 0;
43 }
44 for (int i = 0; i < 4; i++)
45 {
46 if (DIRS[(i + d) % 4])
47 {
48 return (i + d) % 4;
49 }
50 }
51 }
52 if (DIRS[d])
53 {
54 return d;
55 }
56 return -1;
57 }
58
59 public override void GetMountHeight(ref Vector3 v, Point p, int d, Card target = null)
60 {
61 if (d == 0 && p.z < EClass._map.Size - 1)
62 {
63 Point.shared2.Set(p.x, p.z + 1);
64 Vector3 vector = Point.shared2.Position();
65 v.x = vector.x;
66 v.y = vector.y + Point.shared2.sourceBlock.tileType.MountHeight;
67 v.z = vector.z;
69 {
71 }
72 v += EClass.screen.tileMap.altitudeFix * target.altitude;
73 }
74 else if (d == 1 && p.x > 0)
75 {
76 Point.shared2.Set(p.x - 1, p.z);
77 Vector3 vector2 = Point.shared2.Position();
78 v.x = vector2.x;
79 v.y = vector2.y + Point.shared2.sourceBlock.tileType.MountHeight;
80 v.z = vector2.z;
82 {
84 }
85 v += EClass.screen.tileMap.altitudeFix * target.altitude;
86 }
87 else if (d == 2 && p.z > 0)
88 {
89 Point.shared2.Set(p.x, p.z - 1);
90 Vector3 vector3 = p.Position();
91 v.x = vector3.x;
92 v.y = vector3.y + p.sourceBlock.tileType.MountHeight;
93 v.z = vector3.z;
95 {
97 }
98 v += EClass.screen.tileMap.altitudeFix * target.altitude;
99 }
100 else if (d == 3 && p.x < EClass._map.Size - 1)
101 {
102 Point.shared2.Set(p.x + 1, p.z);
103 Vector3 vector4 = p.Position();
104 v.x = vector4.x;
105 v.y = vector4.y + p.sourceBlock.tileType.MountHeight;
106 v.z = vector4.z;
108 {
110 }
111 v += EClass.screen.tileMap.altitudeFix * target.altitude;
112 }
113 else
114 {
115 v.y += p.sourceBlock.tileType.MountHeight;
116 }
117 }
118
119 protected override HitResult HitTest(Point pos)
120 {
121 if (GetDesiredDir(pos, -1) == -1)
122 {
123 return HitResult.Invalid;
124 }
125 return base.HitTest(pos);
126 }
127}
HitResult
Definition: HitResult.cs:2
virtual bool IsRoofEditMode(Card c=null)
Definition: ActionMode.cs:311
BaseTileMap tileMap
Vector3[] wallHangFix
Definition: BaseTileMap.cs:116
Definition: Card.cs:11
Definition: Cell.cs:7
Definition: EClass.cs:5
static Scene scene
Definition: EClass.cs:30
static Map _map
Definition: EClass.cs:18
static BaseGameScreen screen
Definition: EClass.cs:32
int Size
Definition: MapBounds.cs:20
Definition: Point.cs:9
SourceBlock.Row sourceBlock
Definition: Point.cs:63
ref Vector3 Position(int height)
Definition: Point.cs:524
static Point shared2
Definition: Point.cs:22
Point Set(int _x, int _z)
Definition: Point.cs:479
int x
Definition: Point.cs:36
bool HasWallOrFence
Definition: Point.cs:155
int z
Definition: Point.cs:39
Cell cell
Definition: Point.cs:51
ActionMode actionMode
Definition: Scene.cs:77
override bool CanStack
override void GetMountHeight(ref Vector3 v, Point p, int d, Card target=null)
virtual bool NoBackSide
override HitResult HitTest(Point pos)
override bool IsBlockMount
override string LangPlaceType
override int GetDesiredDir(Point p, int d)
override bool UseHangZFix
static bool[] DIRS
override bool UseMountHeight