2016-04-08 12 views
0

私は以下の座席を持っています。 Client_1はComputer_1のProfile_1からゲームを開始し、ゲームにログインして再生します。クライアント_2は、Computer_1のProfile_1からゲームを開始し、ゲームにログインして再生します。 他のプレーヤーが接続してセッションを終了したことを示すClient_1スチームショー通知の場合。他のプレイヤーが現在のプロファイルからゲームを開始するよりも、C++コードでClient_1を処理する方法は?コールバックはありますか?steamworks C++ sdk。クライアントはすでにシングルプロファイルからゲームを開始しています。

答えて

0

私はこの問題を解決します。これは、蒸気からの特定のイベントを聞くことを可能にする私の実装の単純化です。

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; 
     }; 
    } 
} 
関連する問題