summaryrefslogtreecommitdiff
path: root/public/engine/imatchmaking.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/engine/imatchmaking.h')
-rw-r--r--public/engine/imatchmaking.h117
1 files changed, 117 insertions, 0 deletions
diff --git a/public/engine/imatchmaking.h b/public/engine/imatchmaking.h
new file mode 100644
index 0000000..4c9aa81
--- /dev/null
+++ b/public/engine/imatchmaking.h
@@ -0,0 +1,117 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//===========================================================================//
+
+#ifndef IMATCHMAKING_H
+#define IMATCHMAKING_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "const.h"
+#include "vgui/VGUI.h"
+
+#if !defined( _X360 )
+#include "xbox/xboxstubs.h"
+#endif
+
+class KeyValues;
+
+enum SESSION_NOTIFY
+{
+ SESSION_NOTIFY_FAIL_SEARCH,
+ SESSION_NOTIFY_SEARCH_COMPLETED,
+ SESSION_NOFIFY_MODIFYING_SESSION,
+ SESSION_NOTIFY_MODIFYING_COMPLETED_HOST,
+ SESSION_NOTIFY_MODIFYING_COMPLETED_CLIENT,
+ SESSION_NOTIFY_MIGRATION_COMPLETED,
+ SESSION_NOTIFY_CONNECT_SESSIONFULL,
+ SESSION_NOTIFY_CONNECT_NOTAVAILABLE,
+ SESSION_NOTIFY_CONNECTED_TOSESSION,
+ SESSION_NOTIFY_CONNECTED_TOSERVER,
+ SESSION_NOTIFY_CONNECT_FAILED,
+ SESSION_NOTIFY_FAIL_CREATE,
+ SESSION_NOTIFY_FAIL_MIGRATE,
+ SESSION_NOTIFY_REGISTER_COMPLETED,
+ SESSION_NOTIFY_FAIL_REGISTER,
+ SESSION_NOTIFY_CLIENT_KICKED,
+ SESSION_NOTIFY_CREATED_HOST,
+ SESSION_NOTIFY_CREATED_CLIENT,
+ SESSION_NOTIFY_LOST_HOST,
+ SESSION_NOTIFY_LOST_SERVER,
+ SESSION_NOTIFY_COUNTDOWN,
+ SESSION_NOTIFY_ENDGAME_RANKED, // Ranked
+ SESSION_NOTIFY_ENDGAME_HOST, // Unranked
+ SESSION_NOTIFY_ENDGAME_CLIENT, // Unranked
+ SESSION_NOTIFY_DUMPSTATS, // debugging
+ SESSION_NOTIFY_WELCOME, // Close all dialogs and show the welcome main menu
+};
+
+enum SESSION_PROPS
+{
+ SESSION_CONTEXT,
+ SESSION_PROPERTY,
+ SESSION_FLAG,
+};
+
+struct hostData_s
+{
+ char hostName[MAX_PLAYER_NAME_LENGTH];
+ char scenario[MAX_MAP_NAME];
+ int gameState;
+ int gameTime;
+ XUID xuid;
+};
+
+struct MM_QOS_t
+{
+ int nPingMsMin; // Minimum round-trip time in ms
+ int nPingMsMed; // Median round-trip time in ms
+ float flBwUpKbs; // Bandwidth upstream in kilobytes/s
+ float flBwDnKbs; // Bandwidth downstream in kilobytes/s
+ float flLoss; // Average packet loss in percents
+};
+
+#define NO_TIME_LIMIT 65000
+
+abstract_class IMatchmaking
+{
+public:
+ virtual void SessionNotification( const SESSION_NOTIFY notification, const int param = 0 ) = 0;
+ virtual void AddSessionProperty( const uint nType, const char *pID, const char *pValue, const char *pValueType ) = 0;
+ virtual void SetSessionProperties( KeyValues *pPropertyKeys ) = 0;
+ virtual void SelectSession( uint idx ) = 0;
+ virtual void ModifySession() = 0;
+ virtual void UpdateMuteList() = 0;
+ virtual void StartHost( bool bSystemLink = false ) = 0;
+ virtual void StartClient( bool bSystemLink = false ) = 0;
+ virtual bool StartGame() = 0;
+ virtual bool CancelStartGame() = 0;
+ virtual void ChangeTeam( const char *pTeamName ) = 0;
+ virtual void TellClientsToConnect() = 0;
+ virtual void CancelCurrentOperation() = 0;
+ virtual void KickPlayerFromSession( uint64 id ) = 0;
+ virtual void JoinInviteSession( XSESSION_INFO *pHostInfo ) = 0;
+ virtual void JoinInviteSessionByID( XNKID nSessionID ) = 0;
+ virtual void EndStatsReporting() = 0;
+
+ // For Gameui
+ virtual KeyValues *GetSessionProperties() = 0;
+
+ // For voice chat
+ virtual uint64 PlayerIdToXuid( int playerId ) = 0;
+ virtual bool IsPlayerMuted( int iUserId, XUID id ) = 0;
+
+ // To determine host Quality-of-Service
+ virtual MM_QOS_t GetQosWithLIVE() = 0;
+
+ // Used by non-'host' local machines which are starting a map to "prime" the caches. Will sit at near completion indefinitely --
+ // the client is waiting for a TellClientsToConnect message
+ virtual bool PreventFullServerStartup() = 0;
+};
+
+#define VENGINE_MATCHMAKING_VERSION "VENGINE_MATCHMAKING_VERSION001"
+
+#endif // IMATCHMAKING_H