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_VotingGroupLeader.c
Go to the documentation of this file.
1
[
BaseContainerProps
(configRoot:
true
),
SCR_BaseContainerCustomTitleEnum
(
EVotingType
,
"m_Type"
)]
2
class
SCR_VotingGroupLeader
:
SCR_VotingReferendum
3
{
4
protected
SCR_AIGroup
m_Group
;
5
6
//------------------------------------------------------------------------------------------------
7
override
bool
IsAvailable
(
int
value,
bool
isOngoing)
8
{
9
if
(!
m_Group
)
10
return
false
;
11
12
if
(value ==
m_Group
.GetLeaderID())
13
return
false
;
14
15
PlayerManager
playerManager =
GetGame
().GetPlayerManager();
16
if
(!
PlayerManager
)
17
return
false
;
18
19
if
(isOngoing && !playerManager.IsPlayerConnected(value))
20
return
false
;
21
22
SCR_GroupsManagerComponent
groupsManager =
SCR_GroupsManagerComponent
.GetInstance();
23
if
(!groupsManager)
24
return
false
;
25
26
SCR_AIGroup
localPlayerGroup = groupsManager.GetPlayerGroup(
SCR_PlayerController
.
GetLocalPlayerId
());
27
if
(!localPlayerGroup || localPlayerGroup !=
m_Group
)
28
return
false
;
29
30
return
true
;
31
}
32
33
//------------------------------------------------------------------------------------------------
34
override
int
GetPlayerCount
()
35
{
36
SCR_GroupsManagerComponent
groupsManager =
SCR_GroupsManagerComponent
.GetInstance();
37
if
(!groupsManager)
38
return
1;
39
40
SCR_AIGroup
playerGroup = groupsManager.GetPlayerGroup(
m_iValue
);
41
if
(!playerGroup)
42
return
1;
43
44
return
Math
.Max(playerGroup.
GetPlayerCount
(), 1);
45
}
46
47
//------------------------------------------------------------------------------------------------
48
override
bool
CanSendNotification
(
int
value)
49
{
50
SCR_GroupsManagerComponent
groupsManager =
SCR_GroupsManagerComponent
.GetInstance();
51
if
(!groupsManager)
52
return
false
;
53
54
SCR_AIGroup
playerGroup = groupsManager.GetPlayerGroup(value);
55
if
(!playerGroup)
56
return
false
;
57
58
int
localPlayerId =
SCR_PlayerController
.
GetLocalPlayerId
();
59
SCR_AIGroup
localPlayerGroup = groupsManager.GetPlayerGroup(localPlayerId);
60
if
(!localPlayerGroup)
61
return
false
;
62
63
return
(localPlayerGroup == playerGroup);
64
}
65
66
//------------------------------------------------------------------------------------------------
67
override
void
OnVotingEnd
(
int
value =
DEFAULT_VALUE
,
int
winner =
DEFAULT_VALUE
)
68
{
69
if
(
m_Group
)
70
{
71
m_Group
.GetOnPlayerRemoved().Remove(
OnPlayerRemoved
);
72
m_Group
.GetOnPlayerLeaderChanged().Remove(
OnLeaderChanged
);
73
}
74
75
if
(winner ==
DEFAULT_VALUE
)
76
return
;
77
78
if
(
Replication
.IsClient())
79
return
;
80
81
SCR_GroupsManagerComponent
groupsManager =
SCR_GroupsManagerComponent
.GetInstance();
82
if
(!groupsManager)
83
return
;
84
85
SCR_AIGroup
playerGroup = groupsManager.GetPlayerGroup(winner);
86
if
(!playerGroup)
87
return
;
88
89
playerGroup.
SetGroupLeader
(winner);
90
}
91
92
//------------------------------------------------------------------------------------------------
93
override
void
InitFromTemplate
(
SCR_VotingBase
template
,
int
startingPlayerID,
int
value,
float
remainingDuration)
94
{
95
SCR_GroupsManagerComponent
groupsManager =
SCR_GroupsManagerComponent
.GetInstance();
96
if
(groupsManager)
97
m_Group
= groupsManager.GetPlayerGroup(value);
98
99
if
(
m_Group
)
100
{
101
m_Group
.GetOnPlayerRemoved().Insert(
OnPlayerRemoved
);
102
m_Group
.GetOnPlayerLeaderChanged().Insert(
OnLeaderChanged
);
103
}
104
105
super.InitFromTemplate(
template
, startingPlayerID, value, remainingDuration);
106
}
107
108
//------------------------------------------------------------------------------------------------
112
void
OnPlayerRemoved
(
SCR_AIGroup
aiGroup,
int
playerId)
113
{
114
if
(aiGroup !=
m_Group
|| playerId !=
m_iValue
)
115
return
;
116
117
SCR_VotingManagerComponent
votingManager =
SCR_VotingManagerComponent
.GetInstance();
118
if
(!votingManager)
119
return
;
120
121
votingManager.EndVoting(
m_Type
,
m_iValue
,
EVotingOutcome
.FORCE_FAIL);
122
}
123
124
//------------------------------------------------------------------------------------------------
128
void
OnLeaderChanged
(
int
groupId,
int
playerId)
129
{
130
if
(groupId !=
m_Group
.GetGroupID() || playerId !=
m_iValue
)
131
return
;
132
133
SCR_VotingManagerComponent
votingManager =
SCR_VotingManagerComponent
.GetInstance();
134
if
(!votingManager)
135
return
;
136
137
votingManager.EndVoting(
m_Type
,
m_iValue
,
EVotingOutcome
.FORCE_FAIL);
138
}
139
}
EVotingOutcome
EVotingOutcome
Definition
EVotingOutcome.c:2
EVotingType
EVotingType
Definition
EVotingType.c:2
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
SCR_BaseContainerCustomTitleEnum
class SCR_CampaignHintStorage SCR_BaseContainerCustomTitleEnum(EHint, "m_eHintId")
Definition
SCR_CampaignHintStorage.c:22
SCR_GroupsManagerComponent
void SCR_GroupsManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_GroupsManagerComponent.c:1747
SCR_VotingManagerComponent
void SCR_VotingManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_VotingManagerComponent.c:1083
Math
Definition
Math.c:13
PlayerManager
Definition
PlayerManager.c:13
Replication
Main replication API.
Definition
Replication.c:14
SCR_AIGroup
Definition
SCR_AIGroup.c:75
SCR_AIGroup::GetPlayerCount
int GetPlayerCount(bool checkMasterAndSlaves=false)
Definition
SCR_AIGroup.c:989
SCR_AIGroup::SetGroupLeader
void SetGroupLeader(int playerID)
Called on the server (authority).
Definition
SCR_AIGroup.c:1316
SCR_PlayerController
Definition
SCR_PlayerController.c:31
SCR_PlayerController::GetLocalPlayerId
static int GetLocalPlayerId()
Returns either a valid ID of local player or 0.
Definition
SCR_PlayerController.c:481
SCR_VotingBase
Definition
SCR_VotingBase.c:6
SCR_VotingBase::m_Type
EVotingType m_Type
Definition
SCR_VotingBase.c:8
SCR_VotingBase::DEFAULT_VALUE
static const int DEFAULT_VALUE
Definition
SCR_VotingBase.c:49
SCR_VotingGroupLeader
Definition
SCR_VotingGroupLeader.c:3
SCR_VotingGroupLeader::CanSendNotification
override bool CanSendNotification(int value)
Definition
SCR_VotingGroupLeader.c:48
SCR_VotingGroupLeader::IsAvailable
override bool IsAvailable(int value, bool isOngoing)
Definition
SCR_VotingGroupLeader.c:7
SCR_VotingGroupLeader::OnPlayerRemoved
void OnPlayerRemoved(SCR_AIGroup aiGroup, int playerId)
Definition
SCR_VotingGroupLeader.c:112
SCR_VotingGroupLeader::GetPlayerCount
override int GetPlayerCount()
Definition
SCR_VotingGroupLeader.c:34
SCR_VotingGroupLeader::m_Group
SCR_AIGroup m_Group
Definition
SCR_VotingGroupLeader.c:4
SCR_VotingGroupLeader::OnLeaderChanged
void OnLeaderChanged(int groupId, int playerId)
Definition
SCR_VotingGroupLeader.c:128
SCR_VotingGroupLeader::InitFromTemplate
override void InitFromTemplate(SCR_VotingBase template, int startingPlayerID, int value, float remainingDuration)
Definition
SCR_VotingGroupLeader.c:93
SCR_VotingGroupLeader::OnVotingEnd
override void OnVotingEnd(int value=DEFAULT_VALUE, int winner=DEFAULT_VALUE)
Definition
SCR_VotingGroupLeader.c:67
SCR_VotingReferendum
Definition
SCR_VotingBase.c:464
SCR_VotingReferendum::m_iValue
int m_iValue
Definition
SCR_VotingBase.c:466
scripts
Game
FactionCommander
SCR_VotingGroupLeader.c
Generated by
1.17.0