2016-04-08 7 views
0

Aşağıdaki izleme sürem var. İstemci_1, Profil_1’den Computer_1’de oyunu başlat, oyuna giriş yap ve oyna. İstemci_2 Profile_2, Computer_2'da oyunu başlat, oyuna giriş yap ve oyna. İstemci_1 buharı için başka bir oyuncunun bağlandığını bildirir ve oturumu sonlandırır. Client_1, C++ kodunda başka bir oyuncudan daha fazla oyuncuyu mevcut profilden nasıl başlatabilir? Herhangi bir geri arama var mı?buhar işleri C++ sdk. İstemci çalıştırmayı zaten tek bir oyundan başlatmayı algıla.

cevap

0

Tamam. Bu sorunu çözüyorum. Bu, belirli olayları buhardan dinlemeyi sağlayan benim uygulamamın basitleştirilmesidir.

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; 
     }; 
    } 
}