mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/4jcraft.git
synced 2026-09-23 10:24:11 +00:00
nuke the rest of Sentient
This commit is contained in:
@@ -3845,7 +3845,7 @@ int CMinecraftApp::UnlockFullInviteReturned(void* pParam, int iPad,
|
|||||||
// 4J-PB - need to check this user can access the store
|
// 4J-PB - need to check this user can access the store
|
||||||
{
|
{
|
||||||
ProfileManager.DisplayFullVersionPurchase(
|
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(
|
ProfileManager.DisplayFullVersionPurchase(
|
||||||
false, pMinecraft->player->GetXboxPad(),
|
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(
|
ProfileManager.DisplayFullVersionPurchase(
|
||||||
false, pMinecraft->player->GetXboxPad(),
|
false, pMinecraft->player->GetXboxPad(),
|
||||||
eSen_UpsellID_Full_Version_Of_Game);
|
/*eSen_UpsellID_Full_Version_Of_Game*/ 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -3906,7 +3906,7 @@ int CMinecraftApp::TrialOverReturned(void* pParam, int iPad,
|
|||||||
{
|
{
|
||||||
ProfileManager.DisplayFullVersionPurchase(
|
ProfileManager.DisplayFullVersionPurchase(
|
||||||
false, pMinecraft->player->GetXboxPad(),
|
false, pMinecraft->player->GetXboxPad(),
|
||||||
eSen_UpsellID_Full_Version_Of_Game);
|
/*eSen_UpsellID_Full_Version_Of_Game*/ 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pApp->SetAction(pMinecraft->player->GetXboxPad(),
|
pApp->SetAction(pMinecraft->player->GetXboxPad(),
|
||||||
@@ -4168,32 +4168,7 @@ void CMinecraftApp::NotificationsCallback(void* pParam,
|
|||||||
void CMinecraftApp::UpsellReturnedCallback(void* pParam, eUpsellType type,
|
void CMinecraftApp::UpsellReturnedCallback(void* pParam, eUpsellType type,
|
||||||
eUpsellResponse result,
|
eUpsellResponse result,
|
||||||
int iUserData) {
|
int iUserData) {
|
||||||
ESen_UpsellID senType;
|
// 4jcraft: nuked
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_DEBUG_MENUS_ENABLED)
|
#if defined(_DEBUG_MENUS_ENABLED)
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ bool CGameNetworkManager::_RunNetworkGame(void* lpParameter) {
|
|||||||
// 4J-PB - if this is the trial game, start the trial timer
|
// 4J-PB - if this is the trial game, start the trial timer
|
||||||
if (!ProfileManager.IsFullVersion()) {
|
if (!ProfileManager.IsFullVersion()) {
|
||||||
ui.SetTrialTimerLimitSecs(
|
ui.SetTrialTimerLimitSecs(
|
||||||
MinecraftDynamicConfigurations::GetTrialTime());
|
/*DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME*/ 2400);
|
||||||
app.SetTrialTimerStart();
|
app.SetTrialTimerStart();
|
||||||
}
|
}
|
||||||
// app.CloseXuiScenes(ProfileManager.GetPrimaryPad());
|
// app.CloseXuiScenes(ProfileManager.GetPrimaryPad());
|
||||||
|
|||||||
+1
-1
@@ -959,7 +959,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad) {
|
|||||||
// display the full version purchase - if the user is fast with the
|
// display the full version purchase - if the user is fast with the
|
||||||
// trial version, it can still be retrieving the product list
|
// trial version, it can still be retrieving the product list
|
||||||
ProfileManager.DisplayFullVersionPurchase(
|
ProfileManager.DisplayFullVersionPurchase(
|
||||||
false, iPad, eSen_UpsellID_Full_Version_Of_Game);
|
false, iPad, /*eSen_UpsellID_Full_Version_Of_Game*/ 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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
|
// 4J-PB - need to check this user can access the store
|
||||||
{
|
{
|
||||||
ProfileManager.DisplayFullVersionPurchase(
|
ProfileManager.DisplayFullVersionPurchase(
|
||||||
false, iPad, eSen_UpsellID_Full_Version_Of_Game);
|
false, iPad, /*eSen_UpsellID_Full_Version_Of_Game*/ 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
+1
-1
@@ -550,7 +550,7 @@ int UIScene_PauseMenu::UnlockFullSaveReturned(
|
|||||||
{
|
{
|
||||||
ProfileManager.DisplayFullVersionPurchase(
|
ProfileManager.DisplayFullVersionPurchase(
|
||||||
false, pMinecraft->player->GetXboxPad(),
|
false, pMinecraft->player->GetXboxPad(),
|
||||||
eSen_UpsellID_Full_Version_Of_Game);
|
/*eSen_UpsellID_Full_Version_Of_Game*/ 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ std::mutex UIController::ms_reloadSkinCS;
|
|||||||
bool UIController::ms_bReloadSkinCSInitialised = false;
|
bool UIController::ms_bReloadSkinCSInitialised = false;
|
||||||
|
|
||||||
std::uint32_t UIController::m_dwTrialTimerLimitSecs =
|
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,
|
static void RADLINK WarningCallback(void* user_callback_data, Iggy* player,
|
||||||
IggyResult code, const char* message) {
|
IggyResult code, const char* message) {
|
||||||
|
|||||||
@@ -100,10 +100,7 @@ using namespace DirectX;
|
|||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
|
|
||||||
#ifdef _WINDOWS64
|
#ifdef _WINDOWS64
|
||||||
#include "../Windows64/Source Files/Sentient/MinecraftTelemetry.h"
|
|
||||||
#include "../Windows64/Windows64_App.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 "Minecraft.spa.h"
|
||||||
#include "../Windows64/XML/ATGXmlParser.h"
|
#include "../Windows64/XML/ATGXmlParser.h"
|
||||||
#include "../Windows64/Source Files/Social/SocialManager.h"
|
#include "../Windows64/Source Files/Social/SocialManager.h"
|
||||||
@@ -114,8 +111,6 @@ using namespace DirectX;
|
|||||||
#else
|
#else
|
||||||
#include "../Linux/Linux_App.h"
|
#include "../Linux/Linux_App.h"
|
||||||
#include "../Linux/Iggy/include/iggy.h"
|
#include "../Linux/Iggy/include/iggy.h"
|
||||||
#include "../Linux/Sentient/SentientTelemetryCommon.h"
|
|
||||||
#include "../Linux/Sentient/DynamicConfigurations.h"
|
|
||||||
#include "Minecraft.spa.h"
|
#include "Minecraft.spa.h"
|
||||||
#include "../Common/Source Files/Audio/SoundEngine.h"
|
#include "../Common/Source Files/Audio/SoundEngine.h"
|
||||||
#include "../Linux/Linux_UIController.h"
|
#include "../Linux/Linux_UIController.h"
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ static void sigsegv_handler(int sig) {
|
|||||||
// #include "NetworkManager.h"
|
// #include "NetworkManager.h"
|
||||||
#include "../net/minecraft/client/renderer/Tesselator.h"
|
#include "../net/minecraft/client/renderer/Tesselator.h"
|
||||||
#include "../net/minecraft/client/Options.h"
|
#include "../net/minecraft/client/Options.h"
|
||||||
#include "Sentient/SentientManager.h"
|
|
||||||
#include "../net/minecraft/client/renderer/Textures.h"
|
#include "../net/minecraft/client/renderer/Textures.h"
|
||||||
#include "Minecraft.World/Header Files/compression.h"
|
#include "Minecraft.World/Header Files/compression.h"
|
||||||
#include "Minecraft.World/net/minecraft/world/level/chunk/storage/OldChunkStorage.h"
|
#include "Minecraft.World/net/minecraft/world/level/chunk/storage/OldChunkStorage.h"
|
||||||
|
|||||||
@@ -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);
|
|
||||||
};
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include "SentientTelemetryCommon.h"
|
|
||||||
#include "TelemetryEnum.h"
|
|
||||||
#include "SentientStats.h"
|
|
||||||
@@ -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;
|
|
||||||
@@ -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);
|
|
||||||
@@ -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,
|
|
||||||
};
|
|
||||||
@@ -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.� 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 �in the level before exiting.
|
|
||||||
LevelExitProgressStat2 Refers to the highest level performance metric for your
|
|
||||||
game.� 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 �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.� 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�s experience, even if they play the same level multiple times. These IDs
|
|
||||||
are critical to allowing us to re-stitch a player�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
|
|
||||||
};
|
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
// #include <compressapi.h>
|
// #include <compressapi.h>
|
||||||
|
|
||||||
#if defined(_WINDOWS64)
|
#if defined(_WINDOWS64)
|
||||||
#include "../Windows64/Source Files/Sentient/SentientManager.h"
|
|
||||||
#include "../net/minecraft/stats/StatsCounter.h"
|
#include "../net/minecraft/stats/StatsCounter.h"
|
||||||
#include "../Windows64/Source Files/Social/SocialManager.h"
|
#include "../Windows64/Source Files/Social/SocialManager.h"
|
||||||
#include "../Windows64/Source Files/Sentient/DynamicConfigurations.h"
|
#include "../Windows64/Source Files/Sentient/DynamicConfigurations.h"
|
||||||
@@ -11,7 +10,6 @@
|
|||||||
// via #pragma once. Pull in SentientManager for CSentientManager class
|
// via #pragma once. Pull in SentientManager for CSentientManager class
|
||||||
// declaration and StatsCounter; CSocialManager is provided as inline stubs via
|
// declaration and StatsCounter; CSocialManager is provided as inline stubs via
|
||||||
// Linux/Social/SocialManager.h.
|
// Linux/Social/SocialManager.h.
|
||||||
#include "../Linux/Sentient/SentientManager.h"
|
|
||||||
#include "../net/minecraft/stats/StatsCounter.h"
|
#include "../net/minecraft/stats/StatsCounter.h"
|
||||||
#else
|
#else
|
||||||
#include "../net/minecraft/stats/StatsCounter.h"
|
#include "../net/minecraft/stats/StatsCounter.h"
|
||||||
@@ -21,7 +19,7 @@
|
|||||||
// C4JStorage StorageManager;
|
// C4JStorage StorageManager;
|
||||||
C_4JProfile ProfileManager;
|
C_4JProfile ProfileManager;
|
||||||
#endif
|
#endif
|
||||||
CSentientManager SentientManager;
|
|
||||||
#if !defined(__linux__)
|
#if !defined(__linux__)
|
||||||
// On Linux this global shadows the project's StringTable class name in unity
|
// On Linux this global shadows the project's StringTable class name in unity
|
||||||
// builds
|
// builds
|
||||||
@@ -197,10 +195,6 @@ int32_t IQNet::JoinGameFromInviteInfo(uint32_t dwUserIndex, uint32_t dwUserMask,
|
|||||||
void IQNet::HostGame() { _bQNetStubGameRunning = true; }
|
void IQNet::HostGame() { _bQNetStubGameRunning = true; }
|
||||||
void IQNet::EndGame() { _bQNetStubGameRunning = false; }
|
void IQNet::EndGame() { _bQNetStubGameRunning = false; }
|
||||||
|
|
||||||
uint32_t MinecraftDynamicConfigurations::GetTrialTime() {
|
|
||||||
return DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME;
|
|
||||||
}
|
|
||||||
|
|
||||||
void XSetThreadProcessor(void* a, int b) {}
|
void XSetThreadProcessor(void* a, int b) {}
|
||||||
// #if !(0) && !(0)
|
// #if !(0) && !(0)
|
||||||
// bool XCloseHandle(void* a) { return CloseHandle(a); }
|
// bool XCloseHandle(void* a) { return CloseHandle(a); }
|
||||||
@@ -706,92 +700,6 @@ C4JStorage::ETMSStatus C4JStorage::TMSPP_ReadFile(
|
|||||||
|
|
||||||
#endif
|
#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
|
//////////////////////////////////////////////////////// Stats counter
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -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);
|
|
||||||
};
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include "SentientTelemetryCommon.h"
|
|
||||||
#include "TelemetryEnum.h"
|
|
||||||
#include "SentientStats.h"
|
|
||||||
@@ -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;
|
|
||||||
@@ -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);
|
|
||||||
@@ -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,
|
|
||||||
};
|
|
||||||
@@ -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.� 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 �in the level before exiting.
|
|
||||||
LevelExitProgressStat2 Refers to the highest level performance metric for your
|
|
||||||
game.� 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 �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.� 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�s experience, even if they play the same level multiple times. These IDs
|
|
||||||
are critical to allowing us to re-stitch a player�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
|
|
||||||
};
|
|
||||||
@@ -97,13 +97,9 @@ void MemSect(int sect);
|
|||||||
|
|
||||||
#ifdef _WINDOWS64
|
#ifdef _WINDOWS64
|
||||||
#include "Minecraft.Client/Windows64/Windows64_App.h"
|
#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
|
#else
|
||||||
// Use the Linux runtime path with supported metadata/config headers only.
|
// Use the Linux runtime path with supported metadata/config headers only.
|
||||||
#include "Minecraft.Client/Linux/Linux_App.h"
|
#include "Minecraft.Client/Linux/Linux_App.h"
|
||||||
#include "Minecraft.Client/Linux/Sentient/SentientTelemetryCommon.h"
|
|
||||||
#include "Minecraft.Client/Linux/Sentient/DynamicConfigurations.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "Minecraft.Client/Common/Source Files/DLC/DLCSkinFile.h"
|
#include "Minecraft.Client/Common/Source Files/DLC/DLCSkinFile.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user