109 lines
4.7 KiB
C++
109 lines
4.7 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: interface for game servers to steam stats and achievements
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef ISTEAMGAMESERVERSTATS_H
|
|
#define ISTEAMGAMESERVERSTATS_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "isteamclient.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Functions for authenticating users via Steam to play on a game
|
|
// server
|
|
//-----------------------------------------------------------------------------
|
|
class ISteamGameServerStats {
|
|
public:
|
|
// downloads stats for the user
|
|
// returns a GSStatsReceived_t callback when completed
|
|
// if the user has no stats, GSStatsReceived_t.m_eResult will be set to
|
|
// k_EResultFail these stats will only be auto-updated for clients playing
|
|
// on the server. For other users you'll need to call RequestUserStats()
|
|
// again to refresh any data
|
|
virtual SteamAPICall_t RequestUserStats(CSteamID steamIDUser) = 0;
|
|
|
|
// requests stat information for a user, usable after a successful call to
|
|
// RequestUserStats()
|
|
virtual bool GetUserStat(CSteamID steamIDUser, const char *pchName,
|
|
int32 *pData) = 0;
|
|
virtual bool GetUserStat(CSteamID steamIDUser, const char *pchName,
|
|
float *pData) = 0;
|
|
virtual bool GetUserAchievement(CSteamID steamIDUser, const char *pchName,
|
|
bool *pbAchieved) = 0;
|
|
|
|
// Set / update stats and achievements.
|
|
// Note: These updates will work only on stats game servers are allowed to
|
|
// edit and only for game servers that have been declared as officially
|
|
// controlled by the game creators. Set the IP range of your official
|
|
// servers on the Steamworks page
|
|
virtual bool SetUserStat(CSteamID steamIDUser, const char *pchName,
|
|
int32 nData) = 0;
|
|
virtual bool SetUserStat(CSteamID steamIDUser, const char *pchName,
|
|
float fData) = 0;
|
|
virtual bool UpdateUserAvgRateStat(CSteamID steamIDUser,
|
|
const char *pchName,
|
|
float flCountThisSession,
|
|
double dSessionLength) = 0;
|
|
|
|
virtual bool SetUserAchievement(CSteamID steamIDUser,
|
|
const char *pchName) = 0;
|
|
virtual bool ClearUserAchievement(CSteamID steamIDUser,
|
|
const char *pchName) = 0;
|
|
|
|
// Store the current data on the server, will get a GSStatsStored_t callback
|
|
// when set.
|
|
//
|
|
// If the callback has a result of k_EResultInvalidParam, one or more stats
|
|
// uploaded has been rejected, either because they broke constraints
|
|
// or were out of date. In this case the server sends back updated values.
|
|
// The stats should be re-iterated to keep in sync.
|
|
virtual SteamAPICall_t StoreUserStats(CSteamID steamIDUser) = 0;
|
|
};
|
|
|
|
#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001"
|
|
|
|
// callbacks
|
|
#if defined(VALVE_CALLBACK_PACK_SMALL)
|
|
#pragma pack(push, 4)
|
|
#elif defined(VALVE_CALLBACK_PACK_LARGE)
|
|
#pragma pack(push, 8)
|
|
#else
|
|
#error isteamclient.h must be included
|
|
#endif
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: called when the latests stats and achievements have been received
|
|
// from the server
|
|
//-----------------------------------------------------------------------------
|
|
struct GSStatsReceived_t {
|
|
enum { k_iCallback = k_iSteamGameServerStatsCallbacks };
|
|
EResult m_eResult; // Success / error fetching the stats
|
|
CSteamID m_steamIDUser; // The user for whom the stats are retrieved for
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: result of a request to store the user stats for a game
|
|
//-----------------------------------------------------------------------------
|
|
struct GSStatsStored_t {
|
|
enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 };
|
|
EResult m_eResult; // success / error
|
|
CSteamID m_steamIDUser; // The user for whom the stats were stored
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Callback indicating that a user's stats have been unloaded.
|
|
// Call RequestUserStats again to access stats for this user
|
|
//-----------------------------------------------------------------------------
|
|
struct GSStatsUnloaded_t {
|
|
enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 };
|
|
CSteamID m_steamIDUser; // User whose stats have been unloaded
|
|
};
|
|
|
|
#pragma pack(pop)
|
|
|
|
#endif // ISTEAMGAMESERVERSTATS_H
|