Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ProjectileSmartInteractCandidateProvider.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
using
Microsoft.Xna.Framework
;
3
4
namespace
Terraria.GameContent.ObjectInteractions
;
5
6
public
class
ProjectileSmartInteractCandidateProvider
:
ISmartInteractCandidateProvider
7
{
8
private
class
ReusableCandidate
:
ISmartInteractCandidate
9
{
10
private
int
_projectileIndexToTarget
;
11
12
public
float
DistanceFromCursor
{
get
;
private
set
; }
13
14
public
void
WinCandidacy
()
15
{
16
Main.SmartInteractProj =
_projectileIndexToTarget
;
17
Main.SmartInteractShowingGenuine =
true
;
18
}
19
20
public
void
Reuse
(
int
projectileIndex
,
float
projectileDistanceFromCursor
)
21
{
22
_projectileIndexToTarget
=
projectileIndex
;
23
DistanceFromCursor
=
projectileDistanceFromCursor
;
24
}
25
}
26
27
private
ReusableCandidate
_candidate
=
new
ReusableCandidate
();
28
29
public
void
ClearSelfAndPrepareForCheck
()
30
{
31
Main.SmartInteractProj = -1;
32
}
33
34
public
bool
ProvideCandidate
(
SmartInteractScanSettings
settings,
out
ISmartInteractCandidate
candidate
)
35
{
36
candidate
=
null
;
37
if
(!settings.
FullInteraction
)
38
{
39
return
false
;
40
}
41
List<int>
listOfProjectilesToInteractWithHack
= settings.
player
.
GetListOfProjectilesToInteractWithHack
();
42
bool
flag =
false
;
43
Vector2
mousevec = settings.
mousevec
;
44
mousevec.ToPoint();
45
int
num = -1;
46
float
projectileDistanceFromCursor
= -1f;
47
for
(
int
i = 0; i <
listOfProjectilesToInteractWithHack
.
Count
; i++)
48
{
49
int
num2
=
listOfProjectilesToInteractWithHack
[i];
50
Projectile
projectile =
Main
.
projectile
[
num2
];
51
if
(projectile.
active
)
52
{
53
float
num3
= projectile.
Hitbox
.Distance(mousevec);
54
if
(num == -1 ||
Main
.
projectile
[num].Hitbox.Distance(mousevec) >
num3
)
55
{
56
num =
num2
;
57
projectileDistanceFromCursor
=
num3
;
58
}
59
if
(
num3
== 0f)
60
{
61
flag =
true
;
62
num =
num2
;
63
projectileDistanceFromCursor
=
num3
;
64
break
;
65
}
66
}
67
}
68
if
(settings.
DemandOnlyZeroDistanceTargets
&& !flag)
69
{
70
return
false
;
71
}
72
if
(num != -1)
73
{
74
_candidate
.
Reuse
(num,
projectileDistanceFromCursor
);
75
candidate
=
_candidate
;
76
return
true
;
77
}
78
return
false
;
79
}
80
}
System.Collections.Generic.Dictionary.Count
int Count
Definition
Dictionary.cs:682
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
Terraria.Entity.Hitbox
Rectangle Hitbox
Definition
Entity.cs:164
Terraria.Entity.active
bool active
Definition
Entity.cs:10
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider.ReusableCandidate._projectileIndexToTarget
int _projectileIndexToTarget
Definition
ProjectileSmartInteractCandidateProvider.cs:10
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider.ReusableCandidate.Reuse
void Reuse(int projectileIndex, float projectileDistanceFromCursor)
Definition
ProjectileSmartInteractCandidateProvider.cs:20
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider.ReusableCandidate.DistanceFromCursor
float DistanceFromCursor
Definition
ProjectileSmartInteractCandidateProvider.cs:12
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider.ReusableCandidate.WinCandidacy
void WinCandidacy()
Definition
ProjectileSmartInteractCandidateProvider.cs:14
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider.ReusableCandidate
Definition
ProjectileSmartInteractCandidateProvider.cs:9
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider.ProvideCandidate
bool ProvideCandidate(SmartInteractScanSettings settings, out ISmartInteractCandidate candidate)
Definition
ProjectileSmartInteractCandidateProvider.cs:34
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider.ClearSelfAndPrepareForCheck
void ClearSelfAndPrepareForCheck()
Definition
ProjectileSmartInteractCandidateProvider.cs:29
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider._candidate
ReusableCandidate _candidate
Definition
ProjectileSmartInteractCandidateProvider.cs:27
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider
Definition
ProjectileSmartInteractCandidateProvider.cs:7
Terraria.Main.projectile
static Projectile[] projectile
Definition
Main.cs:1691
Terraria.Main
Definition
Main.cs:79
Terraria.Player.GetListOfProjectilesToInteractWithHack
List< int > GetListOfProjectilesToInteractWithHack()
Definition
Player.cs:29669
Terraria.Projectile
Definition
Projectile.cs:31
Terraria.GameContent.ObjectInteractions.ISmartInteractCandidateProvider
Definition
ISmartInteractCandidateProvider.cs:4
Terraria.GameContent.ObjectInteractions.ISmartInteractCandidate
Definition
ISmartInteractCandidate.cs:4
Microsoft.Xna.Framework
Definition
AlphaTestEffect.cs:1
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
Terraria.GameContent.ObjectInteractions
Definition
AHoverInteractionChecker.cs:5
Microsoft.Xna.Framework.Vector2
Definition
Vector2.cs:12
Terraria.GameContent.ObjectInteractions.SmartInteractScanSettings.DemandOnlyZeroDistanceTargets
bool DemandOnlyZeroDistanceTargets
Definition
SmartInteractScanSettings.cs:9
Terraria.GameContent.ObjectInteractions.SmartInteractScanSettings.player
Player player
Definition
SmartInteractScanSettings.cs:7
Terraria.GameContent.ObjectInteractions.SmartInteractScanSettings.mousevec
Vector2 mousevec
Definition
SmartInteractScanSettings.cs:13
Terraria.GameContent.ObjectInteractions.SmartInteractScanSettings.FullInteraction
bool FullInteraction
Definition
SmartInteractScanSettings.cs:11
Terraria.GameContent.ObjectInteractions.SmartInteractScanSettings
Definition
SmartInteractScanSettings.cs:6
source
Terraria.GameContent.ObjectInteractions
ProjectileSmartInteractCandidateProvider.cs
Generated by
1.10.0