nuke the rest of Sentient

This commit is contained in:
Tropical 2026-03-30 21:12:28 -05:00
parent e8052fc495
commit 56dfb0badf
22 changed files with 11 additions and 1850 deletions

View file

@ -3845,7 +3845,7 @@ int CMinecraftApp::UnlockFullInviteReturned(void* pParam, int iPad,
// 4J-PB - need to check this user can access the store
{
ProfileManager.DisplayFullVersionPurchase(
false, iPad, eSen_UpsellID_Full_Version_Of_Game);
false, iPad, /*eSen_UpsellID_Full_Version_Of_Game*/ 0);
}
}
}
@ -3864,7 +3864,7 @@ int CMinecraftApp::UnlockFullSaveReturned(void* pParam, int iPad,
{
ProfileManager.DisplayFullVersionPurchase(
false, pMinecraft->player->GetXboxPad(),
eSen_UpsellID_Full_Version_Of_Game);
/*eSen_UpsellID_Full_Version_Of_Game*/ 0);
}
}
}
@ -3883,7 +3883,7 @@ int CMinecraftApp::UnlockFullExitReturned(void* pParam, int iPad,
{
ProfileManager.DisplayFullVersionPurchase(
false, pMinecraft->player->GetXboxPad(),
eSen_UpsellID_Full_Version_Of_Game);
/*eSen_UpsellID_Full_Version_Of_Game*/ 0);
}
}
} else {
@ -3906,7 +3906,7 @@ int CMinecraftApp::TrialOverReturned(void* pParam, int iPad,
{
ProfileManager.DisplayFullVersionPurchase(
false, pMinecraft->player->GetXboxPad(),
eSen_UpsellID_Full_Version_Of_Game);
/*eSen_UpsellID_Full_Version_Of_Game*/ 0);
}
} else {
pApp->SetAction(pMinecraft->player->GetXboxPad(),
@ -4168,32 +4168,7 @@ void CMinecraftApp::NotificationsCallback(void* pParam,
void CMinecraftApp::UpsellReturnedCallback(void* pParam, eUpsellType type,
eUpsellResponse result,
int iUserData) {
ESen_UpsellID senType;
ESen_UpsellOutcome senResponse;
// Map the eUpsellResponse to the enum we use for sentient
switch (result) {
case eUpsellResponse_Accepted_NoPurchase:
senResponse = eSen_UpsellOutcome_Went_To_Guide;
break;
case eUpsellResponse_Accepted_Purchase:
senResponse = eSen_UpsellOutcome_Accepted;
break;
case eUpsellResponse_Declined:
default:
senResponse = eSen_UpsellOutcome_Declined;
break;
};
// Map the eUpsellType to the enum we use for sentient
switch (type) {
case eUpsellType_Custom:
senType = eSen_UpsellID_Full_Version_Of_Game;
break;
default:
senType = eSen_UpsellID_Undefined;
break;
};
// 4jcraft: nuked
}
#if defined(_DEBUG_MENUS_ENABLED)

View file

@ -98,7 +98,7 @@ bool CGameNetworkManager::_RunNetworkGame(void* lpParameter) {
// 4J-PB - if this is the trial game, start the trial timer
if (!ProfileManager.IsFullVersion()) {
ui.SetTrialTimerLimitSecs(
MinecraftDynamicConfigurations::GetTrialTime());
/*DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME*/ 2400);
app.SetTrialTimerStart();
}
// app.CloseXuiScenes(ProfileManager.GetPrimaryPad());

View file

@ -959,7 +959,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad) {
// display the full version purchase - if the user is fast with the
// trial version, it can still be retrieving the product list
ProfileManager.DisplayFullVersionPurchase(
false, iPad, eSen_UpsellID_Full_Version_Of_Game);
false, iPad, /*eSen_UpsellID_Full_Version_Of_Game*/ 0);
}
}
}

View file

@ -46,7 +46,7 @@ void UIScene_TrialExitUpsell::handleInput(int iPad, int key, bool repeat,
// 4J-PB - need to check this user can access the store
{
ProfileManager.DisplayFullVersionPurchase(
false, iPad, eSen_UpsellID_Full_Version_Of_Game);
false, iPad, /*eSen_UpsellID_Full_Version_Of_Game*/ 0);
}
}
break;

View file

@ -550,7 +550,7 @@ int UIScene_PauseMenu::UnlockFullSaveReturned(
{
ProfileManager.DisplayFullVersionPurchase(
false, pMinecraft->player->GetXboxPad(),
eSen_UpsellID_Full_Version_Of_Game);
/*eSen_UpsellID_Full_Version_Of_Game*/ 0);
}
}
} else {

View file

@ -38,7 +38,7 @@ std::mutex UIController::ms_reloadSkinCS;
bool UIController::ms_bReloadSkinCSInitialised = false;
std::uint32_t UIController::m_dwTrialTimerLimitSecs =
DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME;
/*DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME*/ 2400;
static void RADLINK WarningCallback(void* user_callback_data, Iggy* player,
IggyResult code, const char* message) {

View file

@ -100,10 +100,7 @@ using namespace DirectX;
#include "strings.h"
#ifdef _WINDOWS64
#include "../Windows64/Source Files/Sentient/MinecraftTelemetry.h"
#include "../Windows64/Windows64_App.h"
#include "../Windows64/Source Files/Sentient/DynamicConfigurations.h"
#include "../Windows64/Source Files/Sentient/SentientTelemetryCommon.h"
#include "Minecraft.spa.h"
#include "../Windows64/XML/ATGXmlParser.h"
#include "../Windows64/Source Files/Social/SocialManager.h"
@ -114,8 +111,6 @@ using namespace DirectX;
#else
#include "../Linux/Linux_App.h"
#include "../Linux/Iggy/include/iggy.h"
#include "../Linux/Sentient/SentientTelemetryCommon.h"
#include "../Linux/Sentient/DynamicConfigurations.h"
#include "Minecraft.spa.h"
#include "../Common/Source Files/Audio/SoundEngine.h"
#include "../Linux/Linux_UIController.h"

View file

@ -64,7 +64,6 @@ static void sigsegv_handler(int sig) {
// #include "NetworkManager.h"
#include "../net/minecraft/client/renderer/Tesselator.h"
#include "../net/minecraft/client/Options.h"
#include "Sentient/SentientManager.h"
#include "../net/minecraft/client/renderer/Textures.h"
#include "Minecraft.World/Header Files/compression.h"
#include "Minecraft.World/net/minecraft/world/level/chunk/storage/OldChunkStorage.h"

View file

@ -1,71 +0,0 @@
#pragma once
// 4J Stu - This file defines the id's for the dynamic configurations that we
// are currently using as well as the format of the data in them
/***********************
*
* TRIAL TIMER
*
************************/
#define DYNAMIC_CONFIG_TRIAL_ID 0
#define DYNAMIC_CONFIG_TRIAL_VERSION 1
#define DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME \
2400 // 40 mins 1200 // 20 mins //300; // 5 minutes
class MinecraftDynamicConfigurations {
private:
enum EDynamic_Configs {
eDynamic_Config_Trial,
eDynamic_Config_Max,
};
/***********************
*
* TRIAL TIMER
*
************************/
// 4J Stu - The first 4 bytes define a version number, that defines the
// structure of the data After reading those bytes into a uint32_t, the
// remainder of the data should be the size of the relevant struct and can
// be cast to the struct
struct _dynamic_config_trial_data_version1 {
// The time in seconds that the player can play the trial for
uint32_t trialTimeSeconds;
_dynamic_config_trial_data_version1() {
trialTimeSeconds = DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME;
}
};
typedef _dynamic_config_trial_data_version1 Dynamic_Config_Trial_Data;
// Stored configurations
static Dynamic_Config_Trial_Data trialData;
static bool s_bFirstUpdateStarted;
static bool s_bUpdatedConfigs[eDynamic_Config_Max];
static EDynamic_Configs s_eCurrentConfig;
static std::size_t s_currentConfigSize;
static std::size_t s_dataWrittenSize;
static uint8_t* s_dataWritten;
public:
static void Tick();
static uint32_t GetTrialTime();
private:
static void UpdateAllConfigurations();
static void UpdateNextConfiguration();
static void UpdateConfiguration(EDynamic_Configs id);
static void GetSizeCompletedCallback(int32_t taskResult,
void* userCallbackData);
static void GetDataCompletedCallback(int32_t taskResult,
void* userCallbackData);
};

View file

@ -1,4 +0,0 @@
#pragma once
#include "SentientTelemetryCommon.h"
#include "TelemetryEnum.h"
#include "SentientStats.h"

View file

@ -1,106 +0,0 @@
#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;

View file

@ -1,184 +0,0 @@
/************************************************************************/
/* THIS FILE WAS AUTOMATICALLY GENERATED */
/* PLEASE DO NOT MODIFY */
/************************************************************************/
// Generated from Version: 20, on (6/19/2012 9:21:23 AM)
#pragma once
/************************************************************************/
/* STATS */
/************************************************************************/
// PlayerSessionStart
// Player signed in or joined
bool SenStatPlayerSessionStart(uint32_t dwUserID,
int32_t SecondsSinceInitialize, int32_t ModeID,
int32_t OptionalSubModeID, int32_t LevelID,
int32_t OptionalSubLevelID, int32_t TitleBuildID,
int32_t SkeletonDistanceInInches,
int32_t EnrollmentType,
int32_t NumberOfSkeletonsInView);
// PlayerSessionExit
// Player signed out or left
bool SenStatPlayerSessionExit(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID);
// HeartBeat
// Sent every 60 seconds by title
bool SenStatHeartBeat(uint32_t dwUserID, int32_t SecondsSinceInitialize);
// LevelStart
// Level started
bool SenStatLevelStart(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t SingleOrMultiplayer, int32_t FriendsOrMatch,
int32_t CompeteOrCoop, int32_t DifficultyLevel,
int32_t NumberOfLocalPlayers,
int32_t NumberOfOnlinePlayers, int32_t License,
int32_t DefaultGameControls, int32_t AudioSettings,
int32_t SkeletonDistanceInInches,
int32_t NumberOfSkeletonsInView);
// LevelExit
// Level exited
bool SenStatLevelExit(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t LevelExitStatus, int32_t LevelExitProgressStat1,
int32_t LevelExitProgressStat2,
int32_t LevelDurationInSeconds);
// LevelSaveOrCheckpoint
// Level saved explicitly or implicitly
bool SenStatLevelSaveOrCheckpoint(
uint32_t dwUserID, int32_t SecondsSinceInitialize, int32_t ModeID,
int32_t OptionalSubModeID, int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t LevelExitProgressStat1, int32_t LevelExitProgressStat2,
int32_t LevelDurationInSeconds, int32_t SaveOrCheckPointID);
// LevelResume
// Level resumed from a save or restarted at a checkpoint
bool SenStatLevelResume(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t SingleOrMultiplayer, int32_t FriendsOrMatch,
int32_t CompeteOrCoop, int32_t DifficultyLevel,
int32_t NumberOfLocalPlayers,
int32_t NumberOfOnlinePlayers, int32_t License,
int32_t DefaultGameControls, int32_t SaveOrCheckPointID,
int32_t AudioSettings, int32_t SkeletonDistanceInInches,
int32_t NumberOfSkeletonsInView);
// PauseOrInactive
// Player paused game or has become inactive, level and mode are for what the
// player is leaving
bool SenStatPauseOrInactive(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID);
// UnpauseOrActive
// Player unpaused game or has become active, level and mode are for what the
// player is entering into
bool SenStatUnpauseOrActive(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID);
// MenuShown
// A menu screen or major menu area has been shown
bool SenStatMenuShown(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t MenuID, int32_t OptionalMenuSubID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID);
// AchievementUnlocked
// An achievement was unlocked
bool SenStatAchievementUnlocked(
uint32_t dwUserID, int32_t SecondsSinceInitialize, int32_t ModeID,
int32_t OptionalSubModeID, int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t AchievementID, int32_t AchievementGamerscore);
// MediaShareUpload
// The user uploaded something to Kinect Share
bool SenStatMediaShareUpload(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID,
int32_t MediaDestination, int32_t MediaType);
// UpsellPresented
// The user is shown an upsell to purchase something
bool SenStatUpsellPresented(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t UpsellID,
int32_t MarketplaceOfferID);
// UpsellResponded
// The user responded to the upsell
bool SenStatUpsellResponded(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t UpsellID,
int32_t MarketplaceOfferID, int32_t UpsellOutcome);
// PlayerDiedOrFailed
// The player died or failed a challenge - can be used for many types of failure
bool SenStatPlayerDiedOrFailed(
uint32_t dwUserID, int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID, int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t LowResMapX, int32_t LowResMapY,
int32_t LowResMapZ, int32_t MapID, int32_t PlayerWeaponID,
int32_t EnemyWeaponID, int32_t EnemyTypeID, int32_t SecondsSinceInitialize,
int32_t CopyOfSecondsSinceInitialize);
// EnemyKilledOrOvercome
// The player killed an enemy or overcame or solved a major challenge
bool SenStatEnemyKilledOrOvercome(
uint32_t dwUserID, int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID, int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t LowResMapX, int32_t LowResMapY,
int32_t LowResMapZ, int32_t MapID, int32_t PlayerWeaponID,
int32_t EnemyWeaponID, int32_t EnemyTypeID, int32_t SecondsSinceInitialize,
int32_t CopyOfSecondsSinceInitialize);
// SkinChanged
// The player has changed their skin, level and mode are for what the player is
// currently in
bool SenStatSkinChanged(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t SkinID);
// BanLevel
// The player has banned a level, level and mode are for what the player is
// currently in and banning
bool SenStatBanLevel(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID, int32_t LevelID,
int32_t OptionalSubLevelID, int32_t LevelInstanceID,
int32_t MultiplayerInstanceID);
// UnBanLevel
// The player has ubbanned a level, level and mode are for what the player is
// currently in and unbanning
bool SenStatUnBanLevel(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID);

View file

@ -1,181 +0,0 @@
#pragma once
// 4J Stu - Enums as defined by the common Sentient telemetry format
// ##################################
// DO NOT CHANGE ANY OF THESE VALUES
// ##################################
/*************************************
AudioSettings
*************************************
Are players changing default audio settings?
*/
enum ESen_AudioSettings {
eSen_AudioSettings_Undefined = 0,
eSen_AudioSettings_Off = 1,
eSen_AudioSettings_On_Default = 2,
eSen_AudioSettings_On_CustomSetting = 3,
};
/*************************************
CompeteOrCoop
*************************************
Indicates whether players are playing a cooperative mode or a competitive mode.
*/
enum ESen_CompeteOrCoop {
eSen_CompeteOrCoop_Undefined = 0,
eSen_CompeteOrCoop_Cooperative = 1,
eSen_CompeteOrCoop_Competitive = 2,
eSen_CompeteOrCoop_Coop_and_Competitive = 3,
};
/*************************************
DefaultGameControls
*************************************
This is intended to capture whether players played using default control scheme
or customized the control scheme.
*/
enum ESen_DefaultGameControls {
eSen_DefaultGameControls_Undefined = 0,
eSen_DefaultGameControls_Default_controls = 1,
eSen_DefaultGameControls_Custom_controls = 2,
};
/*************************************
DifficultyLevel
*************************************
An in-game setting that differentiates the challenge imposed on the user.
Normalized to a standard 5-point scale.
*/
enum ESen_DifficultyLevel {
eSen_DifficultyLevel_Undefined = 0,
eSen_DifficultyLevel_Easiest = 1,
eSen_DifficultyLevel_Easier = 2,
eSen_DifficultyLevel_Normal = 3,
eSen_DifficultyLevel_Harder = 4,
eSen_DifficultyLevel_Hardest = 5,
};
/*************************************
GameInputType
*************************************
Used to determine the different modes of input used in the game. For
gamepad/keyboard/mouse usage, it is not necessary to call this for every single
input. Also, if polling is used, calling this event occasionally may also work.
*/
enum ESen_GameInputType {
eSen_GameInputType_Undefined = 0,
eSen_GameInputType_Xbox_Controller = 1,
eSen_GameInputType_Gesture = 2,
eSen_GameInputType_Voice = 3,
eSen_GameInputType_Voice_and_Gesture_Together = 4,
eSen_GameInputType_Touch = 5,
eSen_GameInputType_Keyboard = 6,
eSen_GameInputType_Mouse = 7,
};
/*************************************
LevelExitStatus
*************************************
Indicates whether the player successfully completed the level. Critical for
understanding the difficulty of a game with checkpoints or saves.
*/
enum ESen_LevelExitStatus {
eSen_LevelExitStatus_Undefined = 0,
eSen_LevelExitStatus_Exited = 1,
eSen_LevelExitStatus_Succeeded = 2,
eSen_LevelExitStatus_Failed = 3,
};
/*************************************
License
*************************************
Differentiates trial/demo from full purchased titles
*/
enum ESen_License {
eSen_License_Undefined = 0,
eSen_License_Trial_or_Demo = 1,
eSen_License_Full_Purchased_Title = 2,
};
/*************************************
MediaDestination
*************************************
Tracks where media is uploaded to (like facebook)
*/
enum ESen_MediaDestination {
ESen_MediaDestination_Undefined = 0,
ESen_MediaDestination_Kinect_Share = 1,
ESen_MediaDestination_Facebook = 2,
ESen_MediaDestination_YouTube = 3,
ESen_MediaDestination_Other = 4
};
/*************************************
MediaType
*************************************
Used to capture the type of media players are uploading to KinectShare
*/
enum ESen_MediaType {
eSen_MediaType_Undefined = 0,
eSen_MediaType_Picture = 1,
eSen_MediaType_Video = 2,
eSen_MediaType_Other_UGC = 3,
};
/*************************************
SingleOrMultiplayer
*************************************
Indicates whether the game is being played in single or multiplayer mode and
whether multiplayer is being played locally or over live.
*/
enum ESen_SingleOrMultiplayer {
eSen_SingleOrMultiplayer_Undefined = 0,
eSen_SingleOrMultiplayer_Single_Player = 1,
eSen_SingleOrMultiplayer_Multiplayer_Local = 2,
eSen_SingleOrMultiplayer_Multiplayer_Live = 3,
eSen_SingleOrMultiplayer_Multiplayer_Both_Local_and_Live = 4,
};
/*************************************
FriendOrMatch
*************************************
Are players playing with friends or were they matched?
*/
enum ESen_FriendOrMatch {
eSen_FriendOrMatch_Undefined = 0, // (use if a single player game)
eSen_FriendOrMatch_Playing_With_Invited_Friends = 1,
eSen_FriendOrMatch_Playing_With_Match_Made_Opponents = 2,
eSen_FriendOrMatch_Playing_With_Both_Friends_And_Matched_Opponents = 3,
eSen_FriendOrMatch_Joined_Through_An_Xbox_Live_Party = 4,
eSen_FriendOrMatch_Joined_Through_An_In_Game_Party = 5,
};
/*************************************
UpsellID
*************************************
Which upsell has been presented?
*/
enum ESen_UpsellID {
eSen_UpsellID_Undefined = 0,
eSen_UpsellID_Full_Version_Of_Game = 1,
// Added TU3
eSet_UpsellID_Skin_DLC = 2,
eSet_UpsellID_Texture_DLC = 3,
// 2-max= Up to game
};
/*************************************
UpsellOutcome
*************************************
What was the outcome of the upsell?
*/
enum ESen_UpsellOutcome {
eSen_UpsellOutcome_Undefined = 0,
eSen_UpsellOutcome_Accepted = 1,
eSen_UpsellOutcome_Declined = 2,
eSen_UpsellOutcome_Went_To_Guide = 3,
eSen_UpsellOutcome_Other = 4,
};

View file

@ -1,275 +0,0 @@
#pragma once
/*
AchievementGamerscore Value in gamerscore of the achievement
AchievementID ID of achievement unlocked
EnemyTypeID What type of enemy or challenge was the player facing? To
prevent data-loss by overflowing the buffer, we recommend enemy type.
EnemyWeaponID What weapon the enemy is holding or what counter/AI the enemy is
taking to overcome a challenge EnrollmentType How did players enroll? (Using
Kinect) LandscapeOrPortrait Are you currently showing in landscape or
portrait mode? (Win8 only) LevelDurationInSeconds How long, total, has the
user been playing in this level - whatever best represents this duration for
attempting the level you'd like to track. LevelExitProgressStat1 Refers
to the highest level performance metric for your game.<EFBFBD> For example, a
performance metric could points earned, race time, total kills, etc. This is
entirely up to you and will help us understand how well the player performed, or
how far the player progressed <EFBFBD>in the level before exiting.
LevelExitProgressStat2 Refers to the highest level performance metric for your
game.<EFBFBD> For example, a performance metric could points earned, race time, total
kills, etc. This is entirely up to you and will help us understand how well the
player performed, or how far the player progressed <EFBFBD>in the level before exiting.
LevelID This is a more granular view of mode, allowing teams to get a sense of
the levels or maps players are playing and providing some insight into how
players progress through a game. Teams will have to provide the game mappings
that correspond to the integers. The intent is that a level is highest level at
which modes can be dissected and provides an indication of player progression in
a game. The intent is that level start and ends do not occur more than every 2
minutes or so, otherwise the data reported will be difficult to understand.
Levels are unique only within a given modeID - so you can have a ModeID =1,
LevelID =1 and a different ModeID=2, LevelID = 1 indicate two completely
different levels. LevelID = 0 means undefined or unknown. LevelInstanceID
Generated by the game every time LevelStart or LevelResume is called. This
should be a unique ID (can be sequential) within a session. LowResMapX Player
position normalized to 0-255 LowResMapY Player position normalized to 0-255
LowResMapZ Player position normalized to 0-255
MapID Unique ID for the current map the player is on
MarketplaceOfferID Unique ID for the Xbox LIVE marketplace offer that the
upsell links to MicroGoodTypeID Describes the type of consumable or microgood
MultiplayerInstanceID multiplayerinstanceID is a title-generated value that is
the same for all players in the same multiplayer session.<EFBFBD> NumberOfLocalPlayers
the number of players that are playing together in the game locally in the
current session (on the same piece of hardware) NumberOfOnlinePlayers the
number of players that are playing together in the game online in the current
session (not on the same piece of hardware) NumberOfSkeletonsInView the max
and min of skeletons that were in view, regardless of enrollment
OptionalSubLevelID Used when a title has more heirarchy required.
OptionalSubLevel ID = 0 means undefined or unknown. OptionalSubModeID Used
when a title has more heirarchy required. OptionalSubMode ID = 0 means
undefined or unknown. PlayerLevelUpProgressStat1 Refers to a performance
metric for your player when they level or rank up. This is entirely up to you
and will help us understand how well the player performed, or how far the player
has progressed. PlayerLevelUpProgressStat2 Refers to a performance metric
for your player when they level or rank up. This is entirely up to you and will
help us understand how well the player performed, or how far the player has
progressed. PlayerWeaponID What weapon the player is holding or what
approach/tact the player is taking to overcome a challenge
PlayspaceFeedbackWarningDirection identifies which side of the playspace
players are getting too close to that results in the playspace feedback
SaveOrCheckpointID It is important that you also generate and save a unique
SaveOrCheckpointID that can be read and reported when the player resumes from
this save file or checkpoint. These IDs should be completely unique across the
player<EFBFBD>s experience, even if they play the same level multiple times. These IDs
are critical to allowing us to re-stitch a player<EFBFBD>s experience in your title and
provide an accurate measure of time in level. SecondsSinceInitialize Number
of seconds elapsed since Sentient initialize. SecondsSinceInitializeMax Number
of seconds elapsed since Sentient initialize. SecondsSinceInitializeMin Number
of seconds elapsed since Sentient initialize. SkeletonDistanceInInches
Identifies the distance of the skeleton from the Kinect sensor TitleBuildID
Build version of the title, used to track changes in development as well as
patches/title updates
*/
/*
ModeID
An in-game setting that significantly differentiates the play style of the game.
(This should be captured as an integer and correspond to mode specific to the
game.) Teams will have to provide the game mappings that correspond to the
integers. The intent is to allow teams to capture data on the highest level
categories of gameplay in their game. For example, a game mode could be the name
of the specific mini game (eg: golf vs darts) or a specific multiplayer mode
(eg: hoard vs beast.) ModeID = 0 means undefined or unknown.
*/
enum ETelem_ModeId {
eTelem_ModeId_Undefined = 0,
eTelem_ModeId_Survival,
eTelem_ModeId_Creative, // Unused in current game version
};
/*
OptionalSubModeID
Used when a title has more heirarchy required.
OptionalSubMode ID = 0 means undefined or unknown.
*/
enum ETelem_SubModeId {
eTelem_SubModeId_Undefined = 0,
eTelem_SubModeId_Normal,
eTelem_SubModeId_Tutorial,
};
/*
LevelID
This is a more granular view of mode, allowing teams to get a sense of the
levels or maps players are playing and providing some insight into how players
progress through a game. Teams will have to provide the game mappings that
correspond to the integers. The intent is that a level is highest level at which
modes can be dissected and provides an indication of player progression in a
game. The intent is that level start and ends do not occur more than every 2
minutes or so, otherwise the data reported will be difficult to understand.
Levels are unique only within a given modeID - so you can have a ModeID =1,
LevelID =1 and a different ModeID=2, LevelID = 1 indicate two completely
different levels. LevelID = 0 means undefined or unknown.
*/
enum ETelem_LevelId {
eTelem_LevelId_Undefined = 0,
eTelem_LevelId_PlayerGeneratedLevel = 1,
// 4J Stu - We currently do not have any specific levels (other than the
// tutorial which is tracked as a mode) so this is unused at the moment
};
/*
OptionalSubLevelID
Used when a title has more heirarchy required. OptionalSubLevel ID = 0 means
undefined or unknown.
*/
enum ETelem_SubLevelId {
eTelem_SubLevelId_Undefined = 0,
eTelem_SubLevelId_Overworld,
eTelem_SubLevelId_Nether,
eTelem_SubLevelId_End,
};
/*
MenuID
Describes the specific menu seen. MenuID = 0 means undefined or unknown.
*/
// 4J Stu - FOR REFERENCE ONLY - Should map 1:1 with the
// CConsoleMinecraftApp:EUIScene enum Values that are commented out here are not
// currently reported
enum ETelem_MenuId {
// eTelemMenuId_PartnernetPassword = 0,
// eTelemMenuId_Intro = 1,
// eTelemMenuId_SaveMessage = 2,
// eTelemMenuId_Main = 3,
// eTelemMenuId_FullscreenProgress = 4,
eTelemMenuId_Pause = 5,
// eTelemMenuId_CraftingPanel_2x2 = 6,
// eTelemMenuId_CraftingPanel_3x3 = 7,
// eTelemMenuId_Furnace = 8,
// eTelemMenuId_Container = 9,
// eTelemMenuId_Largecontainer_small = 10,// for splitscreen
// eTelemMenuId_Inventory = 11,
// eTelemMenuId_Trap = 12,
// eTelemMenuId_Debug = 13,
// eTelemMenuId_DebugTips = 14,
// eTelemMenuId_HelpAndOptions = 15,
eTelemMenuId_HowToPlay = 16,
// eTelemMenuId_HowToPlayMenu = 17,
// eTelemMenuId_Controls = 18,
// eTelemMenuId_Settings_Menu = 19,
// eTelemMenuId_Settings_All = 20,
// eTelemMenuId_Leaderboards = 21,
// eTelemMenuId_Credits = 22,
// eTelemMenuId_Death = 23,
// eTelemMenuId_TutorialPopup = 24,
eTelemMenuId_MultiGameCreate = 25,
// eTelemMenuId_MultiGameJoinLoad = 26,
eTelemMenuId_MultiGameInfo = 27,
// eTelemMenuId_SignEntry = 28,
// eTelemMenuId_InGameInfo = 29,
// eTelemMenuId_ConnectingProgress = 30,
eTelemMenuId_DLCOffers = 31,
eTelemMenuId_SocialPost = 32,
// eTelemMenuId_TrialExitUpsell = 33,
eTelemMenuId_LoadSettings = 34,
// eTelemMenuId_Chat = 35,
// eTelemMenuId_Reinstall = 36,
};
/*
OptionalSubMenuID
Used when a title has more heirarchy required. OptionalSubMenuID = 0 means
undefined or unknown.
*/
enum ETelemetry_HowToPlay_SubMenuId {
eTelemetryHowToPlay_Basics = 0,
eTelemetryHowToPlay_HUD,
eTelemetryHowToPlay_Inventory,
eTelemetryHowToPlay_Chest,
eTelemetryHowToPlay_LargeChest,
eTelemetryHowToPlay_InventoryCrafting,
eTelemetryHowToPlay_CraftTable,
eTelemetryHowToPlay_Furnace,
eTelemetryHowToPlay_Dispenser,
eTelemetryHowToPlay_NetherPortal,
};
/*
EnemyTypeID What type of enemy or challenge was the player facing?
To prevent data-loss by overflowing the buffer, we recommend enemy type.
*/
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,
eTelemetryTutorial_Horse, // Java 1.6.4
eTelemetryTutorial_HorseMenu,
eTelemetryTutorial_Fireworks,
eTelemetryTutorial_FireworksMenu,
eTelemetryTutorial_Beacon,
eTelemetryTutorial_BeaconMenu,
eTelemetryTutorial_Hopper,
eTelemetryTutorial_HopperMenu,
// Sent over network as a byte
};

View file

@ -2,7 +2,6 @@
// #include <compressapi.h>
#if defined(_WINDOWS64)
#include "../Windows64/Source Files/Sentient/SentientManager.h"
#include "../net/minecraft/stats/StatsCounter.h"
#include "../Windows64/Source Files/Social/SocialManager.h"
#include "../Windows64/Source Files/Sentient/DynamicConfigurations.h"
@ -11,7 +10,6 @@
// via #pragma once. Pull in SentientManager for CSentientManager class
// declaration and StatsCounter; CSocialManager is provided as inline stubs via
// Linux/Social/SocialManager.h.
#include "../Linux/Sentient/SentientManager.h"
#include "../net/minecraft/stats/StatsCounter.h"
#else
#include "../net/minecraft/stats/StatsCounter.h"
@ -21,7 +19,7 @@
// C4JStorage StorageManager;
C_4JProfile ProfileManager;
#endif
CSentientManager SentientManager;
#if !defined(__linux__)
// On Linux this global shadows the project's StringTable class name in unity
// builds
@ -197,10 +195,6 @@ int32_t IQNet::JoinGameFromInviteInfo(uint32_t dwUserIndex, uint32_t dwUserMask,
void IQNet::HostGame() { _bQNetStubGameRunning = true; }
void IQNet::EndGame() { _bQNetStubGameRunning = false; }
uint32_t MinecraftDynamicConfigurations::GetTrialTime() {
return DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME;
}
void XSetThreadProcessor(void* a, int b) {}
// #if !(0) && !(0)
// bool XCloseHandle(void* a) { return CloseHandle(a); }
@ -706,92 +700,6 @@ C4JStorage::ETMSStatus C4JStorage::TMSPP_ReadFile(
#endif
/////////////////////////////////////////////////////// Sentient manager
int32_t CSentientManager::Init() { return S_OK; }
int32_t CSentientManager::Tick() { return S_OK; }
int32_t CSentientManager::Flush() { return S_OK; }
bool CSentientManager::RecordPlayerSessionStart(uint32_t dwUserId) {
return true;
}
bool CSentientManager::RecordPlayerSessionExit(uint32_t dwUserId,
int exitStatus) {
return true;
}
bool CSentientManager::RecordHeartBeat(uint32_t dwUserId) { return true; }
bool CSentientManager::RecordLevelStart(uint32_t dwUserId,
ESen_FriendOrMatch friendsOrMatch,
ESen_CompeteOrCoop competeOrCoop,
int difficulty,
uint32_t numberOfLocalPlayers,
uint32_t numberOfOnlinePlayers) {
return true;
}
bool CSentientManager::RecordLevelExit(uint32_t dwUserId,
ESen_LevelExitStatus levelExitStatus) {
return true;
}
bool CSentientManager::RecordLevelSaveOrCheckpoint(uint32_t dwUserId,
int32_t saveOrCheckPointID,
int32_t saveSizeInBytes) {
return true;
}
bool CSentientManager::RecordLevelResume(uint32_t dwUserId,
ESen_FriendOrMatch friendsOrMatch,
ESen_CompeteOrCoop competeOrCoop,
int difficulty,
uint32_t numberOfLocalPlayers,
uint32_t numberOfOnlinePlayers,
int32_t saveOrCheckPointID) {
return true;
}
bool CSentientManager::RecordPauseOrInactive(uint32_t dwUserId) { return true; }
bool CSentientManager::RecordUnpauseOrActive(uint32_t dwUserId) { return true; }
bool CSentientManager::RecordMenuShown(uint32_t dwUserId, int32_t menuID,
int32_t optionalMenuSubID) {
return true;
}
bool CSentientManager::RecordAchievementUnlocked(
uint32_t dwUserId, int32_t achievementID, int32_t achievementGamerscore) {
return true;
}
bool CSentientManager::RecordMediaShareUpload(
uint32_t dwUserId, ESen_MediaDestination mediaDestination,
ESen_MediaType mediaType) {
return true;
}
bool CSentientManager::RecordUpsellPresented(uint32_t dwUserId,
ESen_UpsellID upsellId,
int32_t marketplaceOfferID) {
return true;
}
bool CSentientManager::RecordUpsellResponded(uint32_t dwUserId,
ESen_UpsellID upsellId,
int32_t marketplaceOfferID,
ESen_UpsellOutcome upsellOutcome) {
return true;
}
bool CSentientManager::RecordPlayerDiedOrFailed(
uint32_t dwUserId, int32_t lowResMapX, int32_t lowResMapY,
int32_t lowResMapZ, int32_t mapID, int32_t playerWeaponID,
int32_t enemyWeaponID, ETelemetryChallenges enemyTypeID) {
return true;
}
bool CSentientManager::RecordEnemyKilledOrOvercome(
uint32_t dwUserId, int32_t lowResMapX, int32_t lowResMapY,
int32_t lowResMapZ, int32_t mapID, int32_t playerWeaponID,
int32_t enemyWeaponID, ETelemetryChallenges enemyTypeID) {
return true;
}
bool CSentientManager::RecordSkinChanged(uint32_t dwUserId, uint32_t dwSkinId) {
return true;
}
bool CSentientManager::RecordBanLevel(uint32_t dwUserId) { return true; }
bool CSentientManager::RecordUnBanLevel(uint32_t dwUserId) { return true; }
int32_t CSentientManager::GetMultiplayerInstanceID() { return 0; }
int32_t CSentientManager::GenerateMultiplayerInstanceId() { return 0; }
void CSentientManager::SetMultiplayerInstanceId(int32_t value) {}
//////////////////////////////////////////////////////// Stats counter
/*

View file

@ -1,141 +0,0 @@
#pragma once
// 4J Stu - This file defines the id's for the dynamic configurations that we
// are currently using as well as the format of the data in them
/***********************
*
* TRIAL TIMER
*
************************/
#define DYNAMIC_CONFIG_TRIAL_ID 0
#define DYNAMIC_CONFIG_TRIAL_VERSION 1
#define DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME \
2400 // 40 mins 1200 // 20 mins //300; // 5 minutes
class MinecraftDynamicConfigurations {
private:
enum EDynamic_Configs {
eDynamic_Config_Trial,
eDynamic_Config_Max,
};
/***********************
*
* TRIAL TIMER
*
************************/
// 4J Stu - The first 4 bytes define a version number, that defines the
// structure of the data After reading those bytes into a uint32_t, the
// remainder of the data should be the size of the relevant struct and can
// be cast to the struct
struct _dynamic_config_trial_data_version1 {
// The time in seconds that the player can play the trial for
uint32_t trialTimeSeconds;
_dynamic_config_trial_data_version1() {
trialTimeSeconds = DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME;
}
};
typedef _dynamic_config_trial_data_version1 Dynamic_Config_Trial_Data;
// Stored configurations
static Dynamic_Config_Trial_Data trialData;
static bool s_bFirstUpdateStarted;
static bool s_bUpdatedConfigs[eDynamic_Config_Max];
static EDynamic_Configs s_eCurrentConfig;
static std::size_t s_currentConfigSize;
static std::size_t s_dataWrittenSize;
static uint8_t* s_dataWritten;
public:
static void Tick();
static uint32_t GetTrialTime();
private:
static void UpdateAllConfigurations();
static void UpdateNextConfiguration();
static void UpdateConfiguration(EDynamic_Configs id);
static void GetSizeCompletedCallback(int32_t taskResult,
void* userCallbackData);
static void GetDataCompletedCallback(int32_t taskResult,
void* userCallbackData);
};
#pragma once
// 4J Stu - This file defines the id's for the dynamic configurations that we
// are currently using as well as the format of the data in them
/***********************
*
* TRIAL TIMER
*
************************/
#define DYNAMIC_CONFIG_TRIAL_ID 0
#define DYNAMIC_CONFIG_TRIAL_VERSION 1
#define DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME \
2400 // 40 mins 1200 // 20 mins //300; // 5 minutes
class MinecraftDynamicConfigurations {
private:
enum EDynamic_Configs {
eDynamic_Config_Trial,
eDynamic_Config_Max,
};
/***********************
*
* TRIAL TIMER
*
************************/
// 4J Stu - The first 4 bytes define a version number, that defines the
// structure of the data After reading those bytes into a uint32_t, the
// remainder of the data should be the size of the relevant struct and can
// be cast to the struct
struct _dynamic_config_trial_data_version1 {
// The time in seconds that the player can play the trial for
uint32_t trialTimeSeconds;
_dynamic_config_trial_data_version1() {
trialTimeSeconds = DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME;
}
};
typedef _dynamic_config_trial_data_version1 Dynamic_Config_Trial_Data;
// Stored configurations
static Dynamic_Config_Trial_Data trialData;
static bool s_bFirstUpdateStarted;
static bool s_bUpdatedConfigs[eDynamic_Config_Max];
static EDynamic_Configs s_eCurrentConfig;
static std::size_t s_currentConfigSize;
static std::size_t s_dataWrittenSize;
static uint8_t* s_dataWritten;
public:
static void Tick();
static uint32_t GetTrialTime();
private:
static void UpdateAllConfigurations();
static void UpdateNextConfiguration();
static void UpdateConfiguration(EDynamic_Configs id);
static void GetSizeCompletedCallback(int32_t taskResult,
void* userCallbackData);
static void GetDataCompletedCallback(int32_t taskResult,
void* userCallbackData);
};

View file

@ -1,4 +0,0 @@
#pragma once
#include "SentientTelemetryCommon.h"
#include "TelemetryEnum.h"
#include "SentientStats.h"

View file

@ -1,106 +0,0 @@
#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;

View file

@ -1,184 +0,0 @@
/************************************************************************/
/* THIS FILE WAS AUTOMATICALLY GENERATED */
/* PLEASE DO NOT MODIFY */
/************************************************************************/
// Generated from Version: 20, on (6/19/2012 9:21:23 AM)
#pragma once
/************************************************************************/
/* STATS */
/************************************************************************/
// PlayerSessionStart
// Player signed in or joined
bool SenStatPlayerSessionStart(uint32_t dwUserID,
int32_t SecondsSinceInitialize, int32_t ModeID,
int32_t OptionalSubModeID, int32_t LevelID,
int32_t OptionalSubLevelID, int32_t TitleBuildID,
int32_t SkeletonDistanceInInches,
int32_t EnrollmentType,
int32_t NumberOfSkeletonsInView);
// PlayerSessionExit
// Player signed out or left
bool SenStatPlayerSessionExit(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID);
// HeartBeat
// Sent every 60 seconds by title
bool SenStatHeartBeat(uint32_t dwUserID, int32_t SecondsSinceInitialize);
// LevelStart
// Level started
bool SenStatLevelStart(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t SingleOrMultiplayer, int32_t FriendsOrMatch,
int32_t CompeteOrCoop, int32_t DifficultyLevel,
int32_t NumberOfLocalPlayers,
int32_t NumberOfOnlinePlayers, int32_t License,
int32_t DefaultGameControls, int32_t AudioSettings,
int32_t SkeletonDistanceInInches,
int32_t NumberOfSkeletonsInView);
// LevelExit
// Level exited
bool SenStatLevelExit(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t LevelExitStatus, int32_t LevelExitProgressStat1,
int32_t LevelExitProgressStat2,
int32_t LevelDurationInSeconds);
// LevelSaveOrCheckpoint
// Level saved explicitly or implicitly
bool SenStatLevelSaveOrCheckpoint(
uint32_t dwUserID, int32_t SecondsSinceInitialize, int32_t ModeID,
int32_t OptionalSubModeID, int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t LevelExitProgressStat1, int32_t LevelExitProgressStat2,
int32_t LevelDurationInSeconds, int32_t SaveOrCheckPointID);
// LevelResume
// Level resumed from a save or restarted at a checkpoint
bool SenStatLevelResume(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t SingleOrMultiplayer, int32_t FriendsOrMatch,
int32_t CompeteOrCoop, int32_t DifficultyLevel,
int32_t NumberOfLocalPlayers,
int32_t NumberOfOnlinePlayers, int32_t License,
int32_t DefaultGameControls, int32_t SaveOrCheckPointID,
int32_t AudioSettings, int32_t SkeletonDistanceInInches,
int32_t NumberOfSkeletonsInView);
// PauseOrInactive
// Player paused game or has become inactive, level and mode are for what the
// player is leaving
bool SenStatPauseOrInactive(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID);
// UnpauseOrActive
// Player unpaused game or has become active, level and mode are for what the
// player is entering into
bool SenStatUnpauseOrActive(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID);
// MenuShown
// A menu screen or major menu area has been shown
bool SenStatMenuShown(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t MenuID, int32_t OptionalMenuSubID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID);
// AchievementUnlocked
// An achievement was unlocked
bool SenStatAchievementUnlocked(
uint32_t dwUserID, int32_t SecondsSinceInitialize, int32_t ModeID,
int32_t OptionalSubModeID, int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t AchievementID, int32_t AchievementGamerscore);
// MediaShareUpload
// The user uploaded something to Kinect Share
bool SenStatMediaShareUpload(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID,
int32_t MediaDestination, int32_t MediaType);
// UpsellPresented
// The user is shown an upsell to purchase something
bool SenStatUpsellPresented(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t UpsellID,
int32_t MarketplaceOfferID);
// UpsellResponded
// The user responded to the upsell
bool SenStatUpsellResponded(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t UpsellID,
int32_t MarketplaceOfferID, int32_t UpsellOutcome);
// PlayerDiedOrFailed
// The player died or failed a challenge - can be used for many types of failure
bool SenStatPlayerDiedOrFailed(
uint32_t dwUserID, int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID, int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t LowResMapX, int32_t LowResMapY,
int32_t LowResMapZ, int32_t MapID, int32_t PlayerWeaponID,
int32_t EnemyWeaponID, int32_t EnemyTypeID, int32_t SecondsSinceInitialize,
int32_t CopyOfSecondsSinceInitialize);
// EnemyKilledOrOvercome
// The player killed an enemy or overcame or solved a major challenge
bool SenStatEnemyKilledOrOvercome(
uint32_t dwUserID, int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID, int32_t LevelInstanceID,
int32_t MultiplayerInstanceID, int32_t LowResMapX, int32_t LowResMapY,
int32_t LowResMapZ, int32_t MapID, int32_t PlayerWeaponID,
int32_t EnemyWeaponID, int32_t EnemyTypeID, int32_t SecondsSinceInitialize,
int32_t CopyOfSecondsSinceInitialize);
// SkinChanged
// The player has changed their skin, level and mode are for what the player is
// currently in
bool SenStatSkinChanged(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID,
int32_t SkinID);
// BanLevel
// The player has banned a level, level and mode are for what the player is
// currently in and banning
bool SenStatBanLevel(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID, int32_t LevelID,
int32_t OptionalSubLevelID, int32_t LevelInstanceID,
int32_t MultiplayerInstanceID);
// UnBanLevel
// The player has ubbanned a level, level and mode are for what the player is
// currently in and unbanning
bool SenStatUnBanLevel(uint32_t dwUserID, int32_t SecondsSinceInitialize,
int32_t ModeID, int32_t OptionalSubModeID,
int32_t LevelID, int32_t OptionalSubLevelID,
int32_t LevelInstanceID, int32_t MultiplayerInstanceID);

View file

@ -1,181 +0,0 @@
#pragma once
// 4J Stu - Enums as defined by the common Sentient telemetry format
// ##################################
// DO NOT CHANGE ANY OF THESE VALUES
// ##################################
/*************************************
AudioSettings
*************************************
Are players changing default audio settings?
*/
enum ESen_AudioSettings {
eSen_AudioSettings_Undefined = 0,
eSen_AudioSettings_Off = 1,
eSen_AudioSettings_On_Default = 2,
eSen_AudioSettings_On_CustomSetting = 3,
};
/*************************************
CompeteOrCoop
*************************************
Indicates whether players are playing a cooperative mode or a competitive mode.
*/
enum ESen_CompeteOrCoop {
eSen_CompeteOrCoop_Undefined = 0,
eSen_CompeteOrCoop_Cooperative = 1,
eSen_CompeteOrCoop_Competitive = 2,
eSen_CompeteOrCoop_Coop_and_Competitive = 3,
};
/*************************************
DefaultGameControls
*************************************
This is intended to capture whether players played using default control scheme
or customized the control scheme.
*/
enum ESen_DefaultGameControls {
eSen_DefaultGameControls_Undefined = 0,
eSen_DefaultGameControls_Default_controls = 1,
eSen_DefaultGameControls_Custom_controls = 2,
};
/*************************************
DifficultyLevel
*************************************
An in-game setting that differentiates the challenge imposed on the user.
Normalized to a standard 5-point scale.
*/
enum ESen_DifficultyLevel {
eSen_DifficultyLevel_Undefined = 0,
eSen_DifficultyLevel_Easiest = 1,
eSen_DifficultyLevel_Easier = 2,
eSen_DifficultyLevel_Normal = 3,
eSen_DifficultyLevel_Harder = 4,
eSen_DifficultyLevel_Hardest = 5,
};
/*************************************
GameInputType
*************************************
Used to determine the different modes of input used in the game. For
gamepad/keyboard/mouse usage, it is not necessary to call this for every single
input. Also, if polling is used, calling this event occasionally may also work.
*/
enum ESen_GameInputType {
eSen_GameInputType_Undefined = 0,
eSen_GameInputType_Xbox_Controller = 1,
eSen_GameInputType_Gesture = 2,
eSen_GameInputType_Voice = 3,
eSen_GameInputType_Voice_and_Gesture_Together = 4,
eSen_GameInputType_Touch = 5,
eSen_GameInputType_Keyboard = 6,
eSen_GameInputType_Mouse = 7,
};
/*************************************
LevelExitStatus
*************************************
Indicates whether the player successfully completed the level. Critical for
understanding the difficulty of a game with checkpoints or saves.
*/
enum ESen_LevelExitStatus {
eSen_LevelExitStatus_Undefined = 0,
eSen_LevelExitStatus_Exited = 1,
eSen_LevelExitStatus_Succeeded = 2,
eSen_LevelExitStatus_Failed = 3,
};
/*************************************
License
*************************************
Differentiates trial/demo from full purchased titles
*/
enum ESen_License {
eSen_License_Undefined = 0,
eSen_License_Trial_or_Demo = 1,
eSen_License_Full_Purchased_Title = 2,
};
/*************************************
MediaDestination
*************************************
Tracks where media is uploaded to (like facebook)
*/
enum ESen_MediaDestination {
ESen_MediaDestination_Undefined = 0,
ESen_MediaDestination_Kinect_Share = 1,
ESen_MediaDestination_Facebook = 2,
ESen_MediaDestination_YouTube = 3,
ESen_MediaDestination_Other = 4
};
/*************************************
MediaType
*************************************
Used to capture the type of media players are uploading to KinectShare
*/
enum ESen_MediaType {
eSen_MediaType_Undefined = 0,
eSen_MediaType_Picture = 1,
eSen_MediaType_Video = 2,
eSen_MediaType_Other_UGC = 3,
};
/*************************************
SingleOrMultiplayer
*************************************
Indicates whether the game is being played in single or multiplayer mode and
whether multiplayer is being played locally or over live.
*/
enum ESen_SingleOrMultiplayer {
eSen_SingleOrMultiplayer_Undefined = 0,
eSen_SingleOrMultiplayer_Single_Player = 1,
eSen_SingleOrMultiplayer_Multiplayer_Local = 2,
eSen_SingleOrMultiplayer_Multiplayer_Live = 3,
eSen_SingleOrMultiplayer_Multiplayer_Both_Local_and_Live = 4,
};
/*************************************
FriendOrMatch
*************************************
Are players playing with friends or were they matched?
*/
enum ESen_FriendOrMatch {
eSen_FriendOrMatch_Undefined = 0, // (use if a single player game)
eSen_FriendOrMatch_Playing_With_Invited_Friends = 1,
eSen_FriendOrMatch_Playing_With_Match_Made_Opponents = 2,
eSen_FriendOrMatch_Playing_With_Both_Friends_And_Matched_Opponents = 3,
eSen_FriendOrMatch_Joined_Through_An_Xbox_Live_Party = 4,
eSen_FriendOrMatch_Joined_Through_An_In_Game_Party = 5,
};
/*************************************
UpsellID
*************************************
Which upsell has been presented?
*/
enum ESen_UpsellID {
eSen_UpsellID_Undefined = 0,
eSen_UpsellID_Full_Version_Of_Game = 1,
// Added TU3
eSet_UpsellID_Skin_DLC = 2,
eSet_UpsellID_Texture_DLC = 3,
// 2-max= Up to game
};
/*************************************
UpsellOutcome
*************************************
What was the outcome of the upsell?
*/
enum ESen_UpsellOutcome {
eSen_UpsellOutcome_Undefined = 0,
eSen_UpsellOutcome_Accepted = 1,
eSen_UpsellOutcome_Declined = 2,
eSen_UpsellOutcome_Went_To_Guide = 3,
eSen_UpsellOutcome_Other = 4,
};

View file

@ -1,275 +0,0 @@
#pragma once
/*
AchievementGamerscore Value in gamerscore of the achievement
AchievementID ID of achievement unlocked
EnemyTypeID What type of enemy or challenge was the player facing? To
prevent data-loss by overflowing the buffer, we recommend enemy type.
EnemyWeaponID What weapon the enemy is holding or what counter/AI the enemy is
taking to overcome a challenge EnrollmentType How did players enroll? (Using
Kinect) LandscapeOrPortrait Are you currently showing in landscape or
portrait mode? (Win8 only) LevelDurationInSeconds How long, total, has the
user been playing in this level - whatever best represents this duration for
attempting the level you'd like to track. LevelExitProgressStat1 Refers
to the highest level performance metric for your game.<EFBFBD> For example, a
performance metric could points earned, race time, total kills, etc. This is
entirely up to you and will help us understand how well the player performed, or
how far the player progressed <EFBFBD>in the level before exiting.
LevelExitProgressStat2 Refers to the highest level performance metric for your
game.<EFBFBD> For example, a performance metric could points earned, race time, total
kills, etc. This is entirely up to you and will help us understand how well the
player performed, or how far the player progressed <EFBFBD>in the level before exiting.
LevelID This is a more granular view of mode, allowing teams to get a sense of
the levels or maps players are playing and providing some insight into how
players progress through a game. Teams will have to provide the game mappings
that correspond to the integers. The intent is that a level is highest level at
which modes can be dissected and provides an indication of player progression in
a game. The intent is that level start and ends do not occur more than every 2
minutes or so, otherwise the data reported will be difficult to understand.
Levels are unique only within a given modeID - so you can have a ModeID =1,
LevelID =1 and a different ModeID=2, LevelID = 1 indicate two completely
different levels. LevelID = 0 means undefined or unknown. LevelInstanceID
Generated by the game every time LevelStart or LevelResume is called. This
should be a unique ID (can be sequential) within a session. LowResMapX Player
position normalized to 0-255 LowResMapY Player position normalized to 0-255
LowResMapZ Player position normalized to 0-255
MapID Unique ID for the current map the player is on
MarketplaceOfferID Unique ID for the Xbox LIVE marketplace offer that the
upsell links to MicroGoodTypeID Describes the type of consumable or microgood
MultiplayerInstanceID multiplayerinstanceID is a title-generated value that is
the same for all players in the same multiplayer session.<EFBFBD> NumberOfLocalPlayers
the number of players that are playing together in the game locally in the
current session (on the same piece of hardware) NumberOfOnlinePlayers the
number of players that are playing together in the game online in the current
session (not on the same piece of hardware) NumberOfSkeletonsInView the max
and min of skeletons that were in view, regardless of enrollment
OptionalSubLevelID Used when a title has more heirarchy required.
OptionalSubLevel ID = 0 means undefined or unknown. OptionalSubModeID Used
when a title has more heirarchy required. OptionalSubMode ID = 0 means
undefined or unknown. PlayerLevelUpProgressStat1 Refers to a performance
metric for your player when they level or rank up. This is entirely up to you
and will help us understand how well the player performed, or how far the player
has progressed. PlayerLevelUpProgressStat2 Refers to a performance metric
for your player when they level or rank up. This is entirely up to you and will
help us understand how well the player performed, or how far the player has
progressed. PlayerWeaponID What weapon the player is holding or what
approach/tact the player is taking to overcome a challenge
PlayspaceFeedbackWarningDirection identifies which side of the playspace
players are getting too close to that results in the playspace feedback
SaveOrCheckpointID It is important that you also generate and save a unique
SaveOrCheckpointID that can be read and reported when the player resumes from
this save file or checkpoint. These IDs should be completely unique across the
player<EFBFBD>s experience, even if they play the same level multiple times. These IDs
are critical to allowing us to re-stitch a player<EFBFBD>s experience in your title and
provide an accurate measure of time in level. SecondsSinceInitialize Number
of seconds elapsed since Sentient initialize. SecondsSinceInitializeMax Number
of seconds elapsed since Sentient initialize. SecondsSinceInitializeMin Number
of seconds elapsed since Sentient initialize. SkeletonDistanceInInches
Identifies the distance of the skeleton from the Kinect sensor TitleBuildID
Build version of the title, used to track changes in development as well as
patches/title updates
*/
/*
ModeID
An in-game setting that significantly differentiates the play style of the game.
(This should be captured as an integer and correspond to mode specific to the
game.) Teams will have to provide the game mappings that correspond to the
integers. The intent is to allow teams to capture data on the highest level
categories of gameplay in their game. For example, a game mode could be the name
of the specific mini game (eg: golf vs darts) or a specific multiplayer mode
(eg: hoard vs beast.) ModeID = 0 means undefined or unknown.
*/
enum ETelem_ModeId {
eTelem_ModeId_Undefined = 0,
eTelem_ModeId_Survival,
eTelem_ModeId_Creative, // Unused in current game version
};
/*
OptionalSubModeID
Used when a title has more heirarchy required.
OptionalSubMode ID = 0 means undefined or unknown.
*/
enum ETelem_SubModeId {
eTelem_SubModeId_Undefined = 0,
eTelem_SubModeId_Normal,
eTelem_SubModeId_Tutorial,
};
/*
LevelID
This is a more granular view of mode, allowing teams to get a sense of the
levels or maps players are playing and providing some insight into how players
progress through a game. Teams will have to provide the game mappings that
correspond to the integers. The intent is that a level is highest level at which
modes can be dissected and provides an indication of player progression in a
game. The intent is that level start and ends do not occur more than every 2
minutes or so, otherwise the data reported will be difficult to understand.
Levels are unique only within a given modeID - so you can have a ModeID =1,
LevelID =1 and a different ModeID=2, LevelID = 1 indicate two completely
different levels. LevelID = 0 means undefined or unknown.
*/
enum ETelem_LevelId {
eTelem_LevelId_Undefined = 0,
eTelem_LevelId_PlayerGeneratedLevel = 1,
// 4J Stu - We currently do not have any specific levels (other than the
// tutorial which is tracked as a mode) so this is unused at the moment
};
/*
OptionalSubLevelID
Used when a title has more heirarchy required. OptionalSubLevel ID = 0 means
undefined or unknown.
*/
enum ETelem_SubLevelId {
eTelem_SubLevelId_Undefined = 0,
eTelem_SubLevelId_Overworld,
eTelem_SubLevelId_Nether,
eTelem_SubLevelId_End,
};
/*
MenuID
Describes the specific menu seen. MenuID = 0 means undefined or unknown.
*/
// 4J Stu - FOR REFERENCE ONLY - Should map 1:1 with the
// CConsoleMinecraftApp:EUIScene enum Values that are commented out here are not
// currently reported
enum ETelem_MenuId {
// eTelemMenuId_PartnernetPassword = 0,
// eTelemMenuId_Intro = 1,
// eTelemMenuId_SaveMessage = 2,
// eTelemMenuId_Main = 3,
// eTelemMenuId_FullscreenProgress = 4,
eTelemMenuId_Pause = 5,
// eTelemMenuId_CraftingPanel_2x2 = 6,
// eTelemMenuId_CraftingPanel_3x3 = 7,
// eTelemMenuId_Furnace = 8,
// eTelemMenuId_Container = 9,
// eTelemMenuId_Largecontainer_small = 10,// for splitscreen
// eTelemMenuId_Inventory = 11,
// eTelemMenuId_Trap = 12,
// eTelemMenuId_Debug = 13,
// eTelemMenuId_DebugTips = 14,
// eTelemMenuId_HelpAndOptions = 15,
eTelemMenuId_HowToPlay = 16,
// eTelemMenuId_HowToPlayMenu = 17,
// eTelemMenuId_Controls = 18,
// eTelemMenuId_Settings_Menu = 19,
// eTelemMenuId_Settings_All = 20,
// eTelemMenuId_Leaderboards = 21,
// eTelemMenuId_Credits = 22,
// eTelemMenuId_Death = 23,
// eTelemMenuId_TutorialPopup = 24,
eTelemMenuId_MultiGameCreate = 25,
// eTelemMenuId_MultiGameJoinLoad = 26,
eTelemMenuId_MultiGameInfo = 27,
// eTelemMenuId_SignEntry = 28,
// eTelemMenuId_InGameInfo = 29,
// eTelemMenuId_ConnectingProgress = 30,
eTelemMenuId_DLCOffers = 31,
eTelemMenuId_SocialPost = 32,
// eTelemMenuId_TrialExitUpsell = 33,
eTelemMenuId_LoadSettings = 34,
// eTelemMenuId_Chat = 35,
// eTelemMenuId_Reinstall = 36,
};
/*
OptionalSubMenuID
Used when a title has more heirarchy required. OptionalSubMenuID = 0 means
undefined or unknown.
*/
enum ETelemetry_HowToPlay_SubMenuId {
eTelemetryHowToPlay_Basics = 0,
eTelemetryHowToPlay_HUD,
eTelemetryHowToPlay_Inventory,
eTelemetryHowToPlay_Chest,
eTelemetryHowToPlay_LargeChest,
eTelemetryHowToPlay_InventoryCrafting,
eTelemetryHowToPlay_CraftTable,
eTelemetryHowToPlay_Furnace,
eTelemetryHowToPlay_Dispenser,
eTelemetryHowToPlay_NetherPortal,
};
/*
EnemyTypeID What type of enemy or challenge was the player facing?
To prevent data-loss by overflowing the buffer, we recommend enemy type.
*/
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,
eTelemetryTutorial_Horse, // Java 1.6.4
eTelemetryTutorial_HorseMenu,
eTelemetryTutorial_Fireworks,
eTelemetryTutorial_FireworksMenu,
eTelemetryTutorial_Beacon,
eTelemetryTutorial_BeaconMenu,
eTelemetryTutorial_Hopper,
eTelemetryTutorial_HopperMenu,
// Sent over network as a byte
};

View file

@ -97,13 +97,9 @@ void MemSect(int sect);
#ifdef _WINDOWS64
#include "Minecraft.Client/Windows64/Windows64_App.h"
#include "Minecraft.Client/Windows64/Source Files/Sentient/SentientTelemetryCommon.h"
#include "Minecraft.Client/Windows64/Source Files/Sentient/MinecraftTelemetry.h"
#else
// Use the Linux runtime path with supported metadata/config headers only.
#include "Minecraft.Client/Linux/Linux_App.h"
#include "Minecraft.Client/Linux/Sentient/SentientTelemetryCommon.h"
#include "Minecraft.Client/Linux/Sentient/DynamicConfigurations.h"
#endif
#include "Minecraft.Client/Common/Source Files/DLC/DLCSkinFile.h"