Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ModShapes.cs
Go to the documentation of this file.
1
using
Microsoft.Xna.Framework
;
2
using
Terraria.DataStructures
;
3
4
namespace
Terraria.WorldBuilding
;
5
6
public
static
class
ModShapes
7
{
8
public
class
All
:
GenModShape
9
{
10
public
All
(
ShapeData
data)
11
: base(data)
12
{
13
}
14
15
public
override
bool
Perform
(
Point
origin,
GenAction
action)
16
{
17
foreach
(
Point16
datum
in
_data
.
GetData
())
18
{
19
if
(!
UnitApply
(action, origin, datum.
X
+ origin.X, datum.
Y
+ origin.Y) &&
_quitOnFail
)
20
{
21
return
false
;
22
}
23
}
24
return
true
;
25
}
26
}
27
28
public
class
OuterOutline
:
GenModShape
29
{
30
private
static
readonly
int
[]
POINT_OFFSETS
=
new
int
[16]
31
{
32
1, 0, -1, 0, 0, 1, 0, -1, 1, 1,
33
1, -1, -1, 1, -1, -1
34
};
35
36
private
bool
_useDiagonals
;
37
38
private
bool
_useInterior
;
39
40
public
OuterOutline
(
ShapeData
data,
bool
useDiagonals =
true
,
bool
useInterior =
false
)
41
: base(data)
42
{
43
_useDiagonals
= useDiagonals;
44
_useInterior
= useInterior;
45
}
46
47
public
override
bool
Perform
(
Point
origin,
GenAction
action)
48
{
49
int
num = (
_useDiagonals
? 16 : 8);
50
foreach
(
Point16
datum
in
_data
.
GetData
())
51
{
52
if
(
_useInterior
&& !
UnitApply
(action, origin, datum.
X
+ origin.X, datum.
Y
+ origin.Y) &&
_quitOnFail
)
53
{
54
return
false
;
55
}
56
for
(
int
i = 0; i < num; i += 2)
57
{
58
if
(!
_data
.
Contains
(datum.
X
+
POINT_OFFSETS
[i], datum.
Y
+
POINT_OFFSETS
[i + 1]) && !
UnitApply
(action, origin, origin.X + datum.
X
+
POINT_OFFSETS
[i], origin.Y + datum.
Y
+
POINT_OFFSETS
[i + 1]) &&
_quitOnFail
)
59
{
60
return
false
;
61
}
62
}
63
}
64
return
true
;
65
}
66
}
67
68
public
class
InnerOutline
:
GenModShape
69
{
70
private
static
readonly
int
[]
POINT_OFFSETS
=
new
int
[16]
71
{
72
1, 0, -1, 0, 0, 1, 0, -1, 1, 1,
73
1, -1, -1, 1, -1, -1
74
};
75
76
private
bool
_useDiagonals
;
77
78
public
InnerOutline
(
ShapeData
data,
bool
useDiagonals =
true
)
79
: base(data)
80
{
81
_useDiagonals
= useDiagonals;
82
}
83
84
public
override
bool
Perform
(
Point
origin,
GenAction
action)
85
{
86
int
num = (
_useDiagonals
? 16 : 8);
87
foreach
(
Point16
datum
in
_data
.
GetData
())
88
{
89
bool
flag =
false
;
90
for
(
int
i = 0; i < num; i += 2)
91
{
92
if
(!
_data
.
Contains
(datum.
X
+
POINT_OFFSETS
[i], datum.
Y
+
POINT_OFFSETS
[i + 1]))
93
{
94
flag =
true
;
95
break
;
96
}
97
}
98
if
(flag && !
UnitApply
(action, origin, datum.
X
+ origin.X, datum.
Y
+ origin.Y) &&
_quitOnFail
)
99
{
100
return
false
;
101
}
102
}
103
return
true
;
104
}
105
}
106
}
Terraria.WorldBuilding.GenAction
Definition
GenAction.cs:6
Terraria.WorldBuilding.GenModShape._data
ShapeData _data
Definition
GenModShape.cs:5
Terraria.WorldBuilding.GenModShape
Definition
GenModShape.cs:4
Terraria.WorldBuilding.GenShape._quitOnFail
bool _quitOnFail
Definition
GenShape.cs:9
Terraria.WorldBuilding.GenShape.UnitApply
bool UnitApply(GenAction action, Point origin, int x, int y, params object[] args)
Definition
GenShape.cs:13
Terraria.WorldBuilding.ModShapes.All.All
All(ShapeData data)
Definition
ModShapes.cs:10
Terraria.WorldBuilding.ModShapes.All.Perform
override bool Perform(Point origin, GenAction action)
Definition
ModShapes.cs:15
Terraria.WorldBuilding.ModShapes.All
Definition
ModShapes.cs:9
Terraria.WorldBuilding.ModShapes.InnerOutline.Perform
override bool Perform(Point origin, GenAction action)
Definition
ModShapes.cs:84
Terraria.WorldBuilding.ModShapes.InnerOutline.POINT_OFFSETS
static readonly int[] POINT_OFFSETS
Definition
ModShapes.cs:70
Terraria.WorldBuilding.ModShapes.InnerOutline._useDiagonals
bool _useDiagonals
Definition
ModShapes.cs:76
Terraria.WorldBuilding.ModShapes.InnerOutline.InnerOutline
InnerOutline(ShapeData data, bool useDiagonals=true)
Definition
ModShapes.cs:78
Terraria.WorldBuilding.ModShapes.InnerOutline
Definition
ModShapes.cs:69
Terraria.WorldBuilding.ModShapes.OuterOutline.Perform
override bool Perform(Point origin, GenAction action)
Definition
ModShapes.cs:47
Terraria.WorldBuilding.ModShapes.OuterOutline.OuterOutline
OuterOutline(ShapeData data, bool useDiagonals=true, bool useInterior=false)
Definition
ModShapes.cs:40
Terraria.WorldBuilding.ModShapes.OuterOutline.POINT_OFFSETS
static readonly int[] POINT_OFFSETS
Definition
ModShapes.cs:30
Terraria.WorldBuilding.ModShapes.OuterOutline._useDiagonals
bool _useDiagonals
Definition
ModShapes.cs:36
Terraria.WorldBuilding.ModShapes.OuterOutline._useInterior
bool _useInterior
Definition
ModShapes.cs:38
Terraria.WorldBuilding.ModShapes.OuterOutline
Definition
ModShapes.cs:29
Terraria.WorldBuilding.ModShapes
Definition
ModShapes.cs:7
Terraria.WorldBuilding.ShapeData.GetData
HashSet< Point16 > GetData()
Definition
ShapeData.cs:35
Terraria.WorldBuilding.ShapeData.Contains
bool Contains(int x, int y)
Definition
ShapeData.cs:45
Terraria.WorldBuilding.ShapeData
Definition
ShapeData.cs:10
Microsoft.Xna.Framework
Definition
AlphaTestEffect.cs:1
Terraria.DataStructures
Definition
AEntitySource_OnHit.cs:1
Terraria.WorldBuilding
Definition
Actions.cs:8
Microsoft.Xna.Framework.Point
Definition
Point.cs:12
Terraria.DataStructures.Point16.Y
readonly short Y
Definition
Point16.cs:9
Terraria.DataStructures.Point16.X
readonly short X
Definition
Point16.cs:7
Terraria.DataStructures.Point16
Definition
Point16.cs:6
source
Terraria.WorldBuilding
ModShapes.cs
Generated by
1.10.0