4jcraft/Minecraft.Client/Platform/Linux/Sentient/SentientManager.h
2026-03-30 02:17:54 -05:00

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;