Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_UserActionWithOccupancy.c
Go to the documentation of this file.
1
class
SCR_UserActionWithOccupancy
:
ScriptedUserAction
2
{
3
protected
IEntity
m_Occupant
;
4
protected
RplId
m_OccupantRplId
;
5
//------------------------------------------------------------------------------------------------
6
bool
IsOccupied
()
7
{
8
return
m_Occupant
!= null;
9
}
10
11
//------------------------------------------------------------------------
12
bool
IsOccupiedBy
(
IEntity
ent)
13
{
14
if
(!ent)
15
return
false
;
16
17
if
(
m_Occupant
)
18
return
m_Occupant
== ent;
19
20
return
SCR_EntityHelper
.
EntityToRplId
(ent) ==
m_OccupantRplId
;
21
}
22
23
//------------------------------------------------------------------------
24
void
ReleaseOccupant
()
25
{
26
m_Occupant
= null;
27
m_OccupantRplId
=
RplId
.Invalid();
28
}
29
30
//------------------------------------------------------------------------------------------------
31
override
void
PerformAction
(
IEntity
pOwnerEntity,
IEntity
pUserEntity)
32
{
33
if
(
m_Occupant
&&
m_Occupant
!= pUserEntity)
34
return
;
35
36
if
(!
m_Occupant
)
37
{
38
m_Occupant
= pUserEntity;
39
m_OccupantRplId
=
SCR_EntityHelper
.
EntityToRplId
(pUserEntity);
40
StartAction
(pUserEntity);
41
}
42
else
43
{
44
ReleaseOccupant
();
45
StopAction
(pUserEntity);
46
}
47
}
48
//------------------------------------------------------------------------------------------------
49
void
StartAction
(
IEntity
pUserEntity);
50
//------------------------------------------------------------------------------------------------
51
void
StopAction
(
IEntity
pUserEntity);
52
//------------------------------------------------------------------------------------------------
53
// Writes the occupant and returns true if a valid occupant was written
54
protected
bool
SaveOccupant
(ScriptBitWriter writer)
55
{
56
if
(!
m_Occupant
)
57
{
58
writer.WriteBool(
false
);
59
return
false
;
60
}
61
62
RplComponent rplComp =
SCR_EntityHelper
.
GetEntityRplComponent
(
m_Occupant
);
63
if
(!rplComp)
64
{
65
writer.WriteBool(
false
);
66
return
false
;
67
}
68
69
writer.WriteBool(
true
);
70
writer.WriteRplId(rplComp.Id());
71
return
true
;
72
}
73
//------------------------------------------------------------------------------------------------
74
// Reads the occupant and returns true if occupant data exists (but occupant may be null due to not being streamed in)
75
protected
bool
LoadOccupant
(
ScriptBitReader
reader)
76
{
77
ReleaseOccupant
();
78
bool
occupantExists =
false
;
79
80
reader.ReadBool(occupantExists);
81
if
(!occupantExists)
82
return
false
;
83
84
RplId
rplId;
85
reader.ReadRplId(rplId);
86
m_OccupantRplId
= rplId;
87
m_Occupant
=
SCR_EntityHelper
.
RplIdToEntity
(rplId);
88
return
true
;
89
}
90
91
//------------------------------------------------------------------------------------------------
92
protected
override
bool
OnRplSave
(ScriptBitWriter writer)
93
{
94
if
(!super.OnRplSave(writer))
95
return
false
;
96
97
SaveOccupant
(writer);
98
return
true
;
99
}
100
101
//------------------------------------------------------------------------------------------------
102
protected
override
bool
OnRplLoad
(
ScriptBitReader
reader)
103
{
104
if
(!super.OnRplLoad(reader))
105
return
false
;
106
107
LoadOccupant
(reader);
108
return
true
;
109
}
110
}
IEntity
Definition
IEntity.c:13
RplId
Replication item identifier.
Definition
RplId.c:14
SCR_EntityHelper
Definition
SCR_EntityHelper.c:2
SCR_EntityHelper::RplIdToEntity
static IEntity RplIdToEntity(RplId id)
Definition
SCR_EntityHelper.c:521
SCR_EntityHelper::EntityToRplId
static RplId EntityToRplId(IEntity ent)
Definition
SCR_EntityHelper.c:507
SCR_EntityHelper::GetEntityRplComponent
static RplComponent GetEntityRplComponent(notnull IEntity entity)
Definition
SCR_EntityHelper.c:451
SCR_UserActionWithOccupancy
Definition
SCR_UserActionWithOccupancy.c:2
SCR_UserActionWithOccupancy::StartAction
void StartAction(IEntity pUserEntity)
SCR_UserActionWithOccupancy::OnRplSave
override bool OnRplSave(ScriptBitWriter writer)
Definition
SCR_UserActionWithOccupancy.c:92
SCR_UserActionWithOccupancy::OnRplLoad
override bool OnRplLoad(ScriptBitReader reader)
Definition
SCR_UserActionWithOccupancy.c:102
SCR_UserActionWithOccupancy::LoadOccupant
bool LoadOccupant(ScriptBitReader reader)
Definition
SCR_UserActionWithOccupancy.c:75
SCR_UserActionWithOccupancy::m_OccupantRplId
RplId m_OccupantRplId
Definition
SCR_UserActionWithOccupancy.c:4
SCR_UserActionWithOccupancy::m_Occupant
IEntity m_Occupant
Definition
SCR_UserActionWithOccupancy.c:3
SCR_UserActionWithOccupancy::StopAction
void StopAction(IEntity pUserEntity)
SCR_UserActionWithOccupancy::SaveOccupant
bool SaveOccupant(ScriptBitWriter writer)
Definition
SCR_UserActionWithOccupancy.c:54
SCR_UserActionWithOccupancy::IsOccupied
bool IsOccupied()
Definition
SCR_UserActionWithOccupancy.c:6
SCR_UserActionWithOccupancy::ReleaseOccupant
void ReleaseOccupant()
Definition
SCR_UserActionWithOccupancy.c:24
SCR_UserActionWithOccupancy::PerformAction
override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
Definition
SCR_UserActionWithOccupancy.c:31
SCR_UserActionWithOccupancy::IsOccupiedBy
bool IsOccupiedBy(IEntity ent)
Definition
SCR_UserActionWithOccupancy.c:12
ScriptBitReader
Definition
EnNetwork.c:199
ScriptedUserAction
Definition
ScriptedUserAction.c:13
StartAction
@ StartAction
Definition
EUserActionEvent.c:14
scripts
Game
AI
UserActions
SCR_UserActionWithOccupancy.c
Generated by
1.17.0