Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c
Go to the documentation of this file.
3{
5
6 #ifdef ENABLE_DIAG
7 protected int m_iSelectedPlayerDataIndex;
8 protected SCR_AnalyticsPlayerSupplySpendingData m_SelectedPlayerData;
9 #endif
10
11 //------------------------------------------------------------------------------------------------
12 protected override void OnPlayerConnected(int playerId)
13 {
14 // Player has not spent any supplies yet
15 if (!m_mPlayerSupplySpendingData.Contains(playerId))
16 return;
17
18 SCR_PlayerData playerData = SCR_PlayerData.GetPlayerData(playerId);
19 if (!playerData)
20 return;
21
22 // Resource spending data has been added already by another supply cost module, no need to add it again
23 if (playerData.dataEvent.amt_res_spent != 0)
24 return;
25
27 }
28
29 //------------------------------------------------------------------------------------------------
33 protected void AddSupplySpendingData(int playerID, string itemName, int cost)
34 {
36 if (!spendingData)
37 spendingData = new SCR_AnalyticsPlayerSupplySpendingData();
38
39 spendingData.AddItemSupplyCost(itemName, cost);
40 m_mPlayerSupplySpendingData.Set(playerID, spendingData);
41
43 }
44
45 //------------------------------------------------------------------------------------------------
51
52 //------------------------------------------------------------------------------------------------
55 {
56 IEntity gameModeEntity = GetGame().GetDataCollector().GetOwner();
57 if (!gameModeEntity)
58 return;
59
60 SCR_PlayerData playerData = SCR_PlayerData.GetPlayerData(playerID);
61 if (!playerData)
62 return;
63
64 SCR_AnalyticsDataCollectionComponent analyticsDataCollector = SCR_AnalyticsDataCollectionComponent.Cast(gameModeEntity.FindComponent(SCR_AnalyticsDataCollectionComponent));
65 if (!analyticsDataCollector)
66 return;
67
68 array<ref SCR_AnalyticsDataCollectionModule> modules = analyticsDataCollector.GetAllModules();
70 int resourcesSpent;
71 map<string, int> itemSpendingData;
72 array<string> resourceConsumptionArray = {};
73
74 foreach (SCR_AnalyticsDataCollectionModule module : modules)
75 {
76 supplyCostModule = SCR_AnalyticsDataCollectionSupplyCostBaseModule.Cast(module);
77 if (!supplyCostModule)
78 continue;
79
80 SCR_AnalyticsPlayerSupplySpendingData playerSpendingData = supplyCostModule.GetPlayerSpendingData(playerID);
81 if (!playerSpendingData)
82 continue;
83
84 resourcesSpent += playerSpendingData.GetAggregateSupplyCost();
85 itemSpendingData = playerSpendingData.GetItemSupplyCosts();
86
87 foreach (string itemName, int spentSupplies : itemSpendingData)
88 {
89 resourceConsumptionArray.Insert(string.Format("%1: %2", itemName, spentSupplies));
90 }
91 }
92
93 playerData.dataEvent.amt_res_spent = resourcesSpent;
94 playerData.dataEvent.amt_res_consumption = SCR_AnalyticsDataCollectionHelper.GetShortDataArray(resourceConsumptionArray.ToString());
95 }
96
97 //------------------------------------------------------------------------------------------------
98 protected override void OnGameModeEnd()
99 {
100 // TODO: Handle data to send them to analytics db
101 }
102
103 #ifdef ENABLE_DIAG
104 //------------------------------------------------------------------------------------------------
105 override void DrawContent()
106 {
107 if (!m_bIsEnabled)
108 {
109 DbgUI.Text("Module disabled!");
110 return;
111 }
112
113 if (m_mPlayerSupplySpendingData.IsEmpty())
114 {
115 DbgUI.Text("No data recorded yet.");
116 return;
117 }
118
119 if (DbgUI.Button("Previous Player"))
120 OnSetSelectedPlayerIndex(m_iSelectedPlayerDataIndex - 1);
121
122 DbgUI.SameLine();
123
124 if (DbgUI.Button("Next Player"))
125 OnSetSelectedPlayerIndex(m_iSelectedPlayerDataIndex + 1);
126
127 m_SelectedPlayerData = m_mPlayerSupplySpendingData.GetElement(m_iSelectedPlayerDataIndex);
128
129 DrawPlayerData();
130 }
131
132 //------------------------------------------------------------------------------------------------
133 protected void DrawPlayerData()
134 {
135 if (!m_SelectedPlayerData)
136 return;
137
138 int playerId = m_mPlayerSupplySpendingData.GetKey(m_iSelectedPlayerDataIndex);
139 DbgUI.Text(string.Format("Player %1: %2", playerId, GetGame().GetPlayerManager().GetPlayerName(playerId)));
140
141 map <string, int> itemSupplyCosts = m_SelectedPlayerData.GetItemSupplyCosts();
142 foreach (string itemName, int cost : itemSupplyCosts)
143 {
144 DbgUI.Text(string.Format("%1: %2", itemName, cost));
145 }
146 }
147
148 //------------------------------------------------------------------------------------------------
149 private void OnSetSelectedPlayerIndex(int index)
150 {
151 m_iSelectedPlayerDataIndex = Math.Clamp(index, 0, m_mPlayerSupplySpendingData.Count() - 1);
152 }
153 #endif
154}
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition DbgUI.c:66
proto external Managed FindComponent(typename typeName)
SCR_AnalyticsPlayerSupplySpendingData GetPlayerSpendingData(int playerID)
ref map< int, ref SCR_AnalyticsPlayerSupplySpendingData > m_mPlayerSupplySpendingData
void AddPlayerResourceSpendingData(int playerID)
Gets the supply spending data from all modules and inserts it into dataEvent.
ref SCR_PlayerDataEvent dataEvent
static SCR_PlayerData GetPlayerData(int playerID)
Definition Types.c:486