Space Plunder
Loading...
Searching...
No Matches
UDownloadLeaderboard Class Reference

#include <DownloadLeaderboard.h>

Inheritance diagram for UDownloadLeaderboard:

Static Public Member Functions

static UDownloadLeaderboardDownloadLeaderboard (const FSteamLeaderboardHandle Handle, const ESteamLeaderboardDataRequest RequestType, const int32 Start, const int32 End)
 

Public Attributes

FResponseDownloadLeaderboardDelegate OnSuccess
 
FResponseDownloadLeaderboardDelegate OnFailure
 

Private Member Functions

virtual void Activate () override
 
void DownloadLeaderboardEntries ()
 
void OnLeaderboardDownloaded (LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded, bool bIOFailure)
 

Private Attributes

FOnlineSubsystemSteam * SteamSubsystem
 
FSteamLeaderboardHandle LeaderboardHandle
 
FString LeaderboardName
 
ESteamLeaderboardDataRequest Type
 
int32 RangeStart
 
int32 RangeEnd
 
TArray< FSteamLeaderboardEntrySteamLeaderboardResults
 
CCallResult< UDownloadLeaderboard, LeaderboardScoresDownloaded_t > m_callDownloadResult
 

Member Function Documentation

◆ Activate()

void UDownloadLeaderboard::Activate ( )
overrideprivatevirtual
26{
27 if(SteamAPI_Init())
28 {
30 }
31 else
32 {
33 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Failed to initialize the Steam API!"));
34 OnFailure.Broadcast(SteamLeaderboardResults, EResult::k_EResultFail);
35 RemoveFromRoot();
36 }
37}
TArray< FSteamLeaderboardEntry > SteamLeaderboardResults
Definition DownloadLeaderboard.h:77
FResponseDownloadLeaderboardDelegate OnFailure
Definition DownloadLeaderboard.h:46
void DownloadLeaderboardEntries()
Definition DownloadLeaderboard.cpp:39

◆ DownloadLeaderboard()

UDownloadLeaderboard * UDownloadLeaderboard::DownloadLeaderboard ( const FSteamLeaderboardHandle Handle,
const ESteamLeaderboardDataRequest RequestType,
const int32 Start,
const int32 End )
static
8{
9 UDownloadLeaderboard* SelfRef = NewObject<UDownloadLeaderboard>();
10 SelfRef->SteamSubsystem = static_cast<FOnlineSubsystemSteam*>(IOnlineSubsystem::Get());
11 SelfRef->LeaderboardHandle = Handle;
12 SelfRef->RangeStart = Start;
13 SelfRef->RangeEnd = End;
14 SelfRef->Type = RequestType;
15 return SelfRef;
16}
Definition DownloadLeaderboard.h:38
FSteamLeaderboardHandle LeaderboardHandle
Definition DownloadLeaderboard.h:71
FOnlineSubsystemSteam * SteamSubsystem
Definition DownloadLeaderboard.h:66
int32 RangeEnd
Definition DownloadLeaderboard.h:75
int32 RangeStart
Definition DownloadLeaderboard.h:74
ESteamLeaderboardDataRequest Type
Definition DownloadLeaderboard.h:73

◆ DownloadLeaderboardEntries()

void UDownloadLeaderboard::DownloadLeaderboardEntries ( )
private
40{
41 uint8 RequestTypeIndex = static_cast<uint8>(Type);
42 const ELeaderboardDataRequest RequestType = static_cast<ELeaderboardDataRequest>(RequestTypeIndex);
43 // if(RequestType == ELeaderboardDataRequest::k_ELeaderboardDataRequestUsers)
44 // {
45 // SteamAPICall_t hSteamAPICall = SteamUserStats()->DownloadLeaderboardEntriesForUsers(LeaderboardHandle.Handle, RequestType, RangeStart, RangeEnd);
46 // }
47 SteamAPICall_t hSteamAPICall = SteamUserStats()->DownloadLeaderboardEntries(LeaderboardHandle.Handle, RequestType, RangeStart, RangeEnd);
49}
void OnLeaderboardDownloaded(LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded, bool bIOFailure)
Definition DownloadLeaderboard.cpp:51
CCallResult< UDownloadLeaderboard, LeaderboardScoresDownloaded_t > m_callDownloadResult
Definition DownloadLeaderboard.h:80
FSteamLeaderboard Handle
Definition LeaderboardData.h:71

◆ OnLeaderboardDownloaded()

void UDownloadLeaderboard::OnLeaderboardDownloaded ( LeaderboardScoresDownloaded_t * pLeaderboardScoresDownloaded,
bool bIOFailure )
private
52{
53 for(int32 Index = 0; Index < pLeaderboardScoresDownloaded->m_cEntryCount; Index++ )
54 {
55 FSteamLeaderboardEntry SteamLeaderboardEntry;
56 LeaderboardEntry_t LeaderboardEntry;
57 int32 Details[3]; // we know this is how many we've stored previously
58 if(SteamUserStats()->GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, Index, &LeaderboardEntry, Details, 3))
59 {
60 SteamLeaderboardEntry.UserID = FString::Printf(TEXT("%llu"), LeaderboardEntry.m_steamIDUser.ConvertToUint64());
61 SteamLeaderboardEntry.User = SteamFriends()->GetFriendPersonaName(LeaderboardEntry.m_steamIDUser);
62 SteamLeaderboardEntry.Score = LeaderboardEntry.m_nScore;
63 SteamLeaderboardEntry.Rank = LeaderboardEntry.m_nGlobalRank;
64 SteamLeaderboardResults.Add(SteamLeaderboardEntry);
65 }
66 }
67
68 if(!bIOFailure)
69 {
70 AsyncTask(ENamedThreads::GameThread, [this]()
71 {
72 OnSuccess.Broadcast(SteamLeaderboardResults, EResult::k_EResultOK);
73 }
74 );
75 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Leaderboards Downloaded!"));
76 UE_LOG(LogTemp, Warning, TEXT("Leaderboard Entries: %i"), pLeaderboardScoresDownloaded->m_cEntryCount);
77 if(SteamLeaderboardResults.IsEmpty())
78 {
79 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Leaderboard Empty!"));
80 }
81 }
82 else
83 {
84 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Failed to find Leaderboard!"));
86 }
87 RemoveFromRoot();
88}
FResponseDownloadLeaderboardDelegate OnSuccess
Definition DownloadLeaderboard.h:43
Definition LeaderboardData.h:11
FString UserID
Definition LeaderboardData.h:17
int32 Score
Definition LeaderboardData.h:21
int32 Rank
Definition LeaderboardData.h:15
FString User
Definition LeaderboardData.h:19

Member Data Documentation

◆ LeaderboardHandle

FSteamLeaderboardHandle UDownloadLeaderboard::LeaderboardHandle
private

◆ LeaderboardName

FString UDownloadLeaderboard::LeaderboardName
private

◆ m_callDownloadResult

CCallResult<UDownloadLeaderboard, LeaderboardScoresDownloaded_t> UDownloadLeaderboard::m_callDownloadResult
private

◆ OnFailure

FResponseDownloadLeaderboardDelegate UDownloadLeaderboard::OnFailure

◆ OnSuccess

FResponseDownloadLeaderboardDelegate UDownloadLeaderboard::OnSuccess

◆ RangeEnd

int32 UDownloadLeaderboard::RangeEnd
private

◆ RangeStart

int32 UDownloadLeaderboard::RangeStart
private

◆ SteamLeaderboardResults

TArray<FSteamLeaderboardEntry> UDownloadLeaderboard::SteamLeaderboardResults
private

◆ SteamSubsystem

FOnlineSubsystemSteam* UDownloadLeaderboard::SteamSubsystem
private

◆ Type

ESteamLeaderboardDataRequest UDownloadLeaderboard::Type
private

The documentation for this class was generated from the following files: