Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SmartInteractSystem.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
3
namespace
Terraria.GameContent.ObjectInteractions
;
4
5
public
class
SmartInteractSystem
6
{
7
private
List<ISmartInteractCandidateProvider>
_candidateProvidersByOrderOfPriority
=
new
List<ISmartInteractCandidateProvider>
();
8
9
private
List<ISmartInteractBlockReasonProvider>
_blockProviders
=
new
List<ISmartInteractBlockReasonProvider>
();
10
11
private
List<ISmartInteractCandidate>
_candidates
=
new
List<ISmartInteractCandidate>
();
12
13
public
SmartInteractSystem
()
14
{
15
_candidateProvidersByOrderOfPriority
.
Add
(
new
PotionOfReturnSmartInteractCandidateProvider
());
16
_candidateProvidersByOrderOfPriority
.
Add
(
new
ProjectileSmartInteractCandidateProvider
());
17
_candidateProvidersByOrderOfPriority
.
Add
(
new
NPCSmartInteractCandidateProvider
());
18
_candidateProvidersByOrderOfPriority
.
Add
(
new
TileSmartInteractCandidateProvider
());
19
_blockProviders
.
Add
(
new
BlockBecauseYouAreOverAnImportantTile
());
20
}
21
22
public
void
Clear
()
23
{
24
_candidates
.
Clear
();
25
foreach
(
ISmartInteractCandidateProvider
item
in
_candidateProvidersByOrderOfPriority
)
26
{
27
item.ClearSelfAndPrepareForCheck();
28
}
29
}
30
31
public
void
RunQuery
(
SmartInteractScanSettings
settings)
32
{
33
Clear
();
34
foreach
(
ISmartInteractBlockReasonProvider
blockProvider
in
_blockProviders
)
35
{
36
if
(
blockProvider
.ShouldBlockSmartInteract(settings))
37
{
38
return
;
39
}
40
}
41
foreach
(
ISmartInteractCandidateProvider
item
in
_candidateProvidersByOrderOfPriority
)
42
{
43
if
(item.ProvideCandidate(settings,
out
var
candidate
))
44
{
45
_candidates
.
Add
(
candidate
);
46
if
(
candidate
.DistanceFromCursor == 0f)
47
{
48
break
;
49
}
50
}
51
}
52
ISmartInteractCandidate
smartInteractCandidate
=
null
;
53
foreach
(
ISmartInteractCandidate
candidate2
in
_candidates
)
54
{
55
if
(
smartInteractCandidate
==
null
||
smartInteractCandidate
.DistanceFromCursor >
candidate2
.DistanceFromCursor)
56
{
57
smartInteractCandidate
=
candidate2
;
58
}
59
}
60
smartInteractCandidate
?.WinCandidacy();
61
}
62
}
System.Collections.Generic.Dictionary.Clear
void Clear()
Definition
Dictionary.cs:904
System.Collections.Generic.Dictionary.Add
void Add(TKey key, TValue value)
Definition
Dictionary.cs:873
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
Terraria.GameContent.ObjectInteractions.BlockBecauseYouAreOverAnImportantTile
Definition
BlockBecauseYouAreOverAnImportantTile.cs:4
Terraria.GameContent.ObjectInteractions.NPCSmartInteractCandidateProvider
Definition
NPCSmartInteractCandidateProvider.cs:6
Terraria.GameContent.ObjectInteractions.PotionOfReturnSmartInteractCandidateProvider
Definition
PotionOfReturnSmartInteractCandidateProvider.cs:6
Terraria.GameContent.ObjectInteractions.ProjectileSmartInteractCandidateProvider
Definition
ProjectileSmartInteractCandidateProvider.cs:7
Terraria.GameContent.ObjectInteractions.SmartInteractSystem._candidateProvidersByOrderOfPriority
List< ISmartInteractCandidateProvider > _candidateProvidersByOrderOfPriority
Definition
SmartInteractSystem.cs:7
Terraria.GameContent.ObjectInteractions.SmartInteractSystem.Clear
void Clear()
Definition
SmartInteractSystem.cs:22
Terraria.GameContent.ObjectInteractions.SmartInteractSystem._blockProviders
List< ISmartInteractBlockReasonProvider > _blockProviders
Definition
SmartInteractSystem.cs:9
Terraria.GameContent.ObjectInteractions.SmartInteractSystem.SmartInteractSystem
SmartInteractSystem()
Definition
SmartInteractSystem.cs:13
Terraria.GameContent.ObjectInteractions.SmartInteractSystem._candidates
List< ISmartInteractCandidate > _candidates
Definition
SmartInteractSystem.cs:11
Terraria.GameContent.ObjectInteractions.SmartInteractSystem.RunQuery
void RunQuery(SmartInteractScanSettings settings)
Definition
SmartInteractSystem.cs:31
Terraria.GameContent.ObjectInteractions.SmartInteractSystem
Definition
SmartInteractSystem.cs:6
Terraria.GameContent.ObjectInteractions.TileSmartInteractCandidateProvider
Definition
TileSmartInteractCandidateProvider.cs:8
Terraria.GameContent.ObjectInteractions.ISmartInteractBlockReasonProvider
Definition
ISmartInteractBlockReasonProvider.cs:4
Terraria.GameContent.ObjectInteractions.ISmartInteractCandidateProvider
Definition
ISmartInteractCandidateProvider.cs:4
Terraria.GameContent.ObjectInteractions.ISmartInteractCandidate
Definition
ISmartInteractCandidate.cs:4
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
Terraria.GameContent.ObjectInteractions
Definition
AHoverInteractionChecker.cs:5
Terraria.GameContent.ObjectInteractions.SmartInteractScanSettings
Definition
SmartInteractScanSettings.cs:6
source
Terraria.GameContent.ObjectInteractions
SmartInteractSystem.cs
Generated by
1.10.0