mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-12-24 17:10:36 +00:00
Removed the Steam files.
This commit is contained in:
parent
15592281df
commit
0d8f2c25bd
249
hypersteam.cpp
249
hypersteam.cpp
@ -1,249 +0,0 @@
|
||||
// PRIVATE
|
||||
|
||||
#define HAVE_ACHIEVEMENTS
|
||||
#define LEADERFULL "Steam Leaderboards"
|
||||
#define LEADER "Steam"
|
||||
|
||||
#ifdef STEAMWIN
|
||||
#include "sdk-w/public/steam/steam_api.h"
|
||||
#else
|
||||
#include "sdk/public/steam/steam_api.h"
|
||||
#endif
|
||||
|
||||
#include "steamvisualinterface.h"
|
||||
|
||||
#define NOLICENSE
|
||||
|
||||
unsigned steam_appid;
|
||||
SteamLeaderboard_t steamleader[NUMLEADER];
|
||||
|
||||
int lastleader;
|
||||
|
||||
void findLeaderboards() {
|
||||
lastleader = ticks;
|
||||
for(int i=0; i<NUMLEADER; i++) if(!steamleader[i]) if(leadernames[i][0] != '@') {
|
||||
// printf("Looking for Leaderboard '%s'\n", leadernames[i]);
|
||||
currentscore[i] = SCORE_UNKNOWN;
|
||||
SteamAPICall_t hSteamAPICall =
|
||||
SteamUserStats()->FindLeaderboard(leadernames[i]);
|
||||
if(!hSteamAPICall) {
|
||||
printf("Failed to look for leaderboard named '%s'\n", leadernames[i]);
|
||||
}
|
||||
else {
|
||||
register_callback(hSteamAPICall);
|
||||
return;
|
||||
}
|
||||
}
|
||||
for(int i=0; i<NUMLEADER; i++) if(steamleader[i] && currentscore[i] == SCORE_UNKNOWN) {
|
||||
SteamAPICall_t hSteamAPICall = SteamUserStats()->DownloadLeaderboardEntries(
|
||||
steamleader[i], k_ELeaderboardDataRequestGlobalAroundUser, 0, 0);
|
||||
register_callback_download(hSteamAPICall);
|
||||
}
|
||||
}
|
||||
|
||||
CSteamID whoami;
|
||||
|
||||
void OnUserStatsReceived( UserStatsReceived_t *pCallback ) {
|
||||
if(steam_appid != pCallback->m_nGameID)
|
||||
return;
|
||||
if(pCallback->m_eResult == k_EResultOK) {
|
||||
printf("Received stats and achievements from Steam\n" );
|
||||
whoami = pCallback->m_steamIDUser;
|
||||
|
||||
/* string s = SteamUserStats()->GetAchievementDisplayAttribute("DIAMOND1", "name");
|
||||
printf("Achievement name: '%s'\n", s.c_str());
|
||||
|
||||
if(s == "Ice Explorer") {
|
||||
printf("Steam language is English\n");
|
||||
default_language = 0;
|
||||
}
|
||||
else if(s == "Eksplorator") {
|
||||
printf("Steam language is Polish\n");
|
||||
default_language = 1;
|
||||
}
|
||||
else if(s == "Buz Kâşifi") {
|
||||
printf("Steam language is Turkish\n");
|
||||
default_language = 2;
|
||||
}
|
||||
else if(s == "Průzkumník Ledu") {
|
||||
printf("Steam language is Czech\n");
|
||||
default_language = 3;
|
||||
} */
|
||||
|
||||
string l = SteamApps()->GetCurrentGameLanguage();
|
||||
printf("Steam language: %s\n", l.c_str());
|
||||
if(l == "english") default_language = 0;
|
||||
if(l == "polish") default_language = 1;
|
||||
if(l == "turkish") default_language = 2;
|
||||
if(l == "czech") default_language = 3;
|
||||
if(l == "russian") default_language = 4;
|
||||
|
||||
// SteamUserStats()->ClearAchievement("DIAMOND1");
|
||||
}
|
||||
else {
|
||||
printf("RequestStats - failed, %d\n", pCallback->m_eResult);
|
||||
}
|
||||
}
|
||||
|
||||
void OnFindLeaderboard( LeaderboardFindResult_t *pFindLeaderboardResult, bool bIOFailure ) {
|
||||
if ( !pFindLeaderboardResult->m_bLeaderboardFound || bIOFailure ) {
|
||||
printf("Leaderboard not found!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// check to see which leaderboard handle we just retrieved
|
||||
const char *pchName = SteamUserStats()->GetLeaderboardName( pFindLeaderboardResult->m_hSteamLeaderboard );
|
||||
|
||||
printf("Found leaderboard: '%s'\n", pchName);
|
||||
|
||||
for(int i=0; i<NUMLEADER; i++) if(strcmp( pchName, leadernames[i] ) == 0 )
|
||||
steamleader[i] = pFindLeaderboardResult->m_hSteamLeaderboard;
|
||||
|
||||
findLeaderboards();
|
||||
}
|
||||
|
||||
void OnScoresDownloaded( LeaderboardScoresDownloaded_t *p, bool bIOFailure ) {
|
||||
if ( bIOFailure ) {
|
||||
printf("OnScoresDownloaded failure!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
printf("Download count: %d\n", p->m_cEntryCount);
|
||||
if(p->m_cEntryCount) {
|
||||
LeaderboardEntry_t entry;
|
||||
SteamUserStats()->GetDownloadedLeaderboardEntry(
|
||||
p->m_hSteamLeaderboardEntries,0,&entry,NULL,0
|
||||
);
|
||||
|
||||
if(entry.m_steamIDUser == whoami) for(int i=0; i<NUMLEADER; i++)
|
||||
if(p->m_hSteamLeaderboard == steamleader[i]) {
|
||||
printf("Retrieved the current score for '%s': %d\n", leadernames[i], entry.m_nScore);
|
||||
currentscore[i] = entry.m_nScore;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for(int i=0; i<NUMLEADER; i++)
|
||||
if(p->m_hSteamLeaderboard == steamleader[i])
|
||||
currentscore[i] = NO_SCORE_YET;
|
||||
}
|
||||
|
||||
findLeaderboards();
|
||||
}
|
||||
|
||||
void achievement_init() {
|
||||
if(SteamAPI_RestartAppIfNecessary(342610))
|
||||
exit(0);
|
||||
if(SteamAPI_Init()) {
|
||||
steam_appid = SteamUtils()->GetAppID();
|
||||
for(int i=0; i<NUMLEADER; i++)
|
||||
steamleader[i] = 0;
|
||||
if(!SteamUserStats()->RequestCurrentStats()) {
|
||||
printf("Request failed\n");
|
||||
}
|
||||
|
||||
init_steamvisualinterface(OnUserStatsReceived, OnFindLeaderboard, OnScoresDownloaded);
|
||||
findLeaderboards();
|
||||
}
|
||||
else {
|
||||
printf("Steam init failed\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void achievement_gain(const char *name, bool euclideanAchievement) {
|
||||
achievement_log(name, euclideanAchievement);
|
||||
if(!steam_appid) return;
|
||||
if(cheater) return;
|
||||
if(euclid != euclideanAchievement) return;
|
||||
|
||||
bool achieved;
|
||||
SteamUserStats()->GetAchievement(name, &achieved);
|
||||
SteamUserStats()->SetAchievement(name);
|
||||
SteamUserStats()->StoreStats();
|
||||
|
||||
if(!achieved) {
|
||||
// printf("NEW ACHIEVEMENT\n");
|
||||
achievementTimer = ticks;
|
||||
achievementMessage[0] = XLAT("New Achievement:");
|
||||
achievementMessage[1] = SteamUserStats()->GetAchievementDisplayAttribute(name, "name");
|
||||
achievementMessage[2] = SteamUserStats()->GetAchievementDisplayAttribute(name, "desc");
|
||||
}
|
||||
/*
|
||||
for(int i=0; i<int(sizeof(achievements)/sizeof(char*)); i++)
|
||||
if(name == achievements[i]) {
|
||||
return;
|
||||
}
|
||||
printf("Unknown achievement '%s'\n", name); */
|
||||
}
|
||||
|
||||
unsigned char i8(int v) {
|
||||
if(v < 0) return 255;
|
||||
int b = 0;
|
||||
if(v < 160) return v;
|
||||
while(v > 160) {
|
||||
b++; v -= (v/3);
|
||||
}
|
||||
return 160+b;
|
||||
}
|
||||
|
||||
typedef unsigned char uchar;
|
||||
|
||||
uchar ugc[640], qugc;
|
||||
|
||||
void ugc_init() {
|
||||
for(int x=0; x<640; x++) ugc[x] = 0;
|
||||
qugc = 0;
|
||||
}
|
||||
|
||||
void ugc_char(uchar& x) {
|
||||
ugc[qugc++] = x;
|
||||
}
|
||||
|
||||
void ugc_compress(int& x) {
|
||||
ugc[qugc++] = i8(x);
|
||||
}
|
||||
|
||||
template<class T> void ugc_nocompress(T& x) {
|
||||
uchar *z = (uchar*) &x;
|
||||
for(int i=0; i<(int) sizeof(T); i++) ugc_char(z[i]);
|
||||
}
|
||||
|
||||
void upload_score(int id, int v) {
|
||||
|
||||
if(!steam_appid) return;
|
||||
if(!steamleader[id]) return;
|
||||
|
||||
ugc_init();
|
||||
short vs; int vi;
|
||||
vs = VERNUM_HEX; ugc_nocompress(vs);
|
||||
vi = timerstart; ugc_nocompress(vi);
|
||||
vi = countMyGolems(); ugc_compress(vi);
|
||||
ugc_compress(turncount);
|
||||
ugc_compress(cellcount);
|
||||
ugc_compress(savecount);
|
||||
uchar l = lastland; if(tampered) l |= 64; ugc_char(l);
|
||||
vi = celldist(cwt.c); ugc_compress(vi);
|
||||
vi = savetime + (timerstopped ? 0 : (time(NULL) - timerstart)); ugc_compress(vi);
|
||||
for(int i=0; i<40; i++) ugc_compress(items[i]);
|
||||
for(int i=0; i<67; i++) ugc_compress(kills[i]);
|
||||
ugc_compress(explore[0]); ugc_compress(explore[5]);
|
||||
for(int i=0; i<23; i++) ugc_compress(exploreland[0][i]);
|
||||
|
||||
SteamUserStats()->UploadLeaderboardScore( steamleader[id], k_ELeaderboardUploadScoreMethodKeepBest, v, (int32*)&ugc, (qugc+3) / sizeof(int32));
|
||||
}
|
||||
|
||||
bool haveLeaderboard(int id) {
|
||||
return steamleader[id];
|
||||
}
|
||||
|
||||
void achievement_close() {
|
||||
if(!steam_appid) return;
|
||||
SteamAPI_Shutdown();
|
||||
}
|
||||
|
||||
void achievement_pump() {
|
||||
SteamAPI_RunCallbacks();
|
||||
if(ticks > lastleader + 30000)
|
||||
findLeaderboards();
|
||||
}
|
||||
|
@ -1,54 +0,0 @@
|
||||
// PRIVATE
|
||||
|
||||
#include "sdk/public/steam/steam_api.h"
|
||||
#include "steamvisualinterface.h"
|
||||
|
||||
class SteamContact {
|
||||
public:
|
||||
|
||||
STEAM_CALLBACK( SteamContact, OnUserStatsReceived, UserStatsReceived_t, m_CallbackStatsReceived );
|
||||
SteamContact ();
|
||||
|
||||
void OnFindLeaderboard( LeaderboardFindResult_t *pFindLearderboardResult, bool bIOFailure );
|
||||
void OnDownloadScores( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded, bool bIOFailure );
|
||||
CCallResult<SteamContact, LeaderboardFindResult_t> m_SteamCallResultCreateLeaderboard;
|
||||
CCallResult<SteamContact, LeaderboardScoresDownloaded_t> m_SteamCallResultScoresDownloaded;
|
||||
};
|
||||
|
||||
SteamContact :: SteamContact()
|
||||
: m_CallbackStatsReceived(this, &SteamContact::OnUserStatsReceived)
|
||||
{ }
|
||||
|
||||
static SteamContact *steam;
|
||||
|
||||
callback_statsreceived sr;
|
||||
callback_findleaderboard fl;
|
||||
callback_scoresdownload sdl;
|
||||
|
||||
void init_steamvisualinterface(callback_statsreceived _sr, callback_findleaderboard _fl, callback_scoresdownload _sdl) {
|
||||
sr = _sr;
|
||||
fl = _fl;
|
||||
sdl = _sdl;
|
||||
steam = new SteamContact;
|
||||
}
|
||||
|
||||
void register_callback(SteamAPICall_t handle) {
|
||||
steam->m_SteamCallResultCreateLeaderboard.Set( handle, steam, &SteamContact::OnFindLeaderboard );
|
||||
}
|
||||
|
||||
void register_callback_download(SteamAPICall_t handle) {
|
||||
steam->m_SteamCallResultScoresDownloaded.Set( handle, steam, &SteamContact::OnDownloadScores );
|
||||
}
|
||||
|
||||
void SteamContact::OnFindLeaderboard( LeaderboardFindResult_t *pFindLeaderboardResult, bool bIOFailure ) {
|
||||
fl(pFindLeaderboardResult, bIOFailure);
|
||||
}
|
||||
|
||||
void SteamContact::OnDownloadScores( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded, bool bIOFailure ) {
|
||||
sdl(pLeaderboardScoresDownloaded, bIOFailure);
|
||||
}
|
||||
|
||||
void SteamContact::OnUserStatsReceived( UserStatsReceived_t *pCallback ) {
|
||||
sr(pCallback);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user