Skip to content

Commit 9177578

Browse files
committed
finish SteamUserStats
1 parent 50ce154 commit 9177578

File tree

3 files changed

+664
-16
lines changed

3 files changed

+664
-16
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ ISteamRemoteStorage | :x: |
2727
ISteamScreenshots | :x: |
2828
ISteamUGC | :x: |
2929
ISteamUser | :heavy_check_mark: |
30-
ISteamUserStats | :x: |
30+
ISteamUserStats | :heavy_check_mark: | [1] (4)
3131
ISteamUtils | :heavy_check_mark: | [1] (5)
3232
ISteamVideo | :heavy_check_mark: |
3333
SteamWeb | :x: | [2] |
@@ -48,7 +48,7 @@ Go to the [releases](https://github.com/trdwll/SteamBridge/releases) page and do
4848

4949
Using SteamBridge is actually really easy.
5050

51-
- Edit your `DefaultEngine.ini` and make sure the Steam config exists like below.
51+
- Edit your `DefaultEngine.ini` and make sure the Steam config exists like [here](https://github.com/trdwll/SteamBridge/blob/main/ExampleDefaultEngine.ini).
5252
- Open your project and start using SteamBridge.
5353

5454

Source/SteamBridge/Private/Core/SteamUserStats.cpp

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,34 @@
66

77
USteamUserStats::USteamUserStats()
88
{
9+
OnGlobalAchievementPercentagesReadyCallback.Register(this, &USteamUserStats::OnGlobalAchievementPercentagesReady);
10+
OnGlobalStatsReceivedCallback.Register(this, &USteamUserStats::OnGlobalStatsReceived);
11+
OnLeaderboardFindResultCallback.Register(this, &USteamUserStats::OnLeaderboardFindResult);
12+
OnLeaderboardScoresDownloadedCallback.Register(this, &USteamUserStats::OnLeaderboardScoresDownloaded);
13+
OnLeaderboardScoreUploadedCallback.Register(this, &USteamUserStats::OnLeaderboardScoreUploaded);
14+
OnLeaderboardUGCSetCallback.Register(this, &USteamUserStats::OnLeaderboardUGCSet);
15+
OnNumberOfCurrentPlayersCallback.Register(this, &USteamUserStats::OnNumberOfCurrentPlayers);
16+
OnUserAchievementIconFetchedCallback.Register(this, &USteamUserStats::OnUserAchievementIconFetched);
17+
OnUserAchievementStoredCallback.Register(this, &USteamUserStats::OnUserAchievementStored);
18+
OnUserStatsReceivedCallback.Register(this, &USteamUserStats::OnUserStatsReceived);
19+
OnUserStatsStoredCallback.Register(this, &USteamUserStats::OnUserStatsStored);
20+
OnUserStatsUnloadedCallback.Register(this, &USteamUserStats::OnUserStatsUnloaded);
921
}
1022

1123
USteamUserStats::~USteamUserStats()
1224
{
25+
OnGlobalAchievementPercentagesReadyCallback.Unregister();
26+
OnGlobalStatsReceivedCallback.Unregister();
27+
OnLeaderboardFindResultCallback.Unregister();
28+
OnLeaderboardScoresDownloadedCallback.Unregister();
29+
OnLeaderboardScoreUploadedCallback.Unregister();
30+
OnLeaderboardUGCSetCallback.Unregister();
31+
OnNumberOfCurrentPlayersCallback.Unregister();
32+
OnUserAchievementIconFetchedCallback.Unregister();
33+
OnUserAchievementStoredCallback.Unregister();
34+
OnUserStatsReceivedCallback.Unregister();
35+
OnUserStatsStoredCallback.Unregister();
36+
OnUserStatsUnloadedCallback.Unregister();
1337
}
1438

1539
FSteamAPICall USteamUserStats::DownloadLeaderboardEntries(FSteamLeaderboard SteamLeaderboard, ESteamLeaderboardDataRequest LeaderboardDataRequest, int32 RangeStart, int32 RangeEnd) const
@@ -56,3 +80,76 @@ int32 USteamUserStats::GetGlobalStatHistoryFloat(const FString& StatName, TArray
5680
}
5781
return result;
5882
}
83+
84+
bool USteamUserStats::GetUserAchievementAndUnlockTime(FSteamID SteamIDUser, const FString& Name, bool& bAchieved, int32& UnlockTime) const
85+
{
86+
uint32 TmpUnlockTime;
87+
bool bResult = SteamUserStats()->GetUserAchievementAndUnlockTime(SteamIDUser, TCHAR_TO_UTF8(*Name), &bAchieved, &TmpUnlockTime);
88+
UnlockTime = TmpUnlockTime;
89+
return bResult;
90+
}
91+
92+
FSteamAPICall USteamUserStats::UploadLeaderboardScore(FSteamLeaderboard SteamLeaderboard, ESteamLeaderboardUploadScoreMethod LeaderboardUploadScoreMethod, int32 Score, const TArray<int32>& ScoreDetails) const
93+
{
94+
return SteamUserStats()->UploadLeaderboardScore(SteamLeaderboard, (ELeaderboardUploadScoreMethod)LeaderboardUploadScoreMethod, Score, ScoreDetails.GetData(), ScoreDetails.Num());
95+
}
96+
97+
void USteamUserStats::OnGlobalAchievementPercentagesReady(GlobalAchievementPercentagesReady_t* pParam)
98+
{
99+
m_OnGlobalAchievementPercentagesReady.Broadcast(pParam->m_nGameID, (ESteamResult)pParam->m_eResult);
100+
}
101+
102+
void USteamUserStats::OnGlobalStatsReceived(GlobalStatsReceived_t* pParam)
103+
{
104+
m_OnGlobalStatsReceived.Broadcast(pParam->m_nGameID, (ESteamResult)pParam->m_eResult);
105+
}
106+
107+
void USteamUserStats::OnLeaderboardFindResult(LeaderboardFindResult_t* pParam)
108+
{
109+
m_OnLeaderboardFindResult.Broadcast(pParam->m_hSteamLeaderboard, pParam->m_bLeaderboardFound == 1);
110+
}
111+
112+
void USteamUserStats::OnLeaderboardScoresDownloaded(LeaderboardScoresDownloaded_t* pParam)
113+
{
114+
m_OnLeaderboardScoresDownloaded.Broadcast(pParam->m_hSteamLeaderboard, pParam->m_hSteamLeaderboardEntries, pParam->m_cEntryCount);
115+
}
116+
117+
void USteamUserStats::OnLeaderboardScoreUploaded(LeaderboardScoreUploaded_t* pParam)
118+
{
119+
m_OnLeaderboardScoreUploaded.Broadcast(pParam->m_bSuccess == 1, pParam->m_hSteamLeaderboard, pParam->m_nScore, pParam->m_bScoreChanged == 1, pParam->m_nGlobalRankNew, pParam->m_nGlobalRankPrevious);
120+
}
121+
122+
void USteamUserStats::OnLeaderboardUGCSet(LeaderboardUGCSet_t* pParam)
123+
{
124+
m_OnLeaderboardUGCSet.Broadcast((ESteamResult)pParam->m_eResult, pParam->m_hSteamLeaderboard);
125+
}
126+
127+
void USteamUserStats::OnNumberOfCurrentPlayers(NumberOfCurrentPlayers_t* pParam)
128+
{
129+
m_OnNumberOfCurrentPlayers.Broadcast(pParam->m_bSuccess == 1, pParam->m_cPlayers);
130+
}
131+
132+
void USteamUserStats::OnUserAchievementIconFetched(UserAchievementIconFetched_t* pParam)
133+
{
134+
m_OnUserAchievementIconFetched.Broadcast(pParam->m_nGameID.ToUint64(), UTF8_TO_TCHAR(pParam->m_rgchAchievementName), pParam->m_bAchieved, pParam->m_nIconHandle);
135+
}
136+
137+
void USteamUserStats::OnUserAchievementStored(UserAchievementStored_t* pParam)
138+
{
139+
m_OnUserAchievementStored.Broadcast(pParam->m_nGameID, pParam->m_bGroupAchievement, UTF8_TO_TCHAR(pParam->m_rgchAchievementName), pParam->m_nCurProgress, pParam->m_nMaxProgress);
140+
}
141+
142+
void USteamUserStats::OnUserStatsReceived(UserStatsReceived_t* pParam)
143+
{
144+
m_OnUserStatsReceived.Broadcast(pParam->m_nGameID, (ESteamResult)pParam->m_eResult, pParam->m_steamIDUser.ConvertToUint64());
145+
}
146+
147+
void USteamUserStats::OnUserStatsStored(UserStatsStored_t* pParam)
148+
{
149+
m_OnUserStatsStored.Broadcast(pParam->m_nGameID, (ESteamResult)pParam->m_eResult);
150+
}
151+
152+
void USteamUserStats::OnUserStatsUnloaded(UserStatsUnloaded_t* pParam)
153+
{
154+
m_OnUserStatsUnloaded.Broadcast(pParam->m_steamIDUser.ConvertToUint64());
155+
}

0 commit comments

Comments
 (0)