diff --git a/steam/steam_message_handler.cpp b/steam/steam_message_handler.cpp index 10dfbe7..1cdbdb4 100644 --- a/steam/steam_message_handler.cpp +++ b/steam/steam_message_handler.cpp @@ -32,9 +32,6 @@ void SteamMessageHandler::run() { // Poll networking m_pInterface_->RunCallbacks(); - // Update user info (assuming userMap is accessible, but for simplicity, skip or add as param) - // Note: userMap update might need to be handled elsewhere or passed - // Receive messages pollMessages(); diff --git a/steam/steam_room_manager.cpp b/steam/steam_room_manager.cpp index cfa00c2..e7bd6ed 100644 --- a/steam/steam_room_manager.cpp +++ b/steam/steam_room_manager.cpp @@ -3,7 +3,8 @@ #include #include -SteamFriendsCallbacks::SteamFriendsCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager) : manager_(manager), roomManager_(roomManager) +SteamFriendsCallbacks::SteamFriendsCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager) + : manager_(manager), roomManager_(roomManager) { std::cout << "SteamFriendsCallbacks constructor called" << std::endl; } @@ -99,10 +100,17 @@ void SteamFriendsCallbacks::OnGameLobbyJoinRequested(GameLobbyJoinRequested_t *p } } -SteamMatchmakingCallbacks::SteamMatchmakingCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager) : manager_(manager), roomManager_(roomManager) {} +SteamMatchmakingCallbacks::SteamMatchmakingCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager) + : manager_(manager), roomManager_(roomManager) +{} -void SteamMatchmakingCallbacks::OnLobbyCreated(LobbyCreated_t *pCallback) +void SteamMatchmakingCallbacks::OnLobbyCreated(LobbyCreated_t *pCallback, bool bIOFailure) { + if (bIOFailure) + { + std::cerr << "Failed to create lobby - IO Failure" << std::endl; + return; + } if (pCallback->m_eResult == k_EResultOK) { roomManager_->setCurrentLobby(pCallback->m_ulSteamIDLobby); @@ -120,8 +128,13 @@ void SteamMatchmakingCallbacks::OnLobbyCreated(LobbyCreated_t *pCallback) } } -void SteamMatchmakingCallbacks::OnLobbyListReceived(LobbyMatchList_t *pCallback) +void SteamMatchmakingCallbacks::OnLobbyListReceived(LobbyMatchList_t *pCallback, bool bIOFailure) { + if (bIOFailure) + { + std::cerr << "Failed to receive lobby list - IO Failure" << std::endl; + return; + } roomManager_->clearLobbies(); for (uint32 i = 0; i < pCallback->m_nLobbiesMatching; ++i) { @@ -183,7 +196,8 @@ bool SteamRoomManager::createLobby() std::cerr << "Failed to create lobby" << std::endl; return false; } - // Call result will be handled by callback + // Register the call result + steamMatchmakingCallbacks->m_CallResultLobbyCreated.Set(hSteamAPICall, steamMatchmakingCallbacks, &SteamMatchmakingCallbacks::OnLobbyCreated); return true; } @@ -205,7 +219,8 @@ bool SteamRoomManager::searchLobbies() std::cerr << "Failed to request lobby list" << std::endl; return false; } - // Results will be handled by callback + // Register the call result + steamMatchmakingCallbacks->m_CallResultLobbyMatchList.Set(hSteamAPICall, steamMatchmakingCallbacks, &SteamMatchmakingCallbacks::OnLobbyListReceived); return true; } diff --git a/steam/steam_room_manager.h b/steam/steam_room_manager.h index 166698b..ea67475 100644 --- a/steam/steam_room_manager.h +++ b/steam/steam_room_manager.h @@ -11,25 +11,31 @@ class SteamFriendsCallbacks { public: SteamFriendsCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager); - void OnGameRichPresenceJoinRequested(GameRichPresenceJoinRequested_t *pCallback); - void OnGameLobbyJoinRequested(GameLobbyJoinRequested_t *pCallback); private: SteamNetworkingManager *manager_; SteamRoomManager *roomManager_; + + STEAM_CALLBACK(SteamFriendsCallbacks, OnGameRichPresenceJoinRequested, GameRichPresenceJoinRequested_t); + STEAM_CALLBACK(SteamFriendsCallbacks, OnGameLobbyJoinRequested, GameLobbyJoinRequested_t); }; class SteamMatchmakingCallbacks { public: SteamMatchmakingCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager); - void OnLobbyCreated(LobbyCreated_t *pCallback); - void OnLobbyListReceived(LobbyMatchList_t *pCallback); - void OnLobbyEntered(LobbyEnter_t *pCallback); + + CCallResult m_CallResultLobbyCreated; + CCallResult m_CallResultLobbyMatchList; + + void OnLobbyCreated(LobbyCreated_t *pCallback, bool bIOFailure); + void OnLobbyListReceived(LobbyMatchList_t *pCallback, bool bIOFailure); private: SteamNetworkingManager *manager_; SteamRoomManager *roomManager_; + + STEAM_CALLBACK(SteamMatchmakingCallbacks, OnLobbyEntered, LobbyEnter_t); }; class SteamRoomManager