108 lines
2.9 KiB
C#
108 lines
2.9 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Terraria.WorldBuilding.Searches
|
|
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
|
|
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
|
|
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
|
|
|
|
using Microsoft.Xna.Framework;
|
|
|
|
namespace Terraria.WorldBuilding
|
|
{
|
|
public static class Searches
|
|
{
|
|
public static GenSearch Chain(GenSearch search, params GenCondition[] conditions) => search.Conditions(conditions);
|
|
|
|
public class Left : GenSearch
|
|
{
|
|
private int _maxDistance;
|
|
|
|
public Left(int maxDistance) => this._maxDistance = maxDistance;
|
|
|
|
public override Point Find(Point origin)
|
|
{
|
|
for (int index = 0; index < this._maxDistance; ++index)
|
|
{
|
|
if (this.Check(origin.X - index, origin.Y))
|
|
return new Point(origin.X - index, origin.Y);
|
|
}
|
|
return GenSearch.NOT_FOUND;
|
|
}
|
|
}
|
|
|
|
public class Right : GenSearch
|
|
{
|
|
private int _maxDistance;
|
|
|
|
public Right(int maxDistance) => this._maxDistance = maxDistance;
|
|
|
|
public override Point Find(Point origin)
|
|
{
|
|
for (int index = 0; index < this._maxDistance; ++index)
|
|
{
|
|
if (this.Check(origin.X + index, origin.Y))
|
|
return new Point(origin.X + index, origin.Y);
|
|
}
|
|
return GenSearch.NOT_FOUND;
|
|
}
|
|
}
|
|
|
|
public class Down : GenSearch
|
|
{
|
|
private int _maxDistance;
|
|
|
|
public Down(int maxDistance) => this._maxDistance = maxDistance;
|
|
|
|
public override Point Find(Point origin)
|
|
{
|
|
for (int index = 0; index < this._maxDistance; ++index)
|
|
{
|
|
if (this.Check(origin.X, origin.Y + index))
|
|
return new Point(origin.X, origin.Y + index);
|
|
}
|
|
return GenSearch.NOT_FOUND;
|
|
}
|
|
}
|
|
|
|
public class Up : GenSearch
|
|
{
|
|
private int _maxDistance;
|
|
|
|
public Up(int maxDistance) => this._maxDistance = maxDistance;
|
|
|
|
public override Point Find(Point origin)
|
|
{
|
|
for (int index = 0; index < this._maxDistance; ++index)
|
|
{
|
|
if (this.Check(origin.X, origin.Y - index))
|
|
return new Point(origin.X, origin.Y - index);
|
|
}
|
|
return GenSearch.NOT_FOUND;
|
|
}
|
|
}
|
|
|
|
public class Rectangle : GenSearch
|
|
{
|
|
private int _width;
|
|
private int _height;
|
|
|
|
public Rectangle(int width, int height)
|
|
{
|
|
this._width = width;
|
|
this._height = height;
|
|
}
|
|
|
|
public override Point Find(Point origin)
|
|
{
|
|
for (int index1 = 0; index1 < this._width; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < this._height; ++index2)
|
|
{
|
|
if (this.Check(origin.X + index1, origin.Y + index2))
|
|
return new Point(origin.X + index1, origin.Y + index2);
|
|
}
|
|
}
|
|
return GenSearch.NOT_FOUND;
|
|
}
|
|
}
|
|
}
|
|
}
|