3 using System.Threading.Tasks;
8 static partial class SteamManager
10 private static Option<Steamworks.AuthTicket> currentMultiplayerTicket =
Option.
None;
11 public static Option<Steamworks.AuthTicket> GetAuthSessionTicketForMultiplayer(
Endpoint remoteHostEndpoint)
18 if (currentMultiplayerTicket.TryUnwrap(out var ticketToCancel))
20 ticketToCancel.Cancel();
24 var netIdentity = remoteHostEndpoint
switch
27 => (Steamworks.Data.NetIdentity)Steamworks.Data.
NetAddress.From(ipAddr, (ushort)ipPort),
29 => (Steamworks.Data.NetIdentity)(Steamworks.SteamId)steamId.
Value,
31 =>
throw new ArgumentOutOfRangeException(nameof(remoteHostEndpoint))
33 var newTicket = Steamworks.SteamUser.GetAuthSessionTicket(netIdentity);
35 currentMultiplayerTicket = newTicket !=
null
39 return currentMultiplayerTicket;
42 private const string GameAnalyticsConsentIdentity =
"BarotraumaGameAnalyticsConsent";
44 private static Option<Steamworks.AuthTicketForWebApi> currentGameAnalyticsConsentTicket =
Option.
None;
45 public static async Task<
Option<Steamworks.AuthTicketForWebApi>> GetAuthTicketForGameAnalyticsConsent()
52 if (currentGameAnalyticsConsentTicket.TryUnwrap(out var ticketToCancel))
54 ticketToCancel.Cancel();
56 currentGameAnalyticsConsentTicket =
Option.
None;
58 var newTicket = await Steamworks.SteamUser.GetAuthTicketForWebApi(identity: GameAnalyticsConsentIdentity);
60 currentGameAnalyticsConsentTicket = newTicket !=
null
64 return currentGameAnalyticsConsentTicket;
readonly IPAddress NetAddress
static Option< T > Some(T value)
static UnspecifiedNone None