summaryrefslogtreecommitdiff
path: root/Assembly_Firstpass/Steamworks/SteamParties.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assembly_Firstpass/Steamworks/SteamParties.cs')
-rw-r--r--Assembly_Firstpass/Steamworks/SteamParties.cs89
1 files changed, 89 insertions, 0 deletions
diff --git a/Assembly_Firstpass/Steamworks/SteamParties.cs b/Assembly_Firstpass/Steamworks/SteamParties.cs
new file mode 100644
index 0000000..13c16cf
--- /dev/null
+++ b/Assembly_Firstpass/Steamworks/SteamParties.cs
@@ -0,0 +1,89 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Steamworks;
+
+public static class SteamParties
+{
+ public static uint GetNumActiveBeacons()
+ {
+ InteropHelp.TestIfAvailableClient();
+ return NativeMethods.ISteamParties_GetNumActiveBeacons(CSteamAPIContext.GetSteamParties());
+ }
+
+ public static PartyBeaconID_t GetBeaconByIndex(uint unIndex)
+ {
+ InteropHelp.TestIfAvailableClient();
+ return (PartyBeaconID_t)NativeMethods.ISteamParties_GetBeaconByIndex(CSteamAPIContext.GetSteamParties(), unIndex);
+ }
+
+ public static bool GetBeaconDetails(PartyBeaconID_t ulBeaconID, out CSteamID pSteamIDBeaconOwner, out SteamPartyBeaconLocation_t pLocation, out string pchMetadata, int cchMetadata)
+ {
+ InteropHelp.TestIfAvailableClient();
+ IntPtr intPtr = Marshal.AllocHGlobal(cchMetadata);
+ bool flag = NativeMethods.ISteamParties_GetBeaconDetails(CSteamAPIContext.GetSteamParties(), ulBeaconID, out pSteamIDBeaconOwner, out pLocation, intPtr, cchMetadata);
+ pchMetadata = (flag ? InteropHelp.PtrToStringUTF8(intPtr) : null);
+ Marshal.FreeHGlobal(intPtr);
+ return flag;
+ }
+
+ public static SteamAPICall_t JoinParty(PartyBeaconID_t ulBeaconID)
+ {
+ InteropHelp.TestIfAvailableClient();
+ return (SteamAPICall_t)NativeMethods.ISteamParties_JoinParty(CSteamAPIContext.GetSteamParties(), ulBeaconID);
+ }
+
+ public static bool GetNumAvailableBeaconLocations(out uint puNumLocations)
+ {
+ InteropHelp.TestIfAvailableClient();
+ return NativeMethods.ISteamParties_GetNumAvailableBeaconLocations(CSteamAPIContext.GetSteamParties(), out puNumLocations);
+ }
+
+ public static bool GetAvailableBeaconLocations(SteamPartyBeaconLocation_t[] pLocationList, uint uMaxNumLocations)
+ {
+ InteropHelp.TestIfAvailableClient();
+ return NativeMethods.ISteamParties_GetAvailableBeaconLocations(CSteamAPIContext.GetSteamParties(), pLocationList, uMaxNumLocations);
+ }
+
+ public static SteamAPICall_t CreateBeacon(uint unOpenSlots, ref SteamPartyBeaconLocation_t pBeaconLocation, string pchConnectString, string pchMetadata)
+ {
+ InteropHelp.TestIfAvailableClient();
+ using InteropHelp.UTF8StringHandle pchConnectString2 = new InteropHelp.UTF8StringHandle(pchConnectString);
+ using InteropHelp.UTF8StringHandle pchMetadata2 = new InteropHelp.UTF8StringHandle(pchMetadata);
+ return (SteamAPICall_t)NativeMethods.ISteamParties_CreateBeacon(CSteamAPIContext.GetSteamParties(), unOpenSlots, ref pBeaconLocation, pchConnectString2, pchMetadata2);
+ }
+
+ public static void OnReservationCompleted(PartyBeaconID_t ulBeacon, CSteamID steamIDUser)
+ {
+ InteropHelp.TestIfAvailableClient();
+ NativeMethods.ISteamParties_OnReservationCompleted(CSteamAPIContext.GetSteamParties(), ulBeacon, steamIDUser);
+ }
+
+ public static void CancelReservation(PartyBeaconID_t ulBeacon, CSteamID steamIDUser)
+ {
+ InteropHelp.TestIfAvailableClient();
+ NativeMethods.ISteamParties_CancelReservation(CSteamAPIContext.GetSteamParties(), ulBeacon, steamIDUser);
+ }
+
+ public static SteamAPICall_t ChangeNumOpenSlots(PartyBeaconID_t ulBeacon, uint unOpenSlots)
+ {
+ InteropHelp.TestIfAvailableClient();
+ return (SteamAPICall_t)NativeMethods.ISteamParties_ChangeNumOpenSlots(CSteamAPIContext.GetSteamParties(), ulBeacon, unOpenSlots);
+ }
+
+ public static bool DestroyBeacon(PartyBeaconID_t ulBeacon)
+ {
+ InteropHelp.TestIfAvailableClient();
+ return NativeMethods.ISteamParties_DestroyBeacon(CSteamAPIContext.GetSteamParties(), ulBeacon);
+ }
+
+ public static bool GetBeaconLocationData(SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, out string pchDataStringOut, int cchDataStringOut)
+ {
+ InteropHelp.TestIfAvailableClient();
+ IntPtr intPtr = Marshal.AllocHGlobal(cchDataStringOut);
+ bool flag = NativeMethods.ISteamParties_GetBeaconLocationData(CSteamAPIContext.GetSteamParties(), BeaconLocation, eData, intPtr, cchDataStringOut);
+ pchDataStringOut = (flag ? InteropHelp.PtrToStringUTF8(intPtr) : null);
+ Marshal.FreeHGlobal(intPtr);
+ return flag;
+ }
+}