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_AnalyticsDataCollectionXPEventsModule.c
Go to the documentation of this file.
1
[
BaseContainerProps
()]
2
class
SCR_AnalyticsDataCollectionXPEventsModule
:
SCR_AnalyticsDataCollectionModule
3
{
4
protected
ref
map<int, ref SCR_AnalyticsPlayerXPData>
m_mPlayerXPData
=
new
map<int, ref SCR_AnalyticsPlayerXPData>
();
5
6
#ifdef ENABLE_DIAG
7
protected
int
m_iSelectedPlayerDataIndex;
8
protected
SCR_AnalyticsPlayerXPData
m_SelectedPlayerData;
9
#endif
10
11
//------------------------------------------------------------------------------------------------
12
protected
override
void
Enable
()
13
{
14
super.Enable();
15
16
SCR_CharacterRankComponent
.s_OnRankChanged.Insert(
OnPlayerRankChanged
);
17
}
18
19
//------------------------------------------------------------------------------------------------
20
protected
override
void
Disable
()
21
{
22
super.Disable();
23
24
SCR_CharacterRankComponent
.s_OnRankChanged.Remove(
OnPlayerRankChanged
);
25
}
26
27
//------------------------------------------------------------------------------------------------
28
protected
override
void
OnGameModeEnd
()
29
{
30
Disable
();
31
}
32
33
//------------------------------------------------------------------------------------------------
34
protected
override
void
OnPlayerConnected
(
int
playerId)
35
{
36
PlayerController playerController =
GetGame
().GetPlayerManager().GetPlayerController(playerId);
37
if
(playerController)
38
{
39
SCR_PlayerXPHandlerComponent
xpHandlerComponent =
SCR_PlayerXPHandlerComponent
.Cast(playerController.FindComponent(
SCR_PlayerXPHandlerComponent
));
40
if
(xpHandlerComponent)
41
xpHandlerComponent.
GetOnPlayerXPChanged
().Insert(
OnPlayerXPChanged
);
42
}
43
44
if
(
m_mPlayerXPData
.Contains(playerId))
45
return
;
46
47
SCR_AnalyticsPlayerXPData
data
=
new
SCR_AnalyticsPlayerXPData
();
48
m_mPlayerXPData
.Insert(playerId,
data
);
49
50
SCR_PlayerData
playerData =
SCR_PlayerData
.
GetPlayerData
(playerId);
51
if
(!playerData)
52
return
;
53
54
playerData.
dataEvent
.name_rank_level =
SCR_Enum
.GetEnumName(SCR_ECharacterRank,
data
.GetRank());
55
}
56
57
//------------------------------------------------------------------------------------------------
58
protected
override
void
OnPlayerDisconnected
(
int
playerId,
KickCauseCode
cause,
IEntity
controlledEntity)
59
{
60
PlayerController playerController =
GetGame
().GetPlayerManager().GetPlayerController(playerId);
61
if
(playerController)
62
{
63
SCR_PlayerXPHandlerComponent
xpHandlerComponent =
SCR_PlayerXPHandlerComponent
.Cast(playerController.FindComponent(
SCR_PlayerXPHandlerComponent
));
64
if
(xpHandlerComponent)
65
xpHandlerComponent.
GetOnPlayerXPChanged
().Remove(
OnPlayerXPChanged
);
66
}
67
68
SCR_AnalyticsPlayerXPData
data
=
m_mPlayerXPData
.Get(playerId);
69
if
(!
data
)
70
return
;
71
72
SCR_PlayerData
playerData =
SCR_PlayerData
.
GetPlayerData
(playerId);
73
if
(!playerData)
74
return
;
75
76
playerData.
dataEvent
.name_rank_level =
SCR_Enum
.GetEnumName(SCR_ECharacterRank,
data
.GetRank());
77
}
78
79
//------------------------------------------------------------------------------------------------
80
protected
void
OnPlayerRankChanged
(SCR_ECharacterRank prevRank, SCR_ECharacterRank newRank,
IEntity
playerEntity,
bool
silent)
81
{
82
int
playerId =
GetGame
().GetPlayerManager().GetPlayerIdFromControlledEntity(playerEntity);
83
if
(playerId <= 0)
84
return
;
85
86
SCR_AnalyticsPlayerXPData
data
=
m_mPlayerXPData
.Get(playerId);
87
if
(!
data
)
88
return
;
89
90
// This event is called on spawn for players with non-default ranks
91
// No need to continue in that case as player rank did not actually change
92
if
(
data
.GetRank() == newRank)
93
return
;
94
95
data
.SetRank(newRank);
96
m_mPlayerXPData
.Set(playerId,
data
);
97
98
SCR_PlayerData
playerData =
SCR_PlayerData
.
GetPlayerData
(playerId);
99
if
(!playerData)
100
return
;
101
102
playerData.
dataEvent
.name_rank_level =
SCR_Enum
.GetEnumName(SCR_ECharacterRank,
data
.GetRank());
103
104
GetGame
().GetStatsApi().PlayerRankGained(playerId, playerData.
dataEvent
);
105
}
106
107
//------------------------------------------------------------------------------------------------
108
protected
void
OnPlayerXPChanged
(
int
playerId,
int
currentXP,
int
XPToAdd,
SCR_EXPRewards
rewardId)
109
{
110
if
(playerId <= 0)
111
return
;
112
113
SCR_AnalyticsPlayerXPData
data
=
m_mPlayerXPData
.Get(playerId);
114
if
(!
data
)
115
return
;
116
117
// new XP data added
118
if
(rewardId !=
SCR_EXPRewards
.UNDEFINED)
119
{
120
data
.AddXPReward(rewardId, XPToAdd);
121
m_mPlayerXPData
.Set(playerId,
data
);
122
}
123
124
SetPlayerXPData
(playerId,
data
);
125
}
126
127
//------------------------------------------------------------------------------------------------
128
protected
void
SetPlayerXPData
(
int
playerId,
SCR_AnalyticsPlayerXPData
data
)
129
{
130
SCR_PlayerData
playerData =
SCR_PlayerData
.
GetPlayerData
(playerId);
131
if
(!playerData)
132
return
;
133
134
map<SCR_EXPRewards, int>
rewardData =
data
.GetXPRewards();
135
array<string> xpRewardsString = {};
136
137
foreach
(
SCR_EXPRewards
reward,
int
amount : rewardData)
138
{
139
xpRewardsString.Insert(
string
.Format(
"%1: %2"
,
SCR_Enum
.GetEnumName(
SCR_EXPRewards
, reward), amount));
140
}
141
142
playerData.
dataEvent
.amt_xp_gained =
data
.GetCurrentXP();
143
playerData.
dataEvent
.array_rank_points_source =
SCR_AnalyticsDataCollectionHelper
.GetShortDataArray(xpRewardsString.ToString());
144
}
145
146
#ifdef ENABLE_DIAG
147
//------------------------------------------------------------------------------------------------
148
override
void
DrawContent()
149
{
150
if
(!
m_bIsEnabled
)
151
{
152
DbgUI
.Text(
"Module disabled!"
);
153
return
;
154
}
155
156
if
(
m_mPlayerXPData
.IsEmpty())
157
return
;
158
159
if
(DbgUI.Button(
"Previous Player"
))
160
OnSetSelectedPlayerIndex(m_iSelectedPlayerDataIndex - 1);
161
162
DbgUI.SameLine();
163
164
if
(DbgUI.Button(
"Next Player"
))
165
OnSetSelectedPlayerIndex(m_iSelectedPlayerDataIndex + 1);
166
167
m_SelectedPlayerData =
m_mPlayerXPData
.GetElement(m_iSelectedPlayerDataIndex);
168
169
DrawPlayerData();
170
}
171
172
//------------------------------------------------------------------------------------------------
173
void
DrawPlayerData()
174
{
175
if
(!m_SelectedPlayerData)
176
return
;
177
178
int
playerId =
m_mPlayerXPData
.GetKey(m_iSelectedPlayerDataIndex);
179
string
rankName = SCR_Enum.GetEnumName(SCR_ECharacterRank, m_SelectedPlayerData.
GetRank
());
180
DbgUI.Text(
string
.Format(
"Player %1: %2, XP: %3, RANK: %4"
, playerId,
GetGame
().GetPlayerManager().GetPlayerName(playerId), m_SelectedPlayerData.
GetCurrentXP
(), rankName));
181
182
map<SCR_EXPRewards, int> xpEventsRewards = m_SelectedPlayerData.
GetXPRewards
();
183
string
rewardName;
184
185
foreach
(
SCR_EXPRewards
rewardType,
int
rewardAmount : xpEventsRewards)
186
{
187
rewardName = SCR_Enum.GetEnumName(
SCR_EXPRewards
, rewardType);
188
DbgUI.Text(
string
.Format(
"%1: %2"
, rewardName, rewardAmount));
189
}
190
}
191
192
//------------------------------------------------------------------------------------------------
193
private
void
OnSetSelectedPlayerIndex(
int
index
)
194
{
195
m_iSelectedPlayerDataIndex = Math.Clamp(
index
, 0,
m_mPlayerXPData
.Count() - 1);
196
}
197
#endif
198
199
//------------------------------------------------------------------------------------------------
200
protected
void
~SCR_AnalyticsDataCollectionXPEventsModule
()
201
{
202
Disable
();
203
}
204
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
SCR_CharacterRankComponent
void SCR_CharacterRankComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_CharacterRankComponent.c:306
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition
SCR_DestructionSynchronizationComponent.c:17
data
Get all prefabs that have the spawner data
Definition
SCR_EntityCatalogManagerComponent.c:320
m_bIsEnabled
bool m_bIsEnabled
Definition
SCR_PlayerSupplyAllocationComponent.c:23
SCR_EXPRewards
SCR_EXPRewards
Definition
SCR_XPHandlerComponent.c:826
DbgUI
Definition
DbgUI.c:66
IEntity
Definition
IEntity.c:13
KickCauseCode
Definition
KickCauseCode.c:14
SCR_AnalyticsDataCollectionHelper
Definition
SCR_AnalyticsDataCollectionHelper.c:2
SCR_AnalyticsDataCollectionModule
Definition
SCR_AnalyticsDataCollectionModule.c:3
SCR_AnalyticsDataCollectionXPEventsModule
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:3
SCR_AnalyticsDataCollectionXPEventsModule::OnPlayerDisconnected
override void OnPlayerDisconnected(int playerId, KickCauseCode cause, IEntity controlledEntity)
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:58
SCR_AnalyticsDataCollectionXPEventsModule::Enable
override void Enable()
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:12
SCR_AnalyticsDataCollectionXPEventsModule::~SCR_AnalyticsDataCollectionXPEventsModule
void ~SCR_AnalyticsDataCollectionXPEventsModule()
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:200
SCR_AnalyticsDataCollectionXPEventsModule::OnPlayerConnected
override void OnPlayerConnected(int playerId)
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:34
SCR_AnalyticsDataCollectionXPEventsModule::OnGameModeEnd
override void OnGameModeEnd()
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:28
SCR_AnalyticsDataCollectionXPEventsModule::SetPlayerXPData
void SetPlayerXPData(int playerId, SCR_AnalyticsPlayerXPData data)
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:128
SCR_AnalyticsDataCollectionXPEventsModule::OnPlayerXPChanged
void OnPlayerXPChanged(int playerId, int currentXP, int XPToAdd, SCR_EXPRewards rewardId)
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:108
SCR_AnalyticsDataCollectionXPEventsModule::OnPlayerRankChanged
void OnPlayerRankChanged(SCR_ECharacterRank prevRank, SCR_ECharacterRank newRank, IEntity playerEntity, bool silent)
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:80
SCR_AnalyticsDataCollectionXPEventsModule::m_mPlayerXPData
ref map< int, ref SCR_AnalyticsPlayerXPData > m_mPlayerXPData
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:4
SCR_AnalyticsDataCollectionXPEventsModule::Disable
override void Disable()
Definition
SCR_AnalyticsDataCollectionXPEventsModule.c:20
SCR_AnalyticsPlayerXPData
Definition
SCR_AnalyticsPlayerXPData.c:2
SCR_AnalyticsPlayerXPData::GetXPRewards
map< SCR_EXPRewards, int > GetXPRewards()
Definition
SCR_AnalyticsPlayerXPData.c:33
SCR_AnalyticsPlayerXPData::GetRank
SCR_ECharacterRank GetRank()
Definition
SCR_AnalyticsPlayerXPData.c:19
SCR_AnalyticsPlayerXPData::GetCurrentXP
int GetCurrentXP()
Definition
SCR_AnalyticsPlayerXPData.c:9
SCR_Enum
Definition
SCR_Enum.c:2
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
SCR_PlayerXPHandlerComponent
Definition
SCR_PlayerXPHandlerComponent.c:12
SCR_PlayerXPHandlerComponent::GetOnPlayerXPChanged
OnPlayerXPChanged GetOnPlayerXPChanged()
Definition
SCR_PlayerXPHandlerComponent.c:107
map
Definition
Types.c:486
scripts
Game
DataCollection
AnalyticsDataCollectionModules
SCR_AnalyticsDataCollectionXPEventsModule.c
Generated by
1.17.0