00001 /***SDOC************************************************************************ 00002 * UbiSoft Network Development 00003 * --------------------------- 00004 * 00005 * FILE........: RegServerLib.h 00006 * CREATION....: Sept 2001 00007 * AUTHOR......: Guillaume Plante 00008 * 00009 * DESCRIPTION.: Interface class to login fonctionality 00010 * 00011 ******************************************************************************* 00012 * FILE HISTORY 00013 ******************************************************************************* 00014 * 00015 * DATE........: 00016 * AUTHOR......: 00017 * DESCRIPTION.: 00018 * 00019 ***********************************************************************EDOC***/ 00020 00021 #ifndef __CLIENTLIB_H__ 00022 #define __CLIENTLIB_H__ 00023 00024 #include "define.h" 00025 00026 class clDataList; 00027 class clDataBin; 00028 class clSRPGSClient; 00029 class CRegServerConnection; 00030 class clParentGroups; 00031 00032 class CRegisterServer 00033 { 00034 public: 00035 00036 CRegisterServer(); 00037 virtual ~CRegisterServer(); 00038 00039 // RegServer public functions 00040 public: 00041 GSvoid RegServer_Engine(); 00042 GSbool RegServerSend_RouterConnect( const GSchar* szAddress, GSint lPort ); 00043 GSbool RegServerSend_RouterDisconnect(); 00044 GSbool RegServerSend_LoginRouter( const GSchar* szAlias, 00045 const GSchar* szPassword, const GSchar* szVersion ); 00046 GSbool RegServerSend_RequestParentGroupOnLobby( const GSchar* szGameName ); 00047 00048 GSbool RegServerSend_RegisterServerOnLobby( 00049 GSuint uiLobbyID, 00050 GSint iParentID, 00051 const GSchar* szRoomName, 00052 const GSchar* szGameName, 00053 GSushort uwRoomType, 00054 GSuint uiMaxPlayer, 00055 GSuint uiMaxSpectator, 00056 const GSchar* szPassword, 00057 const GSvoid* pstGroupInfo, 00058 GSint iGroupInfoSize, 00059 const GSvoid* pstAltGroupInfo, 00060 GSint iAltGroupInfoSize, 00061 const GSvoid* pstGameData, 00062 GSint iGameDataSize, 00063 GSushort usGamePort, 00064 const GSchar* szGameVersion, 00065 const GSchar* szGSVersion, 00066 GSbool bScoreSubmission, 00067 GSbool bDedicatedServer ); 00068 00069 00071 // Lobby Server 00073 GSbool RegServerSend_LobbyServerConnection( const GSchar* szAddress, GSushort usPort, 00074 GSushort usLocalPort = 0, GSuint uiStillAliveDelay = 25, GSuint uiDisconnectionDelay = 120 ); 00075 GSbool RegServerSend_LobbyServerClose(); 00076 GSbool RegServerSend_LobbyServerLogin( const GSchar* szAlias,GSint iGroupID ); 00077 GSbool RegServerSend_LobbyServerMemberJoin( const GSchar* szMember ); 00078 GSbool RegServerSend_LobbyServerMemberLeave( const GSchar* szMember ); 00079 GSbool RegServerSend_UpdateGroupSettings( 00080 GSint iGroupID, 00081 GSbyte bOpen, 00082 GSbyte bScoreSubmission, 00083 GSbyte bDedicatedServer, 00084 GSint iMaxPlayers, 00085 GSint iMaxSpectator, 00086 const GSchar* szPassword, 00087 const GSvoid* pucGroupInfo, 00088 GSint iGroupInfoSize, 00089 const GSvoid* pucAltGroupInfo, 00090 GSint iAltGroupInfoSize, 00091 const GSvoid* pucGameData, 00092 GSint iGameDataSize, 00093 GSushort usGamePort ); 00094 00095 GSbool RegServerSend_MatchStart( GSuint uiMode = 0 ); 00096 GSbool RegServerSend_MatchFinish( ); 00097 00098 //************************************************** 00099 //virtual Function used for the CallBack 00100 //************************************************** 00101 virtual GSvoid RegServerRcv_LoginRouterResult( GSubyte ucType, GSint lReason, 00102 const GSchar* szIPAddress ) = 0; 00103 virtual GSvoid RegServerRcv_RouterDisconnection() = 0; 00104 virtual GSvoid RegServerRcv_RegisterServerResult( GSubyte pucType, 00105 GSint plReason, 00106 GSint iGroupID, 00107 const GSchar* szAddress, 00108 GSushort usPort, 00109 const GSchar* szSessionName ) = 0; 00110 virtual GSvoid RegServerRcv_RequestParentGroupResult( GSubyte ucType, 00111 GSint lReason, GSint iServerID,GSint iGroupID, const GSchar* szGroupName, 00112 GSuint uiNbPlayers, GSuint uiMaxPlayers ) = 0; 00113 virtual GSvoid RegServerRcv_LobbyServerLoginResults( GSubyte ucType, 00114 GSint iReason, GSint iLobbyServerID, GSint iGroupID ) = 0; 00115 virtual GSvoid RegServerRcv_LobbyServerUpdateGroupSettingsResults( 00116 GSubyte ucType, GSint iReason, GSint iGroupID ) = 0; 00117 virtual GSvoid RegServerRcv_LobbyServerDisconnection() = 0; 00118 virtual GSvoid RegServerRcv_LobbyServerMemberNew( const GSchar* szMember, 00119 GSbool bSpectator, 00120 const GSchar* szIPAddress, const GSchar* szAltIPAddress, 00121 const GSvoid* pPlayerInfo, GSuint uiPlayerInfoSize, 00122 GSushort usPlayerStatus ) = 0; 00123 virtual GSvoid RegServerRcv_LobbyServerMatchStartReply( GSubyte ucType, 00124 GSint iReason, GSint iGroupID ) = 0; 00125 virtual GSvoid RegServerRcv_LobbyServerMemberLeft(const GSchar* szMember ) = 0; 00126 virtual GSvoid RegServerRcv_LobbyServerMatchFinishReply( GSubyte ucType, 00127 GSint iReason, GSint iGroupID ) = 0; 00128 virtual GSvoid RegServerRcv_LobbyServerGroupConfigUpdate( 00129 GSuint uiGroupConfig, GSint iGroupID ) = 0; 00130 virtual GSvoid RegServerRcv_LobbyServerMemberUpdateStatus( 00131 const GSchar* szPlayer, GSushort usPlayerStatus ) = 0; 00132 virtual GSvoid RegServerRcv_LobbyServerNewGroup (GSushort usRoomType, 00133 const GSchar* szRoomName, 00134 GSint iGroupID, 00135 GSint iLobbyServerID, 00136 GSint iParentGroupID, 00137 GSint uiGroupConfig, 00138 GSshort sGroupLevel, 00139 const GSchar* szMaster, 00140 const GSchar* szAllowedGames, 00141 const GSchar* szGame, 00142 const GSvoid* pGroupInfo, 00143 GSuint GroupInfoSize, 00144 GSuint uiMatchEventID, 00145 GSuint uiMaxPlayers, 00146 GSuint uiNbPlayers, 00147 GSuint uiMaxSpectators, 00148 GSuint uiNbSpectators, 00149 const GSchar* szGameVersion, 00150 const GSchar* szGSGameVersion, 00151 const GSchar* szIPAddress, 00152 const GSchar* szAltIPAddress ) = 0; 00153 virtual GSvoid RegServerRcv_LobbyServerMemberUpdateInfo( 00154 const GSchar* szMember, const GSvoid* pPlayerInfo, 00155 GSuint uiPlayerInfoSize ) = 0; 00156 00157 private: 00158 00159 GSvoid RegServer_UnInitRouterConnection(); 00160 GSvoid RegServer_UnInitLobbyServerConnection(); 00161 GSvoid CheckDisconnection(); 00162 00163 GSbool RegServerRcv_LoginRouterResult( GSushort SFType,clDataList* pDataList); 00164 GSbool RegServerRcv_RegisterServerResult( GSushort usFSType, 00165 clDataList* pDataList ); 00166 GSbool RegServerRcv_RequestParentGroupResult( GSushort SFType, 00167 clDataList* pDataList ); 00168 00169 GSbool CheckLobbyServerConnection(); 00170 GSbool ManageLobbyServerConnection(); 00171 GSvoid CheckTheLobbyMessages(); 00172 GSvoid ReadLobbySeverAnswer( GSubyte ucType, clDataList* pDataList ); 00173 GSvoid RegServerRcv_LobbyServerLoginResults( GSuchar ucType, 00174 clDataList* pDataMessage ); 00175 GSvoid RegServerRcv_LobbyServerUpdateGroupSettingsResults( GSuchar ucType, 00176 clDataList* pDataMessage ); 00177 GSvoid RegServerRcv_LobbyServerNewMembers( clDataList* pDataMessage ); 00178 GSvoid RegServerRcv_LobbyServerMatchStartReply( GSuchar ucType, 00179 clDataList* pDataMessage ); 00180 GSvoid RegServerRcv_LobbyServerMemberLeft( clDataList* pDataList ); 00181 GSvoid RegServerRcv_LobbyServerMatchFinishReply( GSuchar ucType, 00182 clDataList* pDataMessage ); 00183 GSvoid RegServerRcv_LobbyServerGroupConfigUpdate( clDataList* pDataMessage ); 00184 GSvoid RegServerRcv_LobbyServerMemberUpdateStatus( clDataList* pDataMessage ); 00185 GSvoid RegServerRcv_LobbyServerNewGroup ( clDataList* pDataMessage ); 00186 GSvoid RegServerRcv_LobbyServerMemberUpdateInfo( clDataList* pDataMessage ); 00187 00188 00189 clParentGroups *m_pParentGroups; 00190 00191 GSchar m_szPlayerAlias[NICKNAMELENGTH]; 00192 GSchar m_szAddress[IPADDRESSLENGTH]; 00193 GSbool m_bServerRegistered; 00194 00195 GSbool m_bLobbyConnected; 00196 GSbool m_bRouterConnected; 00197 00198 GSchar m_szLocalIP[IPADDRESSLENGTH]; 00199 CRegServerConnection* m_RouterConnection; 00200 clSRPGSClient* m_pSRPGSClient; 00201 GSint m_iLobbyServerID; 00202 GSint m_iGroupID; 00203 00204 }; 00205 00206 #endif //__CLIENTLIB_H__
Ubi.com GameService SDK - ©UbiSoft Entertainment 2002
GameService development team