56 Main.SmartCursorShowing =
false;
67 Center = player.Center
74 smartCursorUsageInfo.screenTargetX =
Utils.Clamp(tileTargetX, 10,
Main.
maxTilesX - 10);
75 smartCursorUsageInfo.screenTargetY =
Utils.Clamp(tileTargetY, 10,
Main.
maxTilesY - 10);
83 smartCursorUsageInfo.reachableStartX = (int)(player.
position.
X / 16f) - tileRangeX - tileBoost + 1;
84 smartCursorUsageInfo.reachableEndX = (int)((player.
position.
X + (
float)player.
width) / 16f) + tileRangeX + tileBoost - 1;
85 smartCursorUsageInfo.reachableStartY = (int)(player.
position.
Y / 16f) - tileRangeY - tileBoost + 1;
86 smartCursorUsageInfo.reachableEndY = (int)((player.
position.
Y + (
float)player.
height) / 16f) + tileRangeY + tileBoost - 2;
96 for (
int i = 0; i < grapCount; i++)
99 int item = (int)
obj.Center.X / 16;
143 if (
fX != -1 &&
fY != -1)
145 Main.SmartCursorX = (Player.tileTargetX =
fX);
146 Main.SmartCursorY = (Player.tileTargetY =
fY);
147 Main.SmartCursorShowing =
true;
164 paintLookup =
item.paint;
253 if (tile.
active() && !tile.
inActive() && tile.type == 0 && (flag || (tile.type == 0 &&
flag2)))
266 if (num == -1f ||
num2 < num)
306 flag3 = tile.type == 0;
310 flag3 = tile.type == 0 || tile.type == 59;
314 flag3 = tile.type == 59;
317 flag3 = tile.type == 57;
334 if (num == -1f ||
num2 < num)
389 if (num == -1f ||
num2 < num)
424 if (tile.
active() && tile.type == 380)
445 if (num == -1f ||
num2 < num)
475 bool flag =
tile2.nactive() && !
tile2.halfBrick() &&
tile2.slope() == 0;
489 if ((
tile2.type != 78 &&
tile2.type != 380 &&
tile2.type != 60) || tile.liquid > 0)
495 if ((
tile2.type != 78 &&
tile2.type != 380 &&
tile2.type != 0 &&
tile2.type != 59) || tile.liquid > 0)
507 if ((
tile2.type != 78 &&
tile2.type != 380 &&
tile2.type != 53 &&
tile2.type != 116) || (tile.liquid > 0 && tile.
lava()))
513 if ((
tile2.type != 78 &&
tile2.type != 380 &&
tile2.type != 57 &&
tile2.type != 633) || (tile.liquid > 0 && !tile.
lava()))
575 if (num == -1f ||
num2 < num)
608 for (
int k = i - 1;
k <= i + 1;
k++)
610 for (
int l =
j - 1;
l <=
j + 1;
l++)
661 flag |= tile.
color() > 0;
662 flag |= tile.type == 184;
685 if (num == -1f ||
num2 < num)
708 int paintCoatingLookup =
providedInfo.paintCoatingLookup;
709 if (paintLookup != 0 || paintCoatingLookup != 0)
730 if (num == -1f ||
num2 < num)
753 int paintCoatingLookup =
providedInfo.paintCoatingLookup;
772 if (num == -1f ||
num2 < num)
847 if (num == -1f ||
num2 < num)
893 for (
int k = i;
k <= i + 1;
k++)
895 for (
int l =
j - 1;
l <=
j;
l++)
909 for (
int m = 0;
m < 255;
m++)
931 if (num == -1f ||
num2 < num)
958 for (
int k = i - 2;
k <= i + 1;
k++)
960 for (
int l =
j - 1;
l <=
j + 2;
l++)
989 if (num == -1f ||
num2 < num)
1017 if ((
double)
j > Main.worldSurface - 2.0)
1034 if (tile.
type != 2 && tile.
type != 477 && tile.
type != 109 && tile.
type != 492)
1038 for (
int k = i;
k <= i + 1;
k++)
1040 for (
int l =
j - 1;
l <=
j;
l++)
1062 if (num == -1f ||
num2 < num)
1128 if (num == -1f ||
num2 < num)
1150 bool flag = num >= 0.5f;
1151 bool flag2 = num <= -0.5f;
1187 if (tile.
active() && tile.type == 314)
1262 if (
tile2.active() && tile2.type == 314)
1322 byte num = tile.
slope();
1323 if (num != 2 && !
Main.
tile[i - 1,
j - 1].active())
1331 if (num != 1 && !
Main.
tile[i - 1,
j + 1].active())
1335 if (num != 1 && !
Main.
tile[i + 1,
j - 1].active())
1343 if (num != 2 && !
Main.
tile[i + 1,
j + 1].active())
1424 if (num == -1f ||
num2 < num)
1466 if (num == -1f ||
num2 < num)
1505 if (
num2 == -1 && num != 0)
1509 int num4 = (int)((
providedInfo.position.X + (
float)(width / 2) + (
float)((width / 2 - 1) * num)) / 16f);
1510 int num5 = (int)(((
double)providedInfo.position.Y + 0.1) / 16.0);
1515 int num6 = width / 16 + ((width % 16 != 0) ? 1 : 0);
1516 int num7 = height / 16 + ((height % 16 != 0) ? 1 : 0);
1519 for (
int i = 0; i <
num7; i++)
1529 for (
int j = 0;
j <
num6;
j++)
1531 if (
Main.
tile[(
int)(providedInfo.position.X / 16f) +
j,
num5] !=
null)
1537 int num8 = (int)((
providedInfo.mouse.X + (
float)((width / 2 - 1) * num)) / 16f);
1538 int num9 = (int)(((
double)providedInfo.mouse.Y + 0.1 - (double)(height / 2 + 1)) / 16.0);
1553 num9 = Main.maxTilesY - 10;
1555 int num10 = width / 16 + ((width % 16 != 0) ? 1 : 0);
1556 int num11 = height / 16 + ((height % 16 != 0) ? 1 : 0);
1571 if (
Main.
tile[(
int)((providedInfo.mouse.X - (float)(width / 2)) / 16f) +
l,
num9] !=
null)
1619 providedInfo.player.poundRelease =
false;
1661 providedInfo.player.poundRelease =
false;
1872 if ((!tile.
wire() || num != 1) && (!tile.
wire2() || num != 2) && (!tile.
wire3() || num != 3) && (!tile.
wire4() || num != 4))
2035 for (
int l = -1;
l < 2;
l += 2)
2079 if (num == -1f ||
num2 < num)
2124 for (
int l = -1;
l < 2;
l += 2)
2149 if (num == -1f ||
num2 < num)
2178 Point point = mouse.ToTileCoordinates();
2215 if (
item.pick <= 0 ||
fX != -1 ||
fY != -1)
2220 if (
item.type != 1333 &&
item.type != 523)
2222 _ = item.type != 4384;
2227 for (
int i = reachableStartX; i <= reachableEndX; i++)
2229 for (
int j = reachableStartY;
j <= reachableEndY;
j++)
2287 int width = player.
width;
2288 int height = player.
height;
2292 float gravDir = player.
gravDir;
2293 int whoAmI = player.
whoAmI;
2305 providedInfo.mouse =
center +
new Vector2(direction * 1000, 0f);
2314 providedInfo.mouse.Y =
center.Y;
2319 providedInfo.mouse.X =
center.X;
2326 if (
num2 == -1 && num != 0)
2330 int num4 = (int)((position.
X + (
float)(width / 2) + (
float)((width / 2 - 1) * num)) / 16f);
2331 int num5 = (int)(((
double)position.Y + 0.1) / 16.0);
2334 num5 = (int)((position.
Y + (
float)height - 1f) / 16f);
2336 int num6 = width / 16 + ((width % 16 != 0) ? 1 : 0);
2337 int num7 = height / 16 + ((height % 16 != 0) ? 1 : 0);
2340 for (
int i = 0; i <
num7; i++)
2350 for (
int j = 0;
j <
num6;
j++)
2358 int num8 = (int)((
providedInfo.mouse.X + (
float)((width / 2 - 1) * num)) / 16f);
2359 int num9 = (int)(((
double)providedInfo.mouse.Y + 0.1 - (double)(height / 2 + 1)) / 16.0);
2364 if (gravDir == -1f &&
num2 == 0)
2374 num9 = Main.maxTilesY - 10;
2376 int num10 = width / 16 + ((width % 16 != 0) ? 1 : 0);
2377 int num11 = height / 16 + ((height % 16 != 0) ? 1 : 0);
2394 if (
Main.
tile[(
int)((providedInfo.mouse.X - (float)(width / 2)) / 16f) +
l,
num9] !=
null)
2530 for (
int i = reachableStartX; i <= reachableEndX; i++)
2532 for (
int j = reachableStartY;
j <= reachableEndY;
j++)
2582 if (tile.
type == 80)
2610 if (tile.
type == 323 || tile.
type == 72)
2612 for (;
Main.
tile[
num2,
k].active() && ((
Main.
tile[
num2,
k].type == 323 &&
Main.
tile[
num2,
k + 1].type == 323) || (
Main.
tile[
num2,
k].type == 72 &&
Main.
tile[
num2,
k + 1].type == 72)) &&
Collision.
InTileBounds(
num2,
k + 1, reachableStartX, reachableStartY, reachableEndX, reachableEndY);
k++)
2617 if (num == -1f ||
num3 < num)
2650 if (
Main.
tile[screenTargetX, screenTargetY].active())
2654 if (!
Collision.
InTileBounds(screenTargetX, screenTargetY, reachableStartX, reachableStartY, reachableEndX, reachableEndY))
2660 for (
int i = reachableStartX; i <= reachableEndX; i++)
2662 for (
int j = reachableStartY;
j <= reachableEndY;
j++)
2695 float num3 =
float.PositiveInfinity;
2743 bool flag = providedInfo.item.type != 1333 && providedInfo.item.type != 523 && providedInfo.item.type != 4384;
2744 for (
int i = reachableStartX; i <= reachableEndX; i++)
2746 for (
int j = reachableStartY;
j <= reachableEndY;
j++)
2757 for (
int k = i - 8;
k <= i + 8;
k++)
2759 for (
int l =
j - 8;
l <=
j + 8;
l++)
2785 if (num == -1f ||
num2 < num)
2813 for (
int i = reachableStartX; i <= reachableEndX; i++)
2815 for (
int j = reachableStartY;
j <= reachableEndY;
j++)
2831 if (num == -1f ||
num2 < num)
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
static double Abs(double value)
static int Sign(decimal value)
static bool InTileBounds(int x, int y, int lx, int ly, int hx, int hy)
static bool CanHitWithCheck(Vector2 Position1, int Width1, int Height1, Vector2 Position2, int Width2, int Height2, Utils.TileActionAttempt check)
static bool EmptyTile(int i, int j, bool ignoreTiles=false)
static Tuple< int, int > TupleHitLineWall(int x1, int y1, int x2, int y2)
static bool TupleHitLine(int x1, int y1, int x2, int y2, int ignoreX, int ignoreY, List< Tuple< int, int > > ignoreTargets, out Tuple< int, int > col)
static bool HitWallSubstep(int x, int y)
static bool NotDoorStand(int x, int y)
float Distance(Vector2 Other)
static void Step_PaintRoller(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_Boulders(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static List< Tuple< int, int > > _targets2
static void Step_Pigronata(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_BlocksLines(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void TryFindingPaintInplayerInventory(SmartCursorUsageInfo providedInfo, out int paintLookup, out int coatingLookup)
static List< Tuple< int, int > > _endpoints
static void Step_LawnMower(SmartCursorUsageInfo providedInfo, ref int fX, ref int fY)
static void Step_Acorns(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_ColoredWrenches(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_MinecartTracks(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_Torch(SmartCursorUsageInfo providedInfo, ref int fX, ref int fY)
static void Step_MulticolorWrench(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_GrassSeeds(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_StaffOfRegrowth(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_Pickaxe_MineShinies(SmartCursorUsageInfo providedInfo, ref int fX, ref int fY)
static void Step_BlocksFilling(SmartCursorUsageInfo providedInfo, ref int fX, ref int fY)
static void Step_WireCutter(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_Actuators(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static List< Tuple< int, int > > _targets
static void Step_ForceCursorToAnyMinableThing(SmartCursorUsageInfo providedInfo, ref int fX, ref int fY)
static List< Tuple< int, int > > _grappleTargets
static void Step_EmptyBuckets(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_Walls(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_Hammers(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_PaintScrapper(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_ClayPots(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static List< Tuple< int, int > > _points
static void Step_Axe(SmartCursorUsageInfo providedInfo, ref int fX, ref int fY)
static void Step_PaintBrush(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static bool IsHoveringOverAnInteractibleTileThatBlocksSmartCursor(SmartCursorUsageInfo providedInfo)
static void SmartCursorLookup(Player player)
static void Step_AlchemySeeds(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_ActuationRod(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static List< Tuple< int, int > > _toRemove
static void Step_Platforms(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_GemCorns(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_PumpkinSeeds(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_PlanterBox(SmartCursorUsageInfo providedInfo, ref int focusedX, ref int focusedY)
static void Step_Pickaxe_MineSolids(Player player, SmartCursorUsageInfo providedInfo, List< Tuple< int, int > > grappleTargets, ref int focusedX, ref int focusedY)
static MultiToolMode ToolMode
static bool[] IsPaintScraper
static readonly short Count
static bool[] IgnoreSmartCursorPriorityAxe
static bool[] BreakableWhenPlacing
static int[] SmartCursorPickaxePriorityOverride
static bool[] CommonSapling
static bool[] NotReallySolid
static bool[] IsATreeTrunk
static readonly ushort Count
static bool[] tileSolidTop
static double worldSurface
static Vector2 MouseWorld
static Projectile[] projectile
static bool SmartCursorIsUsed
static bool[] tileFrameImportant
static bool[] tileNoAttach
static bool SmartBlocksEnabled
static bool SmartAxeAfterPickaxe
void liquidType(int liquidType)
static bool TryGetFromItemId(int itemType, out GrowTreeSettings profile)
static bool IsTreeType(int tree)
static bool SolidTile(Tile testTile)
static bool EmptyTileCheck(int startX, int endX, int startY, int endY, int ignoreID=-1)
static bool CanKillTile(int i, int j, SpecialKillTileContext context)
static bool SolidTile2(Tile testTile)
static bool IsOpenDoorAnchorFrame(int x, int y)
static bool InWorld(int x, int y, int fluff=0)
static bool CanCutTile(int x, int y, TileCuttingContext context)
static bool IsHarvestableHerbWithSeed(int type, int style)
bool Intersects(Rectangle value)
static float Dot(Vector2 value1, Vector2 value2)
static float Distance(Vector2 value1, Vector2 value2)