1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#pragma once
#include "MinecraftTelemetry.h"
class CSentientManager
{
public:
enum ETelemetryEvent
{
eTelemetry_PlayerSessionStart,
eTelemetry_PlayerSessionExit,
eTelemetry_HeartBeat,
eTelemetry_LevelStart,
eTelemetry_LevelExit,
eTelemetry_LevelSaveOrCheckpoint,
eTelemetry_PauseOrInactive,
eTelemetry_UnpauseOrActive,
eTelemetry_MenuShown,
eTelemetry_AchievementUnlocked,
eTelemetry_MediaShareUpload,
eTelemetry_UpsellPresented,
eTelemetry_UpsellResponded,
eTelemetry_PlayerDiedOrFailed,
eTelemetry_EnemyKilledOrOvercome,
};
HRESULT Init();
HRESULT Tick();
HRESULT Flush();
BOOL RecordPlayerSessionStart(DWORD dwUserId);
BOOL RecordPlayerSessionExit(DWORD dwUserId, int exitStatus);
BOOL RecordHeartBeat(DWORD dwUserId);
BOOL RecordLevelStart(DWORD dwUserId, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, DWORD numberOfLocalPlayers, DWORD numberOfOnlinePlayers);
BOOL RecordLevelExit(DWORD dwUserId, ESen_LevelExitStatus levelExitStatus);
BOOL RecordLevelSaveOrCheckpoint(DWORD dwUserId, INT saveOrCheckPointID, INT saveSizeInBytes);
BOOL RecordLevelResume(DWORD dwUserId, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, DWORD numberOfLocalPlayers, DWORD numberOfOnlinePlayers, INT saveOrCheckPointID);
BOOL RecordPauseOrInactive(DWORD dwUserId);
BOOL RecordUnpauseOrActive(DWORD dwUserId);
BOOL RecordMenuShown(DWORD dwUserId, INT menuID, INT optionalMenuSubID);
BOOL RecordAchievementUnlocked(DWORD dwUserId, INT achievementID, INT achievementGamerscore);
BOOL RecordMediaShareUpload(DWORD dwUserId, ESen_MediaDestination mediaDestination, ESen_MediaType mediaType);
BOOL RecordUpsellPresented(DWORD dwUserId, ESen_UpsellID upsellId, INT marketplaceOfferID);
BOOL RecordUpsellResponded(DWORD dwUserId, ESen_UpsellID upsellId, INT marketplaceOfferID, ESen_UpsellOutcome upsellOutcome);
BOOL RecordPlayerDiedOrFailed(DWORD dwUserId, INT lowResMapX, INT lowResMapY, INT lowResMapZ, INT mapID, INT playerWeaponID, INT enemyWeaponID, ETelemetryChallenges enemyTypeID);
BOOL RecordEnemyKilledOrOvercome(DWORD dwUserId, INT lowResMapX, INT lowResMapY, INT lowResMapZ, INT mapID, INT playerWeaponID, INT enemyWeaponID, ETelemetryChallenges enemyTypeID);
BOOL RecordSkinChanged(DWORD dwUserId, DWORD dwSkinId);
BOOL RecordBanLevel(DWORD dwUserId);
BOOL RecordUnBanLevel(DWORD dwUserId);
INT GetMultiplayerInstanceID();
INT GenerateMultiplayerInstanceId();
void SetMultiplayerInstanceId(INT value);
private:
float m_initialiseTime;
float m_lastHeartbeat;
bool m_bFirstFlush;
float m_fLevelStartTime[XUSER_MAX_COUNT];
INT m_multiplayerInstanceID;
DWORD m_levelInstanceID;
// Helper functions to get the various common settings
INT GetSecondsSinceInitialize();
INT GetMode(DWORD dwUserId);
INT GetSubMode(DWORD dwUserId);
INT GetLevelId(DWORD dwUserId);
INT GetSubLevelId(DWORD dwUserId);
INT GetTitleBuildId();
INT GetLevelInstanceID();
INT GetSingleOrMultiplayer();
INT GetDifficultyLevel(INT diff);
INT GetLicense();
INT GetDefaultGameControls();
INT GetAudioSettings(DWORD dwUserId);
INT GetLevelExitProgressStat1();
INT GetLevelExitProgressStat2();
};
extern CSentientManager SentientManager;
|