Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TrackedProjectileReference.cs
Go to the documentation of this file.
1
using
System.IO
;
2
3
namespace
Terraria.DataStructures
;
4
5
public
struct
TrackedProjectileReference
6
{
7
public
int
ProjectileLocalIndex
{
get
;
private
set
; }
8
9
public
int
ProjectileOwnerIndex
{
get
;
private
set
; }
10
11
public
int
ProjectileIdentity
{
get
;
private
set
; }
12
13
public
int
ProjectileType
{
get
;
private
set
; }
14
15
public
bool
IsTrackingSomething
{
get
;
private
set
; }
16
17
public
void
Set
(
Projectile
proj)
18
{
19
ProjectileLocalIndex
= proj.
whoAmI
;
20
ProjectileOwnerIndex
= proj.
owner
;
21
ProjectileIdentity
= proj.
identity
;
22
ProjectileType
= proj.
type
;
23
IsTrackingSomething
=
true
;
24
}
25
26
public
void
Clear
()
27
{
28
ProjectileLocalIndex
= -1;
29
ProjectileOwnerIndex
= -1;
30
ProjectileIdentity
= -1;
31
ProjectileType
= -1;
32
IsTrackingSomething
=
false
;
33
}
34
35
public
void
Write
(
BinaryWriter
writer)
36
{
37
writer.Write((
short
)
ProjectileOwnerIndex
);
38
if
(
ProjectileOwnerIndex
!= -1)
39
{
40
writer.Write((
short
)
ProjectileIdentity
);
41
writer.Write((
short
)
ProjectileType
);
42
}
43
}
44
45
public
bool
IsTracking
(
Projectile
proj)
46
{
47
return
proj.whoAmI ==
ProjectileLocalIndex
;
48
}
49
50
public
void
TryReading
(
BinaryReader
reader)
51
{
52
int
num = reader.
ReadInt16
();
53
if
(num == -1)
54
{
55
Clear
();
56
return
;
57
}
58
int
expectedIdentity = reader.
ReadInt16
();
59
int
expectedType = reader.
ReadInt16
();
60
Projectile
projectile =
FindMatchingProjectile
(num, expectedIdentity, expectedType);
61
if
(projectile ==
null
)
62
{
63
Clear
();
64
}
65
else
66
{
67
Set
(projectile);
68
}
69
}
70
71
private
Projectile
FindMatchingProjectile
(
int
expectedOwner,
int
expectedIdentity,
int
expectedType)
72
{
73
if
(expectedOwner == -1)
74
{
75
return
null
;
76
}
77
for
(
int
i = 0; i < 1000; i++)
78
{
79
Projectile
projectile =
Main
.
projectile
[i];
80
if
(projectile.
type
== expectedType && projectile.
owner
== expectedOwner && projectile.
identity
== expectedIdentity)
81
{
82
return
projectile;
83
}
84
}
85
return
null
;
86
}
87
88
public
override
bool
Equals
(
object
obj)
89
{
90
if
(!(obj is
TrackedProjectileReference
other))
91
{
92
return
false
;
93
}
94
return
Equals
(other);
95
}
96
97
public
bool
Equals
(
TrackedProjectileReference
other)
98
{
99
if
(
ProjectileLocalIndex
== other.ProjectileLocalIndex &&
ProjectileOwnerIndex
== other.ProjectileOwnerIndex &&
ProjectileIdentity
== other.ProjectileIdentity)
100
{
101
return
ProjectileType
== other.ProjectileType;
102
}
103
return
false
;
104
}
105
106
public
override
int
GetHashCode
()
107
{
108
return
(((((
ProjectileLocalIndex
* 397) ^
ProjectileOwnerIndex
) * 397) ^
ProjectileIdentity
) * 397) ^
ProjectileType
;
109
}
110
111
public
static
bool
operator ==
(
TrackedProjectileReference
c1,
TrackedProjectileReference
c2)
112
{
113
return
c1.
Equals
(c2);
114
}
115
116
public
static
bool
operator !=
(
TrackedProjectileReference
c1,
TrackedProjectileReference
c2)
117
{
118
return
!c1.
Equals
(c2);
119
}
120
}
System.IO.BinaryReader.ReadInt16
virtual short ReadInt16()
Definition
BinaryReader.cs:202
System.IO.BinaryReader
Definition
BinaryReader.cs:8
System.IO.BinaryWriter
Definition
BinaryWriter.cs:10
Terraria.Entity.whoAmI
int whoAmI
Definition
Entity.cs:8
Terraria.Main.projectile
static Projectile[] projectile
Definition
Main.cs:1691
Terraria.Main
Definition
Main.cs:79
Terraria.Projectile.owner
int owner
Definition
Projectile.cs:116
Terraria.Projectile.identity
int identity
Definition
Projectile.cs:158
Terraria.Projectile.type
int type
Definition
Projectile.cs:108
Terraria.Projectile
Definition
Projectile.cs:31
System.IO
Definition
ConsoleStream.cs:3
Terraria.DataStructures
Definition
AEntitySource_OnHit.cs:1
Terraria.DataStructures.TrackedProjectileReference.ProjectileLocalIndex
int ProjectileLocalIndex
Definition
TrackedProjectileReference.cs:7
Terraria.DataStructures.TrackedProjectileReference.Set
void Set(Projectile proj)
Definition
TrackedProjectileReference.cs:17
Terraria.DataStructures.TrackedProjectileReference.Equals
override bool Equals(object obj)
Definition
TrackedProjectileReference.cs:88
Terraria.DataStructures.TrackedProjectileReference.operator==
static bool operator==(TrackedProjectileReference c1, TrackedProjectileReference c2)
Definition
TrackedProjectileReference.cs:111
Terraria.DataStructures.TrackedProjectileReference.ProjectileIdentity
int ProjectileIdentity
Definition
TrackedProjectileReference.cs:11
Terraria.DataStructures.TrackedProjectileReference.GetHashCode
override int GetHashCode()
Definition
TrackedProjectileReference.cs:106
Terraria.DataStructures.TrackedProjectileReference.Write
void Write(BinaryWriter writer)
Definition
TrackedProjectileReference.cs:35
Terraria.DataStructures.TrackedProjectileReference.Equals
bool Equals(TrackedProjectileReference other)
Definition
TrackedProjectileReference.cs:97
Terraria.DataStructures.TrackedProjectileReference.IsTracking
bool IsTracking(Projectile proj)
Definition
TrackedProjectileReference.cs:45
Terraria.DataStructures.TrackedProjectileReference.ProjectileType
int ProjectileType
Definition
TrackedProjectileReference.cs:13
Terraria.DataStructures.TrackedProjectileReference.ProjectileOwnerIndex
int ProjectileOwnerIndex
Definition
TrackedProjectileReference.cs:9
Terraria.DataStructures.TrackedProjectileReference.IsTrackingSomething
bool IsTrackingSomething
Definition
TrackedProjectileReference.cs:15
Terraria.DataStructures.TrackedProjectileReference.TryReading
void TryReading(BinaryReader reader)
Definition
TrackedProjectileReference.cs:50
Terraria.DataStructures.TrackedProjectileReference.operator!=
static bool operator!=(TrackedProjectileReference c1, TrackedProjectileReference c2)
Definition
TrackedProjectileReference.cs:116
Terraria.DataStructures.TrackedProjectileReference.FindMatchingProjectile
Projectile FindMatchingProjectile(int expectedOwner, int expectedIdentity, int expectedType)
Definition
TrackedProjectileReference.cs:71
Terraria.DataStructures.TrackedProjectileReference.Clear
void Clear()
Definition
TrackedProjectileReference.cs:26
Terraria.DataStructures.TrackedProjectileReference
Definition
TrackedProjectileReference.cs:6
source
Terraria.DataStructures
TrackedProjectileReference.cs
Generated by
1.10.0