diff options
Diffstat (limited to 'Assembly_Firstpass/Steamworks/CSteamGameServerAPIContext.cs')
-rw-r--r-- | Assembly_Firstpass/Steamworks/CSteamGameServerAPIContext.cs | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/Assembly_Firstpass/Steamworks/CSteamGameServerAPIContext.cs b/Assembly_Firstpass/Steamworks/CSteamGameServerAPIContext.cs new file mode 100644 index 0000000..7d08aad --- /dev/null +++ b/Assembly_Firstpass/Steamworks/CSteamGameServerAPIContext.cs @@ -0,0 +1,189 @@ +using System; + +namespace Steamworks; + +internal static class CSteamGameServerAPIContext +{ + private static IntPtr m_pSteamClient; + + private static IntPtr m_pSteamGameServer; + + private static IntPtr m_pSteamUtils; + + private static IntPtr m_pSteamNetworking; + + private static IntPtr m_pSteamGameServerStats; + + private static IntPtr m_pSteamHTTP; + + private static IntPtr m_pSteamInventory; + + private static IntPtr m_pSteamUGC; + + private static IntPtr m_pSteamApps; + + private static IntPtr m_pSteamNetworkingUtils; + + private static IntPtr m_pSteamNetworkingSockets; + + private static IntPtr m_pSteamNetworkingMessages; + + internal static void Clear() + { + m_pSteamClient = IntPtr.Zero; + m_pSteamGameServer = IntPtr.Zero; + m_pSteamUtils = IntPtr.Zero; + m_pSteamNetworking = IntPtr.Zero; + m_pSteamGameServerStats = IntPtr.Zero; + m_pSteamHTTP = IntPtr.Zero; + m_pSteamInventory = IntPtr.Zero; + m_pSteamUGC = IntPtr.Zero; + m_pSteamApps = IntPtr.Zero; + m_pSteamNetworkingUtils = IntPtr.Zero; + m_pSteamNetworkingSockets = IntPtr.Zero; + m_pSteamNetworkingMessages = IntPtr.Zero; + } + + internal static bool Init() + { + HSteamUser hSteamUser = GameServer.GetHSteamUser(); + HSteamPipe hSteamPipe = GameServer.GetHSteamPipe(); + if (hSteamPipe == (HSteamPipe)0) + { + return false; + } + using (InteropHelp.UTF8StringHandle ver = new InteropHelp.UTF8StringHandle("SteamClient020")) + { + m_pSteamClient = NativeMethods.SteamInternal_CreateInterface(ver); + } + if (m_pSteamClient == IntPtr.Zero) + { + return false; + } + m_pSteamGameServer = SteamGameServerClient.GetISteamGameServer(hSteamUser, hSteamPipe, "SteamGameServer013"); + if (m_pSteamGameServer == IntPtr.Zero) + { + return false; + } + m_pSteamUtils = SteamGameServerClient.GetISteamUtils(hSteamPipe, "SteamUtils010"); + if (m_pSteamUtils == IntPtr.Zero) + { + return false; + } + m_pSteamNetworking = SteamGameServerClient.GetISteamNetworking(hSteamUser, hSteamPipe, "SteamNetworking006"); + if (m_pSteamNetworking == IntPtr.Zero) + { + return false; + } + m_pSteamGameServerStats = SteamGameServerClient.GetISteamGameServerStats(hSteamUser, hSteamPipe, "SteamGameServerStats001"); + if (m_pSteamGameServerStats == IntPtr.Zero) + { + return false; + } + m_pSteamHTTP = SteamGameServerClient.GetISteamHTTP(hSteamUser, hSteamPipe, "STEAMHTTP_INTERFACE_VERSION003"); + if (m_pSteamHTTP == IntPtr.Zero) + { + return false; + } + m_pSteamInventory = SteamGameServerClient.GetISteamInventory(hSteamUser, hSteamPipe, "STEAMINVENTORY_INTERFACE_V003"); + if (m_pSteamInventory == IntPtr.Zero) + { + return false; + } + m_pSteamUGC = SteamGameServerClient.GetISteamUGC(hSteamUser, hSteamPipe, "STEAMUGC_INTERFACE_VERSION015"); + if (m_pSteamUGC == IntPtr.Zero) + { + return false; + } + m_pSteamApps = SteamGameServerClient.GetISteamApps(hSteamUser, hSteamPipe, "STEAMAPPS_INTERFACE_VERSION008"); + if (m_pSteamApps == IntPtr.Zero) + { + return false; + } + using (InteropHelp.UTF8StringHandle pszVersion = new InteropHelp.UTF8StringHandle("SteamNetworkingUtils003")) + { + m_pSteamNetworkingUtils = ((NativeMethods.SteamInternal_FindOrCreateUserInterface(hSteamUser, pszVersion) != IntPtr.Zero) ? NativeMethods.SteamInternal_FindOrCreateUserInterface(hSteamUser, pszVersion) : NativeMethods.SteamInternal_FindOrCreateGameServerInterface(hSteamUser, pszVersion)); + } + if (m_pSteamNetworkingUtils == IntPtr.Zero) + { + return false; + } + using (InteropHelp.UTF8StringHandle pszVersion2 = new InteropHelp.UTF8StringHandle("SteamNetworkingSockets009")) + { + m_pSteamNetworkingSockets = NativeMethods.SteamInternal_FindOrCreateGameServerInterface(hSteamUser, pszVersion2); + } + if (m_pSteamNetworkingSockets == IntPtr.Zero) + { + return false; + } + using (InteropHelp.UTF8StringHandle pszVersion3 = new InteropHelp.UTF8StringHandle("SteamNetworkingMessages002")) + { + m_pSteamNetworkingMessages = NativeMethods.SteamInternal_FindOrCreateGameServerInterface(hSteamUser, pszVersion3); + } + if (m_pSteamNetworkingMessages == IntPtr.Zero) + { + return false; + } + return true; + } + + internal static IntPtr GetSteamClient() + { + return m_pSteamClient; + } + + internal static IntPtr GetSteamGameServer() + { + return m_pSteamGameServer; + } + + internal static IntPtr GetSteamUtils() + { + return m_pSteamUtils; + } + + internal static IntPtr GetSteamNetworking() + { + return m_pSteamNetworking; + } + + internal static IntPtr GetSteamGameServerStats() + { + return m_pSteamGameServerStats; + } + + internal static IntPtr GetSteamHTTP() + { + return m_pSteamHTTP; + } + + internal static IntPtr GetSteamInventory() + { + return m_pSteamInventory; + } + + internal static IntPtr GetSteamUGC() + { + return m_pSteamUGC; + } + + internal static IntPtr GetSteamApps() + { + return m_pSteamApps; + } + + internal static IntPtr GetSteamNetworkingUtils() + { + return m_pSteamNetworkingUtils; + } + + internal static IntPtr GetSteamNetworkingSockets() + { + return m_pSteamNetworkingSockets; + } + + internal static IntPtr GetSteamNetworkingMessages() + { + return m_pSteamNetworkingMessages; + } +} |