Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
178 lines
6.8 KiB
C++
178 lines
6.8 KiB
C++
|
|
#pragma once
|
|
|
|
#ifdef _DEBUG
|
|
#define USE_NCAA
|
|
#endif
|
|
|
|
#define GAMESPY_MASTER_INTERNET_HEARTBEAT_PORT 27900
|
|
#define GAMESPY_MASTER_INTERNET_QUERY_PORT 27950
|
|
#define GAMESPY_MASTER_INTERNET_SERVERLIST_PORT 28900
|
|
#define GAMESPY_MASTER_INTERNET_ADDR "master.gamespy.com"
|
|
|
|
#ifdef LAB_ONLY
|
|
#define GAMESPY_MASTER_LAN_HEARTBEAT_PORT 27900
|
|
#define GAMESPY_MASTER_LAN_QUERY_PORT 27950
|
|
#define GAMESPY_MASTER_LAN_SERVERLIST_PORT 27900
|
|
#define GAMESPY_MASTER_LAN_ADDR "ncaa"
|
|
#else
|
|
#define GAMESPY_MASTER_LAN_HEARTBEAT_PORT GAMESPY_MASTER_INTERNET_HEARTBEAT_PORT
|
|
#define GAMESPY_MASTER_LAN_QUERY_PORT GAMESPY_MASTER_INTERNET_QUERY_PORT
|
|
#define GAMESPY_MASTER_LAN_SERVERLIST_PORT GAMESPY_MASTER_INTERNET_SERVERLIST_PORT
|
|
#define GAMESPY_MASTER_LAN_ADDR GAMESPY_MASTER_INTERNET_ADDR
|
|
#endif
|
|
|
|
#ifdef USE_NCAA
|
|
#define GAMESPY_MASTER_HEARTBEAT_PORT GAMESPY_MASTER_LAN_HEARTBEAT_PORT
|
|
#define GAMESPY_MASTER_QUERY_PORT GAMESPY_MASTER_LAN_QUERY_PORT
|
|
#define GAMESPY_MASTER_SERVERLIST_PORT GAMESPY_MASTER_LAN_SERVERLIST_PORT
|
|
#define GAMESPY_MASTER_ADDR GAMESPY_MASTER_LAN_ADDR
|
|
#else
|
|
#define GAMESPY_MASTER_HEARTBEAT_PORT GAMESPY_MASTER_INTERNET_HEARTBEAT_PORT
|
|
#define GAMESPY_MASTER_QUERY_PORT GAMESPY_MASTER_INTERNET_QUERY_PORT
|
|
#define GAMESPY_MASTER_SERVERLIST_PORT GAMESPY_MASTER_INTERNET_SERVERLIST_PORT
|
|
#define GAMESPY_MASTER_ADDR GAMESPY_MASTER_INTERNET_ADDR
|
|
#endif
|
|
|
|
#define GAMESPY_MASTER_ENGINENAME "mech4"
|
|
#define GAMESPY_MASTER_SERVER_KEY "GameSpy Master Server"
|
|
#define GAMESPY_MASTER_HEARTBEAT_PORT_KEY "GameSpy Heartbeat Port"
|
|
#define GAMESPY_MASTER_QUERY_PORT_KEY "GameSpy Query Port"
|
|
#define GAMESPY_MASTER_SERVERLIST_PORT_KEY "GameSpy ServerList Port"
|
|
|
|
#define FixSZString(s) ((s)[sizeof(s)-1]) = 0
|
|
|
|
#define NEW_GAMESPY
|
|
#ifndef NEW_GAMESPY
|
|
namespace GameSpyOld
|
|
{
|
|
extern char *GetKeyName(void);
|
|
extern bool BeginAdvertisingOnGameSpy(const char * GameName, const char *PlayerName, int MaxPlayers, const char *Password, const GUID &guidInstance, bool Secure, DWORD dwFlags);
|
|
extern void EndAdvertisingOnGameSpy(void);
|
|
extern bool ProcessGameSpy(void);
|
|
|
|
extern bool BeginQueryingGameSpy(void);
|
|
extern void EndQueryingGameSpy(void);
|
|
extern bool Querying(void);
|
|
extern char *GetServerAddress(int index);
|
|
extern char *GetServerString(int index, const char *szKey, const char *szDefault="");
|
|
extern char *GetPlayerString(int index, int playerindex, const char *szKey, const char *szDefault="");
|
|
extern int GetNumberOfGames(void);
|
|
extern bool SynchronizeServerList(void);
|
|
extern void SetKey(const char *szKey, const char *szValue);
|
|
extern bool AddPlayer(int id, const char *szName, const char *szTeam, int reserved);
|
|
extern bool RemovePlayer(int id, const char *szName, const char *szTeam, int reserved);
|
|
|
|
|
|
extern void GetGameSpyAddress(char *szGameSpyAddress, int size);
|
|
extern int GetHeartbeatPort(void);
|
|
extern int GetQueryPort(void);
|
|
extern int GetServerListPort(void);
|
|
|
|
extern int __stdcall GetStatus(void);
|
|
extern int __stdcall GetNetStatus(void);
|
|
extern int __stdcall GetLastError(void);
|
|
extern int status;
|
|
|
|
extern char *szGameSpyAddress;
|
|
};
|
|
#endif
|
|
|
|
//========================================================================
|
|
// GameSpy
|
|
//
|
|
// This is the main class the GameSpyHost and GameSpyClient inhereit from.
|
|
// It contains the gereral utility functions that are used by both of
|
|
// these, such as GetSecretKey() and GetMasterAddress().
|
|
//
|
|
//========================================================================
|
|
class GameSpy
|
|
{
|
|
public:
|
|
enum GSS
|
|
{
|
|
GSS_RESOLVING_DNS,
|
|
GSS_CONNECTING,
|
|
GSS_REGISTERING,
|
|
GSS_QUERYING,
|
|
GSS_DOWNLOADING_GAMES,
|
|
GSS_DOWNLOADING_PLAYERS,
|
|
GSS_DISCONNECTED,
|
|
GSS_ERR_CANNOTFINDMASTER,
|
|
};
|
|
virtual bool __stdcall Release(void) = 0;
|
|
virtual bool __stdcall Synchronize(void) = 0;
|
|
|
|
static int __stdcall GetStatus(void);
|
|
static int __stdcall GetNetStatus(void);
|
|
static int __stdcall GetLastError(void);
|
|
|
|
protected:
|
|
static const char * __stdcall GetSecretKey(void);
|
|
static const char * __stdcall GetMasterAddress(void);
|
|
static int __stdcall GetHeartbeatPort(void);
|
|
static int __stdcall GetServerListPort(void);
|
|
static int __stdcall GetQueryPort(void);
|
|
|
|
};
|
|
|
|
//========================================================================
|
|
// GameSpyHost
|
|
//
|
|
// This is the class that implements the members necessary to advertise
|
|
// a GameSpy server.
|
|
//========================================================================
|
|
class GameSpyHost : public GameSpy
|
|
{
|
|
public:
|
|
static GameSpyHost * __stdcall Create(char *szMasterServer);
|
|
virtual bool __stdcall BeginAdvertising(const char *szGameName, int MaxPlayers, const char *szPassword, const GUID &guidInstance, int reserved) = 0;
|
|
virtual bool __stdcall EndAdvertising(void) = 0;
|
|
virtual bool __stdcall SetKey(const char *szKey, const char *szVal, DWORD dwPlayer=0) = 0;
|
|
virtual bool __stdcall SetFlags(const int flags) = 0;
|
|
virtual bool __stdcall AddPlayer(int id, const char *szName, const char *szTeam, int reserved) = 0;
|
|
virtual bool __stdcall RemovePlayer(int id, const char *szName, const char *szTeam, int reserved) = 0;
|
|
};
|
|
|
|
//========================================================================
|
|
//========================================================================
|
|
class GameSpyClient : public GameSpy
|
|
{
|
|
public:
|
|
static GameSpyClient * __stdcall Create(char *szMasterServer);
|
|
virtual int __stdcall GetNumberOfGames(void) = 0;
|
|
virtual const char *__stdcall GetServerString(int index, const char *szKey) = 0;
|
|
virtual const char *__stdcall GetServerAddress(int index) = 0;
|
|
virtual const char *__stdcall GetPlayerString(int index, int playerindex, const char *szKey) = 0;
|
|
virtual bool __stdcall BeginQuerying(void) = 0;
|
|
virtual bool __stdcall EndQuerying(void) = 0;
|
|
};
|
|
|
|
|
|
extern bool __stdcall InitGameSpyServerBrowser(char *szMasterServer);
|
|
extern bool __stdcall InitGameSpyServerAdvertiser(char *szMasterServer);
|
|
|
|
extern const char GAMESPY_KEY_PRODUCT_NAME[];
|
|
extern const char GAMESPY_KEY_GAME_TYPE[];
|
|
extern const char GAMESPY_KEY_NUM_PLAYERS[];
|
|
extern const char GAMESPY_KEY_MAX_PLAYERS[];
|
|
extern const char GAMESPY_KEY_MAP_TYPE[];
|
|
extern const char GAMESPY_KEY_GAME_NAME[];
|
|
extern const char GAMESPY_KEY_PRODUCT_VERSION[];
|
|
extern const char GAMESPY_KEY_INSTANCE[];
|
|
extern const char GAMESPY_PLAYER_KEY_PLAYER[];
|
|
extern const char GAMESPY_PLAYER_KEY_CLAN[];
|
|
extern const char GAMESPY_KEY_LOCATION[];
|
|
extern const char GAMESPY_KEY_HOSTNAME[];
|
|
extern const char GAMESPY_KEY_HOSTPORT[];
|
|
extern const char GAMESPY_KEY_GAMEMODE[];
|
|
extern const char GAMESPY_KEY_TIMELIMIT[];
|
|
extern const char GAMESPY_KEY_FRAGLIMIT[];
|
|
extern const char GAMESPY_KEY_TEAMPLAY[];
|
|
extern const char GAMESPY_KEY_RANKEDSERVER[];
|
|
extern const char GAMESPY_KEY_FLAGS[];
|
|
extern const char GAMESPY_KEY_PASSWORD_PROTECTED[];
|
|
|
|
|
|
|