61 lines
1.8 KiB
C++
61 lines
1.8 KiB
C++
#pragma once
|
|
#include <steam_api.h>
|
|
#include <vector>
|
|
#include <iostream>
|
|
#include <mutex>
|
|
|
|
class SteamNetworkingManager; // Forward declaration
|
|
class SteamRoomManager; // Forward declaration for callbacks
|
|
|
|
class SteamFriendsCallbacks
|
|
{
|
|
public:
|
|
SteamFriendsCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager);
|
|
void OnGameRichPresenceJoinRequested(GameRichPresenceJoinRequested_t *pCallback);
|
|
void OnGameLobbyJoinRequested(GameLobbyJoinRequested_t *pCallback);
|
|
|
|
private:
|
|
SteamNetworkingManager *manager_;
|
|
SteamRoomManager *roomManager_;
|
|
};
|
|
|
|
class SteamMatchmakingCallbacks
|
|
{
|
|
public:
|
|
SteamMatchmakingCallbacks(SteamNetworkingManager *manager, SteamRoomManager *roomManager);
|
|
void OnLobbyCreated(LobbyCreated_t *pCallback);
|
|
void OnLobbyListReceived(LobbyMatchList_t *pCallback);
|
|
void OnLobbyEntered(LobbyEnter_t *pCallback);
|
|
|
|
private:
|
|
SteamNetworkingManager *manager_;
|
|
SteamRoomManager *roomManager_;
|
|
};
|
|
|
|
class SteamRoomManager
|
|
{
|
|
public:
|
|
SteamRoomManager(SteamNetworkingManager *networkingManager);
|
|
~SteamRoomManager();
|
|
|
|
bool createLobby();
|
|
void leaveLobby();
|
|
bool searchLobbies();
|
|
bool joinLobby(CSteamID lobbyID);
|
|
bool startHosting();
|
|
void stopHosting();
|
|
|
|
CSteamID getCurrentLobby() const { return currentLobby; }
|
|
const std::vector<CSteamID>& getLobbies() const { return lobbies; }
|
|
|
|
void setCurrentLobby(CSteamID lobby) { currentLobby = lobby; }
|
|
void addLobby(CSteamID lobby) { lobbies.push_back(lobby); }
|
|
void clearLobbies() { lobbies.clear(); }
|
|
|
|
private:
|
|
SteamNetworkingManager *networkingManager_;
|
|
CSteamID currentLobby;
|
|
std::vector<CSteamID> lobbies;
|
|
SteamFriendsCallbacks *steamFriendsCallbacks;
|
|
SteamMatchmakingCallbacks *steamMatchmakingCallbacks;
|
|
}; |