24#include "../common/gsCommon.h"
34#pragma warning(disable: 4152)
35#pragma warning(disable: 4055)
48typedef enum {bo_set, bo_add, bo_sub, bo_mult, bo_div, bo_concat, bo_avg} bucketop_t;
52typedef enum {bl_server, bl_team, bl_player} bucketlevel_t;
55typedef enum {init_none, init_failed, init_connecting, init_awaitchallenge, init_awaitsessionkey, init_complete} initstate_t;
58typedef void *(*BucketFunc)(bucketset_t set,
char *name,
void *value);
59typedef int (*SetIntFunc)(statsgame_t game,
char *name, BucketFunc func,
int value,
int index);
60typedef double (*SetFloatFunc)(statsgame_t game,
char *name, BucketFunc func,
double value,
int index);
61typedef char *(*SetStringFunc)(statsgame_t game,
char *name, BucketFunc func,
char *value,
int index);
62extern BucketFunc bucketfuncs[NUMOPS];
63extern void * bopfuncs[][3];
75#define GE_CONNECTING 6
95extern char gcd_secret_key[256];
96extern char gcd_gamename[256];
102extern char StatsServerHostname[64];
109#define GenerateAuth GenerateAuthA
110#define SendGameSnapShot SendGameSnapShotA
111#define NewPlayer NewPlayerA
112#define NewTeam NewTeamA
114#define GenerateAuth GenerateAuthW
115#define SendGameSnapShot SendGameSnapShotW
116#define NewPlayer NewPlayerW
117#define NewTeam NewTeamW
146int InitStatsConnection(
int gameport);
147int InitStatsAsync(
int gameport, gsi_time theInitTimeout);
175int IsStatsConnected();
184void CloseStatsConnection(
void);
203char *GetChallenge(statsgame_t game);
221char *GenerateAuth(
const char *challenge,
const gsi_char *password,
char response[33]);
242statsgame_t NewGame(
int usebuckets);
256void FreeGame(statsgame_t game);
280int SendGameSnapShot(statsgame_t game,
const gsi_char *snapshot,
int final);
316#define BucketIntOp(game, name, operation, value, bucketlevel, index) (((SetIntFunc)bopfuncs[bucketlevel][bt_int])(game,name,bucketfuncs[operation],value,index) )
317#define BucketFloatOp(game, name, operation, value, bucketlevel, index) (((SetFloatFunc)bopfuncs[bucketlevel][bt_float])(game,name,bucketfuncs[operation],value,index) )
318#define BucketStringOp(game, name, operation, value, bucketlevel, index) (((SetStringFunc)bopfuncs[bucketlevel][bt_string])(game,name,bucketfuncs[operation],value,index) )
336void NewPlayer(statsgame_t game,
int pnum, gsi_char *name);
351void RemovePlayer(statsgame_t game,
int pnum);
360void NewTeam(statsgame_t game,
int tnum, gsi_char *name);
361void RemoveTeam(statsgame_t game,
int tnum);
381int GetPlayerIndex(statsgame_t game,
int pnum);
382int GetTeamIndex(statsgame_t game,
int tnum);