Remove WinAPI types from common telemetry helpers

This commit is contained in:
notmatthewbeshay 2026-03-14 06:46:51 +11:00
parent ff592ca6a1
commit 9abfbb0c67
2 changed files with 74 additions and 74 deletions

View file

@ -146,9 +146,9 @@ Title needs to track this and report it as a property.
These times will be used to create timelines and understand durations. These times will be used to create timelines and understand durations.
This should be tracked independently of saved games (restoring a save should not reset the seconds since initialize) This should be tracked independently of saved games (restoring a save should not reset the seconds since initialize)
*/ */
INT CTelemetryManager::GetSecondsSinceInitialize() int CTelemetryManager::GetSecondsSinceInitialize()
{ {
return (INT)(app.getAppTime() - m_initialiseTime); return static_cast<int>(app.getAppTime() - m_initialiseTime);
} }
/* /*
@ -159,27 +159,27 @@ The intent is to allow teams to capture data on the highest level categories of
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. 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.
The intent is to answer the question "How are players playing your game?" The intent is to answer the question "How are players playing your game?"
*/ */
INT CTelemetryManager::GetMode(DWORD dwUserId) int CTelemetryManager::GetMode(int userId)
{ {
INT mode = (INT)eTelem_ModeId_Undefined; int mode = static_cast<int>(eTelem_ModeId_Undefined);
Minecraft *pMinecraft = Minecraft::GetInstance(); Minecraft *pMinecraft = Minecraft::GetInstance();
if( pMinecraft->localplayers[dwUserId] != NULL && pMinecraft->localplayers[dwUserId]->level != NULL && pMinecraft->localplayers[dwUserId]->level->getLevelData() != NULL ) if( pMinecraft->localplayers[userId] != NULL && pMinecraft->localplayers[userId]->level != NULL && pMinecraft->localplayers[userId]->level->getLevelData() != NULL )
{ {
GameType *gameType = pMinecraft->localplayers[dwUserId]->level->getLevelData()->getGameType(); GameType *gameType = pMinecraft->localplayers[userId]->level->getLevelData()->getGameType();
if (gameType->isSurvival()) if (gameType->isSurvival())
{ {
mode = (INT)eTelem_ModeId_Survival; mode = static_cast<int>(eTelem_ModeId_Survival);
} }
else if (gameType->isCreative()) else if (gameType->isCreative())
{ {
mode = (INT)eTelem_ModeId_Creative; mode = static_cast<int>(eTelem_ModeId_Creative);
} }
else else
{ {
mode = (INT)eTelem_ModeId_Undefined; mode = static_cast<int>(eTelem_ModeId_Undefined);
} }
} }
return mode; return mode;
@ -192,17 +192,17 @@ For titles that have sub-modes (Sports/Football).
Mode is always an indicator of "How is the player choosing to play my game?" so these do not have to be consecutive. Mode is always an indicator of "How is the player choosing to play my game?" so these do not have to be consecutive.
LevelIDs and SubLevelIDs can be reused as they will always be paired with a Mode/SubModeID, Mode should be unique - SubMode can be shared between modes. LevelIDs and SubLevelIDs can be reused as they will always be paired with a Mode/SubModeID, Mode should be unique - SubMode can be shared between modes.
*/ */
INT CTelemetryManager::GetSubMode(DWORD dwUserId) int CTelemetryManager::GetSubMode(int userId)
{ {
INT subMode = (INT)eTelem_SubModeId_Undefined; int subMode = static_cast<int>(eTelem_SubModeId_Undefined);
if(Minecraft::GetInstance()->isTutorial()) if(Minecraft::GetInstance()->isTutorial())
{ {
subMode = (INT)eTelem_SubModeId_Tutorial; subMode = static_cast<int>(eTelem_SubModeId_Tutorial);
} }
else else
{ {
subMode = (INT)eTelem_SubModeId_Normal; subMode = static_cast<int>(eTelem_SubModeId_Normal);
} }
return subMode; return subMode;
@ -216,11 +216,11 @@ The intent is that level start and ends do not occur more than every 2 minutes o
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. 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. LevelID = 0 means undefined or unknown.
*/ */
INT CTelemetryManager::GetLevelId(DWORD dwUserId) int CTelemetryManager::GetLevelId(int userId)
{ {
INT levelId = (INT)eTelem_LevelId_Undefined; int levelId = static_cast<int>(eTelem_LevelId_Undefined);
levelId = (INT)eTelem_LevelId_PlayerGeneratedLevel; levelId = static_cast<int>(eTelem_LevelId_PlayerGeneratedLevel);
return levelId; return levelId;
} }
@ -231,24 +231,24 @@ For titles that have sub-levels.
Level is always an indicator of "How far has the player progressed." so when possible these should be consecutive or at least monotonically increasing. Level is always an indicator of "How far has the player progressed." so when possible these should be consecutive or at least monotonically increasing.
LevelIDs and SubLevelIDs can be reused as they will always be paired with a Mode/SubModeID LevelIDs and SubLevelIDs can be reused as they will always be paired with a Mode/SubModeID
*/ */
INT CTelemetryManager::GetSubLevelId(DWORD dwUserId) int CTelemetryManager::GetSubLevelId(int userId)
{ {
INT subLevelId = (INT)eTelem_SubLevelId_Undefined; int subLevelId = static_cast<int>(eTelem_SubLevelId_Undefined);
Minecraft *pMinecraft = Minecraft::GetInstance(); Minecraft *pMinecraft = Minecraft::GetInstance();
if(pMinecraft->localplayers[dwUserId] != NULL) if(pMinecraft->localplayers[userId] != NULL)
{ {
switch(pMinecraft->localplayers[dwUserId]->dimension) switch(pMinecraft->localplayers[userId]->dimension)
{ {
case 0: case 0:
subLevelId = (INT)eTelem_SubLevelId_Overworld; subLevelId = static_cast<int>(eTelem_SubLevelId_Overworld);
break; break;
case -1: case -1:
subLevelId = (INT)eTelem_SubLevelId_Nether; subLevelId = static_cast<int>(eTelem_SubLevelId_Nether);
break; break;
case 1: case 1:
subLevelId = (INT)eTelem_SubLevelId_End; subLevelId = static_cast<int>(eTelem_SubLevelId_End);
break; break;
}; };
} }
@ -260,9 +260,9 @@ INT CTelemetryManager::GetSubLevelId(DWORD dwUserId)
Build version of the title, used to track changes in development as well as patches/title updates Build version of the title, used to track changes in development as well as patches/title updates
Allows developer to separate out stats from different builds Allows developer to separate out stats from different builds
*/ */
INT CTelemetryManager::GetTitleBuildId() int CTelemetryManager::GetTitleBuildId()
{ {
return (INT)VER_PRODUCTBUILD; return static_cast<int>(VER_PRODUCTBUILD);
} }
/* /*
@ -270,32 +270,32 @@ Generated by the game every time LevelStart or LevelResume is called.
This should be a unique ID (can be sequential) within a session. This should be a unique ID (can be sequential) within a session.
Helps differentiate level attempts when a play plays the same mode/level - especially with aggregated stats Helps differentiate level attempts when a play plays the same mode/level - especially with aggregated stats
*/ */
INT CTelemetryManager::GetLevelInstanceID() int CTelemetryManager::GetLevelInstanceID()
{ {
return (INT)m_levelInstanceID; return m_levelInstanceID;
} }
/* /*
MultiplayerinstanceID is a title-generated value that is the same for all players in the same multiplayer session. MultiplayerinstanceID is a title-generated value that is the same for all players in the same multiplayer session.
Link up players into a single multiplayer session ID. Link up players into a single multiplayer session ID.
*/ */
INT CTelemetryManager::GetMultiplayerInstanceID() int CTelemetryManager::GetMultiplayerInstanceID()
{ {
return m_multiplayerInstanceID; return m_multiplayerInstanceID;
} }
INT CTelemetryManager::GenerateMultiplayerInstanceId() int CTelemetryManager::GenerateMultiplayerInstanceId()
{ {
#if defined(_DURANGO) || defined(_XBOX) #if defined(_DURANGO) || defined(_XBOX)
FILETIME SystemTimeAsFileTime; FILETIME SystemTimeAsFileTime;
GetSystemTimeAsFileTime( &SystemTimeAsFileTime ); GetSystemTimeAsFileTime( &SystemTimeAsFileTime );
return *((INT *)&SystemTimeAsFileTime.dwLowDateTime); return static_cast<int>(SystemTimeAsFileTime.dwLowDateTime);
#else #else
return 0; return 0;
#endif #endif
} }
void CTelemetryManager::SetMultiplayerInstanceId(INT value) void CTelemetryManager::SetMultiplayerInstanceId(int value)
{ {
m_multiplayerInstanceID = value; m_multiplayerInstanceID = value;
} }
@ -304,9 +304,9 @@ void CTelemetryManager::SetMultiplayerInstanceId(INT value)
Indicates whether the game is being played in single or multiplayer mode and whether multiplayer is being played locally or over live. Indicates whether the game is being played in single or multiplayer mode and whether multiplayer is being played locally or over live.
How social is your game? How do people play it? How social is your game? How do people play it?
*/ */
INT CTelemetryManager::GetSingleOrMultiplayer() int CTelemetryManager::GetSingleOrMultiplayer()
{ {
INT singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Undefined; int singleOrMultiplayer = static_cast<int>(eSen_SingleOrMultiplayer_Undefined);
// Unused // Unused
//eSen_SingleOrMultiplayer_Single_Player //eSen_SingleOrMultiplayer_Single_Player
@ -314,19 +314,19 @@ INT CTelemetryManager::GetSingleOrMultiplayer()
if(app.GetLocalPlayerCount() == 1 && g_NetworkManager.GetOnlinePlayerCount() == 0) if(app.GetLocalPlayerCount() == 1 && g_NetworkManager.GetOnlinePlayerCount() == 0)
{ {
singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Single_Player; singleOrMultiplayer = static_cast<int>(eSen_SingleOrMultiplayer_Single_Player);
} }
else if(app.GetLocalPlayerCount() > 1 && g_NetworkManager.GetOnlinePlayerCount() == 0) else if(app.GetLocalPlayerCount() > 1 && g_NetworkManager.GetOnlinePlayerCount() == 0)
{ {
singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Multiplayer_Local; singleOrMultiplayer = static_cast<int>(eSen_SingleOrMultiplayer_Multiplayer_Local);
} }
else if(app.GetLocalPlayerCount() == 1 && g_NetworkManager.GetOnlinePlayerCount() > 0) else if(app.GetLocalPlayerCount() == 1 && g_NetworkManager.GetOnlinePlayerCount() > 0)
{ {
singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Multiplayer_Live; singleOrMultiplayer = static_cast<int>(eSen_SingleOrMultiplayer_Multiplayer_Live);
} }
else if(app.GetLocalPlayerCount() > 1 && g_NetworkManager.GetOnlinePlayerCount() > 0) else if(app.GetLocalPlayerCount() > 1 && g_NetworkManager.GetOnlinePlayerCount() > 0)
{ {
singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Multiplayer_Both_Local_and_Live; singleOrMultiplayer = static_cast<int>(eSen_SingleOrMultiplayer_Multiplayer_Both_Local_and_Live);
} }
return singleOrMultiplayer; return singleOrMultiplayer;
@ -336,23 +336,23 @@ INT CTelemetryManager::GetSingleOrMultiplayer()
An in-game setting that differentiates the challenge imposed on the user. An in-game setting that differentiates the challenge imposed on the user.
Normalized to a standard 5-point scale. Are players changing the difficulty? Normalized to a standard 5-point scale. Are players changing the difficulty?
*/ */
INT CTelemetryManager::GetDifficultyLevel(INT diff) int CTelemetryManager::GetDifficultyLevel(int diff)
{ {
INT difficultyLevel = (INT)eSen_DifficultyLevel_Undefined; int difficultyLevel = static_cast<int>(eSen_DifficultyLevel_Undefined);
switch(diff) switch(diff)
{ {
case 0: case 0:
difficultyLevel = (INT)eSen_DifficultyLevel_Easiest; difficultyLevel = static_cast<int>(eSen_DifficultyLevel_Easiest);
break; break;
case 1: case 1:
difficultyLevel = (INT)eSen_DifficultyLevel_Easier; difficultyLevel = static_cast<int>(eSen_DifficultyLevel_Easier);
break; break;
case 2: case 2:
difficultyLevel = (INT)eSen_DifficultyLevel_Normal; difficultyLevel = static_cast<int>(eSen_DifficultyLevel_Normal);
break; break;
case 3: case 3:
difficultyLevel = (INT)eSen_DifficultyLevel_Harder; difficultyLevel = static_cast<int>(eSen_DifficultyLevel_Harder);
break; break;
} }
@ -366,17 +366,17 @@ INT CTelemetryManager::GetDifficultyLevel(INT diff)
Differentiates trial/demo from full purchased titles Differentiates trial/demo from full purchased titles
Is this a full title or demo? Is this a full title or demo?
*/ */
INT CTelemetryManager::GetLicense() int CTelemetryManager::GetLicense()
{ {
INT license = eSen_License_Undefined; int license = eSen_License_Undefined;
if(ProfileManager.IsFullVersion()) if(ProfileManager.IsFullVersion())
{ {
license = (INT)eSen_License_Full_Purchased_Title; license = static_cast<int>(eSen_License_Full_Purchased_Title);
} }
else else
{ {
license = (INT)eSen_License_Trial_or_Demo; license = static_cast<int>(eSen_License_Trial_or_Demo);
} }
return license; return license;
} }
@ -385,9 +385,9 @@ INT CTelemetryManager::GetLicense()
This is intended to capture whether players played using default control scheme or customized the control scheme. This is intended to capture whether players played using default control scheme or customized the control scheme.
Are players customizing your controls? Are players customizing your controls?
*/ */
INT CTelemetryManager::GetDefaultGameControls() int CTelemetryManager::GetDefaultGameControls()
{ {
INT defaultGameControls = eSen_DefaultGameControls_Undefined; int defaultGameControls = eSen_DefaultGameControls_Undefined;
// Unused // Unused
//eSen_DefaultGameControls_Custom_controls //eSen_DefaultGameControls_Custom_controls
@ -401,25 +401,25 @@ INT CTelemetryManager::GetDefaultGameControls()
Are players changing default audio settings? Are players changing default audio settings?
This is intended to capture whether players are playing with or without volume and whether they make changes from the default audio settings. This is intended to capture whether players are playing with or without volume and whether they make changes from the default audio settings.
*/ */
INT CTelemetryManager::GetAudioSettings(DWORD dwUserId) int CTelemetryManager::GetAudioSettings(int userId)
{ {
INT audioSettings = (INT)eSen_AudioSettings_Undefined; int audioSettings = static_cast<int>(eSen_AudioSettings_Undefined);
if(dwUserId == ProfileManager.GetPrimaryPad()) if(userId == ProfileManager.GetPrimaryPad())
{ {
BYTE volume = app.GetGameSettings(dwUserId,eGameSetting_SoundFXVolume); unsigned char volume = app.GetGameSettings(userId, eGameSetting_SoundFXVolume);
if(volume == 0) if(volume == 0)
{ {
audioSettings = (INT)eSen_AudioSettings_Off; audioSettings = static_cast<int>(eSen_AudioSettings_Off);
} }
else if(volume == DEFAULT_VOLUME_LEVEL) else if(volume == DEFAULT_VOLUME_LEVEL)
{ {
audioSettings = (INT)eSen_AudioSettings_On_Default; audioSettings = static_cast<int>(eSen_AudioSettings_On_Default);
} }
else else
{ {
audioSettings = (INT)eSen_AudioSettings_On_CustomSetting; audioSettings = static_cast<int>(eSen_AudioSettings_On_CustomSetting);
} }
} }
return audioSettings; return audioSettings;
@ -431,7 +431,7 @@ For example, a performance metric could points earned, race time, total kills, e
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. 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.
How far did users progress before failing/exiting the level? How far did users progress before failing/exiting the level?
*/ */
INT CTelemetryManager::GetLevelExitProgressStat1() int CTelemetryManager::GetLevelExitProgressStat1()
{ {
// 4J Stu - Unused // 4J Stu - Unused
return 0; return 0;
@ -443,7 +443,7 @@ For example, a performance metric could points earned, race time, total kills, e
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. 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.
How far did users progress before failing/exiting the level? How far did users progress before failing/exiting the level?
*/ */
INT CTelemetryManager::GetLevelExitProgressStat2() int CTelemetryManager::GetLevelExitProgressStat2()
{ {
// 4J Stu - Unused // 4J Stu - Unused
return 0; return 0;

View file

@ -50,24 +50,24 @@ protected:
float m_fLevelStartTime[XUSER_MAX_COUNT]; float m_fLevelStartTime[XUSER_MAX_COUNT];
INT m_multiplayerInstanceID; int m_multiplayerInstanceID;
DWORD m_levelInstanceID; int m_levelInstanceID;
// Helper functions to get the various common settings // Helper functions to get the various common settings
INT GetSecondsSinceInitialize(); int GetSecondsSinceInitialize();
INT GetMode(DWORD dwUserId); int GetMode(int userId);
INT GetSubMode(DWORD dwUserId); int GetSubMode(int userId);
INT GetLevelId(DWORD dwUserId); int GetLevelId(int userId);
INT GetSubLevelId(DWORD dwUserId); int GetSubLevelId(int userId);
INT GetTitleBuildId(); int GetTitleBuildId();
INT GetLevelInstanceID(); int GetLevelInstanceID();
INT GetSingleOrMultiplayer(); int GetSingleOrMultiplayer();
INT GetDifficultyLevel(INT diff); int GetDifficultyLevel(int diff);
INT GetLicense(); int GetLicense();
INT GetDefaultGameControls(); int GetDefaultGameControls();
INT GetAudioSettings(DWORD dwUserId); int GetAudioSettings(int userId);
INT GetLevelExitProgressStat1(); int GetLevelExitProgressStat1();
INT GetLevelExitProgressStat2(); int GetLevelExitProgressStat2();
}; };
extern CTelemetryManager *TelemetryManager; extern CTelemetryManager *TelemetryManager;