#pragma once #include "../../Common/UI/UIEnums.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;