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_PlayerDelegateEditorComponent.c
Go to the documentation of this file.
1
[
ComponentEditorProps
(
category
:
"GameScripted/Editor"
, description:
""
, icon:
"WBData/ComponentEditorProps/componentEditor.png"
)]
2
class
SCR_PlayerDelegateEditorComponentClass
:
SCR_BaseEditorComponentClass
3
{
4
};
5
9
class
SCR_PlayerDelegateEditorComponent
:
SCR_BaseEditorComponent
10
{
11
[
Attribute
(
params
:
"et"
)]
12
protected
ResourceName
m_PlayerDelegatePrefab
;
13
14
protected
int
m_iPlayerID
;
15
protected
SCR_EditablePlayerDelegateComponent
m_PlayerDelegate
;
16
protected
ref
map<int, SCR_EditablePlayerDelegateComponent>
m_Delegates
=
new
map<int, SCR_EditablePlayerDelegateComponent>
;
17
protected
ref
ScriptInvoker
m_OnLimitedEditorChanged
=
new
ScriptInvoker
;
18
19
//------------------------------------------------------------------------------------------------
22
void
RegisterDelegate
(SCR_EditablePlayerDelegateComponent delegate)
23
{
24
m_Delegates
.Set(delegate.GetPlayerID(), delegate);
25
26
delegate.GetOnLimitedEditorChanged().Insert(
OnLimitedEditorChanged
);
27
OnLimitedEditorChanged
(delegate.GetPlayerID(), delegate.HasLimitedEditor());
28
}
29
30
//------------------------------------------------------------------------------------------------
33
void
UnegisterDelegate
(SCR_EditablePlayerDelegateComponent delegate)
34
{
35
m_Delegates
.Remove(delegate.GetPlayerID());
36
37
delegate.GetOnLimitedEditorChanged().Remove(
OnLimitedEditorChanged
);
38
OnLimitedEditorChanged
(delegate.GetPlayerID(),
true
);
39
}
40
41
//------------------------------------------------------------------------------------------------
45
int
GetDelegates
(out notnull
map<int, SCR_EditablePlayerDelegateComponent>
outDelegates)
46
{
47
return
outDelegates.Copy(
m_Delegates
);
48
}
49
50
//------------------------------------------------------------------------------------------------
54
SCR_EditablePlayerDelegateComponent
GetDelegate
(
int
playerID)
55
{
56
SCR_EditablePlayerDelegateComponent delegate;
57
m_Delegates
.Find(playerID, delegate);
58
return
delegate;
59
}
60
61
//------------------------------------------------------------------------------------------------
63
bool
HasPlayerWithUnlimitedEditor
()
64
{
65
if
(!
m_Delegates
||
m_Delegates
.IsEmpty())
66
return
false
;
67
68
for
(
int
i, count =
m_Delegates
.Count(); i < count; i++)
69
{
70
if
(!
m_Delegates
.GetElement(i))
71
continue
;
72
73
if
(!
m_Delegates
.GetElement(i).HasLimitedEditor())
74
return
true
;
75
}
76
return
false
;
77
}
78
79
//------------------------------------------------------------------------------------------------
82
ScriptInvoker
GetOnLimitedEditorChanged
()
83
{
84
return
m_OnLimitedEditorChanged
;
85
}
86
87
//------------------------------------------------------------------------------------------------
88
protected
void
OnLimitedEditorChanged
(
int
playerID,
bool
isLimited)
89
{
90
m_OnLimitedEditorChanged
.Invoke(playerID, isLimited);
91
}
92
93
//------------------------------------------------------------------------------------------------
94
protected
void
OnSpawnServer
(
int
playerID,
IEntity
controlledEntity)
95
{
96
if
(
m_PlayerDelegate
&&
m_iPlayerID
== playerID)
97
m_PlayerDelegate
.SetControlledEntity(controlledEntity);
98
}
99
100
//------------------------------------------------------------------------------------------------
101
protected
void
OnDeathServer
(notnull
SCR_InstigatorContextData
instigatorContextData)
102
{
103
if
(
m_PlayerDelegate
&&
m_iPlayerID
== instigatorContextData.GetVictimPlayerID())
104
m_PlayerDelegate
.SetControlledEntity(null);
105
}
106
107
//------------------------------------------------------------------------------------------------
108
protected
void
OnPlayerDeletedServer
(
int
playerID,
IEntity
controlledEntity)
109
{
110
OnDeathServer
(
new
SCR_InstigatorContextData
(playerID, controlledEntity, null,
Instigator
.CreateInstigatorGM(),
true
));
111
}
112
113
//------------------------------------------------------------------------------------------------
114
override
void
EOnEditorInitServer
()
115
{
116
Resource
entityResource =
Resource
.Load(
m_PlayerDelegatePrefab
);
117
IEntityComponentSource
componentSource =
SCR_EditablePlayerDelegateComponentClass
.GetEditableEntitySource(entityResource);
118
if
(!componentSource)
119
{
120
Print
(
string
.Format(
"SCR_EditablePlayerDelegateComponent missing in '%1'!"
,
m_PlayerDelegatePrefab
.GetPath()),
LogLevel
.WARNING);
121
return
;
122
}
123
124
if
(!componentSource.GetClassName().ToType().IsInherited(SCR_EditablePlayerDelegateComponent))
125
{
126
Print
(
string
.Format(
"'%1' contains editable entity entity of type %2, must be SCR_EditablePlayerDelegateComponent!"
,
m_PlayerDelegatePrefab
.GetPath(), componentSource.GetClassName()),
LogLevel
.WARNING);
127
return
;
128
}
129
130
SCR_EditorManagerEntity
editorManager =
GetManager
();
131
m_iPlayerID
= editorManager.GetPlayerID();
132
133
IEntity
delegateEntity =
GetGame
().SpawnEntityPrefab(entityResource);
134
m_PlayerDelegate
= SCR_EditablePlayerDelegateComponent.Cast(SCR_EditablePlayerDelegateComponent.GetEditableEntity(delegateEntity));
135
m_PlayerDelegate
.InitPlayerDelegate(editorManager,
m_iPlayerID
);
136
m_PlayerDelegate
.RestoreParentEntity();
137
138
SCR_BaseGameMode
gameMode =
SCR_BaseGameMode
.Cast(
GetGame
().
GetGameMode
());
139
if
(gameMode)
140
{
141
gameMode.
GetOnPlayerSpawned
().Insert(
OnSpawnServer
);
142
gameMode.
GetOnPlayerKilled
().Insert(
OnDeathServer
);
143
gameMode.
GetOnPlayerDeleted
().Insert(
OnPlayerDeletedServer
);
144
145
m_PlayerDelegate
.SetControlledEntity(SCR_PossessingManagerComponent.GetPlayerMainEntity(
m_iPlayerID
));
146
}
147
else
148
{
149
SCR_PlayerController
playerController =
SCR_PlayerController
.Cast(
GetGame
().
GetPlayerController
());
150
if
(playerController && playerController.GetPlayerId() ==
m_iPlayerID
)
151
{
152
m_PlayerDelegate
.SetControlledEntity(playerController.
GetMainEntity
());
153
}
154
}
155
}
156
157
//------------------------------------------------------------------------------------------------
158
override
void
EOnEditorDeleteServer
()
159
{
160
if
(
m_PlayerDelegate
)
161
m_PlayerDelegate
.Delete();
162
163
SCR_BaseGameMode
gameMode =
SCR_BaseGameMode
.Cast(
GetGame
().
GetGameMode
());
164
if
(gameMode)
165
{
166
gameMode.
GetOnPlayerSpawned
().Remove(
OnSpawnServer
);
167
gameMode.
GetOnPlayerKilled
().Remove(
OnDeathServer
);
168
gameMode.
GetOnPlayerDeleted
().Remove(
OnPlayerDeletedServer
);
169
}
170
}
171
};
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
ComponentEditorProps
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
Definition
SCR_AIGroupUtilityComponent.c:12
GetGameMode
SCR_BaseGameMode GetGameMode()
Definition
SCR_BaseGameModeComponent.c:15
SCR_EditorManagerEntity
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
Definition
SCR_EditorManagerEntity.c:2211
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
category
params category
Definition
SCR_VehicleDamageManagerComponent.c:302
IEntityComponentSource
Definition
IEntityComponentSource.c:13
IEntity
Definition
IEntity.c:13
Instigator
Definition
Instigator.c:13
Resource
Object holding reference to resource. In destructor release the resource.
Definition
Resource.c:25
ResourceName
Definition
ResourceName.c:13
SCR_BaseEditorComponentClass
Definition
SCR_BaseEditorComponent.c:3
SCR_BaseEditorComponent::SCR_BaseEditorComponent
void SCR_BaseEditorComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_BaseEditorComponent.c:683
SCR_BaseEditorComponent::GetManager
SCR_EditorManagerEntity GetManager()
Definition
SCR_BaseEditorComponent.c:459
SCR_BaseGameMode
Definition
SCR_BaseGameMode.c:139
SCR_BaseGameMode::GetOnPlayerSpawned
ScriptInvokerBase< SCR_BaseGameMode_PlayerIdAndEntity > GetOnPlayerSpawned()
Definition
SCR_BaseGameMode.c:629
SCR_BaseGameMode::GetOnPlayerDeleted
ScriptInvokerBase< SCR_BaseGameMode_PlayerIdAndEntity > GetOnPlayerDeleted()
Definition
SCR_BaseGameMode.c:637
SCR_BaseGameMode::GetOnPlayerKilled
ScriptInvokerBase< SCR_BaseGameMode_OnControllableDestroyed > GetOnPlayerKilled()
Definition
SCR_BaseGameMode.c:633
SCR_EditablePlayerDelegateComponentClass
Definition
SCR_EditablePlayerDelegateComponent.c:3
SCR_InstigatorContextData
Definition
SCR_InstigatorContextData.c:2
SCR_PlayerController
Definition
SCR_PlayerController.c:31
SCR_PlayerController::GetMainEntity
IEntity GetMainEntity()
Definition
SCR_PlayerController.c:446
SCR_PlayerDelegateEditorComponentClass
Definition
SCR_PlayerDelegateEditorComponent.c:3
SCR_PlayerDelegateEditorComponent
Definition
SCR_PlayerDelegateEditorComponent.c:10
SCR_PlayerDelegateEditorComponent::RegisterDelegate
void RegisterDelegate(SCR_EditablePlayerDelegateComponent delegate)
Definition
SCR_PlayerDelegateEditorComponent.c:22
SCR_PlayerDelegateEditorComponent::OnSpawnServer
void OnSpawnServer(int playerID, IEntity controlledEntity)
Definition
SCR_PlayerDelegateEditorComponent.c:94
SCR_PlayerDelegateEditorComponent::m_Delegates
ref map< int, SCR_EditablePlayerDelegateComponent > m_Delegates
Definition
SCR_PlayerDelegateEditorComponent.c:16
SCR_PlayerDelegateEditorComponent::GetOnLimitedEditorChanged
ScriptInvoker GetOnLimitedEditorChanged()
Definition
SCR_PlayerDelegateEditorComponent.c:82
SCR_PlayerDelegateEditorComponent::GetDelegate
SCR_EditablePlayerDelegateComponent GetDelegate(int playerID)
Definition
SCR_PlayerDelegateEditorComponent.c:54
SCR_PlayerDelegateEditorComponent::m_OnLimitedEditorChanged
ref ScriptInvoker m_OnLimitedEditorChanged
Definition
SCR_PlayerDelegateEditorComponent.c:17
SCR_PlayerDelegateEditorComponent::EOnEditorDeleteServer
override void EOnEditorDeleteServer()
Definition
SCR_PlayerDelegateEditorComponent.c:158
SCR_PlayerDelegateEditorComponent::m_iPlayerID
int m_iPlayerID
Definition
SCR_PlayerDelegateEditorComponent.c:14
SCR_PlayerDelegateEditorComponent::GetDelegates
int GetDelegates(out notnull map< int, SCR_EditablePlayerDelegateComponent > outDelegates)
Definition
SCR_PlayerDelegateEditorComponent.c:45
SCR_PlayerDelegateEditorComponent::OnPlayerDeletedServer
void OnPlayerDeletedServer(int playerID, IEntity controlledEntity)
Definition
SCR_PlayerDelegateEditorComponent.c:108
SCR_PlayerDelegateEditorComponent::EOnEditorInitServer
override void EOnEditorInitServer()
Definition
SCR_PlayerDelegateEditorComponent.c:114
SCR_PlayerDelegateEditorComponent::m_PlayerDelegate
SCR_EditablePlayerDelegateComponent m_PlayerDelegate
Definition
SCR_PlayerDelegateEditorComponent.c:15
SCR_PlayerDelegateEditorComponent::m_PlayerDelegatePrefab
ResourceName m_PlayerDelegatePrefab
Definition
SCR_PlayerDelegateEditorComponent.c:12
SCR_PlayerDelegateEditorComponent::OnDeathServer
void OnDeathServer(notnull SCR_InstigatorContextData instigatorContextData)
Definition
SCR_PlayerDelegateEditorComponent.c:101
SCR_PlayerDelegateEditorComponent::HasPlayerWithUnlimitedEditor
bool HasPlayerWithUnlimitedEditor()
Definition
SCR_PlayerDelegateEditorComponent.c:63
SCR_PlayerDelegateEditorComponent::UnegisterDelegate
void UnegisterDelegate(SCR_EditablePlayerDelegateComponent delegate)
Definition
SCR_PlayerDelegateEditorComponent.c:33
SCR_PlayerDelegateEditorComponent::OnLimitedEditorChanged
void OnLimitedEditorChanged(int playerID, bool isLimited)
Definition
SCR_PlayerDelegateEditorComponent.c:88
map
Definition
Types.c:486
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
GetPlayerController
proto external PlayerController GetPlayerController()
Definition
SCR_PlayerDeployMenuHandlerComponent.c:307
ScriptInvoker
ScriptInvokerBase< func > ScriptInvoker
Definition
tools.c:134
scripts
Game
Editor
Components
Editor
SCR_PlayerDelegateEditorComponent.c
Generated by
1.17.0