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_AnalyticsDataCollectionSupplyCostBaseModule.c
Go to the documentation of this file.
1
[
BaseContainerProps
()]
2
class
SCR_AnalyticsDataCollectionSupplyCostBaseModule
:
SCR_AnalyticsDataCollectionModule
3
{
4
protected
ref
map<int, ref SCR_AnalyticsPlayerSupplySpendingData>
m_mPlayerSupplySpendingData
=
new
map<int, ref SCR_AnalyticsPlayerSupplySpendingData>
();
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
26
AddPlayerResourceSpendingData
(playerId);
27
}
28
29
//------------------------------------------------------------------------------------------------
33
protected
void
AddSupplySpendingData
(
int
playerID,
string
itemName,
int
cost)
34
{
35
SCR_AnalyticsPlayerSupplySpendingData
spendingData =
m_mPlayerSupplySpendingData
.Get(playerID);
36
if
(!spendingData)
37
spendingData =
new
SCR_AnalyticsPlayerSupplySpendingData
();
38
39
spendingData.
AddItemSupplyCost
(itemName, cost);
40
m_mPlayerSupplySpendingData
.Set(playerID, spendingData);
41
42
AddPlayerResourceSpendingData
(playerID);
43
}
44
45
//------------------------------------------------------------------------------------------------
47
SCR_AnalyticsPlayerSupplySpendingData
GetPlayerSpendingData
(
int
playerID)
48
{
49
return
m_mPlayerSupplySpendingData
.Get(playerID);
50
}
51
52
//------------------------------------------------------------------------------------------------
54
void
AddPlayerResourceSpendingData
(
int
playerID)
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();
69
SCR_AnalyticsDataCollectionSupplyCostBaseModule
supplyCostModule;
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
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition
SCR_DestructionSynchronizationComponent.c:17
m_bIsEnabled
bool m_bIsEnabled
Definition
SCR_PlayerSupplyAllocationComponent.c:23
DbgUI
Definition
DbgUI.c:66
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
SCR_AnalyticsDataCollectionHelper
Definition
SCR_AnalyticsDataCollectionHelper.c:2
SCR_AnalyticsDataCollectionModule
Definition
SCR_AnalyticsDataCollectionModule.c:3
SCR_AnalyticsDataCollectionSupplyCostBaseModule
Definition
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c:3
SCR_AnalyticsDataCollectionSupplyCostBaseModule::AddSupplySpendingData
void AddSupplySpendingData(int playerID, string itemName, int cost)
Definition
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c:33
SCR_AnalyticsDataCollectionSupplyCostBaseModule::OnPlayerConnected
override void OnPlayerConnected(int playerId)
Definition
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c:12
SCR_AnalyticsDataCollectionSupplyCostBaseModule::GetPlayerSpendingData
SCR_AnalyticsPlayerSupplySpendingData GetPlayerSpendingData(int playerID)
Definition
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c:47
SCR_AnalyticsDataCollectionSupplyCostBaseModule::m_mPlayerSupplySpendingData
ref map< int, ref SCR_AnalyticsPlayerSupplySpendingData > m_mPlayerSupplySpendingData
Definition
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c:4
SCR_AnalyticsDataCollectionSupplyCostBaseModule::OnGameModeEnd
override void OnGameModeEnd()
Definition
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c:98
SCR_AnalyticsDataCollectionSupplyCostBaseModule::AddPlayerResourceSpendingData
void AddPlayerResourceSpendingData(int playerID)
Gets the supply spending data from all modules and inserts it into dataEvent.
Definition
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c:54
SCR_AnalyticsPlayerSupplySpendingData
Definition
SCR_AnalyticsPlayerSupplySpendingData.c:2
SCR_AnalyticsPlayerSupplySpendingData::GetItemSupplyCosts
map< string, int > GetItemSupplyCosts()
Definition
SCR_AnalyticsPlayerSupplySpendingData.c:18
SCR_AnalyticsPlayerSupplySpendingData::GetAggregateSupplyCost
int GetAggregateSupplyCost()
Definition
SCR_AnalyticsPlayerSupplySpendingData.c:6
SCR_AnalyticsPlayerSupplySpendingData::AddItemSupplyCost
void AddItemSupplyCost(string itemName, int cost)
Definition
SCR_AnalyticsPlayerSupplySpendingData.c:28
SCR_PlayerData
Definition
SCR_PlayerData.c:3
SCR_PlayerData::dataEvent
ref SCR_PlayerDataEvent dataEvent
Definition
SCR_PlayerData.c:49
SCR_PlayerData::GetPlayerData
static SCR_PlayerData GetPlayerData(int playerID)
Definition
SCR_PlayerData.c:131
map
Definition
Types.c:486
scripts
Game
DataCollection
AnalyticsDataCollectionModules
SCR_AnalyticsDataCollectionSupplyCostBaseModule.c
Generated by
1.17.0