isteamgameserverclient.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. // This file is provided under The MIT License as part of Steamworks.NET.
  2. // Copyright (c) 2013-2019 Riley Labrecque
  3. // Please see the included LICENSE.txt for additional information.
  4. // This file is automatically generated.
  5. // Changes to this file will be reverted when you update Steamworks.NET
  6. #if UNITY_ANDROID || UNITY_IOS || UNITY_TIZEN || UNITY_TVOS || UNITY_WEBGL || UNITY_WSA || UNITY_PS4 || UNITY_WII || UNITY_XBOXONE || UNITY_SWITCH
  7. #define DISABLESTEAMWORKS
  8. #endif
  9. #if !DISABLESTEAMWORKS
  10. using System.Runtime.InteropServices;
  11. using IntPtr = System.IntPtr;
  12. namespace Steamworks {
  13. public static class SteamGameServerClient {
  14. /// <summary>
  15. /// <para> Creates a communication pipe to the Steam client.</para>
  16. /// <para> NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling</para>
  17. /// </summary>
  18. public static HSteamPipe CreateSteamPipe() {
  19. InteropHelp.TestIfAvailableGameServer();
  20. return (HSteamPipe)NativeMethods.ISteamClient_CreateSteamPipe(CSteamGameServerAPIContext.GetSteamClient());
  21. }
  22. /// <summary>
  23. /// <para> Releases a previously created communications pipe</para>
  24. /// <para> NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling</para>
  25. /// </summary>
  26. public static bool BReleaseSteamPipe(HSteamPipe hSteamPipe) {
  27. InteropHelp.TestIfAvailableGameServer();
  28. return NativeMethods.ISteamClient_BReleaseSteamPipe(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe);
  29. }
  30. /// <summary>
  31. /// <para> connects to an existing global user, failing if none exists</para>
  32. /// <para> used by the game to coordinate with the steamUI</para>
  33. /// <para> NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling</para>
  34. /// </summary>
  35. public static HSteamUser ConnectToGlobalUser(HSteamPipe hSteamPipe) {
  36. InteropHelp.TestIfAvailableGameServer();
  37. return (HSteamUser)NativeMethods.ISteamClient_ConnectToGlobalUser(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe);
  38. }
  39. /// <summary>
  40. /// <para> used by game servers, create a steam user that won't be shared with anyone else</para>
  41. /// <para> NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling</para>
  42. /// </summary>
  43. public static HSteamUser CreateLocalUser(out HSteamPipe phSteamPipe, EAccountType eAccountType) {
  44. InteropHelp.TestIfAvailableGameServer();
  45. return (HSteamUser)NativeMethods.ISteamClient_CreateLocalUser(CSteamGameServerAPIContext.GetSteamClient(), out phSteamPipe, eAccountType);
  46. }
  47. /// <summary>
  48. /// <para> removes an allocated user</para>
  49. /// <para> NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling</para>
  50. /// </summary>
  51. public static void ReleaseUser(HSteamPipe hSteamPipe, HSteamUser hUser) {
  52. InteropHelp.TestIfAvailableGameServer();
  53. NativeMethods.ISteamClient_ReleaseUser(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe, hUser);
  54. }
  55. /// <summary>
  56. /// <para> retrieves the ISteamUser interface associated with the handle</para>
  57. /// </summary>
  58. public static IntPtr GetISteamUser(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  59. InteropHelp.TestIfAvailableGameServer();
  60. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  61. return NativeMethods.ISteamClient_GetISteamUser(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  62. }
  63. }
  64. /// <summary>
  65. /// <para> retrieves the ISteamGameServer interface associated with the handle</para>
  66. /// </summary>
  67. public static IntPtr GetISteamGameServer(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  68. InteropHelp.TestIfAvailableGameServer();
  69. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  70. return NativeMethods.ISteamClient_GetISteamGameServer(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  71. }
  72. }
  73. /// <summary>
  74. /// <para> set the local IP and Port to bind to</para>
  75. /// <para> this must be set before CreateLocalUser()</para>
  76. /// </summary>
  77. public static void SetLocalIPBinding(uint unIP, ushort usPort) {
  78. InteropHelp.TestIfAvailableGameServer();
  79. NativeMethods.ISteamClient_SetLocalIPBinding(CSteamGameServerAPIContext.GetSteamClient(), unIP, usPort);
  80. }
  81. /// <summary>
  82. /// <para> returns the ISteamFriends interface</para>
  83. /// </summary>
  84. public static IntPtr GetISteamFriends(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  85. InteropHelp.TestIfAvailableGameServer();
  86. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  87. return NativeMethods.ISteamClient_GetISteamFriends(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  88. }
  89. }
  90. /// <summary>
  91. /// <para> returns the ISteamUtils interface</para>
  92. /// </summary>
  93. public static IntPtr GetISteamUtils(HSteamPipe hSteamPipe, string pchVersion) {
  94. InteropHelp.TestIfAvailableGameServer();
  95. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  96. return NativeMethods.ISteamClient_GetISteamUtils(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe, pchVersion2);
  97. }
  98. }
  99. /// <summary>
  100. /// <para> returns the ISteamMatchmaking interface</para>
  101. /// </summary>
  102. public static IntPtr GetISteamMatchmaking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  103. InteropHelp.TestIfAvailableGameServer();
  104. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  105. return NativeMethods.ISteamClient_GetISteamMatchmaking(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  106. }
  107. }
  108. /// <summary>
  109. /// <para> returns the ISteamMatchmakingServers interface</para>
  110. /// </summary>
  111. public static IntPtr GetISteamMatchmakingServers(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  112. InteropHelp.TestIfAvailableGameServer();
  113. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  114. return NativeMethods.ISteamClient_GetISteamMatchmakingServers(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  115. }
  116. }
  117. /// <summary>
  118. /// <para> returns the a generic interface</para>
  119. /// </summary>
  120. public static IntPtr GetISteamGenericInterface(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  121. InteropHelp.TestIfAvailableGameServer();
  122. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  123. return NativeMethods.ISteamClient_GetISteamGenericInterface(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  124. }
  125. }
  126. /// <summary>
  127. /// <para> returns the ISteamUserStats interface</para>
  128. /// </summary>
  129. public static IntPtr GetISteamUserStats(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  130. InteropHelp.TestIfAvailableGameServer();
  131. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  132. return NativeMethods.ISteamClient_GetISteamUserStats(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  133. }
  134. }
  135. /// <summary>
  136. /// <para> returns the ISteamGameServerStats interface</para>
  137. /// </summary>
  138. public static IntPtr GetISteamGameServerStats(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  139. InteropHelp.TestIfAvailableGameServer();
  140. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  141. return NativeMethods.ISteamClient_GetISteamGameServerStats(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  142. }
  143. }
  144. /// <summary>
  145. /// <para> returns apps interface</para>
  146. /// </summary>
  147. public static IntPtr GetISteamApps(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  148. InteropHelp.TestIfAvailableGameServer();
  149. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  150. return NativeMethods.ISteamClient_GetISteamApps(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  151. }
  152. }
  153. /// <summary>
  154. /// <para> networking</para>
  155. /// </summary>
  156. public static IntPtr GetISteamNetworking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  157. InteropHelp.TestIfAvailableGameServer();
  158. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  159. return NativeMethods.ISteamClient_GetISteamNetworking(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  160. }
  161. }
  162. /// <summary>
  163. /// <para> remote storage</para>
  164. /// </summary>
  165. public static IntPtr GetISteamRemoteStorage(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  166. InteropHelp.TestIfAvailableGameServer();
  167. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  168. return NativeMethods.ISteamClient_GetISteamRemoteStorage(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  169. }
  170. }
  171. /// <summary>
  172. /// <para> user screenshots</para>
  173. /// </summary>
  174. public static IntPtr GetISteamScreenshots(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  175. InteropHelp.TestIfAvailableGameServer();
  176. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  177. return NativeMethods.ISteamClient_GetISteamScreenshots(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  178. }
  179. }
  180. /// <summary>
  181. /// <para> game search</para>
  182. /// </summary>
  183. public static IntPtr GetISteamGameSearch(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  184. InteropHelp.TestIfAvailableGameServer();
  185. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  186. return NativeMethods.ISteamClient_GetISteamGameSearch(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  187. }
  188. }
  189. /// <summary>
  190. /// <para> returns the number of IPC calls made since the last time this function was called</para>
  191. /// <para> Used for perf debugging so you can understand how many IPC calls your game makes per frame</para>
  192. /// <para> Every IPC call is at minimum a thread context switch if not a process one so you want to rate</para>
  193. /// <para> control how often you do them.</para>
  194. /// </summary>
  195. public static uint GetIPCCallCount() {
  196. InteropHelp.TestIfAvailableGameServer();
  197. return NativeMethods.ISteamClient_GetIPCCallCount(CSteamGameServerAPIContext.GetSteamClient());
  198. }
  199. /// <summary>
  200. /// <para> API warning handling</para>
  201. /// <para> 'int' is the severity; 0 for msg, 1 for warning</para>
  202. /// <para> 'const char *' is the text of the message</para>
  203. /// <para> callbacks will occur directly after the API function is called that generated the warning or message.</para>
  204. /// </summary>
  205. public static void SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction) {
  206. InteropHelp.TestIfAvailableGameServer();
  207. NativeMethods.ISteamClient_SetWarningMessageHook(CSteamGameServerAPIContext.GetSteamClient(), pFunction);
  208. }
  209. /// <summary>
  210. /// <para> Trigger global shutdown for the DLL</para>
  211. /// </summary>
  212. public static bool BShutdownIfAllPipesClosed() {
  213. InteropHelp.TestIfAvailableGameServer();
  214. return NativeMethods.ISteamClient_BShutdownIfAllPipesClosed(CSteamGameServerAPIContext.GetSteamClient());
  215. }
  216. /// <summary>
  217. /// <para> Expose HTTP interface</para>
  218. /// </summary>
  219. public static IntPtr GetISteamHTTP(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  220. InteropHelp.TestIfAvailableGameServer();
  221. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  222. return NativeMethods.ISteamClient_GetISteamHTTP(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  223. }
  224. }
  225. /// <summary>
  226. /// <para> Exposes the ISteamController interface - deprecated in favor of Steam Input</para>
  227. /// </summary>
  228. public static IntPtr GetISteamController(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  229. InteropHelp.TestIfAvailableGameServer();
  230. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  231. return NativeMethods.ISteamClient_GetISteamController(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  232. }
  233. }
  234. /// <summary>
  235. /// <para> Exposes the ISteamUGC interface</para>
  236. /// </summary>
  237. public static IntPtr GetISteamUGC(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  238. InteropHelp.TestIfAvailableGameServer();
  239. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  240. return NativeMethods.ISteamClient_GetISteamUGC(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  241. }
  242. }
  243. /// <summary>
  244. /// <para> returns app list interface, only available on specially registered apps</para>
  245. /// </summary>
  246. public static IntPtr GetISteamAppList(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  247. InteropHelp.TestIfAvailableGameServer();
  248. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  249. return NativeMethods.ISteamClient_GetISteamAppList(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  250. }
  251. }
  252. /// <summary>
  253. /// <para> Music Player</para>
  254. /// </summary>
  255. public static IntPtr GetISteamMusic(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  256. InteropHelp.TestIfAvailableGameServer();
  257. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  258. return NativeMethods.ISteamClient_GetISteamMusic(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  259. }
  260. }
  261. /// <summary>
  262. /// <para> Music Player Remote</para>
  263. /// </summary>
  264. public static IntPtr GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  265. InteropHelp.TestIfAvailableGameServer();
  266. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  267. return NativeMethods.ISteamClient_GetISteamMusicRemote(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  268. }
  269. }
  270. /// <summary>
  271. /// <para> html page display</para>
  272. /// </summary>
  273. public static IntPtr GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  274. InteropHelp.TestIfAvailableGameServer();
  275. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  276. return NativeMethods.ISteamClient_GetISteamHTMLSurface(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  277. }
  278. }
  279. /// <summary>
  280. /// <para> inventory</para>
  281. /// </summary>
  282. public static IntPtr GetISteamInventory(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  283. InteropHelp.TestIfAvailableGameServer();
  284. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  285. return NativeMethods.ISteamClient_GetISteamInventory(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  286. }
  287. }
  288. /// <summary>
  289. /// <para> Video</para>
  290. /// </summary>
  291. public static IntPtr GetISteamVideo(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  292. InteropHelp.TestIfAvailableGameServer();
  293. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  294. return NativeMethods.ISteamClient_GetISteamVideo(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  295. }
  296. }
  297. /// <summary>
  298. /// <para> Parental controls</para>
  299. /// </summary>
  300. public static IntPtr GetISteamParentalSettings(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) {
  301. InteropHelp.TestIfAvailableGameServer();
  302. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  303. return NativeMethods.ISteamClient_GetISteamParentalSettings(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2);
  304. }
  305. }
  306. /// <summary>
  307. /// <para> Exposes the Steam Input interface for controller support</para>
  308. /// </summary>
  309. public static IntPtr GetISteamInput(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  310. InteropHelp.TestIfAvailableGameServer();
  311. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  312. return NativeMethods.ISteamClient_GetISteamInput(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  313. }
  314. }
  315. /// <summary>
  316. /// <para> Steam Parties interface</para>
  317. /// </summary>
  318. public static IntPtr GetISteamParties(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  319. InteropHelp.TestIfAvailableGameServer();
  320. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  321. return NativeMethods.ISteamClient_GetISteamParties(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  322. }
  323. }
  324. /// <summary>
  325. /// <para> Steam Remote Play interface</para>
  326. /// </summary>
  327. public static IntPtr GetISteamRemotePlay(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) {
  328. InteropHelp.TestIfAvailableGameServer();
  329. using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) {
  330. return NativeMethods.ISteamClient_GetISteamRemotePlay(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2);
  331. }
  332. }
  333. }
  334. }
  335. #endif // !DISABLESTEAMWORKS