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_VotingEditor.c
Go to the documentation of this file.
1
[
BaseContainerProps
(configRoot:
true
),
SCR_BaseContainerCustomTitleEnum
(
EVotingType
,
"m_Type"
)]
2
class
SCR_VotingEditorIn
:
SCR_VotingReferendum
3
{
4
[
Attribute
(
SCR_Enum
.GetDefault(
EEditorMode
.EDIT), uiwidget:
UIWidgets
.Flags, enums: ParamEnumArray.FromEnum(
EEditorMode
))]
5
protected
EEditorMode
m_EditorModes
;
6
7
protected
SCR_EditorManagerEntity
m_EditorManager
;
8
9
//------------------------------------------------------------------------------------------------
10
protected
bool
EvaluateEditor
(out
EVotingOutcome
outcome)
11
{
12
if
(!
m_EditorManager
|| !
m_EditorManager
.IsLimited())
13
{
14
outcome =
EVotingOutcome
.FORCE_FAIL;
15
return
true
;
16
}
17
return
false
;
18
}
19
20
//------------------------------------------------------------------------------------------------
21
override
bool
Evaluate
(out
EVotingOutcome
outcome)
22
{
23
if
(!
m_EditorManager
)
24
{
25
SCR_EditorManagerCore
core =
SCR_EditorManagerCore
.Cast(
SCR_EditorManagerCore
.GetInstance(
SCR_EditorManagerCore
));
26
m_EditorManager
= core.
GetEditorManager
(
GetValue
());
27
}
28
29
if
(
EvaluateEditor
(outcome))
30
return
true
;
31
else
32
return
super.Evaluate(outcome);
33
}
34
35
//------------------------------------------------------------------------------------------------
36
override
bool
IsAvailable
(
int
value,
bool
isOngoing)
37
{
38
//--- Only local player can nominate themselves, but everyone else can vote for them afterwards
39
if
(isOngoing ||
SCR_PlayerController
.
GetLocalPlayerId
() == value)
40
{
41
SCR_PlayerDelegateEditorComponent
editorDelegateManager =
SCR_PlayerDelegateEditorComponent
.Cast(
SCR_PlayerDelegateEditorComponent
.GetInstance(
SCR_PlayerDelegateEditorComponent
));
42
if
(editorDelegateManager)
43
{
44
//--- Cannot vote for existing GMs
45
SCR_EditablePlayerDelegateComponent playerEditorDelegate = editorDelegateManager.
GetDelegate
(value);
46
return
playerEditorDelegate && playerEditorDelegate.HasLimitedEditor();
47
}
48
}
49
return
false
;
50
}
51
52
//------------------------------------------------------------------------------------------------
53
override
bool
CanSendNotification
(
int
value)
54
{
55
if
(!
Replication
.IsRunning())
56
return
false
;
57
58
SCR_VotingManagerComponent
votingManager =
SCR_VotingManagerComponent
.GetInstance();
59
SCR_GameModeEditor
gameMode =
SCR_GameModeEditor
.Cast(
GetGame
().
GetGameMode
());
60
return
(votingManager && votingManager.GetHostPlayerID() != value) || (gameMode && gameMode.
GetGameMasterTarget
() !=
EGameModeEditorTarget
.EVERYBODY);
61
}
62
63
//------------------------------------------------------------------------------------------------
64
override
void
OnVotingEnd
(
int
value =
DEFAULT_VALUE
,
int
winner =
DEFAULT_VALUE
)
65
{
66
if
(winner ==
DEFAULT_VALUE
)
67
return
;
68
69
SCR_EditorManagerCore
core =
SCR_EditorManagerCore
.Cast(
SCR_EditorManagerCore
.GetInstance(
SCR_EditorManagerCore
));
70
SCR_EditorManagerEntity
editorManager = core.
GetEditorManager
(winner);
71
editorManager.AddEditorModes(
EEditorModeAccess
.BASE,
m_EditorModes
,
false
);
72
}
73
74
//------------------------------------------------------------------------------------------------
75
override
void
InitFromTemplate
(
SCR_VotingBase
template
,
int
startingPlayerID,
int
value,
float
remainingDuration)
76
{
77
super.InitFromTemplate(
template
, startingPlayerID, value, remainingDuration);
78
79
SCR_VotingEditorIn
templateEditor =
SCR_VotingEditorIn
.Cast(
template
);
80
m_EditorModes
= templateEditor.
m_EditorModes
;
81
}
82
}
83
84
[
BaseContainerProps
(),
SCR_BaseContainerCustomTitleEnum
(
EVotingType
,
"m_Type"
)]
85
class
SCR_VotingEditorOut:
SCR_VotingEditorIn
86
{
87
//------------------------------------------------------------------------------------------------
88
override
protected
bool
EvaluateEditor
(out
EVotingOutcome
outcome)
89
{
90
if
(!
m_EditorManager
||
m_EditorManager
.IsLimited())
91
{
92
outcome =
EVotingOutcome
.FORCE_FAIL;
93
return
true
;
94
}
95
return
false
;
96
}
97
98
//------------------------------------------------------------------------------------------------
99
override
protected
int
GetPlayerCount
()
100
{
101
return
Math
.Max(super.GetPlayerCount() - 1, 2);
//--- Ignore target player. 2 is a limit to prevent instant completion in a session with just 2 people.
102
}
103
104
//------------------------------------------------------------------------------------------------
105
override
bool
IsAvailable
(
int
value,
bool
isOngoing)
106
{
107
//--- Cannot vote for self
108
if
(
SCR_PlayerController
.
GetLocalPlayerId
() == value)
109
return
false
;
110
111
//--- Cannot vote host or admin out
112
SCR_VotingManagerComponent
votingManager =
SCR_VotingManagerComponent
.GetInstance();
113
if
(!votingManager || votingManager.GetHostPlayerID() == value ||
GetGame
().GetPlayerManager().HasPlayerRole(value,
EPlayerRole
.ADMINISTRATOR))
114
return
false
;
115
116
//--- Cannot vote for players who are not GMs
117
SCR_PlayerDelegateEditorComponent
editorDelegateManager =
SCR_PlayerDelegateEditorComponent
.Cast(
SCR_PlayerDelegateEditorComponent
.GetInstance(
SCR_PlayerDelegateEditorComponent
));
118
if
(!editorDelegateManager)
119
return
false
;
120
121
SCR_EditablePlayerDelegateComponent playerEditorDelegate = editorDelegateManager.
GetDelegate
(value);
122
return
playerEditorDelegate && !playerEditorDelegate.HasLimitedEditor();
123
}
124
125
//------------------------------------------------------------------------------------------------
126
override
bool
CanSendNotification
(
int
value)
127
{
128
SCR_GameModeEditor
gameMode =
SCR_GameModeEditor
.Cast(
GetGame
().
GetGameMode
());
129
return
gameMode && gameMode.
GetGameMasterTarget
() !=
EGameModeEditorTarget
.EVERYBODY;
130
}
131
132
//------------------------------------------------------------------------------------------------
133
override
void
OnVotingEnd
(
int
value = DEFAULT_VALUE,
int
winner = DEFAULT_VALUE)
134
{
135
if
(winner == DEFAULT_VALUE)
136
return
;
137
138
SCR_EditorManagerCore
core =
SCR_EditorManagerCore
.Cast(
SCR_EditorManagerCore
.GetInstance(
SCR_EditorManagerCore
));
139
SCR_EditorManagerEntity
editorManager = core.
GetEditorManager
(winner);
140
editorManager.RemoveEditorModes(
EEditorModeAccess
.BASE,
m_EditorModes
);
141
}
142
}
143
144
[
BaseContainerProps
(),
SCR_BaseContainerCustomTitleEnum
(
EVotingType
,
"m_Type"
)]
145
class
SCR_VotingEditorWithdraw
:
SCR_VotingEditorIn
146
{
147
//------------------------------------------------------------------------------------------------
148
override
bool
Evaluate(out
EVotingOutcome
outcome)
149
{
150
return
true
;
151
}
152
153
//------------------------------------------------------------------------------------------------
154
override
bool
IsAvailable(
int
value,
bool
isOngoing)
155
{
156
//--- Can apply only for self
157
if
(
SCR_PlayerController
.
GetLocalPlayerId
() != value)
158
return
false
;
159
160
//--- Cannot apply when a host or an admin
161
SCR_VotingManagerComponent
votingManager =
SCR_VotingManagerComponent
.GetInstance();
162
if
(!votingManager || votingManager.GetHostPlayerID() == value ||
GetGame
().GetPlayerManager().HasPlayerRole(value,
EPlayerRole
.ADMINISTRATOR))
163
return
false
;
164
165
//--- Cannot vote for players who are not GMs
166
SCR_PlayerDelegateEditorComponent
editorDelegateManager =
SCR_PlayerDelegateEditorComponent
.Cast(
SCR_PlayerDelegateEditorComponent
.GetInstance(
SCR_PlayerDelegateEditorComponent
));
167
if
(!editorDelegateManager)
168
return
false
;
169
170
SCR_EditablePlayerDelegateComponent playerEditorDelegate = editorDelegateManager.
GetDelegate
(value);
171
return
playerEditorDelegate && !playerEditorDelegate.HasLimitedEditor();
172
}
173
174
//------------------------------------------------------------------------------------------------
175
override
void
OnVotingEnd(
int
value =
DEFAULT_VALUE
,
int
winner =
DEFAULT_VALUE
)
176
{
177
if
(winner ==
DEFAULT_VALUE
)
178
return
;
179
180
SCR_EditorManagerCore
core =
SCR_EditorManagerCore
.Cast(
SCR_EditorManagerCore
.GetInstance(
SCR_EditorManagerCore
));
181
SCR_EditorManagerEntity
editorManager = core.
GetEditorManager
(winner);
182
editorManager.RemoveEditorModes(
EEditorModeAccess
.BASE,
m_EditorModes
);
183
}
184
}
EEditorModeAccess
EEditorModeAccess
Definition
EEditorModeAccess.c:2
EPlayerRole
EPlayerRole
Definition
EPlayerRole.c:8
EVotingOutcome
EVotingOutcome
Definition
EVotingOutcome.c:2
EVotingType
EVotingType
Definition
EVotingType.c:2
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
GetGameMode
SCR_BaseGameMode GetGameMode()
Definition
SCR_BaseGameModeComponent.c:15
SCR_EditorManagerEntity
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
Definition
SCR_EditorManagerEntity.c:2211
EGameModeEditorTarget
EGameModeEditorTarget
Definition
SCR_GameModeEditor.c:151
SCR_BaseContainerCustomTitleEnum
SCR_VotingEditorIn SCR_VotingReferendum SCR_BaseContainerCustomTitleEnum(EVotingType, "m_Type")
Definition
SCR_VotingEditor.c:84
m_EditorModes
EEditorMode m_EditorModes
Definition
SCR_VotingEditor.c:1
m_EditorManager
SCR_EditorManagerEntity m_EditorManager
Definition
SCR_VotingEditor.c:3
BaseContainerProps
SCR_VotingEditorIn SCR_VotingReferendum BaseContainerProps()
SCR_VotingManagerComponent
void SCR_VotingManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_VotingManagerComponent.c:1083
Math
Definition
Math.c:13
Replication
Main replication API.
Definition
Replication.c:14
SCR_EditorManagerCore
Core component to manage SCR_EditorManagerEntity.
Definition
SCR_EditorManagerCore.c:6
SCR_EditorManagerCore::GetEditorManager
SCR_EditorManagerEntity GetEditorManager()
Definition
SCR_EditorManagerCore.c:229
SCR_Enum
Definition
SCR_Enum.c:2
SCR_GameModeEditor
Definition
SCR_GameModeEditor.c:8
SCR_GameModeEditor::GetGameMasterTarget
EGameModeEditorTarget GetGameMasterTarget()
Definition
SCR_GameModeEditor.c:27
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_PlayerDelegateEditorComponent
Definition
SCR_PlayerDelegateEditorComponent.c:10
SCR_PlayerDelegateEditorComponent::GetDelegate
SCR_EditablePlayerDelegateComponent GetDelegate(int playerID)
Definition
SCR_PlayerDelegateEditorComponent.c:54
SCR_VotingBase
Definition
SCR_VotingBase.c:6
SCR_VotingBase::DEFAULT_VALUE
static const int DEFAULT_VALUE
Definition
SCR_VotingBase.c:49
SCR_VotingBase::GetPlayerCount
int GetPlayerCount()
Definition
SCR_VotingBase.c:400
SCR_VotingEditorIn
Definition
SCR_VotingEditor.c:3
SCR_VotingEditorIn::InitFromTemplate
override void InitFromTemplate(SCR_VotingBase template, int startingPlayerID, int value, float remainingDuration)
Definition
SCR_VotingEditor.c:75
SCR_VotingEditorIn::CanSendNotification
override bool CanSendNotification(int value)
Definition
SCR_VotingEditor.c:53
SCR_VotingEditorIn::m_EditorModes
EEditorMode m_EditorModes
Definition
SCR_VotingEditor.c:5
SCR_VotingEditorIn::IsAvailable
override bool IsAvailable(int value, bool isOngoing)
Definition
SCR_VotingEditor.c:36
SCR_VotingEditorIn::EvaluateEditor
bool EvaluateEditor(out EVotingOutcome outcome)
Definition
SCR_VotingEditor.c:10
SCR_VotingEditorIn::OnVotingEnd
override void OnVotingEnd(int value=DEFAULT_VALUE, int winner=DEFAULT_VALUE)
Definition
SCR_VotingEditor.c:64
SCR_VotingEditorIn::m_EditorManager
SCR_EditorManagerEntity m_EditorManager
Definition
SCR_VotingEditor.c:7
SCR_VotingEditorIn::Evaluate
override bool Evaluate(out EVotingOutcome outcome)
Definition
SCR_VotingEditor.c:21
SCR_VotingEditorWithdraw
Definition
SCR_VotingEditor.c:146
SCR_VotingReferendum
Definition
SCR_VotingBase.c:464
SCR_VotingReferendum::GetValue
override int GetValue()
Definition
SCR_VotingBase.c:576
UIWidgets
Definition
attributes.c:40
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EEditorMode
EEditorMode
Editor mode that defines overall functionality.
Definition
EEditorMode.c:6
scripts
Game
Components
Voting
SCR_VotingEditor.c
Generated by
1.17.0