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

◆ AttemptInteraction()

HoverStatus Terraria.GameContent.ObjectInteractions.AHoverInteractionChecker.AttemptInteraction ( Player player,
Rectangle Hitbox )
inlinepackageinherited

Definition at line 16 of file AHoverInteractionChecker.cs.

17 {
18 Point point = Hitbox.ClosestPointInRect(player.Center).ToTileCoordinates();
19 if (!player.IsInTileInteractionRange(point.X, point.Y, TileReachCheckSettings.Simple))
20 {
21 return HoverStatus.NotSelectable;
22 }
23 Matrix matrix = Matrix.Invert(Main.GameViewMatrix.ZoomMatrix);
24 Vector2 vector = Main.ReverseGravitySupport(Main.MouseScreen);
25 Vector2.Transform(Main.screenPosition, matrix);
26 Vector2 v = vector + Main.screenPosition;
27 bool flag = Hitbox.Contains(v.ToPoint());
28 bool flag2 = flag;
29 bool? flag3 = AttemptOverridingHoverStatus(player, Hitbox);
30 if (flag3.HasValue)
31 {
32 flag2 = flag3.Value;
33 }
34 flag2 &= !player.lastMouseInterface;
35 bool flag4 = !Main.SmartCursorIsUsed && !PlayerInput.UsingGamepad;
36 if (!flag2)
37 {
38 if (!flag4)
39 {
40 return HoverStatus.SelectableButNotSelected;
41 }
42 return HoverStatus.NotSelectable;
43 }
44 Main.HasInteractibleObjectThatIsNotATile = true;
45 if (flag)
46 {
47 DoHoverEffect(player, Hitbox);
48 }
50 {
51 player.GamepadEnableGrappleCooldown();
52 }
53 bool flag5 = ShouldBlockInteraction(player, Hitbox);
54 if (Main.mouseRight && Main.mouseRightRelease && !flag5)
55 {
56 Main.mouseRightRelease = false;
57 player.tileInteractAttempted = true;
58 player.tileInteractionHappened = true;
59 player.releaseUseTile = false;
60 PerformInteraction(player, Hitbox);
61 }
62 if (!Main.SmartCursorIsUsed && !PlayerInput.UsingGamepad)
63 {
64 return HoverStatus.NotSelectable;
65 }
66 if (!flag4)
67 {
68 return HoverStatus.Selected;
69 }
70 return HoverStatus.NotSelectable;
71 }
bool ShouldBlockInteraction(Player player, Rectangle hitbox)
void PerformInteraction(Player player, Rectangle hitbox)
bool? AttemptOverridingHoverStatus(Player player, Rectangle rectangle)
static Matrix Invert(Matrix matrix)
Definition Matrix.cs:1694
bool Contains(int x, int y)
Definition Rectangle.cs:92
static Vector2 Transform(Vector2 position, Matrix matrix)
Definition Vector2.cs:317

References Terraria.GameContent.ObjectInteractions.AHoverInteractionChecker.AttemptOverridingHoverStatus(), Terraria.Entity.Center, Microsoft.Xna.Framework.Rectangle.Contains(), Terraria.GameContent.ObjectInteractions.AHoverInteractionChecker.DoHoverEffect(), Terraria.Player.GamepadEnableGrappleCooldown(), Terraria.Main.GameViewMatrix, Microsoft.Xna.Framework.Matrix.Invert(), Terraria.Player.IsInTileInteractionRange(), Terraria.Player.lastMouseInterface, Terraria.Main.mouseRight, Terraria.Main.mouseRightRelease, Terraria.Main.MouseScreen, Terraria.GameContent.ObjectInteractions.AHoverInteractionChecker.PerformInteraction(), Terraria.Main.ReverseGravitySupport(), Terraria.Main.screenPosition, Terraria.GameContent.ObjectInteractions.AHoverInteractionChecker.ShouldBlockInteraction(), Terraria.DataStructures.TileReachCheckSettings.Simple, Terraria.Main.SmartCursorIsUsed, Microsoft.Xna.Framework.Vector2.Transform(), Terraria.GameInput.PlayerInput.UsingGamepad, Microsoft.Xna.Framework.Point.X, and Microsoft.Xna.Framework.Point.Y.

Referenced by Terraria.Graphics.Renderers.ReturnGatePlayerRenderer.DrawReturnGateInWorld().