|
|
//========= Copyright 1996-2004, Valve LLC, All rights reserved. ============
//
// Purpose: Win32 replacements for XBox.
//
//=============================================================================
#if !defined( XBOXSTUBS_H ) && !defined( _X360 )
#define XBOXSTUBS_H
#ifdef _WIN32
#pragma once
#endif
#ifdef _WIN32
typedef unsigned long DWORD; //#include "winlite.h"
#endif
#include "tier0/platform.h"
// Content creation/open flags
#define XCONTENTFLAG_NONE 0x00
#define XCONTENTFLAG_CREATENEW 0x00
#define XCONTENTFLAG_CREATEALWAYS 0x00
#define XCONTENTFLAG_OPENEXISTING 0x00
#define XCONTENTFLAG_OPENALWAYS 0x00
#define XCONTENTFLAG_TRUNCATEEXISTING 0x00
// Content attributes
#define XCONTENTFLAG_NOPROFILE_TRANSFER 0x00
#define XCONTENTFLAG_NODEVICE_TRANSFER 0x00
#define XCONTENTFLAG_STRONG_SIGNED 0x00
#define XCONTENTFLAG_ALLOWPROFILE_TRANSFER 0x00
#define XCONTENTFLAG_MOVEONLY_TRANSFER 0x00
// XNet flags
#define XNET_GET_XNADDR_PENDING 0x00000000 // Address acquisition is not yet complete
#define XNET_GET_XNADDR_NONE 0x00000001 // XNet is uninitialized or no debugger found
#define XNET_GET_XNADDR_ETHERNET 0x00000002 // Host has ethernet address (no IP address)
#define XNET_GET_XNADDR_STATIC 0x00000004 // Host has statically assigned IP address
#define XNET_GET_XNADDR_DHCP 0x00000008 // Host has DHCP assigned IP address
#define XNET_GET_XNADDR_PPPOE 0x00000010 // Host has PPPoE assigned IP address
#define XNET_GET_XNADDR_GATEWAY 0x00000020 // Host has one or more gateways configured
#define XNET_GET_XNADDR_DNS 0x00000040 // Host has one or more DNS servers configured
#define XNET_GET_XNADDR_ONLINE 0x00000080 // Host is currently connected to online service
#define XNET_GET_XNADDR_TROUBLESHOOT 0x00008000 // Network configuration requires troubleshooting
// Console device ports
#define XDEVICE_PORT0 0
#define XDEVICE_PORT1 1
#define XDEVICE_PORT2 2
#define XDEVICE_PORT3 3
#ifndef _PS3
#define XUSER_MAX_COUNT 4
#endif // !_PS3
#define XUSER_INDEX_NONE 0x000000FE
#define XBX_CLR_DEFAULT 0xFF000000
#define XBX_CLR_WARNING 0x0000FFFF
#define XBX_CLR_ERROR 0x000000FF
#ifndef _PS3
#define XBOX_MINBORDERSAFE 0
#define XBOX_MAXBORDERSAFE 0
#endif // !_PS3
#if defined( PLATFORM_PS3 )
#include "ps3/ps3_core.h"
#endif
#ifndef _PS3
typedef enum { XK_NULL, XK_BUTTON_UP, XK_BUTTON_DOWN, XK_BUTTON_LEFT, XK_BUTTON_RIGHT, XK_BUTTON_START, XK_BUTTON_BACK, XK_BUTTON_STICK1, XK_BUTTON_STICK2, XK_BUTTON_A, XK_BUTTON_B, XK_BUTTON_X, XK_BUTTON_Y, XK_BUTTON_LEFT_SHOULDER, XK_BUTTON_RIGHT_SHOULDER, XK_BUTTON_LTRIGGER, XK_BUTTON_RTRIGGER, XK_STICK1_UP, XK_STICK1_DOWN, XK_STICK1_LEFT, XK_STICK1_RIGHT, XK_STICK2_UP, XK_STICK2_DOWN, XK_STICK2_LEFT, XK_STICK2_RIGHT, XK_BUTTON_INACTIVE_START, XK_BUTTON_FIREMODE_SELECTOR_1, XK_BUTTON_FIREMODE_SELECTOR_2, XK_BUTTON_FIREMODE_SELECTOR_3, XK_BUTTON_RELOAD, XK_BUTTON_TRIGGER, XK_BUTTON_PUMP_ACTION, XK_XBUTTON_ROLL_RIGHT, XK_XBUTTON_ROLL_LEFT, XK_MAX_KEYS, } xKey_t; #endif
//typedef enum
//{
// XVRB_NONE, // off
// XVRB_ERROR, // fatal error
// XVRB_ALWAYS, // no matter what
// XVRB_WARNING, // non-fatal warnings
// XVRB_STATUS, // status reports
// XVRB_ALL,
//} xverbose_e;
#ifndef WORD
typedef unsigned short WORD; #endif
#if ( !defined ( DWORD ) && !defined( WIN32 ) && !defined( _PS3 ))
typedef unsigned int DWORD; #endif
#ifndef POSIX
typedef void* HANDLE; # if defined(_PS3) || defined(POSIX)
typedef unsigned long long ULONGLONG # else
typedef unsigned __int64 ULONGLONG; # endif
#endif
#if defined( OSX )
typedef DWORD COLORREF; #elif defined( POSIX ) && !defined( _PS3 )
typedef DWORD COLORREF; #endif
#ifndef INVALID_HANDLE_VALUE
#define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1)
#endif
/*
* Internet address (old style... should be updated) */ #ifdef PLATFORM_PS3
#include <netinet/in.h>
typedef struct in_addr IN_ADDR; #elif defined( POSIX )
struct ip4_addr { union { struct { unsigned char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { unsigned short s_w1,s_w2; } S_un_w; unsigned long S_addr; } S_un; }; typedef struct ip4_addr IN_ADDR; #else
#ifndef s_addr
/*
* Internet address (old style... should be updated) */ struct in_addr { union { struct { unsigned char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { unsigned short s_w1,s_w2; } S_un_w; unsigned long S_addr; } S_un; #define s_addr S_un.S_addr
/* can be used for most tcp & ip code */ #define s_host S_un.S_un_b.s_b2
/* host on imp */ #define s_net S_un.S_un_b.s_b1
/* network */ #define s_imp S_un.S_un_w.s_w2
/* imp */ #define s_impno S_un.S_un_b.s_b4
/* imp # */ #define s_lh S_un.S_un_b.s_b3
/* logical host */ }; typedef struct in_addr IN_ADDR; #endif
#endif
typedef unsigned int XIN_ADDR;
typedef struct { IN_ADDR ina; // IP address (zero if not static/DHCP)
IN_ADDR inaOnline; // Online IP address (zero if not online)
WORD wPortOnline; // Online port
BYTE abEnet[6]; // Ethernet MAC address
BYTE abOnline[20]; // Online identification
} XNADDR;
typedef uint64 XUID;
#ifndef INVALID_XUID
#define INVALID_XUID ((XUID) 0)
#endif
#ifndef _PS3
typedef struct { BYTE ab[8]; // xbox to xbox key identifier
} XNKID;
typedef struct { BYTE ab[16]; // xbox to xbox key exchange key
} XNKEY; #endif
typedef struct _XSESSION_INFO { XNKID sessionID; // 8 bytes
XNADDR hostAddress; // 36 bytes
XNKEY keyExchangeKey; // 16 bytes
} XSESSION_INFO, *PXSESSION_INFO;
typedef struct _XUSER_DATA { BYTE type;
union { int nData; // XUSER_DATA_TYPE_INT32
int64 i64Data; // XUSER_DATA_TYPE_INT64
double dblData; // XUSER_DATA_TYPE_DOUBLE
struct // XUSER_DATA_TYPE_UNICODE
{ uint cbData; // Includes null-terminator
char * pwszData; } string; float fData; // XUSER_DATA_TYPE_FLOAT
struct // XUSER_DATA_TYPE_BINARY
{ uint cbData; char * pbData; } binary; }; } XUSER_DATA, *PXUSER_DATA;
typedef struct _XUSER_PROPERTY { DWORD dwPropertyId; XUSER_DATA value; } XUSER_PROPERTY, *PXUSER_PROPERTY;
typedef struct _XUSER_CONTEXT { DWORD dwContextId; DWORD dwValue; } XUSER_CONTEXT, *PXUSER_CONTEXT;
typedef struct _XSESSION_SEARCHRESULT { XSESSION_INFO info; DWORD dwOpenPublicSlots; DWORD dwOpenPrivateSlots; DWORD dwFilledPublicSlots; DWORD dwFilledPrivateSlots; DWORD cProperties; DWORD cContexts; PXUSER_PROPERTY pProperties; PXUSER_CONTEXT pContexts; } XSESSION_SEARCHRESULT, *PXSESSION_SEARCHRESULT;
typedef struct _XSESSION_SEARCHRESULT_HEADER { DWORD dwSearchResults; XSESSION_SEARCHRESULT *pResults; } XSESSION_SEARCHRESULT_HEADER, *PXSESSION_SEARCHRESULT_HEADER;
typedef struct _XSESSION_REGISTRANT { uint64 qwMachineID; DWORD bTrustworthiness; DWORD bNumUsers; XUID *rgUsers;
} XSESSION_REGISTRANT;
typedef struct _XSESSION_REGISTRATION_RESULTS { DWORD wNumRegistrants; XSESSION_REGISTRANT *rgRegistrants; } XSESSION_REGISTRATION_RESULTS, *PXSESSION_REGISTRATION_RESULTS;
typedef struct { BYTE bFlags; BYTE bReserved; WORD cProbesXmit; WORD cProbesRecv; WORD cbData; BYTE * pbData; WORD wRttMinInMsecs; WORD wRttMedInMsecs; DWORD dwUpBitsPerSec; DWORD dwDnBitsPerSec; } XNQOSINFO;
typedef struct { uint cxnqos; uint cxnqosPending; XNQOSINFO axnqosinfo[1]; } XNQOS;
#define XSESSION_CREATE_HOST 0
#define XSESSION_CREATE_USES_ARBITRATION 0
#define XNET_QOS_LISTEN_ENABLE 0
#define XNET_QOS_LISTEN_DISABLE 0
#define XNET_QOS_LISTEN_SET_DATA 0
#define XUSER_DATA_TYPE_CONTEXT ((BYTE)0)
#define XUSER_DATA_TYPE_INT32 ((BYTE)1)
#define XUSER_DATA_TYPE_INT64 ((BYTE)2)
#define XUSER_DATA_TYPE_DOUBLE ((BYTE)3)
#define XUSER_DATA_TYPE_UNICODE ((BYTE)4)
#define XUSER_DATA_TYPE_FLOAT ((BYTE)5)
#define XUSER_DATA_TYPE_BINARY ((BYTE)6)
#define XUSER_DATA_TYPE_DATETIME ((BYTE)7)
#define XUSER_DATA_TYPE_NULL ((BYTE)0xFF)
#define XPROFILE_TITLE_SPECIFIC1 0x3FFF
#define XPROFILE_TITLE_SPECIFIC2 0x3FFE
#define XPROFILE_TITLE_SPECIFIC3 0x3FFD
#define XPROFILE_SETTING_MAX_SIZE 1000
FORCEINLINE unsigned int XBX_GetSystemTime() { return 0; }
#ifndef PLATFORM_PS3
FORCEINLINE DWORD XBX_GetNumGameUsers() { return 1; } FORCEINLINE void XBX_ProcessEvents() {} FORCEINLINE void XBX_DispatchEventsQueue() {} FORCEINLINE DWORD XBX_GetPrimaryUserId() { return 0; } FORCEINLINE void XBX_SetPrimaryUserId( DWORD idx ) {} FORCEINLINE void XBX_ResetStorageDeviceInfo() {} FORCEINLINE DWORD XBX_DescribeStorageDevice( DWORD nStorageID ) { return 1; } FORCEINLINE DWORD XBX_GetStorageDeviceId(int) { return 0; } FORCEINLINE void XBX_SetStorageDeviceId( int, DWORD ) {} FORCEINLINE const char *XBX_GetLanguageString() { return ""; } FORCEINLINE bool XBX_IsLocalized() { return false; } FORCEINLINE bool XBX_IsAudioLocalized() { return false; } FORCEINLINE const char *XBX_GetNextSupportedLanguage( const char *pLanguage, bool *pbHasAudio ) { return NULL; } FORCEINLINE bool XBX_IsRestrictiveLanguage() { return false; } FORCEINLINE int XBX_GetUserId( int nSlot ) { return nSlot; } FORCEINLINE int XBX_GetSlotByUserId( int idx ) { return idx; } FORCEINLINE void XBX_SetUserId( int nSlot, int idx ) {} #endif
#define XCONTENT_MAX_DISPLAYNAME_LENGTH 128
#define XCONTENT_MAX_FILENAME_LENGTH 42
#ifndef _PS3
#define XBX_INVALID_STORAGE_ID ((DWORD) -1)
#define XBX_STORAGE_DECLINED ((DWORD) -2)
#endif // !_PS3
enum XUSER_SIGNIN_STATE { eXUserSigninState_NotSignedIn, eXUserSigninState_SignedInLocally, eXUserSigninState_SignedInToLive, };
#if defined( _PS3 )
#elif defined( POSIX )
typedef size_t ULONG_PTR; #elif defined( _M_X64 )
typedef _W64 unsigned __int64 ULONG_PTR; #else
typedef _W64 unsigned long ULONG_PTR; #endif
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
typedef void * PXOVERLAPPED_COMPLETION_ROUTINE;
#if defined( _PS3 ) || !defined( POSIX )
typedef struct _XOVERLAPPED { ULONG_PTR InternalLow; ULONG_PTR InternalHigh; ULONG_PTR InternalContext; HANDLE hEvent; PXOVERLAPPED_COMPLETION_ROUTINE pCompletionRoutine; DWORD_PTR dwCompletionContext; DWORD dwExtendedError; } XOVERLAPPED, *PXOVERLAPPED; #endif
#ifndef MAX_RICHPRESENCE_SIZE
#define MAX_RICHPRESENCE_SIZE 64
#endif
#ifndef XUSER_NAME_SIZE
#define XUSER_NAME_SIZE 16
#endif
#ifndef GPU_RESOLVE_ALIGNMENT
#define GPU_RESOLVE_ALIGNMENT 8
#endif
#define XCONTENT_MAX_DISPLAYNAME_LENGTH 128
#define XCONTENT_MAX_FILENAME_LENGTH 42
#define XCONTENTDEVICE_MAX_NAME_LENGTH 27
typedef DWORD XCONTENTDEVICEID, *PXCONTENTDEVICEID; #ifndef _PS3
typedef struct _XCONTENT_DATA { XCONTENTDEVICEID DeviceID; DWORD dwContentType; wchar_t szDisplayName[XCONTENT_MAX_DISPLAYNAME_LENGTH]; char szFileName[XCONTENT_MAX_FILENAME_LENGTH]; } XCONTENT_DATA, *PXCONTENT_DATA; #endif
#define X_CONTEXT_PRESENCE 0x00010001
#define X_CONTEXT_GAME_TYPE 0x0001000A
#define X_CONTEXT_GAME_MODE 0x0001000B
#define X_PROPERTY_RANK 0x00011001
#define X_PROPERTY_GAMERNAME 0x00011002
#define X_PROPERTY_SESSION_ID 0x00011003
// System attributes used in matchmaking queries
#define X_PROPERTY_GAMER_ZONE 0x00011101
#define X_PROPERTY_GAMER_COUNTRY 0x00011102
#define X_PROPERTY_GAMER_LANGUAGE 0x00011103
#define X_PROPERTY_GAMER_RATING 0x00011104
#define X_PROPERTY_GAMER_MU 0x00011105
#define X_PROPERTY_GAMER_SIGMA 0x00011106
#define X_PROPERTY_GAMER_PUID 0x00011107
#define X_PROPERTY_AFFILIATE_SCORE 0x00011108
#define X_PROPERTY_GAMER_HOSTNAME 0x00011109
// Properties used to write to skill leaderboards
#define X_PROPERTY_RELATIVE_SCORE 0x0001100A
#define X_PROPERTY_SESSION_TEAM 0x0001100B
// Properties written at the session level to override TrueSkill parameters
#define X_PROPERTY_PLAYER_PARTIAL_PLAY_PERCENTAGE 0x0001100C
#define X_PROPERTY_PLAYER_SKILL_UPDATE_WEIGHTING_FACTOR 0x0001100D
#define X_PROPERTY_SESSION_SKILL_BETA 0x0001100E
#define X_PROPERTY_SESSION_SKILL_TAU 0x0001100F
#define X_PROPERTY_SESSION_SKILL_DRAW_PROBABILITY 0x00011010
// Attachment size is written to a leaderboard when the entry qualifies for
// a gamerclip. The rating can be retrieved via XUserEstimateRankForRating.
#define X_PROPERTY_ATTACHMENT_SIZE 0x00011011
// Values for X_CONTEXT_GAME_TYPE
#define X_CONTEXT_GAME_TYPE_RANKED 0
#define X_CONTEXT_GAME_TYPE_STANDARD 1
#endif // XBOXSTUBS_H
|