Restructuring of the files
This commit is contained in:
80
Facepunch.Steamworks/Structs/PartyBeacon.cs
Normal file
80
Facepunch.Steamworks/Structs/PartyBeacon.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using System.Threading.Tasks;
|
||||
using Facepunch.Steamworks.Data;
|
||||
|
||||
namespace Facepunch.Steamworks
|
||||
{
|
||||
public struct PartyBeacon
|
||||
{
|
||||
static ISteamParties Internal => SteamParties.Internal;
|
||||
|
||||
internal PartyBeaconID_t Id;
|
||||
|
||||
/// <summary>
|
||||
/// Creator of the beacon
|
||||
/// </summary>
|
||||
public SteamId Owner
|
||||
{
|
||||
get
|
||||
{
|
||||
var owner = default( SteamId );
|
||||
var location = default( SteamPartyBeaconLocation_t );
|
||||
Internal.GetBeaconDetails( Id, ref owner, ref location, out _ );
|
||||
return owner;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creator of the beacon
|
||||
/// </summary>
|
||||
public string MetaData
|
||||
{
|
||||
get
|
||||
{
|
||||
var owner = default( SteamId );
|
||||
var location = default( SteamPartyBeaconLocation_t );
|
||||
_ = Internal.GetBeaconDetails( Id, ref owner, ref location, out var strVal );
|
||||
return strVal;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Will attempt to join the party. If successful will return a connection string.
|
||||
/// If failed, will return null
|
||||
/// </summary>
|
||||
public async Task<string> JoinAsync()
|
||||
{
|
||||
var result = await Internal.JoinParty( Id );
|
||||
if ( !result.HasValue || result.Value.Result != Result.OK )
|
||||
return null;
|
||||
|
||||
return result.Value.ConnectStringUTF8();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When a user follows your beacon, Steam will reserve one of the open party slots for them, and send your game a ReservationNotification callback.
|
||||
/// When that user joins your party, call OnReservationCompleted to notify Steam that the user has joined successfully
|
||||
/// </summary>
|
||||
public void OnReservationCompleted( SteamId steamid )
|
||||
{
|
||||
Internal.OnReservationCompleted( Id, steamid );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// To cancel a reservation (due to timeout or user input), call this.
|
||||
/// Steam will open a new reservation slot.
|
||||
/// Note: The user may already be in-flight to your game, so it's possible they will still connect and try to join your party.
|
||||
/// </summary>
|
||||
public void CancelReservation( SteamId steamid )
|
||||
{
|
||||
Internal.CancelReservation( Id, steamid );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Turn off the beacon
|
||||
/// </summary>
|
||||
public bool Destroy()
|
||||
{
|
||||
return Internal.DestroyBeacon( Id );
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user