Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ModShapes.cs
Go to the documentation of this file.
3
5
6public 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
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
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}
bool UnitApply(GenAction action, Point origin, int x, int y, params object[] args)
Definition GenShape.cs:13
override bool Perform(Point origin, GenAction action)
Definition ModShapes.cs:15
override bool Perform(Point origin, GenAction action)
Definition ModShapes.cs:84
InnerOutline(ShapeData data, bool useDiagonals=true)
Definition ModShapes.cs:78
override bool Perform(Point origin, GenAction action)
Definition ModShapes.cs:47
OuterOutline(ShapeData data, bool useDiagonals=true, bool useInterior=false)
Definition ModShapes.cs:40
HashSet< Point16 > GetData()
Definition ShapeData.cs:35
bool Contains(int x, int y)
Definition ShapeData.cs:45