62 lines
2.1 KiB
C#
62 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Steamworks.Data;
|
|
|
|
namespace Steamworks
|
|
{
|
|
/// <summary>
|
|
/// Functions that provide information about Steam Remote Play sessions, streaming your game content to another computer or to a Steam Link app or hardware.
|
|
/// </summary>
|
|
public class SteamRemotePlay : SteamClientClass<SteamRemotePlay>
|
|
{
|
|
internal static ISteamRemotePlay? Internal => Interface as ISteamRemotePlay;
|
|
|
|
internal override bool InitializeInterface( bool server )
|
|
{
|
|
SetInterface( server, new ISteamRemotePlay( server ) );
|
|
if ( Interface is null || Interface.Self == IntPtr.Zero ) return false;
|
|
|
|
InstallEvents( server );
|
|
|
|
return true;
|
|
}
|
|
|
|
internal void InstallEvents( bool server )
|
|
{
|
|
Dispatch.Install<SteamRemotePlaySessionConnected_t>( x => OnSessionConnected?.Invoke( x.SessionID ), server );
|
|
Dispatch.Install<SteamRemotePlaySessionDisconnected_t>( x => OnSessionDisconnected?.Invoke( x.SessionID ), server );
|
|
}
|
|
|
|
/// <summary>
|
|
/// Invoked when a session is connected.
|
|
/// </summary>
|
|
public static event Action<RemotePlaySession>? OnSessionConnected;
|
|
|
|
/// <summary>
|
|
/// Invoked when a session becomes disconnected.
|
|
/// </summary>
|
|
public static event Action<RemotePlaySession>? OnSessionDisconnected;
|
|
|
|
/// <summary>
|
|
/// Gets the number of currently connected Steam Remote Play sessions
|
|
/// </summary>
|
|
public static int SessionCount => (int)(Internal?.GetSessionCount() ?? 0);
|
|
|
|
/// <summary>
|
|
/// Get the currently connected Steam Remote Play session ID at the specified index.
|
|
/// IsValid will return <see langword="false"/> if it's out of bounds
|
|
/// </summary>
|
|
public static RemotePlaySession GetSession( int index ) => Internal?.GetSessionID( index ).Value ?? default;
|
|
|
|
|
|
/// <summary>
|
|
/// Invite a friend to Remote Play Together.
|
|
/// This returns <see langword="false"/> if the invite can't be sent
|
|
/// </summary>
|
|
public static bool SendInvite( SteamId steamid ) => Internal != null && Internal.BSendRemotePlayTogetherInvite( steamid );
|
|
}
|
|
}
|