Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
NPCSmartInteractCandidateProvider.cs
Go to the documentation of this file.
2
4
6{
8 {
9 private int _npcIndexToTarget;
10
11 public float DistanceFromCursor { get; private set; }
12
13 public void WinCandidacy()
14 {
15 Main.SmartInteractNPC = _npcIndexToTarget;
16 Main.SmartInteractShowingGenuine = true;
17 }
18
19 public void Reuse(int npcIndex, float npcDistanceFromCursor)
20 {
21 _npcIndexToTarget = npcIndex;
22 DistanceFromCursor = npcDistanceFromCursor;
23 }
24 }
25
27
29 {
30 Main.SmartInteractNPC = -1;
31 }
32
34 {
35 candidate = null;
36 if (!settings.FullInteraction)
37 {
38 return false;
39 }
41 Vector2 mousevec = settings.mousevec;
42 mousevec.ToPoint();
43 bool flag = false;
44 int num = -1;
45 float npcDistanceFromCursor = -1f;
46 for (int i = 0; i < 200; i++)
47 {
48 NPC nPC = Main.npc[i];
49 if (nPC.active && nPC.townNPC && nPC.Hitbox.Intersects(value) && !flag)
50 {
51 float num2 = nPC.Hitbox.Distance(mousevec);
52 if (num == -1 || Main.npc[num].Hitbox.Distance(mousevec) > num2)
53 {
54 num = i;
55 npcDistanceFromCursor = num2;
56 }
57 if (num2 == 0f)
58 {
59 flag = true;
60 num = i;
61 npcDistanceFromCursor = num2;
62 break;
63 }
64 }
65 }
66 if (settings.DemandOnlyZeroDistanceTargets && !flag)
67 {
68 return false;
69 }
70 if (num != -1)
71 {
72 _candidate.Reuse(num, npcDistanceFromCursor);
73 candidate = _candidate;
74 return true;
75 }
76 return false;
77 }
78}
Vector2 Center
Definition Entity.cs:43
Rectangle Hitbox
Definition Entity.cs:164
bool ProvideCandidate(SmartInteractScanSettings settings, out ISmartInteractCandidate candidate)
static NPC[] npc
Definition Main.cs:1685
bool townNPC
Definition NPC.cs:537
static int tileRangeX
Definition Player.cs:2075
static int tileRangeY
Definition Player.cs:2077
static Rectangle CenteredRectangle(Vector2 center, Vector2 size)
Definition Utils.cs:604
bool Intersects(Rectangle value)
Definition Rectangle.cs:129