mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-25 12:03:39 +00:00
106 lines
4.4 KiB
C++
106 lines
4.4 KiB
C++
#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,
|
|
};
|
|
|
|
int32_t Init();
|
|
int32_t Tick();
|
|
|
|
int32_t Flush();
|
|
|
|
bool RecordPlayerSessionStart(uint32_t dwUserId);
|
|
bool RecordPlayerSessionExit(uint32_t dwUserId, int exitStatus);
|
|
bool RecordHeartBeat(uint32_t dwUserId);
|
|
bool RecordLevelStart(uint32_t dwUserId, ESen_FriendOrMatch friendsOrMatch,
|
|
ESen_CompeteOrCoop competeOrCoop, int difficulty,
|
|
uint32_t numberOfLocalPlayers,
|
|
uint32_t numberOfOnlinePlayers);
|
|
bool RecordLevelExit(uint32_t dwUserId,
|
|
ESen_LevelExitStatus levelExitStatus);
|
|
bool RecordLevelSaveOrCheckpoint(uint32_t dwUserId,
|
|
int32_t saveOrCheckPointID,
|
|
int32_t saveSizeInBytes);
|
|
bool RecordLevelResume(uint32_t dwUserId, ESen_FriendOrMatch friendsOrMatch,
|
|
ESen_CompeteOrCoop competeOrCoop, int difficulty,
|
|
uint32_t numberOfLocalPlayers,
|
|
uint32_t numberOfOnlinePlayers,
|
|
int32_t saveOrCheckPointID);
|
|
bool RecordPauseOrInactive(uint32_t dwUserId);
|
|
bool RecordUnpauseOrActive(uint32_t dwUserId);
|
|
bool RecordMenuShown(uint32_t dwUserId, int32_t menuID,
|
|
int32_t optionalMenuSubID);
|
|
bool RecordAchievementUnlocked(uint32_t dwUserId, int32_t achievementID,
|
|
int32_t achievementGamerscore);
|
|
bool RecordMediaShareUpload(uint32_t dwUserId,
|
|
ESen_MediaDestination mediaDestination,
|
|
ESen_MediaType mediaType);
|
|
bool RecordUpsellPresented(uint32_t dwUserId, ESen_UpsellID upsellId,
|
|
int32_t marketplaceOfferID);
|
|
bool RecordUpsellResponded(uint32_t dwUserId, ESen_UpsellID upsellId,
|
|
int32_t marketplaceOfferID,
|
|
ESen_UpsellOutcome upsellOutcome);
|
|
bool RecordPlayerDiedOrFailed(uint32_t dwUserId, int32_t lowResMapX,
|
|
int32_t lowResMapY, int32_t lowResMapZ,
|
|
int32_t mapID, int32_t playerWeaponID,
|
|
int32_t enemyWeaponID,
|
|
ETelemetryChallenges enemyTypeID);
|
|
bool RecordEnemyKilledOrOvercome(uint32_t dwUserId, int32_t lowResMapX,
|
|
int32_t lowResMapY, int32_t lowResMapZ,
|
|
int32_t mapID, int32_t playerWeaponID,
|
|
int32_t enemyWeaponID,
|
|
ETelemetryChallenges enemyTypeID);
|
|
|
|
bool RecordSkinChanged(uint32_t dwUserId, uint32_t dwSkinId);
|
|
bool RecordBanLevel(uint32_t dwUserId);
|
|
bool RecordUnBanLevel(uint32_t dwUserId);
|
|
|
|
int32_t GetMultiplayerInstanceID();
|
|
int32_t GenerateMultiplayerInstanceId();
|
|
void SetMultiplayerInstanceId(int32_t value);
|
|
|
|
private:
|
|
float m_initialiseTime;
|
|
float m_lastHeartbeat;
|
|
bool m_bFirstFlush;
|
|
|
|
float m_fLevelStartTime[XUSER_MAX_COUNT];
|
|
|
|
int32_t m_multiplayerInstanceID;
|
|
uint32_t m_levelInstanceID;
|
|
|
|
// Helper functions to get the various common settings
|
|
int32_t GetSecondsSinceInitialize();
|
|
int32_t GetMode(uint32_t dwUserId);
|
|
int32_t GetSubMode(uint32_t dwUserId);
|
|
int32_t GetLevelId(uint32_t dwUserId);
|
|
int32_t GetSubLevelId(uint32_t dwUserId);
|
|
int32_t GetTitleBuildId();
|
|
int32_t GetLevelInstanceID();
|
|
int32_t GetSingleOrMultiplayer();
|
|
int32_t GetDifficultyLevel(int32_t diff);
|
|
int32_t GetLicense();
|
|
int32_t GetDefaultGameControls();
|
|
int32_t GetAudioSettings(uint32_t dwUserId);
|
|
int32_t GetLevelExitProgressStat1();
|
|
int32_t GetLevelExitProgressStat2();
|
|
};
|
|
|
|
extern CSentientManager SentientManager; |