Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Step_MulticolorWrench()

static void Terraria.GameContent.SmartCursorHelper.Step_MulticolorWrench ( SmartCursorUsageInfo providedInfo,
ref int focusedX,
ref int focusedY )
inlinestaticprivate

Definition at line 1669 of file SmartCursorHelper.cs.

1670 {
1671 if (providedInfo.item.type != 3625 || focusedX != -1 || focusedY != -1)
1672 {
1673 return;
1674 }
1675 _targets.Clear();
1678 if (Main.tile[providedInfo.screenTargetX, providedInfo.screenTargetY].wire())
1679 {
1681 }
1682 if (Main.tile[providedInfo.screenTargetX, providedInfo.screenTargetY].wire2())
1683 {
1685 }
1686 if (Main.tile[providedInfo.screenTargetX, providedInfo.screenTargetY].wire3())
1687 {
1689 }
1690 if (Main.tile[providedInfo.screenTargetX, providedInfo.screenTargetY].wire4())
1691 {
1693 }
1695 bool num = toolMode == multiToolMode;
1697 if (!num)
1698 {
1699 bool flag = toolMode.HasFlag(WiresUI.Settings.MultiToolMode.Red);
1700 bool flag2 = toolMode.HasFlag(WiresUI.Settings.MultiToolMode.Blue);
1701 bool flag3 = toolMode.HasFlag(WiresUI.Settings.MultiToolMode.Green);
1702 bool flag4 = toolMode.HasFlag(WiresUI.Settings.MultiToolMode.Yellow);
1703 bool flag5 = toolMode.HasFlag(WiresUI.Settings.MultiToolMode.Cutter);
1704 for (int i = providedInfo.reachableStartX; i <= providedInfo.reachableEndX; i++)
1705 {
1706 for (int j = providedInfo.reachableStartY; j <= providedInfo.reachableEndY; j++)
1707 {
1708 Tile tile = Main.tile[i, j];
1709 if (flag5)
1710 {
1711 if ((tile.wire() && flag) || (tile.wire2() && flag2) || (tile.wire3() && flag3) || (tile.wire4() && flag4))
1712 {
1713 _targets.Add(new Tuple<int, int>(i, j));
1714 }
1715 }
1716 else
1717 {
1718 if (!(tile.wire() && flag) && !(tile.wire2() && flag2) && !(tile.wire3() && flag3) && !(tile.wire4() && flag4))
1719 {
1720 continue;
1721 }
1722 if (flag)
1723 {
1724 if (!Main.tile[i - 1, j].wire())
1725 {
1726 _targets.Add(new Tuple<int, int>(i - 1, j));
1727 }
1728 if (!Main.tile[i + 1, j].wire())
1729 {
1730 _targets.Add(new Tuple<int, int>(i + 1, j));
1731 }
1732 if (!Main.tile[i, j - 1].wire())
1733 {
1734 _targets.Add(new Tuple<int, int>(i, j - 1));
1735 }
1736 if (!Main.tile[i, j + 1].wire())
1737 {
1738 _targets.Add(new Tuple<int, int>(i, j + 1));
1739 }
1740 }
1741 if (flag2)
1742 {
1743 if (!Main.tile[i - 1, j].wire2())
1744 {
1745 _targets.Add(new Tuple<int, int>(i - 1, j));
1746 }
1747 if (!Main.tile[i + 1, j].wire2())
1748 {
1749 _targets.Add(new Tuple<int, int>(i + 1, j));
1750 }
1751 if (!Main.tile[i, j - 1].wire2())
1752 {
1753 _targets.Add(new Tuple<int, int>(i, j - 1));
1754 }
1755 if (!Main.tile[i, j + 1].wire2())
1756 {
1757 _targets.Add(new Tuple<int, int>(i, j + 1));
1758 }
1759 }
1760 if (flag3)
1761 {
1762 if (!Main.tile[i - 1, j].wire3())
1763 {
1764 _targets.Add(new Tuple<int, int>(i - 1, j));
1765 }
1766 if (!Main.tile[i + 1, j].wire3())
1767 {
1768 _targets.Add(new Tuple<int, int>(i + 1, j));
1769 }
1770 if (!Main.tile[i, j - 1].wire3())
1771 {
1772 _targets.Add(new Tuple<int, int>(i, j - 1));
1773 }
1774 if (!Main.tile[i, j + 1].wire3())
1775 {
1776 _targets.Add(new Tuple<int, int>(i, j + 1));
1777 }
1778 }
1779 if (flag4)
1780 {
1781 if (!Main.tile[i - 1, j].wire4())
1782 {
1783 _targets.Add(new Tuple<int, int>(i - 1, j));
1784 }
1785 if (!Main.tile[i + 1, j].wire4())
1786 {
1787 _targets.Add(new Tuple<int, int>(i + 1, j));
1788 }
1789 if (!Main.tile[i, j - 1].wire4())
1790 {
1791 _targets.Add(new Tuple<int, int>(i, j - 1));
1792 }
1793 if (!Main.tile[i, j + 1].wire4())
1794 {
1795 _targets.Add(new Tuple<int, int>(i, j + 1));
1796 }
1797 }
1798 }
1799 }
1800 }
1801 }
1802 if (_targets.Count > 0)
1803 {
1804 float num2 = -1f;
1806 for (int k = 0; k < _targets.Count; k++)
1807 {
1808 float num3 = Vector2.Distance(new Vector2(_targets[k].Item1, _targets[k].Item2) * 16f + Vector2.One * 8f, providedInfo.mouse);
1809 if (num2 == -1f || num3 < num2)
1810 {
1811 num2 = num3;
1812 tuple = _targets[k];
1813 }
1814 }
1815 if (Collision.InTileBounds(tuple.Item1, tuple.Item2, providedInfo.reachableStartX, providedInfo.reachableStartY, providedInfo.reachableEndX, providedInfo.reachableEndY))
1816 {
1817 focusedX = tuple.Item1;
1818 focusedY = tuple.Item2;
1819 }
1820 }
1821 _targets.Clear();
1822 }
static List< Tuple< int, int > > _targets
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References Terraria.GameContent.SmartCursorHelper._targets, Microsoft.Xna.Framework.Vector2.Distance(), Terraria.Collision.InTileBounds(), Terraria.Main.tile, Terraria.GameContent.UI.WiresUI.Settings.ToolMode, Terraria.Tile.wire(), Terraria.Tile.wire2(), Terraria.Tile.wire3(), and Terraria.Tile.wire4().

Referenced by Terraria.GameContent.SmartCursorHelper.SmartCursorLookup().