Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ShapeFloodFill.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
using
Microsoft.Xna.Framework
;
3
using
Terraria.DataStructures
;
4
using
Terraria.WorldBuilding
;
5
6
namespace
Terraria.GameContent.Generation
;
7
8
public
class
ShapeFloodFill
:
GenShape
9
{
10
private
int
_maximumActions
;
11
12
public
ShapeFloodFill
(
int
maximumActions
= 100)
13
{
14
_maximumActions
=
maximumActions
;
15
}
16
17
public
override
bool
Perform
(
Point
origin,
GenAction
action)
18
{
19
Queue<Point>
queue
=
new
Queue<Point>
();
20
HashSet<Point16>
hashSet
=
new
HashSet<Point16>
();
21
queue
.Enqueue(origin);
22
int
num =
_maximumActions
;
23
while
(
queue
.
Count
> 0 && num > 0)
24
{
25
Point
point =
queue
.Dequeue();
26
if
(!
hashSet
.
Contains
(
new
Point16
(point.
X
, point.
Y
)) &&
UnitApply
(action, origin, point.
X
, point.
Y
))
27
{
28
hashSet
.
Add
(
new
Point16
(point));
29
num--;
30
if
(point.
X
+ 1 <
Main
.
maxTilesX
- 1)
31
{
32
queue
.Enqueue(
new
Point
(point.
X
+ 1, point.
Y
));
33
}
34
if
(point.
X
- 1 >= 1)
35
{
36
queue
.Enqueue(
new
Point
(point.
X
- 1, point.
Y
));
37
}
38
if
(point.
Y
+ 1 <
Main
.
maxTilesY
- 1)
39
{
40
queue
.Enqueue(
new
Point
(point.
X
, point.
Y
+ 1));
41
}
42
if
(point.
Y
- 1 >= 1)
43
{
44
queue
.Enqueue(
new
Point
(point.
X
, point.
Y
- 1));
45
}
46
}
47
}
48
while
(
queue
.
Count
> 0)
49
{
50
Point
item =
queue
.Dequeue();
51
if
(!
hashSet
.
Contains
(
new
Point16
(item.X, item.Y)))
52
{
53
queue
.Enqueue(item);
54
break
;
55
}
56
}
57
return
queue.Count == 0;
58
}
59
}
System.Collections.Generic.Dictionary.Contains
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
Definition
Dictionary.cs:883
System.Collections.Generic.Dictionary.Count
int Count
Definition
Dictionary.cs:682
System.Collections.Generic.Dictionary.Add
void Add(TKey key, TValue value)
Definition
Dictionary.cs:873
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
Terraria.GameContent.Generation.ShapeFloodFill.Perform
override bool Perform(Point origin, GenAction action)
Definition
ShapeFloodFill.cs:17
Terraria.GameContent.Generation.ShapeFloodFill._maximumActions
int _maximumActions
Definition
ShapeFloodFill.cs:10
Terraria.GameContent.Generation.ShapeFloodFill.ShapeFloodFill
ShapeFloodFill(int maximumActions=100)
Definition
ShapeFloodFill.cs:12
Terraria.GameContent.Generation.ShapeFloodFill
Definition
ShapeFloodFill.cs:9
Terraria.Main.maxTilesY
static int maxTilesY
Definition
Main.cs:1116
Terraria.Main.maxTilesX
static int maxTilesX
Definition
Main.cs:1114
Terraria.Main
Definition
Main.cs:79
Terraria.WorldBuilding.GenAction
Definition
GenAction.cs:6
Terraria.WorldBuilding.GenShape.UnitApply
bool UnitApply(GenAction action, Point origin, int x, int y, params object[] args)
Definition
GenShape.cs:13
Terraria.WorldBuilding.GenShape
Definition
GenShape.cs:6
Microsoft.Xna.Framework
Definition
AlphaTestEffect.cs:1
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
Terraria.DataStructures
Definition
AEntitySource_OnHit.cs:1
Terraria.GameContent.Generation
Definition
ActionGrass.cs:4
Terraria.WorldBuilding
Definition
Actions.cs:8
Microsoft.Xna.Framework.Point.X
int X
Definition
Point.cs:14
Microsoft.Xna.Framework.Point.Y
int Y
Definition
Point.cs:17
Microsoft.Xna.Framework.Point
Definition
Point.cs:12
Terraria.DataStructures.Point16
Definition
Point16.cs:6
source
Terraria.GameContent.Generation
ShapeFloodFill.cs
Generated by
1.10.0