Files
sbox-public/engine/Sandbox.Menu/SteamCallbacks.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

37 lines
1.2 KiB
C#

using Sandbox.Engine;
using Steamworks;
namespace Sandbox;
/// <summary>
/// Handles callbacks from Steam lobbies and translates them to our Global, Party or Game lobbies.
/// </summary>
internal static class SteamCallbacks
{
internal static void InitSteamCallbacks()
{
SteamFriends.OnPersonaStateChange += SteamFriends_OnPersonaStateChange;
SteamFriends.OnFriendRichPresenceUpdate += SteamFriends_OnPersonaStateChange;
SteamFriends.OnGameRichPresenceJoinRequested += SteamFriends_OnGameRichPresenceJoinRequested;
SteamFriends.OnGameLobbyJoinRequested += SteamFriends_OnGameLobbyJoinRequested;
}
private static void SteamFriends_OnGameRichPresenceJoinRequested( Steamworks.Friend friend, string connectStr )
{
using var scope = GlobalContext.MenuScope();
ConsoleSystem.Run( "connect", connectStr.Split( ' ' ).Last() );
}
private static void SteamFriends_OnGameLobbyJoinRequested( Sandbox.SteamId lobby )
{
using var scope = GlobalContext.MenuScope();
ConsoleSystem.Run( "connect", lobby.Value );
}
private static void SteamFriends_OnPersonaStateChange( Steamworks.Friend obj )
{
using var scope = GlobalContext.MenuScope();
Event.Run( "friend.change", new Sandbox.Friend( obj ) );
}
}