Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_AnalyticsDataCollectionTasksModule.c
Go to the documentation of this file.
1
14
16class SCR_AnalyticsDataCollectionTasksModule : SCR_AnalyticsDataCollectionModule
17{
18 protected ref array<ref SCR_SessionDataEvent> m_TaskCache;
19 protected int m_TaskCacheLifeTime = 15000;
20
21 //------------------------------------------------------------------------------------------------
22 protected override void Enable()
23 {
24 super.Enable();
25 m_TaskCache = {};
26 SCR_TaskSystem.GetOnTaskCreated().Insert(TaskCreated);
27 SCR_TaskSystem.GetOnTaskRemoved().Insert(TaskRemoved);
28 }
29
30 //------------------------------------------------------------------------------------------------
31 protected override void Disable()
32 {
33 super.Disable();
34 SCR_TaskSystem.GetOnTaskCreated().Remove(TaskCreated);
35 SCR_TaskSystem.GetOnTaskRemoved().Remove(TaskRemoved);
36 delete m_TaskCache;
37 }
38
39 //------------------------------------------------------------------------------------------------
42 protected void TaskCreated(SCR_Task task)
43 {
44 if (IsTaskRequested(task))
45 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.REQUEST_CREATED);
46 else
47 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.TASK_CREATED);
48 }
49
50 //------------------------------------------------------------------------------------------------
53 protected void TaskRemoved(SCR_Task task)
54 {
55 if (IsTaskRequested(task) && task.GetTaskState() == SCR_ETaskState.COMPLETED && SCR_EstablishBaseRequestedTaskEntity.Cast(task))
56 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.REQUEST_APPROVED);
57 else if (IsTaskRequested(task) && task.GetTaskState() == SCR_ETaskState.COMPLETED)
58 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.REQUEST_COMPLETED);
59 else if (IsTaskRequested(task) && task.GetTaskState() == SCR_ETaskState.CANCELLED)
60 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.REQUEST_CANCELED);
61 else if (IsTaskRequested(task))
62 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.REQUEST_FAILED);
63 else if(task.GetTaskState() == SCR_ETaskState.COMPLETED)
64 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.TASK_COMPLETED);
65 else if(task.GetTaskState() == SCR_ETaskState.FAILED)
66 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.TASK_FAILED);
67 else
68 SendSessionDataEvent(task, SCR_EAnalyticalTaskState.TASK_CANCELLED);
69 }
70
71 //------------------------------------------------------------------------------------------------
75 protected void SendSessionDataEvent(SCR_Task task, SCR_EAnalyticalTaskState state)
76 {
77 SCR_SessionDataEvent sessionEvent = new SCR_SessionDataEvent();
78 sessionEvent.task_name = task.GetTaskName();
79 sessionEvent.task_id = task.GetTaskID();
80 sessionEvent.task_state = typename.EnumToString(SCR_EAnalyticalTaskState, state);
81
82 if(task.GetAuthorID() != -1)
83 sessionEvent.task_author_id = SCR_PlayerIdentityUtils.GetPlayerIdentityId(task.GetAuthorID());
84 else
85 sessionEvent.task_author_id = task.GetAuthorID().ToString();
86
87 m_TaskCache.Insert(sessionEvent);
88
89 GetGame().GetStatsApi().CreateSessionEvent(sessionEvent, "taskUpdate");
90 GetGame().GetCallqueue().CallLater(RemoveElement, m_TaskCacheLifeTime, false, sessionEvent);
91 }
92
93 //------------------------------------------------------------------------------------------------
96 protected void RemoveElement(SCR_SessionDataEvent item)
97 {
98 m_TaskCache.RemoveItem(item);
99 }
100
101 //------------------------------------------------------------------------------------------------
104 protected bool IsTaskRequested(SCR_Task task)
105 {
106 return SCR_BaseRequestedTaskEntity.Cast(task) != null;
107 }
108}
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
SCR_EAnalyticalTaskState
Types of task to track for analytical purposes, not completely related with their real task state.
void SCR_Task(IEntitySource src, IEntity parent)
Definition SCR_Task.c:1938
SCR_ETaskState
Definition SCR_Task.c:3