У меня есть следующая ситуация.
Клиент_1 запустит игру из профиля_1 на компьютере_1, войдите в игру и играйте.
Клиент_2 запустить игру из профиля_1 на компьютере_2, войти в игру и играть.
Для Client_1 steam показывают уведомление о том, что подключен другой игрок, и прекращают сеанс. Как Client_1 может обрабатывать в C ++ коде, чем другой игрок запускает игру из текущего профиля? Есть ли обратные вызовы?
Хорошо. Я решаю эту проблему. Это упрощение моей реализации, которое позволяет прослушивать определенные события из steam.
class SteamCallbacksListener
{
private:
STEAM_CALLBACK( SteamCallbacksListener, onSteamServersConnected, SteamServersConnected_t, mSteamConnectedListener );
STEAM_CALLBACK( SteamCallbacksListener, onSteamServersDisconnected, SteamServersDisconnected_t, mSteamDisconnectedListener );
STEAM_CALLBACK( SteamCallbacksListener, onSteamServerConnectFailure, SteamServerConnectFailure_t, mSteamConnectFilureListener );
SteamCallbacksListener();
SteamCallbacksListener( const SteamCallbacksListener& _copy );
~SteamCallbacksListener();
public:
static SteamCallbacksListener* getInstance()
{
static SteamCallbacksListener instance;
return &instance;
}
};
SteamCallbacksListener::SteamCallbacksListener()
: mSteamConnectedListener( this, &SteamCallbacksListener::onSteamServersConnected )
, mSteamDisconnectedListener( this, &SteamCallbacksListener::onSteamServersDisconnected )
, mSteamConnectFilureListener( this, &SteamCallbacksListener::onSteamServerConnectFailure )
{
}
SteamCallbacksListener::~SteamCallbacksListener()
{
}
void SteamCallbacksListener::onSteamServersConnected( SteamServersConnected_t* _pParam )
{
}
void SteamCallbacksListener::onSteamServersDisconnected( SteamServersDisconnected_t* _pParam )
{
if( _pParam )
{
switch( _pParam->m_eResult )
{
case k_EResultAlreadyLoggedInElsewhere:
case k_EResultLoggedInElsewhere:
case k_EResultPasswordRequiredToKickSession:
{
log( "This client already logged in. Error!" );
}
break;
};
}
}
Других решений пока нет …