diff --git a/dll/dll/steam_friends.h b/dll/dll/steam_friends.h index f9693aa9..d805427d 100644 --- a/dll/dll/steam_friends.h +++ b/dll/dll/steam_friends.h @@ -121,6 +121,8 @@ public: // the returned CSteamID can then be used by all the functions below to access details about the user CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ); + void GetFriendByIndex(CSteamID& res, int iFriend, int iFriendFlags ); + CSteamID GetFriendByIndex( int iFriend, EFriendFlags eFriendFlags ); void GetFriendByIndex(CSteamID& result, int iFriend, EFriendFlags eFriendFlags); @@ -206,6 +208,8 @@ public: CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ); + void GetFriendFromSourceByIndex(CSteamID& res, CSteamID steamIDSource, int iFriend); + // returns true if the local user can see that steamIDUser is a member or in steamIDSource bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ); @@ -292,12 +296,16 @@ public: // returns the steamID of the clan owner CSteamID GetClanOwner( CSteamID steamIDClan ); + void GetClanOwner(CSteamID& res, CSteamID steamIDClan ); + // returns the number of officers in a clan (including the owner) int GetClanOfficerCount( CSteamID steamIDClan ); // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ); + void GetClanOfficerByIndex(CSteamID& res, CSteamID steamIDClan, int iOfficer ); + // if current user is chat restricted, he can't send or receive any text/voice chat messages. // the user can't see custom avatars. But the user can be online and send/recv game invites. // a chat restricted user can't add friends or join any groups. @@ -345,6 +353,8 @@ public: int GetCoplayFriendCount(); CSteamID GetCoplayFriend( int iCoplayFriend ); + + void GetCoplayFriend(CSteamID& res, int iCoplayFriend ); int GetFriendCoplayTime( CSteamID steamIDFriend ); @@ -363,6 +373,8 @@ public: int GetClanChatMemberCount( CSteamID steamIDClan ); CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ); + + void GetChatMemberByIndex(CSteamID& res, CSteamID steamIDClan, int iUser ); bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ); diff --git a/dll/dll/steam_matchmaking.h b/dll/dll/steam_matchmaking.h index d206a4b3..4b00dc3d 100644 --- a/dll/dll/steam_matchmaking.h +++ b/dll/dll/steam_matchmaking.h @@ -217,6 +217,8 @@ public: // the returned CSteamID::IsValid() will be false if iLobby is out of range CSteamID GetLobbyByIndex( int iLobby ); + void GetLobbyByIndex(CSteamID& res, int iLobby ); + // Create a lobby on the Steam servers. // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID @@ -269,6 +271,8 @@ public: // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember ); + void GetLobbyMemberByIndex(CSteamID& res, CSteamID steamIDLobby, int iMember ); + // Get data associated with this lobby // takes a simple key, and returns the string associated with it @@ -359,6 +363,8 @@ public: // it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner CSteamID GetLobbyOwner( CSteamID steamIDLobby ); + void GetLobbyOwner(CSteamID& res, CSteamID steamIDLobby ); + // asks the Steam servers for a list of lobbies that friends are in // returns results by posting one RequestFriendsLobbiesResponse_t callback per friend/lobby pair // if no friends are in lobbies, RequestFriendsLobbiesResponse_t will be posted but with 0 results diff --git a/dll/steam_friends.cpp b/dll/steam_friends.cpp index 9639c08e..ad823e18 100644 --- a/dll/steam_friends.cpp +++ b/dll/steam_friends.cpp @@ -277,6 +277,13 @@ CSteamID Steam_Friends::GetFriendByIndex( int iFriend, int iFriendFlags ) return id; } +void Steam_Friends::GetFriendByIndex(CSteamID& res, int iFriend, int iFriendFlags ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetFriendByIndex(iFriend, iFriendFlags ); +} + CSteamID Steam_Friends::GetFriendByIndex( int iFriend, EFriendFlags eFriendFlags ) { PRINT_DEBUG("old"); @@ -289,7 +296,7 @@ void Steam_Friends::GetFriendByIndex(CSteamID& result, int iFriend, EFriendFlags { PRINT_DEBUG_GNU_WIN(); std::lock_guard lock(global_mutex); - result = GetFriendByIndex(iFriend, (int)eFriendFlags ); + result = GetFriendByIndex(iFriend, eFriendFlags ); } @@ -570,6 +577,13 @@ CSteamID Steam_Friends::GetFriendFromSourceByIndex( CSteamID steamIDSource, int return k_steamIDNil; } +void Steam_Friends::GetFriendFromSourceByIndex( CSteamID& res, CSteamID steamIDSource, int iFriend ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetFriendFromSourceByIndex( steamIDSource, iFriend ); +} + // returns true if the local user can see that steamIDUser is a member or in steamIDSource bool Steam_Friends::IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) @@ -769,6 +783,13 @@ CSteamID Steam_Friends::GetClanOwner( CSteamID steamIDClan ) return k_steamIDNil; } +void Steam_Friends::GetClanOwner(CSteamID& res, CSteamID steamIDClan ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetClanOwner( steamIDClan ); +} + // returns the number of officers in a clan (including the owner) int Steam_Friends::GetClanOfficerCount( CSteamID steamIDClan ) { @@ -785,6 +806,13 @@ CSteamID Steam_Friends::GetClanOfficerByIndex( CSteamID steamIDClan, int iOffice return k_steamIDNil; } +void Steam_Friends::GetClanOfficerByIndex(CSteamID& res, CSteamID steamIDClan, int iOfficer ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetClanOfficerByIndex( steamIDClan, iOfficer ); +} + // if current user is chat restricted, he can't send or receive any text/voice chat messages. // the user can't see custom avatars. But the user can be online and send/recv game invites. // a chat restricted user can't add friends or join any groups. @@ -965,6 +993,13 @@ CSteamID Steam_Friends::GetCoplayFriend( int iCoplayFriend ) return k_steamIDNil; } +void Steam_Friends::GetCoplayFriend( CSteamID& res, int iCoplayFriend ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetCoplayFriend( iCoplayFriend ); +} + int Steam_Friends::GetFriendCoplayTime( CSteamID steamIDFriend ) { PRINT_DEBUG_TODO(); @@ -1017,6 +1052,13 @@ CSteamID Steam_Friends::GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) return k_steamIDNil; } +void Steam_Friends::GetChatMemberByIndex(CSteamID& res, CSteamID steamIDClan, int iUser ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetChatMemberByIndex( steamIDClan, iUser ); +} + bool Steam_Friends::SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) { PRINT_DEBUG_TODO(); diff --git a/dll/steam_matchmaking.cpp b/dll/steam_matchmaking.cpp index f22d0768..735c431b 100644 --- a/dll/steam_matchmaking.cpp +++ b/dll/steam_matchmaking.cpp @@ -605,6 +605,13 @@ CSteamID Steam_Matchmaking::GetLobbyByIndex( int iLobby ) return id; } +void Steam_Matchmaking::GetLobbyByIndex(CSteamID& res, int iLobby ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetLobbyByIndex(iLobby ); +} + // Create a lobby on the Steam servers. // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID // of the lobby will need to be communicated via game channels or via InviteUserToLobby() @@ -773,6 +780,13 @@ CSteamID Steam_Matchmaking::GetLobbyMemberByIndex( CSteamID steamIDLobby, int iM return id; } +void Steam_Matchmaking::GetLobbyMemberByIndex(CSteamID&res, CSteamID steamIDLobby, int iMember ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetLobbyMemberByIndex( steamIDLobby, iMember ); +} + // Get data associated with this lobby // takes a simple key, and returns the string associated with it @@ -1175,6 +1189,13 @@ CSteamID Steam_Matchmaking::GetLobbyOwner( CSteamID steamIDLobby ) return (uint64)lobby->owner(); } +void Steam_Matchmaking::GetLobbyOwner(CSteamID& res, CSteamID steamIDLobby ) +{ + PRINT_DEBUG_GNU_WIN(); + std::lock_guard lock(global_mutex); + res = GetLobbyOwner( steamIDLobby ); +} + // asks the Steam servers for a list of lobbies that friends are in // returns results by posting one RequestFriendsLobbiesResponse_t callback per friend/lobby pair // if no friends are in lobbies, RequestFriendsLobbiesResponse_t will be posted but with 0 results