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_TaskFinishHistoryManagerComponent.c
Go to the documentation of this file.
1
class
SCR_TaskFinishHistoryManagerComponentClass
:
SCR_BaseGameModeComponentClass
2
{
3
}
4
5
class
SCR_TaskFinishHistoryManagerComponent
:
SCR_BaseGameModeComponent
6
{
7
protected
ref array<ref SCR_TaskFinishEntry>
m_aFinished
= {};
8
9
protected
static
SCR_TaskFinishHistoryManagerComponent
s_Instance
;
10
11
//------------------------------------------------------------------------------------------------
12
static
SCR_TaskFinishHistoryManagerComponent
GetInstance()
13
{
14
return
s_Instance
;
15
}
16
17
//------------------------------------------------------------------------------------------------
19
array<ref SCR_TaskFinishEntry>
GetAll
()
20
{
21
array<ref SCR_TaskFinishEntry> outputTasks = {};
22
foreach
(
SCR_TaskFinishEntry
taskEntry :
m_aFinished
)
23
{
24
outputTasks.Insert(taskEntry);
25
}
26
27
return
outputTasks;
28
}
29
30
//------------------------------------------------------------------------------------------------
33
array<ref SCR_TaskFinishEntry>
GetByTaskID
(
string
taskID)
34
{
35
array<ref SCR_TaskFinishEntry> outputTasks = {};
36
foreach
(
SCR_TaskFinishEntry
taskEntry :
m_aFinished
)
37
{
38
if
(taskEntry.GetTaskID() == taskID)
39
outputTasks.Insert(taskEntry);
40
}
41
42
return
outputTasks;
43
}
44
45
//------------------------------------------------------------------------------------------------
48
array<ref SCR_TaskFinishEntry>
GetByPlayerID
(
int
playerID)
49
{
50
array<ref SCR_TaskFinishEntry> outputTasks = {};
51
array<int> assignees = {};
52
foreach
(
SCR_TaskFinishEntry
taskEntry :
m_aFinished
)
53
{
54
assignees = taskEntry.GetAssignees();
55
foreach
(
int
assigneeID : assignees)
56
{
57
if
(assigneeID == playerID)
58
{
59
outputTasks.Insert(taskEntry);
60
break
;
61
}
62
}
63
}
64
65
return
outputTasks;
66
}
67
68
//------------------------------------------------------------------------------------------------
71
array<ref SCR_TaskFinishEntry>
GetByFinalState
(
SCR_ETaskState
state)
72
{
73
array<ref SCR_TaskFinishEntry> outputTasks = {};
74
foreach
(
SCR_TaskFinishEntry
taskEntry :
m_aFinished
)
75
{
76
if
(taskEntry.GetFinalState() == state)
77
outputTasks.Insert(taskEntry);
78
}
79
80
return
outputTasks;
81
}
82
83
//------------------------------------------------------------------------------------------------
86
map<string, int>
GetAggregatedByPlayerID
(
int
playerID)
87
{
88
if
(
m_aFinished
.IsEmpty())
89
return
null;
90
91
map<string, int>
aggregatedTasks =
new
map<string, int>
();
92
string
taskTypeName;
93
foreach
(
SCR_TaskFinishEntry
entry :
m_aFinished
)
94
{
95
if
(entry.GetAssignees().Contains(playerID))
96
{
97
taskTypeName = entry.GetTaskTypeName();
98
aggregatedTasks.Set(taskTypeName, aggregatedTasks.Get(taskTypeName) + 1);
99
}
100
}
101
102
return
aggregatedTasks;
103
}
104
105
//------------------------------------------------------------------------------------------------
107
map<int, ref map<string, int>
>
GetAggregatedByTypeAndPlayer
()
108
{
109
if
(
m_aFinished
.IsEmpty())
110
return
null;
111
112
map<int, ref map<string, int>
> aggregatedTasks =
new
map<int, ref map<string, int>
>();
113
string
taskTypeName;
114
map<string, int>
assigneeAggregatedTasks =
new
map<string, int>
();
115
foreach
(
SCR_TaskFinishEntry
entry :
m_aFinished
)
116
{
117
taskTypeName = entry.GetTaskTypeName();
118
foreach
(
int
assignee : entry.GetAssignees())
119
{
120
assigneeAggregatedTasks = aggregatedTasks.Get(assignee);
121
if
(!assigneeAggregatedTasks)
122
assigneeAggregatedTasks =
new
map<string, int>
();
123
124
int
aggregatedTaskCount = 1;
125
if
(assigneeAggregatedTasks.Contains(taskTypeName))
126
aggregatedTaskCount += assigneeAggregatedTasks.Get(taskTypeName);
127
128
assigneeAggregatedTasks.Set(taskTypeName, aggregatedTaskCount);
129
aggregatedTasks.Set(assignee, assigneeAggregatedTasks);
130
}
131
}
132
133
return
aggregatedTasks;
134
}
135
136
//------------------------------------------------------------------------------------------------
137
protected
void
OnTaskStateChanged
(
SCR_Task
task
,
SCR_ETaskState
newState)
138
{
139
// We only care about finished task states
140
if
(!
IsFinishedState
(newState))
141
return
;
142
143
// No need to save a task without any assignees
144
if
(
task
.GetTaskAssigneeCount() <= 0)
145
return
;
146
147
RecordIfFinished
(
task
, newState);
148
}
149
150
//------------------------------------------------------------------------------------------------
151
protected
bool
IsFinishedState
(
SCR_ETaskState
state)
152
{
153
return
state ==
SCR_ETaskState
.COMPLETED || state ==
SCR_ETaskState
.FAILED || state ==
SCR_ETaskState
.CANCELLED;
154
}
155
156
//------------------------------------------------------------------------------------------------
157
protected
void
RecordIfFinished
(
SCR_Task
task
,
SCR_ETaskState
newState)
158
{
159
if
(!
task
)
160
return
;
161
162
if
(!
IsFinishedState
(newState))
163
return
;
164
165
SCR_TaskFinishEntry
entry =
new
SCR_TaskFinishEntry
();
166
entry.
Init
(
task
, newState);
167
m_aFinished
.Insert(entry);
168
}
169
170
//------------------------------------------------------------------------------------------------
171
override
void
OnPostInit
(
IEntity
owner)
172
{
173
super.OnPostInit(owner);
174
175
SCR_Task
.GetOnTaskStateChanged().Insert(
OnTaskStateChanged
);
176
}
177
178
//------------------------------------------------------------------------------------------------
179
override
void
OnDelete
(
IEntity
owner)
180
{
181
super.OnDelete(owner);
182
183
SCR_Task
.GetOnTaskStateChanged().Remove(
OnTaskStateChanged
);
184
}
185
186
//------------------------------------------------------------------------------------------------
187
override
bool
RplSave
(ScriptBitWriter writer)
188
{
189
int
finishedTasksCount =
m_aFinished
.Count();
190
writer.WriteInt(finishedTasksCount);
191
192
foreach
(
SCR_TaskFinishEntry
entry :
m_aFinished
)
193
{
194
entry.RplSave(writer);
195
}
196
197
return
true
;
198
}
199
200
//------------------------------------------------------------------------------------------------
201
override
bool
RplLoad
(
ScriptBitReader
reader)
202
{
203
int
finishedTasksCount;
204
reader.ReadInt(finishedTasksCount);
205
206
for
(
int
i = 0; i < finishedTasksCount; i++)
207
{
208
SCR_TaskFinishEntry
entry =
new
SCR_TaskFinishEntry
();
209
entry.
RplLoad
(reader);
210
m_aFinished
.Insert(entry);
211
}
212
213
return
true
;
214
}
215
216
//------------------------------------------------------------------------------------------------
220
void
SCR_TaskFinishHistoryManagerComponent
(
IEntityComponentSource
src,
IEntity
ent,
IEntity
parent)
221
{
222
if
(!s_Instance)
223
s_Instance =
this
;
224
}
225
226
//------------------------------------------------------------------------------------------------
227
// destructor
228
void
~SCR_TaskFinishHistoryManagerComponent
()
229
{
230
s_Instance = null;
231
}
232
}
RplLoad
override bool RplLoad(ScriptBitReader reader)
Definition
SCR_AIGroupInfoComponent.c:149
SCR_BaseGameModeComponent
void SCR_BaseGameModeComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_BaseGameModeComponent.c:171
RplSave
override bool RplSave(ScriptBitWriter writer)
Definition
SCR_CampaignBuildingCompositionComponent.c:549
OnTaskStateChanged
void OnTaskStateChanged(SCR_Task task, SCR_ETaskState newState)
Definition
SCR_CampaignFeedbackComponent.c:1980
s_Instance
SCR_SpawnerSlotManagerClass s_Instance
Class used for managing changes and removals of slots present in world.
SCR_Task
void SCR_Task(IEntitySource src, IEntity parent)
Definition
SCR_Task.c:1938
SCR_ETaskState
SCR_ETaskState
Definition
SCR_Task.c:3
GetAggregatedByPlayerID
map< string, int > GetAggregatedByPlayerID(int playerID)
Definition
SCR_TaskFinishHistoryManagerComponent.c:86
GetAll
array< ref SCR_TaskFinishEntry > GetAll()
Definition
SCR_TaskFinishHistoryManagerComponent.c:19
GetByTaskID
array< ref SCR_TaskFinishEntry > GetByTaskID(string taskID)
Definition
SCR_TaskFinishHistoryManagerComponent.c:33
RecordIfFinished
void RecordIfFinished(SCR_Task task, SCR_ETaskState newState)
Definition
SCR_TaskFinishHistoryManagerComponent.c:157
GetByPlayerID
array< ref SCR_TaskFinishEntry > GetByPlayerID(int playerID)
Definition
SCR_TaskFinishHistoryManagerComponent.c:48
IsFinishedState
bool IsFinishedState(SCR_ETaskState state)
Definition
SCR_TaskFinishHistoryManagerComponent.c:151
~SCR_TaskFinishHistoryManagerComponent
void ~SCR_TaskFinishHistoryManagerComponent()
Definition
SCR_TaskFinishHistoryManagerComponent.c:228
SCR_TaskFinishHistoryManagerComponent
void SCR_TaskFinishHistoryManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_TaskFinishHistoryManagerComponent.c:220
GetByFinalState
array< ref SCR_TaskFinishEntry > GetByFinalState(SCR_ETaskState state)
Definition
SCR_TaskFinishHistoryManagerComponent.c:71
m_aFinished
SCR_TaskFinishHistoryManagerComponentClass m_aFinished
GetAggregatedByTypeAndPlayer
map< int, ref map< string, int > > GetAggregatedByTypeAndPlayer()
Definition
SCR_TaskFinishHistoryManagerComponent.c:107
task
from task
Definition
SCR_TaskNotificationConfigs.c:12
IEntityComponentSource
Definition
IEntityComponentSource.c:13
IEntity
Definition
IEntity.c:13
SCR_BaseGameModeComponentClass
Definition
SCR_BaseGameModeComponent.c:3
SCR_TaskFinishEntry
Definition
SCR_TaskFinishEntry.c:2
SCR_TaskFinishEntry::RplLoad
bool RplLoad(ScriptBitReader reader)
Definition
SCR_TaskFinishEntry.c:90
SCR_TaskFinishEntry::Init
void Init(notnull SCR_Task task, SCR_ETaskState state)
Definition
SCR_TaskFinishEntry.c:124
SCR_TaskFinishHistoryManagerComponentClass
Definition
SCR_TaskFinishHistoryManagerComponent.c:2
ScriptBitReader
Definition
EnNetwork.c:199
map
Definition
Types.c:486
OnPostInit
@ OnPostInit
Definition
SndComponentCallbacks.c:15
OnDelete
@ OnDelete
Definition
SndComponentCallbacks.c:16
scripts
Game
Tasks
SCR_TaskFinishHistoryManagerComponent.c
Generated by
1.17.0