4jcraft/Minecraft.Client/Common/Telemetry/TelemetryManager.h
2026-03-02 23:27:12 +04:00

135 lines
4.7 KiB
C++

#pragma once
#include "../../Common/UI/UIEnums.h"
#include "../../Xbox/Sentient/SentientTelemetryCommon.h"
enum ETelemetryChallenges
{
eTelemetryChallenges_Unknown = 0,
eTelemetryTutorial_TrialStart,
eTelemetryTutorial_Halfway,
eTelemetryTutorial_Complete,
eTelemetryTutorial_Inventory,
eTelemetryTutorial_Crafting,
eTelemetryTutorial_Furnace,
eTelemetryTutorial_Fishing,
eTelemetryTutorial_Minecart,
eTelemetryTutorial_Boat,
eTelemetryTutorial_Bed,
eTelemetryTutorial_Redstone_And_Pistons,
eTelemetryTutorial_Portal,
eTelemetryTutorial_FoodBar,
eTelemetryTutorial_CreativeMode,
eTelemetryTutorial_BrewingMenu,
eTelemetryInGame_Ride_Minecart,
eTelemetryInGame_Ride_Boat,
eTelemetryInGame_Ride_Pig,
eTelemetryInGame_UseBed,
eTelemetryTutorial_CreativeInventory, // Added TU5
eTelemetryTutorial_EnchantingMenu,
eTelemetryTutorial_Brewing,
eTelemetryTutorial_Enchanting,
eTelemetryTutorial_Farming,
eTelemetryPlayerDeathSource_Fall,
eTelemetryPlayerDeathSource_Lava,
eTelemetryPlayerDeathSource_Fire,
eTelemetryPlayerDeathSource_Water,
eTelemetryPlayerDeathSource_Suffocate,
eTelemetryPlayerDeathSource_OutOfWorld,
eTelemetryPlayerDeathSource_Cactus,
eTelemetryPlayerDeathSource_Player_Weapon,
eTelemetryPlayerDeathSource_Player_Arrow,
eTelemetryPlayerDeathSource_Explosion_Tnt,
eTelemetryPlayerDeathSource_Explosion_Creeper,
eTelemetryPlayerDeathSource_Wolf,
eTelemetryPlayerDeathSource_Zombie,
eTelemetryPlayerDeathSource_Skeleton,
eTelemetryPlayerDeathSource_Spider,
eTelemetryPlayerDeathSource_Slime,
eTelemetryPlayerDeathSource_Ghast,
eTelemetryPlayerDeathSource_ZombiePigman,
eTelemetryTutorial_Breeding,
eTelemetryTutorial_Golem,
eTelemetryTutorial_Anvil, // Added TU14
eTelemetryTutorial_AnvilMenu,
eTelemetryTutorial_Trading,
eTelemetryTutorial_TradingMenu,
eTelemetryTutorial_Enderchest,
// Sent over network as a byte
};
class CTelemetryManager
{
public:
virtual HRESULT Init();
virtual HRESULT Tick();
virtual HRESULT Flush();
virtual bool RecordPlayerSessionStart(int iPad);
virtual bool RecordPlayerSessionExit(int iPad, int exitStatus);
virtual bool RecordHeartBeat(int iPad);
virtual bool RecordLevelStart(int iPad, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, int numberOfLocalPlayers, int numberOfOnlinePlayers);
virtual bool RecordLevelExit(int iPad, ESen_LevelExitStatus levelExitStatus);
virtual bool RecordLevelSaveOrCheckpoint(int iPad, int saveOrCheckPointID, int saveSizeInBytes);
virtual bool RecordLevelResume(int iPad, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, int numberOfLocalPlayers, int numberOfOnlinePlayers, int saveOrCheckPointID);
virtual bool RecordPauseOrInactive(int iPad);
virtual bool RecordUnpauseOrActive(int iPad);
virtual bool RecordMenuShown(int iPad, EUIScene menuID, int optionalMenuSubID);
virtual bool RecordAchievementUnlocked(int iPad, int achievementID, int achievementGamerscore);
virtual bool RecordMediaShareUpload(int iPad, ESen_MediaDestination mediaDestination, ESen_MediaType mediaType);
virtual bool RecordUpsellPresented(int iPad, ESen_UpsellID upsellId, int marketplaceOfferID);
virtual bool RecordUpsellResponded(int iPad, ESen_UpsellID upsellId, int marketplaceOfferID, ESen_UpsellOutcome upsellOutcome);
virtual bool RecordPlayerDiedOrFailed(int iPad, int lowResMapX, int lowResMapY, int lowResMapZ, int mapID, int playerWeaponID, int enemyWeaponID, ETelemetryChallenges enemyTypeID);
virtual bool RecordEnemyKilledOrOvercome(int iPad, int lowResMapX, int lowResMapY, int lowResMapZ, int mapID, int playerWeaponID, int enemyWeaponID, ETelemetryChallenges enemyTypeID);
virtual bool RecordTexturePackLoaded(int iPad, int texturePackId, bool purchased);
virtual bool RecordSkinChanged(int iPad, int dwSkinId);
virtual bool RecordBanLevel(int iPad);
virtual bool RecordUnBanLevel(int iPad);
virtual int GetMultiplayerInstanceID();
virtual int GenerateMultiplayerInstanceId();
virtual void SetMultiplayerInstanceId(int value);
protected:
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 CTelemetryManager *TelemetryManager;