Files
Jedi-Academy/codemp/xbox/XBoxCommon.h
2013-04-04 14:32:05 -07:00

147 lines
4.1 KiB
C++

#ifndef _XBOX_COMMON_H
#define _XBOX_COMMON_H
///////////////////////////////////////////////////////////
//
// SHARED NETWORKING DATA
//
///////////////////////////////////////////////////////////
#include "Xtl.h"
#include "xonline.h"
// This is (MAX_CLIENTS + 1) - but a dedicated server is the only
// thing that can take the last slot - 0..11 are reserved for clients.
#define MAX_ONLINE_PLAYERS 11
#define DEDICATED_SERVER_INDEX (MAX_ONLINE_PLAYERS - 1)
#define XBOX_PORT 1000
// There are separate flags for being able to receive voice, and able to send voice.
// Because of voice through speakers, anyone has the potential to receive. By
// default, everyone does. Other people don't need to know if clients are using
// voice through speakers, except to change their icon in player/friends list.
//
// Note that VOICE_CAN_SEND implies VOICE_CAN_RECV, but not the other way around.
#define VOICE_CAN_RECV 0x01 // Can recv voice (headset or spkrs) and has their voice sockets up
#define VOICE_CAN_SEND 0x02 // Can send voice (headset)
#define MUTED_PLAYER 0x04 // We have muted this player
#define REMOTE_MUTED 0x08 // This player has us muted
// Information about the session we're currently playing in, filled in
// when joining either a live or syslink game.
struct XBLClientData_t
{
XNKEY KeyExchangeKey;
XNADDR HostAddress;
XNKID SessionID;
IN_ADDR SrvAddr;
};
extern XBLClientData_t xbc;
struct XBPlayerInfo
{
XUID xuid;
XNADDR xbAddr;
IN_ADDR inAddr;
char name[XONLINE_GAMERTAG_SIZE];
int refIndex;
DWORD flags;
bool isActive;
int friendshipStatus;
explicit XBPlayerInfo(int refNum = -1) : refIndex(refNum), isActive(false) { }
};
struct XBOnlineInfo
{
BYTE localIndex; // index into xbPlayerList
XBPlayerInfo xbPlayerList[MAX_ONLINE_PLAYERS]; // list of players
};
extern XBOnlineInfo xbOnlineInfo;
#define MAX_OFFLINE_HISTORY 10
#define HISTORY_OFFSET MAX_ONLINE_PLAYERS
class XBHistoryEntry
{
public:
XUID xuid;
char name[XONLINE_GAMERTAG_SIZE];
DWORD flags;
bool isActive;
int friendshipStatus;
DWORD stamp; // Used to locate oldest entry
explicit XBHistoryEntry() : isActive(false) { }
};
class XBHistory
{
public:
DWORD stamp;
XBHistoryEntry historyList[MAX_OFFLINE_HISTORY];
explicit XBHistory( void ) : stamp( 0 ) { }
};
extern XBHistory xbOfflineHistory;
// All important Xbox stuff is sent inside infostrings, so we convert
// it to hex with the following utilities. (Thanks to Wolf)
#define XNADDR_STRING_LEN (2*sizeof(XNADDR)+1)
void XnAddrToString(const XNADDR *pxna, char* buffer);
void StringToXnAddr(XNADDR* pxna, const char* buffer);
#define XNKID_STRING_LEN (2*sizeof(XNKID)+1)
void XNKIDToString(const XNKID *pxnkid, char* buffer);
void StringToXNKID(XNKID* pxnkid, const char* buffer);
#define XNKEY_STRING_LEN (2*sizeof(XNKEY)+1)
void XNKEYToString(const XNKEY *pxnkey, char* buffer);
void StringToXNKEY(XNKEY* pxnkey, const char* buffer);
#define XUID_STRING_LEN (2*sizeof(XUID)+1)
void XUIDToString(const XUID *pxuid, char* buffer);
void StringToXUID(XUID* pxuid, const char* buffer);
//
// Xbox Error Popup Constants
//
// These are really UI data, but we put them here to avoid cluttering the PC headers
// even more. The error popup system needs a context when it returns a value to know
// what to do. One of these is saved off when we create the popup, and then it's
// queried when we get a response so we know what we're doing.
enum xbErrorPopupType
{
XB_POPUP_NONE,
XB_POPUP_CANNOT_CONNECT,
XB_POPUP_AUTOUPDATE,
XB_POPUP_REQUIRED_MESSAGE,
XB_POPUP_OPTIONAL_MESSAGE,
XB_POPUP_LOST_CONNECTION,
XB_POPUP_INVALID_USER,
XB_POPUP_DUPLICATE_LOGON,
XB_POPUP_BUSY_SERVERS,
XB_POPUP_CONFIRM_NEW_ACCOUNT,
XB_POPUP_CONFIRM_LOGOFF,
XB_POPUP_COM_ERROR,
XB_POPUP_QUICKMATCH_NO_RESULTS,
XB_POPUP_OPTIMATCH_NO_RESULTS,
XB_POPUP_MATCHMAKING_ERROR,
XB_POPUP_SYSTEM_LINK_LOST,
XB_POPUP_QUIT_CONFIRM,
XB_POPUP_QUIT_HOST_CONFIRM,
XB_POPUP_HOST_JOIN_CONFIRM,
XB_POPUP_CONFIRM_FRIEND_REMOVE,
XB_POPUP_RESPAWN_NEEDED,
XB_POPUP_CORRUPT_SETTINGS,
};
void UI_xboxErrorPopup(xbErrorPopupType popup);
void UI_xboxPopupResponse(void);
#endif