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_TaskSolverManagerComponent.c
Go to the documentation of this file.
1
[
ComponentEditorProps
(
category
:
"GameScripted/Misc"
, description:
""
)]
2
class
SCR_TaskSolverManagerComponentClass
:
SCR_BaseGameModeComponentClass
3
{
4
}
5
6
class
SCR_TaskSolverManagerComponent :
SCR_BaseGameModeComponent
7
{
8
[
Attribute
()]
9
protected
ref
SCR_TaskSolverConfig
m_TaskSolverConfig;
10
11
protected
ref array<ref SCR_TaskSolverBase>
m_aActiveSolvers
= {};
12
13
protected
RplComponent
m_RplComponent
;
14
15
static
protected
int
s_iMaxSolverId = -1;
16
17
//------------------------------------------------------------------------------------------------
21
SCR_TaskSolverBase
CreateSolver
(
typename
solverType)
22
{
23
if
(!solverType)
24
return
null;
25
26
SCR_TaskSolverBase
solver =
SCR_TaskSolverBase
.Cast(solverType.Spawn());
27
if
(!solver)
28
return
null;
29
30
s_iMaxSolverId++;
31
solver.
SetId
(s_iMaxSolverId);
32
33
SetSolverEntry
(solver);
34
35
m_aActiveSolvers
.Insert(solver);
36
37
if
(
IsMaster
())
38
{
39
SCR_ResupplyTaskSolver
resupplyTaskSolver =
SCR_ResupplyTaskSolver
.Cast(solver);
40
if
(resupplyTaskSolver)
41
resupplyTaskSolver.
GetOnResupplyTaskSolverStateChanged
().Insert(
OnResupplyTaskSolverStateChanged
);
42
}
43
44
return
solver;
45
}
46
47
//------------------------------------------------------------------------------------------------
52
void
StartSolverTask
(
SCR_TaskSolverBase
solver,
SCR_Task
task
,
SCR_TaskSolverContext
context)
53
{
54
int
index
=
m_aActiveSolvers
.Find(solver);
55
if
(!
m_aActiveSolvers
.IsIndexValid(
index
))
56
return
;
57
58
solver.
Init
(
task
, context);
59
solver.
StartTaskSolving
();
60
}
61
62
//------------------------------------------------------------------------------------------------
65
void
RemoveSolver
(notnull
SCR_TaskSolverBase
solver)
66
{
67
int
idx
=
m_aActiveSolvers
.Find(solver);
68
if
(
idx
!= -1)
69
{
70
solver.Deinit();
71
m_aActiveSolvers
.Remove(
idx
);
72
}
73
}
74
75
//------------------------------------------------------------------------------------------------
78
SCR_TaskSolverEntry
GetTaskSolverEntry
(
typename
type
)
79
{
80
if
(!m_TaskSolverConfig)
81
return
null;
82
83
return
m_TaskSolverConfig.GetTaskSolverEntry(
type
);
84
}
85
86
//------------------------------------------------------------------------------------------------
88
void
Update
(
float
timeSlice)
89
{
90
foreach
(
SCR_TaskSolverBase
solver :
m_aActiveSolvers
)
91
{
92
solver.Update(timeSlice);
93
}
94
}
95
96
//------------------------------------------------------------------------------------------------
97
protected
bool
IsMaster
()
98
{
99
return
!
m_RplComponent
||
m_RplComponent
.IsMaster();
100
}
101
102
//------------------------------------------------------------------------------------------------
103
protected
void
OnResupplyTaskSolverStateChanged
(
int
solverId,
SCR_EResupplyTaskSolverState
resupplyTaskSolverState)
104
{
105
Rpc(
RpcDo_SetResupplyTaskSolverState
, solverId, resupplyTaskSolverState);
106
}
107
108
//------------------------------------------------------------------------------------------------
109
[
RplRpc
(
RplChannel
.Reliable,
RplRcver
.Broadcast)]
110
protected
void
RpcDo_SetResupplyTaskSolverState
(
int
solverId,
SCR_EResupplyTaskSolverState
resupplyTaskSolverState)
111
{
112
SCR_ResupplyTaskSolver
resupplyTaskSolver =
SCR_ResupplyTaskSolver
.Cast(
Find
(solverId));
113
if
(!resupplyTaskSolver)
114
return
;
115
116
resupplyTaskSolver.
SetResupplyTaskSolverState
(resupplyTaskSolverState);
117
}
118
119
//------------------------------------------------------------------------------------------------
120
protected
SCR_TaskSolverBase
Find
(
int
solverId)
121
{
122
foreach
(
SCR_TaskSolverBase
solver :
m_aActiveSolvers
)
123
{
124
if
(solver.GetId() == solverId)
125
return
solver;
126
}
127
128
return
null;
129
}
130
131
//------------------------------------------------------------------------------------------------
135
protected
SCR_TaskSolverBase
Find
(notnull
SCR_Task
task
)
136
{
137
foreach
(
SCR_TaskSolverBase
solver :
m_aActiveSolvers
)
138
{
139
if
(solver.GetTask() ==
task
)
140
return
solver;
141
}
142
143
return
null;
144
}
145
146
//------------------------------------------------------------------------------------------------
148
protected
void
SetSolverEntry
(
SCR_TaskSolverBase
solver)
149
{
150
if
(!m_TaskSolverConfig || !solver)
151
return
;
152
153
SCR_ResupplyTaskSolver
resupplySolver =
SCR_ResupplyTaskSolver
.Cast(solver);
154
if
(resupplySolver)
155
{
156
SCR_ResupplyTaskSolverEntry
entry =
SCR_ResupplyTaskSolverEntry
.Cast(
157
m_TaskSolverConfig.GetTaskSolverEntry(
SCR_ResupplyTaskSolverEntry
)
158
);
159
160
if
(entry)
161
resupplySolver.
SetResupplyTaskSolverEntry
(entry);
162
}
163
164
// Extend as needed for other types.
165
}
166
167
//------------------------------------------------------------------------------------------------
168
override
protected
void
OnPostInit
(
IEntity
owner)
169
{
170
s_iMaxSolverId = -1;
171
172
m_RplComponent
= RplComponent.Cast(owner.
FindComponent
(RplComponent));
173
}
174
175
//------------------------------------------------------------------------------------------------
177
override
protected
void
OnDelete
(
IEntity
owner)
178
{
179
SCR_ResupplyTaskSolver
resupplyTaskSolver;
180
foreach
(
SCR_TaskSolverBase
solver :
m_aActiveSolvers
)
181
{
182
solver.Deinit();
183
184
if
(
IsMaster
())
185
{
186
resupplyTaskSolver =
SCR_ResupplyTaskSolver
.Cast(solver);
187
if
(resupplyTaskSolver)
188
resupplyTaskSolver.
GetOnResupplyTaskSolverStateChanged
().Remove(
OnResupplyTaskSolverStateChanged
);
189
}
190
}
191
192
m_aActiveSolvers
.Clear();
193
super.OnDelete(owner);
194
}
195
}
idx
int idx
Definition
AIControlComponentSerializer.c:13
ComponentEditorProps
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
Definition
SCR_AIGroupUtilityComponent.c:12
SCR_BaseGameModeComponent
void SCR_BaseGameModeComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_BaseGameModeComponent.c:171
m_RplComponent
RplComponent m_RplComponent
Definition
SCR_CampaignBuildingManagerComponent.c:64
type
EDamageType type
Definition
SCR_DestructibleTreeV2.c:32
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition
SCR_DestructionSynchronizationComponent.c:17
SCR_EResupplyTaskSolverState
SCR_EResupplyTaskSolverState
Definition
SCR_EResupplyTaskSolverState.c:2
SCR_Task
void SCR_Task(IEntitySource src, IEntity parent)
Definition
SCR_Task.c:1938
task
from task
Definition
SCR_TaskNotificationConfigs.c:12
m_aActiveSolvers
ref array< ref SCR_TaskSolverBase > m_aActiveSolvers
Definition
SCR_TaskSolverManagerComponent.c:11
GetTaskSolverEntry
SCR_TaskSolverEntry GetTaskSolverEntry(typename type)
Definition
SCR_TaskSolverManagerComponent.c:78
RpcDo_SetResupplyTaskSolverState
void RpcDo_SetResupplyTaskSolverState(int solverId, SCR_EResupplyTaskSolverState resupplyTaskSolverState)
Definition
SCR_TaskSolverManagerComponent.c:110
CreateSolver
SCR_TaskSolverBase CreateSolver(typename solverType)
Definition
SCR_TaskSolverManagerComponent.c:21
RemoveSolver
void RemoveSolver(notnull SCR_TaskSolverBase solver)
Definition
SCR_TaskSolverManagerComponent.c:65
OnResupplyTaskSolverStateChanged
void OnResupplyTaskSolverStateChanged(int solverId, SCR_EResupplyTaskSolverState resupplyTaskSolverState)
Definition
SCR_TaskSolverManagerComponent.c:103
StartSolverTask
void StartSolverTask(SCR_TaskSolverBase solver, SCR_Task task, SCR_TaskSolverContext context)
Definition
SCR_TaskSolverManagerComponent.c:52
SetSolverEntry
void SetSolverEntry(SCR_TaskSolverBase solver)
Configures the solver with entries/config as needed.
Definition
SCR_TaskSolverManagerComponent.c:148
category
params category
Definition
SCR_VehicleDamageManagerComponent.c:302
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
SCR_BaseGameModeComponentClass
Definition
SCR_BaseGameModeComponent.c:3
SCR_ResupplyTaskSolverEntry
Definition
SCR_ResupplyTaskSolverEntry.c:3
SCR_ResupplyTaskSolver
Definition
SCR_ResupplyTaskSolver.c:2
SCR_ResupplyTaskSolver::GetOnResupplyTaskSolverStateChanged
ScriptInvokerInt2 GetOnResupplyTaskSolverStateChanged()
Definition
SCR_ResupplyTaskSolver.c:57
SCR_ResupplyTaskSolver::SetResupplyTaskSolverState
void SetResupplyTaskSolverState(SCR_EResupplyTaskSolverState state)
Definition
SCR_ResupplyTaskSolver.c:79
SCR_ResupplyTaskSolver::SetResupplyTaskSolverEntry
void SetResupplyTaskSolverEntry(SCR_ResupplyTaskSolverEntry entry)
Configures this solver with a resupply solver entry.
Definition
SCR_ResupplyTaskSolver.c:39
SCR_TaskSolverBase
Definition
SCR_TaskSolverBase.c:6
SCR_TaskSolverBase::StartTaskSolving
void StartTaskSolving()
Marks the task solver as in progress.
Definition
SCR_TaskSolverBase.c:61
SCR_TaskSolverBase::Init
void Init(SCR_Task task, SCR_TaskSolverContext context)
Definition
SCR_TaskSolverBase.c:112
SCR_TaskSolverBase::SetId
void SetId(int id)
Definition
SCR_TaskSolverBase.c:21
SCR_TaskSolverConfig
Definition
SCR_TaskSolverConfig.c:3
SCR_TaskSolverContext
Definition
SCR_TaskSolverContext.c:2
SCR_TaskSolverEntry
Definition
SCR_TaskSolverEntry.c:3
SCR_TaskSolverManagerComponentClass
Definition
SCR_TaskSolverManagerComponent.c:3
IsMaster
bool IsMaster()
Definition
SCR_DataCollectorComponent.c:205
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
RplRpc
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
Definition
EnNetwork.c:95
RplRcver
RplRcver
Definition
RplRcver.c:59
RplChannel
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.
Definition
RplChannel.c:14
Update
@ Update
Definition
SndComponentCallbacks.c:14
OnPostInit
@ OnPostInit
Definition
SndComponentCallbacks.c:15
OnDelete
@ OnDelete
Definition
SndComponentCallbacks.c:16
Find
proto int Find(T value)
scripts
Game
TaskSolver
SCR_TaskSolverManagerComponent.c
Generated by
1.17.0