Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
3.4 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. //===========================================================================//
  6. #ifndef IMATCHMAKING_H
  7. #define IMATCHMAKING_H
  8. #ifdef _WIN32
  9. #pragma once
  10. #endif
  11. #include "const.h"
  12. #include "vgui/VGUI.h"
  13. #if !defined( _X360 )
  14. #include "xbox/xboxstubs.h"
  15. #endif
  16. class KeyValues;
  17. enum SESSION_NOTIFY
  18. {
  19. SESSION_NOTIFY_FAIL_SEARCH,
  20. SESSION_NOTIFY_SEARCH_COMPLETED,
  21. SESSION_NOFIFY_MODIFYING_SESSION,
  22. SESSION_NOTIFY_MODIFYING_COMPLETED_HOST,
  23. SESSION_NOTIFY_MODIFYING_COMPLETED_CLIENT,
  24. SESSION_NOTIFY_MIGRATION_COMPLETED,
  25. SESSION_NOTIFY_CONNECT_SESSIONFULL,
  26. SESSION_NOTIFY_CONNECT_NOTAVAILABLE,
  27. SESSION_NOTIFY_CONNECTED_TOSESSION,
  28. SESSION_NOTIFY_CONNECTED_TOSERVER,
  29. SESSION_NOTIFY_CONNECT_FAILED,
  30. SESSION_NOTIFY_FAIL_CREATE,
  31. SESSION_NOTIFY_FAIL_MIGRATE,
  32. SESSION_NOTIFY_REGISTER_COMPLETED,
  33. SESSION_NOTIFY_FAIL_REGISTER,
  34. SESSION_NOTIFY_CLIENT_KICKED,
  35. SESSION_NOTIFY_CREATED_HOST,
  36. SESSION_NOTIFY_CREATED_CLIENT,
  37. SESSION_NOTIFY_LOST_HOST,
  38. SESSION_NOTIFY_LOST_SERVER,
  39. SESSION_NOTIFY_COUNTDOWN,
  40. SESSION_NOTIFY_ENDGAME_RANKED, // Ranked
  41. SESSION_NOTIFY_ENDGAME_HOST, // Unranked
  42. SESSION_NOTIFY_ENDGAME_CLIENT, // Unranked
  43. SESSION_NOTIFY_DUMPSTATS, // debugging
  44. SESSION_NOTIFY_WELCOME, // Close all dialogs and show the welcome main menu
  45. };
  46. enum SESSION_PROPS
  47. {
  48. SESSION_CONTEXT,
  49. SESSION_PROPERTY,
  50. SESSION_FLAG,
  51. };
  52. struct hostData_s
  53. {
  54. char hostName[MAX_PLAYER_NAME_LENGTH];
  55. char scenario[MAX_MAP_NAME];
  56. int gameState;
  57. int gameTime;
  58. XUID xuid;
  59. };
  60. struct MM_QOS_t
  61. {
  62. int nPingMsMin; // Minimum round-trip time in ms
  63. int nPingMsMed; // Median round-trip time in ms
  64. float flBwUpKbs; // Bandwidth upstream in kilobytes/s
  65. float flBwDnKbs; // Bandwidth downstream in kilobytes/s
  66. float flLoss; // Average packet loss in percents
  67. };
  68. #define NO_TIME_LIMIT 65000
  69. abstract_class IMatchmaking
  70. {
  71. public:
  72. virtual void SessionNotification( const SESSION_NOTIFY notification, const int param = 0 ) = 0;
  73. virtual void AddSessionProperty( const uint nType, const char *pID, const char *pValue, const char *pValueType ) = 0;
  74. virtual void SetSessionProperties( KeyValues *pPropertyKeys ) = 0;
  75. virtual void SelectSession( uint idx ) = 0;
  76. virtual void ModifySession() = 0;
  77. virtual void UpdateMuteList() = 0;
  78. virtual void StartHost( bool bSystemLink = false ) = 0;
  79. virtual void StartClient( bool bSystemLink = false ) = 0;
  80. virtual bool StartGame() = 0;
  81. virtual bool CancelStartGame() = 0;
  82. virtual void ChangeTeam( const char *pTeamName ) = 0;
  83. virtual void TellClientsToConnect() = 0;
  84. virtual void CancelCurrentOperation() = 0;
  85. virtual void KickPlayerFromSession( uint64 id ) = 0;
  86. virtual void JoinInviteSession( XSESSION_INFO *pHostInfo ) = 0;
  87. virtual void JoinInviteSessionByID( XNKID nSessionID ) = 0;
  88. virtual void EndStatsReporting() = 0;
  89. // For Gameui
  90. virtual KeyValues *GetSessionProperties() = 0;
  91. // For voice chat
  92. virtual uint64 PlayerIdToXuid( int playerId ) = 0;
  93. virtual bool IsPlayerMuted( int iUserId, XUID id ) = 0;
  94. // To determine host Quality-of-Service
  95. virtual MM_QOS_t GetQosWithLIVE() = 0;
  96. // Used by non-'host' local machines which are starting a map to "prime" the caches. Will sit at near completion indefinitely --
  97. // the client is waiting for a TellClientsToConnect message
  98. virtual bool PreventFullServerStartup() = 0;
  99. };
  100. #define VENGINE_MATCHMAKING_VERSION "VENGINE_MATCHMAKING_VERSION001"
  101. #endif // IMATCHMAKING_H