8 public static bool CountSandHorizontally(
int i,
int j,
bool[] fittingTypes,
int requiredTotalSpread = 4,
int spreadInEachAxis = 5)
17 while (num < spreadInEachAxis && num3 > 0)
44 return num + num2 + 1 >= requiredTotalSpread;
50 Point point = position.ToTileCoordinates();
51 for (
int i = -1; i <= 1; i++)
56 if (bottomY - topY < 20)
68 Point point = position.ToTileCoordinates();
69 for (
int i = -1; i <= 1; i++)
74 if (bottomY - topY < 10)
86 Point point = arenaCenter.ToTileCoordinates();
87 xLeftEnd = (xRightEnd = point);
94 SendWalker(point, walkerHeightInTiles, -1, out var _, out var lastIteratedFloorSpot, 120, flag);
95 SendWalker(point, walkerHeightInTiles, 1, out var _, out var lastIteratedFloorSpot2, 120, flag);
96 lastIteratedFloorSpot.X++;
97 lastIteratedFloorSpot2.X--;
102 xLeftEnd = lastIteratedFloorSpot;
103 xRightEnd = lastIteratedFloorSpot2;
106 public static void SendWalker(
Point startFloorPosition,
int height,
int direction, out
int distanceCoveredInTiles, out
Point lastIteratedFloorSpot,
int maxDistance = 100,
bool showDebug =
false)
108 distanceCoveredInTiles = 0;
109 startFloorPosition.
Y--;
110 lastIteratedFloorSpot = startFloorPosition;
111 for (
int i = 0; i < maxDistance; i++)
113 for (
int j = 0; j < 3; j++)
119 startFloorPosition.
Y--;
136 if (bottomY - topY < height - 1)
145 distanceCoveredInTiles += direction;
146 startFloorPosition.X += direction;
147 startFloorPosition.Y = bottomY;
148 lastIteratedFloorSpot = startFloorPosition;
149 if (
Math.
Abs(distanceCoveredInTiles) >= maxDistance)
154 distanceCoveredInTiles =
Math.
Abs(distanceCoveredInTiles);
static double Abs(double value)
static void ExpandVertically(int startX, int startY, out int topY, out int bottomY, int maxExpandUp=100, int maxExpandDown=100)
static void QuickDustLine(Vector2 start, Vector2 end, float splits, Color color)
static void QuickBox(Vector2 topLeft, Vector2 bottomRight, int divisions, Color color, Action< Dust > manipulator)
static Dust QuickDust(int x, int y, Color color)
static bool CanSpawnSandstormFriendly(Vector2 position, int expandUp, int expandDown)
static bool CanSpawnSandstormHostile(Vector2 position, int expandUp, int expandDown)
static void SendWalker(Point startFloorPosition, int height, int direction, out int distanceCoveredInTiles, out Point lastIteratedFloorSpot, int maxDistance=100, bool showDebug=false)
static void CheckArenaScore(Vector2 arenaCenter, out Point xLeftEnd, out Point xRightEnd, int walkerWidthInTiles=5, int walkerHeightInTiles=10)
static bool CountSandHorizontally(int i, int j, bool[] fittingTypes, int requiredTotalSpread=4, int spreadInEachAxis=5)
static bool SolidTile3(int i, int j)
static bool SolidTileAllowBottomSlope(int i, int j)
static bool InWorld(int x, int y, int fluff=0)