Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Rubberduckycooly
GitHub Repository: Rubberduckycooly/RSDKv5-Decompilation
Path: blob/master/RSDKv5/RSDK/User/Dummy/DummyLeaderboards.cpp
1168 views
1
#include <string>
2
3
#if RETRO_REV02
4
void DummyLeaderboards::FillLeaderboardEntries(RSDK::SKU::LeaderboardLoadInfo *info)
5
{
6
const char *dummyNames[] = { "ORCIHILLARY124", "AUCTORJOLIE521", "SENECTUSFLORENCE789", "MAGNAAVRAM503", "SITVERNON320",
7
"DUICHRISTEN429", "NULLAKERMIT649", "INTEGERGEORGE708", "HENDRERITDREW443", "UTULYSSES507",
8
"ACCUMSANBRUCE276", "BANANAARON804", "MAURISSILAS372", "ETCALVIN641", "UTGALENA780",
9
"FEUGIATSHAY665", "ORCIJULIET388", "ETJENNA318", "LIBEROIDOLA420", "ATVIELKA576",
10
"PHASELLUSJENETTE627", "CONSECTETUERCALEB550", "SITVICTOR359", "PURUSDARRYL50", "DONECAVRAM56",
11
"PENATIBUSSYBILL30", "MAURISBARCLAY563", "CONGUECOLLEEN811", "MORBIDESTINY655", "SEMPERIONA579",
12
"RISUSKEANE807", "QUISQUEMARYAM927", "COMMODOSTEPHANIE54", "MALESUADABURTON350", "VIVAMUSROBIN330",
13
"QUISQUEWHILEMINA413", "VESTIBULUMRYDER890", "LACUSINDIRA112", "NEQUEJESCIE446", "EGESTASMORGAN390",
14
"ETODYSSEUS95", "EGETHERMIONE127", "ENIMPASCALE599", "ODIOWHOOPI328", "DOLORANGELICA718",
15
"ODIOSLOANE426", "DUIZELDA319", "METUSPORTER906", "NONUMMYSHANNON166", "IPSUMANTHONY906",
16
"ACCUMSANRAPHAEL296", "ORNAREHU604", "MOLESTIERYDER304", "FACILISILAITH900", "MIYVONNE287",
17
"CRASHEDY110", "TEMPUSRAE486", "ORCICOLBY173", "ULTRICESJADEN480", "LECTUSBEAU552",
18
"LIGULAJESSAMINE824", "ORCISOLOMON19", "VARIUSDARRYL437", "EUISMODKATELL668", "LACUSSTEVEN302",
19
"ALIQUETRICHARD807", "PEDEKAI692", "VIVAMUSCHARLOTTE167", "MAURISLEWIS101", "NULLANELLE11",
20
"MAECENASKAMEKO602", "LOREMHALEY545", "PHASELLUSPAUL954", "ERATGLORIA527", "DIAMBURKE290",
21
"SEMYOKO792", "ANTEMICHELLE769", "SEMPERDOMINIC873", "CONDIMENTUMNYSSA826", "PEDEDYLAN675",
22
"ETCRUZ380", "VELJAQUELYN95", "NONDACEY190", "UTCAIN386", "NULLANOMLANGA941",
23
"QUISQUESIERRA659", "MATTISABDUL346", "PHASELLUSKNOX183", "NEQUEXYLA92", "ORNAREGAY372",
24
"FACILISISIVY303", "TELLUSHARLAN339", "METUSSOPOLINE75", "NUNCKYLYNN927", "PROINHERMIONE775",
25
"TEMPORFITZGERALD656", "VELVELMA504", "FAUCIBUSTAMEKAH272", "PORTTITORWHOOPI881", "EUPETER41" };
26
27
UserLeaderboards *leaderboards = info->parent->parent;
28
info->status = STATUS_OK;
29
30
for (int32 e = 0; e < info->avail.length; ++e) {
31
LeaderboardEntry *entry = &info->entries[e];
32
33
if (leaderboards->isUser) {
34
entry->status = STATUS_OK;
35
entry->globalRank = info->avail.start + e;
36
entry->score = (4 * entry->globalRank + 2400) % 59999;
37
entry->isUser = entry->globalRank == leaderboards->userRank;
38
39
memset(&entry->username, 0, sizeof(entry->username));
40
if (entry->isUser) {
41
GetUsername(&entry->username);
42
}
43
else {
44
InitString(&entry->username, "", 0);
45
SetString(&entry->username, dummyNames[e % 100]);
46
}
47
48
memset(&entry->userID, 0, sizeof(entry->userID));
49
InitString(&entry->userID, "DUMMY_USER_ID", 0);
50
}
51
else {
52
entry->status = STATUS_OK;
53
entry->globalRank = info->avail.start + e;
54
entry->score = (4 * entry->globalRank + 2400) % 59999;
55
entry->isUser = false;
56
57
memset(&entry->username, 0, sizeof(entry->username));
58
InitString(&entry->username, "", 0);
59
SetString(&entry->username, dummyNames[e % 100]);
60
61
memset(&entry->userID, 0, sizeof(entry->userID));
62
InitString(&entry->userID, "DUMMY_USER_ID", 0);
63
}
64
}
65
}
66
67
void DummyLeaderboards::FinishLeaderboardFetch(DummyLeaderboardCallback *callback)
68
{
69
this->status = SKU::GetAPIValue(SKU::GetAPIValueID("SYSTEM_LEADERBOARD_STATUS", 0));
70
71
if (this->status == STATUS_OK) {
72
int32 startIndex = 1;
73
if (callback->isUser) {
74
startIndex = this->userRank - 10;
75
if (this->userRank == 10)
76
startIndex = 1;
77
}
78
79
LeaderboardLoadInfo *info = this->loadList.InitLoadInfo();
80
info->avail.start = startIndex;
81
info->avail.length = 20;
82
83
FillLeaderboardEntries(info);
84
85
this->loadList.Clear();
86
this->loadList.count = 1;
87
this->loadList.prev = info;
88
this->loadList.next = info;
89
this->loadList.last = info;
90
if (info->avail.start == 1)
91
info->disableLoadPrev = true;
92
93
this->entryInfo.Setup();
94
leaderboards->entryInfo.loadSize.start = this->entryInfo.viewSize.start;
95
leaderboards->entryInfo.loadSize.length = this->entryInfo.viewSize.length;
96
}
97
}
98
99
void DummyLeaderboards::FinishLeaderboardLoad(DummyLeaderboardCallback *callback)
100
{
101
FillLeaderboardEntries(callback->info);
102
entryInfo.Setup();
103
}
104
105
void DummyLeaderboards::FetchLeaderboard(LeaderboardID *leaderboard, bool32 isUser)
106
{
107
if (!leaderboard)
108
return;
109
110
if (status == STATUS_CONTINUE) {
111
std::string str = __FILE__;
112
str += ": FetchLeaderboard() # ERROR Attemped to fetch leaderboard when fetch currently in progress. \r\n";
113
PrintLog(PRINT_NORMAL, str.c_str());
114
}
115
else {
116
PrintLog(PRINT_NORMAL, "DUMMY FetchLeaderboard(%s, %s)", leaderboard->idPC, isUser ? "true" : "false");
117
118
this->currentLeaderboard = leaderboard;
119
this->loadList.Clear();
120
this->entryInfo.Setup();
121
122
this->isUser = isUser;
123
this->userRank = 0;
124
if (isUser)
125
userRank = rand() % 9999 + 1;
126
127
status = STATUS_CONTINUE;
128
129
DummyLeaderboardCallback *cb = callbackList.Append();
130
cb->type = 0;
131
cb->isUser = isUser;
132
cb->loadTime = SKU::GetAPIValue(SKU::GetAPIValueID("SYSTEM_LEADERBOARD_LOAD_TIME", 0));
133
}
134
}
135
136
void DummyLeaderboards::LoadLeaderboards(RSDK::SKU::LeaderboardLoadInfo *info)
137
{
138
for (int32 i = 0; i < info->avail.length; ++i) {
139
info->entries[i].status = STATUS_CONTINUE;
140
info->entries[i].globalRank = info->avail.start + i;
141
}
142
143
DummyLeaderboardCallback *cb = callbackList.Append();
144
cb->type = 1;
145
cb->loadTime = SKU::GetAPIValue(SKU::GetAPIValueID("SYSTEM_LEADERBOARD_LOAD_TIME", 0));
146
cb->info = info;
147
}
148
149
void DummyLeaderboards::TrackScore(LeaderboardID *leaderboard, int32 score, void (*callback)(bool32 success, int32 rank))
150
{
151
if (!leaderboard)
152
return;
153
154
std::string str = __FILE__;
155
str += ": TrackScore() # TrackScore ";
156
str += std::to_string(score);
157
str += " \r\n";
158
PrintLog(PRINT_NORMAL, str.c_str());
159
160
DummyLeaderboardCallback *cb = callbackList.Append();
161
cb->type = 2;
162
cb->loadTime = SKU::GetAPIValue(SKU::GetAPIValueID("SYSTEM_LEADERBOARD_LOAD_TIME", 0));
163
cb->trackRank = rand() % 61 + 30;
164
cb->trackScore = rand() % 9999 + 1;
165
cb->trackCB = callback;
166
}
167
#endif
168
169