diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fb22870 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,100 @@ +# Remove the line below if you want to inherit .editorconfig settings from higher directories +root = true + +# C# files +[*.cs] +indent_style = tab +indent_size = tab +tab_size = 4 + +# New line preferences +end_of_line = crlf +insert_final_newline = true + + +#### C# Coding Conventions #### + +# Expression-bodied members +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_prefer_not_pattern = true:suggestion +csharp_style_prefer_pattern_matching = true:silent +csharp_style_prefer_switch_expression = true:suggestion + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:suggestion + +# Code-block preferences +csharp_prefer_braces = true:silent + +# Expression-level preferences +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent + +# 'using' directive preferences +csharp_using_directive_placement = outside_namespace:silent + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = true +csharp_indent_labels = no_change +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = true +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = true +csharp_space_between_parentheses = control_flow_statements +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..0da82a8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: garrynewman + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Set x to y +2. Run for x minutes +3. Call x +4. See error + +**Calling Code** +``` +// The code you're using to call into Steamworks +Steamworks.DoBug(); +``` + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] +- Unity: [e.g Unity 2019.3] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..bbcbbe7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/something-else.md b/.github/ISSUE_TEMPLATE/something-else.md new file mode 100644 index 0000000..bfc3ed4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/something-else.md @@ -0,0 +1,10 @@ +--- +name: Something Else +about: Describe this issue template's purpose here. +title: '' +labels: '' +assignees: '' + +--- + + diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml new file mode 100644 index 0000000..11ee059 --- /dev/null +++ b/.github/workflows/dotnetcore.yml @@ -0,0 +1,35 @@ +name: Build All + +on: [push] + +jobs: + build: + + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup dotnet 6.0.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + include-prerelease: true + + - name: Restore Win64 + run: dotnet restore Facepunch.Steamworks\Facepunch.Steamworks.Win64.csproj + - name: Restore Win32 + run: dotnet restore Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj + - name: Restore Posix + run: dotnet restore Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj + + - name: Build Win64 + run: dotnet build Facepunch.Steamworks\Facepunch.Steamworks.Win64.csproj + - name: Build Win32 + run: dotnet build Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj + - name: Build Posix + run: dotnet build Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj + + - uses: actions/upload-artifact@v1 + with: + name: Compiled Files + path: Facepunch.Steamworks/bin diff --git a/CompileFix.bat b/CompileFix.bat index 3580950..ac4bb3c 100644 --- a/CompileFix.bat +++ b/CompileFix.bat @@ -1,5 +1,5 @@ -cd Facepunch.Steamworks -dotnet restore .\Facepunch.Steamworks.Posix32.csproj -dotnet restore .\Facepunch.Steamworks.Posix64.csproj -dotnet restore .\Facepunch.Steamworks.Win32.csproj -dotnet restore .\Facepunch.Steamworks.Win64.csproj \ No newline at end of file +dotnet restore .\Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj +dotnet restore .\Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj +dotnet restore .\Facepunch.Steamworks\Facepunch.Steamworks.Win64.csproj +dotnet restore .\Facepunch.Steamworks.Test\Facepunch.Steamworks.TestWin32.csproj +dotnet restore .\Facepunch.Steamworks.Test\Facepunch.Steamworks.TestWin64.csproj \ No newline at end of file diff --git a/Facepunch.Steamworks.Test/AppTest.cs b/Facepunch.Steamworks.Test/AppTest.cs index 5ef8213..693abe2 100644 --- a/Facepunch.Steamworks.Test/AppTest.cs +++ b/Facepunch.Steamworks.Test/AppTest.cs @@ -15,7 +15,14 @@ namespace Steamworks [AssemblyInitialize] public static void AssemblyInit( TestContext context ) { - Steamworks.SteamClient.OnCallbackException = ( e ) => + Steamworks.Dispatch.OnDebugCallback = ( type, str, server ) => + { + Console.WriteLine( $"[Callback {type} {(server ? "server" : "client")}]" ); + Console.WriteLine( str ); + Console.WriteLine( $"" ); + }; + + Steamworks.Dispatch.OnException = ( e ) => { Console.Error.WriteLine( e.Message ); Console.Error.WriteLine( e.StackTrace ); @@ -39,15 +46,15 @@ namespace Steamworks Steamworks.SteamServer.Init( 252490, serverInit ); + // + // Needs to happen before LogOnAnonymous + // + SteamNetworkingSockets.RequestFakeIP(); + SteamServer.LogOnAnonymous(); } - static void OnNewUrlLaunchParameters() - { - // Wow! - } - [TestMethod] public void GameLangauge() { @@ -95,7 +102,7 @@ namespace Steamworks [TestMethod] public async Task GetFileDetails() { - var fileinfo = await SteamApps.GetFileDetailsAsync( "hl2.exe" ); + var fileinfo = await SteamApps.GetFileDetailsAsync( "RustClient.exe" ); Console.WriteLine( $"fileinfo.SizeInBytes: {fileinfo?.SizeInBytes}" ); Console.WriteLine( $"fileinfo.Sha1: {fileinfo?.Sha1}" ); diff --git a/Facepunch.Steamworks.Test/ClanTest.cs b/Facepunch.Steamworks.Test/ClanTest.cs new file mode 100644 index 0000000..eefb64e --- /dev/null +++ b/Facepunch.Steamworks.Test/ClanTest.cs @@ -0,0 +1,59 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Steamworks +{ + [DeploymentItem("steam_api64.dll")] + [DeploymentItem("steam_api.dll")] + [TestClass] + public class ClanTest + { + [TestMethod] + public void GetName() + { + var clan = new Clan(103582791433666425); + + Assert.AreEqual("Steamworks Development", clan.Name); + } + + [TestMethod] + public void GetClanTag() + { + var clan = new Clan(103582791433666425); + + Assert.AreEqual("SteamworksDev", clan.Tag); + } + + [TestMethod] + public async Task GetOwner() + { + var clan = new Clan(103582791433666425); + await clan.RequestOfficerList(); + + Assert.AreNotEqual(new SteamId(), clan.Owner.Id); + } + + [TestMethod] + public void GetOfficers() + { + var clan = new Clan(103582791433666425); + foreach (var officer in clan.GetOfficers()) + { + Console.WriteLine($"{officer.Name} : {officer.Id}"); + } + } + + [TestMethod] + public async Task RequestOfficerList() + { + var clan = new Clan(103582791433666425); + bool res = await clan.RequestOfficerList(); + + Assert.AreEqual(true, res); + } + } +} diff --git a/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin32.csproj b/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin32.csproj index 03f2d4b..b5d97a7 100644 --- a/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin32.csproj +++ b/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin32.csproj @@ -1,147 +1,55 @@ - - - - - Debug - AnyCPU - {3F6183AD-D966-44F2-A6EB-42E61E591B49} - Library - Properties - Facepunch.Steamworks.TestWin32 - Facepunch.Steamworks.TestWin32 - v4.6 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - - + - true - full - false - bin\Debug\ TRACE;DEBUG;TEST_WIN32 - prompt - 4 x86 true - pdbonly - true - bin\Release\ TRACE;TEST_WIN32 - prompt - 4 x64 true - true bin\x64\Debug\ - DEBUG;TRACE - full - x64 - prompt MinimumRecommendedRules.ruleset true bin\x64\Release\ - TRACE - true - pdbonly - x64 - prompt MinimumRecommendedRules.ruleset true - true bin\x86\Debug\ - DEBUG;TRACE - full x64 - prompt MinimumRecommendedRules.ruleset true bin\x86\Release\ - TRACE - true - pdbonly x64 - prompt MinimumRecommendedRules.ruleset true + + net6.0 + false + - - ..\packages\MSTest.TestFramework.2.0.0-beta4\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll - - - ..\packages\MSTest.TestFramework.2.0.0-beta4\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - - - ..\packages\Newtonsoft.Json.9.0.2-beta1\lib\net45\Newtonsoft.Json.dll - True - - + - - - - - - - - - - - - - - - - - - + + Always + - + + + + - + - - - {2d6247f6-8ab2-405f-a00e-3a364b808a55} - Facepunch.Steamworks.Win32 - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - \ No newline at end of file diff --git a/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin64.csproj b/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin64.csproj index 9f40a26..2a18571 100644 --- a/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin64.csproj +++ b/Facepunch.Steamworks.Test/Facepunch.Steamworks.TestWin64.csproj @@ -1,147 +1,54 @@ - - - - - Debug - AnyCPU - {165081E3-BD96-404B-B83E-A635F1AF7CDE} - Library - Properties - Facepunch.Steamworks.TestWin64 - Facepunch.Steamworks.TestWin64 - v4.6 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - - + - true - full - false - bin\Debug\ TRACE;DEBUG;TEST_WIN64 - prompt - 4 x64 true - pdbonly - true - bin\Release\ - TRACE - prompt - 4 x64 true - true bin\x64\Debug\ - DEBUG;TRACE - full - x64 - prompt MinimumRecommendedRules.ruleset true bin\x64\Release\ - TRACE - true - pdbonly - x64 - prompt MinimumRecommendedRules.ruleset true - true bin\x86\Debug\ - DEBUG;TRACE - full x64 - prompt MinimumRecommendedRules.ruleset true bin\x86\Release\ - TRACE - true - pdbonly x64 - prompt MinimumRecommendedRules.ruleset true + + net6.0 + false + - - ..\packages\MSTest.TestFramework.2.0.0-beta4\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll - - - ..\packages\MSTest.TestFramework.2.0.0-beta4\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - - - ..\packages\Newtonsoft.Json.9.0.2-beta1\lib\net45\Newtonsoft.Json.dll - True - - + - - - - - - - - - - - - - - - - - - + + Always + - + + + + - + - - - {8c73da93-73ad-4445-9a2c-15d4a44337d3} - Facepunch.Steamworks.Win64 - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - \ No newline at end of file diff --git a/Facepunch.Steamworks.Test/FriendsTest.cs b/Facepunch.Steamworks.Test/FriendsTest.cs index f8183f9..946e757 100644 --- a/Facepunch.Steamworks.Test/FriendsTest.cs +++ b/Facepunch.Steamworks.Test/FriendsTest.cs @@ -7,6 +7,7 @@ using Steamworks.Data; namespace Steamworks { [DeploymentItem( "steam_api64.dll" )] + [DeploymentItem( "steam_api.dll" )] [TestClass] public class FriendsTest { @@ -112,43 +113,20 @@ namespace Steamworks } } - /* - [TestMethod] - public void FriendListWithoutRefresh() - { - using ( var client = new Facepunch.Steamworks.Client( 252490 ) ) - { - Assert.IsTrue( client.IsValid ); + [TestMethod] + public async Task OpenWebOverlay() + { + if ( SteamUtils.IsOverlayEnabled ) + Console.WriteLine( "Overlay Is Enabled" ); + else + Console.WriteLine( "Overlay Is Not Enabled" ); - foreach ( var friend in client.Friends.All ) - { - Console.WriteLine( "{0}: {1} (Friend:{2}) (Blocked:{3})", friend.Id, friend.Name, friend.IsFriend, friend.IsBlocked ); - } - } - } + SteamFriends.OpenWebOverlay( "https://www.google.com/" ); + + await Task.Delay( 2000 ); + } - - [TestMethod] - public void CachedAvatar() - { - using (var client = new Facepunch.Steamworks.Client(252490)) - { - Assert.IsTrue(client.IsValid); - - var friend = client.Friends.All.First(); - - var image = client.Friends.GetCachedAvatar( Steamworks.Friends.AvatarSize.Medium, friend.Id ); - - if (image != null) - { - Assert.AreEqual(image.Width, 64); - Assert.AreEqual(image.Height, 64); - Assert.AreEqual(image.Data.Length, image.Width * image.Height * 4); - } - } - } - */ public static void DrawImage( Image img ) { var grad = " -:+#"; diff --git a/Facepunch.Steamworks.Test/GameServerStatsTest.cs b/Facepunch.Steamworks.Test/GameServerStatsTest.cs new file mode 100644 index 0000000..b1f2cbb --- /dev/null +++ b/Facepunch.Steamworks.Test/GameServerStatsTest.cs @@ -0,0 +1,32 @@ +using System; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Steamworks.Data; + +namespace Steamworks +{ + [TestClass] + [DeploymentItem( "steam_api64.dll" )] + [DeploymentItem( "steam_api.dll" )] + public class GameServerStatsTest + { + static SteamId Garry = 76561197960279927; + + [TestMethod] + public async Task GetAchievement() + { + var result = await SteamServerStats.RequestUserStatsAsync( Garry ); + Assert.AreEqual( result, Result.OK ); + + var value = SteamServerStats.GetAchievement( Garry, "COLLECT_100_WOOD" ); + Assert.IsTrue( value ); + + value = SteamServerStats.GetAchievement( Garry, "ACHIVEMENT_THAT_DOESNT_EXIST" ); + Assert.IsFalse( value ); + } + } + +} diff --git a/Facepunch.Steamworks.Test/GameServerTest.cs b/Facepunch.Steamworks.Test/GameServerTest.cs index 6ed4150..090ba6b 100644 --- a/Facepunch.Steamworks.Test/GameServerTest.cs +++ b/Facepunch.Steamworks.Test/GameServerTest.cs @@ -5,7 +5,8 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Steamworks { [DeploymentItem( "steam_api64.dll" )] - [TestClass] + [DeploymentItem( "steam_api.dll" )] + [TestClass] public partial class GameServerTest { [TestMethod] diff --git a/Facepunch.Steamworks.Test/InputTest.cs b/Facepunch.Steamworks.Test/InputTest.cs index 0c425db..b2eb60a 100644 --- a/Facepunch.Steamworks.Test/InputTest.cs +++ b/Facepunch.Steamworks.Test/InputTest.cs @@ -11,7 +11,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - [DeploymentItem( "controller_config/game_actions_252490.vdf" )] + [DeploymentItem( "steam_api.dll" )] + [DeploymentItem( "controller_config/game_actions_252490.vdf" )] public class InputTest { [TestMethod] diff --git a/Facepunch.Steamworks.Test/InventoryTest.cs b/Facepunch.Steamworks.Test/InventoryTest.cs index 27f04fe..dee610d 100644 --- a/Facepunch.Steamworks.Test/InventoryTest.cs +++ b/Facepunch.Steamworks.Test/InventoryTest.cs @@ -10,7 +10,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class InventoryTest + [DeploymentItem( "steam_api.dll" )] + public class InventoryTest { [TestMethod] public async Task LoadItemDefinitionsAsync() @@ -194,8 +195,8 @@ namespace Steamworks { await SteamInventory.WaitForDefinitions(); - byte[] data = null; - int itemCount = 0; + byte[] data; + int itemCount; // Serialize { diff --git a/Facepunch.Steamworks.Test/NetworkingSockets.cs b/Facepunch.Steamworks.Test/NetworkingSockets.cs index 9fca88b..5e77c6f 100644 --- a/Facepunch.Steamworks.Test/NetworkingSockets.cs +++ b/Facepunch.Steamworks.Test/NetworkingSockets.cs @@ -9,14 +9,22 @@ using Steamworks.Data; namespace Steamworks { - [TestClass] + [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class NetworkingSocketsTest + [DeploymentItem( "steam_api.dll" )] + public partial class NetworkingSocketsTest { + void DebugOutput( NetDebugOutput type, string text ) + { + Console.WriteLine( $"[NET:{type}]\t\t{text}" ); + } [TestMethod] public async Task CreateRelayServer() { + SteamNetworkingUtils.DebugLevel = NetDebugOutput.Everything; + SteamNetworkingUtils.OnDebugOutput += DebugOutput; + var si = SteamNetworkingSockets.CreateRelaySocket(); Console.WriteLine( $"Created Socket: {si}" ); @@ -30,6 +38,9 @@ namespace Steamworks [TestMethod] public async Task CreateNormalServer() { + SteamNetworkingUtils.DebugLevel = NetDebugOutput.Everything; + SteamNetworkingUtils.OnDebugOutput += DebugOutput; + var si = SteamNetworkingSockets.CreateNormalSocket( Data.NetAddress.AnyIp( 21893 ) ); Console.WriteLine( $"Created Socket: {si}" ); @@ -40,15 +51,41 @@ namespace Steamworks si.Close(); } + [TestMethod] + public async Task CreateRelayServerFakeIP() + { + SteamNetworkingUtils.DebugLevel = NetDebugOutput.Everything; + SteamNetworkingUtils.OnDebugOutput += DebugOutput; + + var si = SteamNetworkingSockets.CreateRelaySocketFakeIP(); + + Console.WriteLine( $"Created Socket: {si}" ); + + // Give it a second for something to happen + await Task.Delay( 1000 ); + + si.Close(); + } + [TestMethod] public async Task RelayEndtoEnd() { - var socket = SteamNetworkingSockets.CreateRelaySocket( 7788 ); + SteamNetworkingUtils.InitRelayNetworkAccess(); + SteamNetworkingUtils.DebugLevel = NetDebugOutput.Warning; + SteamNetworkingUtils.OnDebugOutput += DebugOutput; + + // For some reason giving steam a couple of seconds here + // seems to prevent it returning null connections from ConnectNormal + await Task.Delay( 2000 ); + + Console.WriteLine( $"----- Creating Socket Relay Socket.." ); + var socket = SteamNetworkingSockets.CreateRelaySocket( 6 ); var server = socket.RunAsync(); await Task.Delay( 1000 ); - var connection = SteamNetworkingSockets.ConnectRelay( SteamClient.SteamId, 7788 ); + Console.WriteLine( $"----- Connecting To Socket via SteamId ({SteamClient.SteamId})" ); + var connection = SteamNetworkingSockets.ConnectRelay( SteamClient.SteamId, 6 ); var client = connection.RunAsync(); await Task.WhenAll( server, client ); @@ -57,229 +94,68 @@ namespace Steamworks [TestMethod] public async Task NormalEndtoEnd() { + SteamNetworkingUtils.DebugLevel = NetDebugOutput.Everything; + SteamNetworkingUtils.OnDebugOutput += DebugOutput; + + // For some reason giving steam a couple of seconds here + // seems to prevent it returning null connections from ConnectNormal + await Task.Delay( 2000 ); + + // + // Start the server + // + Console.WriteLine( "CreateNormalSocket" ); var socket = SteamNetworkingSockets.CreateNormalSocket( NetAddress.AnyIp( 12445 ) ); var server = socket.RunAsync(); - await Task.Delay( 1000 ); - - var connection = SteamNetworkingSockets.ConnectNormal( NetAddress.From( System.Net.IPAddress.Parse( "127.0.0.1" ), 12445 ) ); + // + // Start the client + // + Console.WriteLine( "ConnectNormal" ); + var connection = SteamNetworkingSockets.ConnectNormal( NetAddress.From( "127.0.0.1", 12445 ) ); var client = connection.RunAsync(); await Task.WhenAll( server, client ); } - private class TestConnectionInterface : ConnectionInterface + [TestMethod] + public async Task RelayEndtoEndFakeIP() { - public override void OnConnectionChanged( ConnectionInfo data ) - { - Console.WriteLine( $"[Connection][{Connection}] [{data.State}]" ); + SteamNetworkingUtils.InitRelayNetworkAccess(); + SteamNetworkingUtils.DebugLevel = NetDebugOutput.Warning; + SteamNetworkingUtils.OnDebugOutput += DebugOutput; - base.OnConnectionChanged( data ); - } + // For some reason giving steam a couple of seconds here + // seems to prevent it returning null connections from ConnectNormal + await Task.Delay( 2000 ); - public override void OnConnecting( ConnectionInfo data ) - { - Console.WriteLine( $" - OnConnecting" ); - base.OnConnecting( data ); - } + Console.WriteLine( $"----- Creating Socket Relay Socket.." ); + var socket = SteamNetworkingSockets.CreateRelaySocketFakeIP(); + var server = socket.RunAsync(); - /// - /// Client is connected. They move from connecting to Connections - /// - public override void OnConnected( ConnectionInfo data ) - { - Console.WriteLine( $" - OnConnected" ); - base.OnConnected( data ); - } + await Task.Delay( 1000 ); - /// - /// The connection has been closed remotely or disconnected locally. Check data.State for details. - /// - public override void OnDisconnected( ConnectionInfo data ) - { - Console.WriteLine( $" - OnDisconnected" ); - base.OnDisconnected( data ); - } + Console.WriteLine( $"----- Retrieving Fake IP.." ); + SteamNetworkingSockets.GetFakeIP( 0, out NetAddress address ); - internal async Task RunAsync() - { - Console.WriteLine( "[Connection] RunAsync" ); + Console.WriteLine( $"----- Connecting To Socket via Fake IP ({address})" ); + var connection = SteamNetworkingSockets.ConnectNormal( address ); + var client = connection.RunAsync(); - var sw = System.Diagnostics.Stopwatch.StartNew(); - - while ( Connecting ) - { - await Task.Delay( 10 ); - - if ( sw.Elapsed.TotalSeconds > 30 ) - break; - } - - if ( !Connected ) - { - Console.WriteLine( "[Connection] Couldn't connect!" ); - Console.WriteLine( Connection.DetailedStatus() ); - return; - } - - Console.WriteLine( "[Connection] Hey We're Connected!" ); - - - sw = System.Diagnostics.Stopwatch.StartNew(); - while ( Connected ) - { - Receive(); - await Task.Delay( 100 ); - - if ( sw.Elapsed.TotalSeconds > 10 ) - { - Assert.Fail( "Client Took Too Long" ); - break; - } - } - } - - public override unsafe void OnMessage( IntPtr data, int size, long messageNum, long recvTime, int channel ) - { - // We're only sending strings, so it's fine to read this like this - var str = UTF8Encoding.UTF8.GetString( (byte*) data, size ); - - Console.WriteLine( $"[Connection][{messageNum}][{recvTime}][{channel}] \"{str}\"" ); - - if ( str.Contains( "Hello" ) ) - { - Connection.SendMessage( "Hello, How are you!?" ); - - Connection.SendMessage( "How do you like 20 messages in a row?" ); - - for ( int i=0; i<20; i++ ) - { - Connection.SendMessage( $"BLAMMO!" ); - } - } - - if ( str.Contains( "status" )) - { - Console.WriteLine( Connection.DetailedStatus() ); - } - - if ( str.Contains( "how about yourself" ) ) - { - Connection.SendMessage( "I'm great, but I have to go now, bye." ); - } - - if ( str.Contains( "hater" ) ) - { - Close(); - } - - } + await Task.WhenAll( server, client ); } - - private class TestSocketInterface : SocketInterface + [TestMethod] + public void NetAddressTest() { - public bool HasFinished = false; - - public override void OnConnectionChanged( Connection connection, ConnectionInfo data ) { - Console.WriteLine( $"[Socket{Socket}][{connection}] [{data.State}]" ); - - base.OnConnectionChanged( connection, data ); + var n = NetAddress.From( "127.0.0.1", 12445 ); + Assert.AreEqual( n.ToString(), "127.0.0.1:12445" ); } - public override void OnConnecting( Connection connection, ConnectionInfo data ) { - Console.WriteLine( $" - OnConnecting" ); - base.OnConnecting( connection, data ); - } - - /// - /// Client is connected. They move from connecting to Connections - /// - public override void OnConnected( Connection connection, ConnectionInfo data ) - { - Console.WriteLine( $" - OnConnected" ); - base.OnConnected( connection, data ); - } - - /// - /// The connection has been closed remotely or disconnected locally. Check data.State for details. - /// - public override void OnDisconnected( Connection connection, ConnectionInfo data ) - { - Console.WriteLine( $" - OnDisconnected" ); - base.OnDisconnected( connection, data ); - } - - internal async Task RunAsync() - { - var sw = System.Diagnostics.Stopwatch.StartNew(); - - while ( Connected.Count == 0 ) - { - await Task.Delay( 10 ); - - if ( sw.Elapsed.TotalSeconds > 2 ) - { - Assert.Fail( "Client Took Too Long To Connect" ); - break; - } - } - - await Task.Delay( 1000 ); - - var singleClient = Connected.First(); - - singleClient.SendMessage( "Hey?" ); - await Task.Delay( 100 ); - singleClient.SendMessage( "Anyone?" ); - await Task.Delay( 100 ); - singleClient.SendMessage( "What's this?" ); - await Task.Delay( 100 ); - singleClient.SendMessage( "What's your status?" ); - await Task.Delay( 10 ); - singleClient.SendMessage( "Greetings!!??" ); - await Task.Delay( 100 ); - singleClient.SendMessage( "Hello Client!?" ); - - sw = System.Diagnostics.Stopwatch.StartNew(); - - while ( Connected.Contains( singleClient ) ) - { - Receive(); - await Task.Delay( 100 ); - - if ( sw.Elapsed.TotalSeconds > 10 ) - { - Assert.Fail( "Socket Took Too Long" ); - break; - } - } - - await Task.Delay( 1000 ); - - Close(); - } - - public override unsafe void OnMessage( Connection connection, NetIdentity identity, IntPtr data, int size, long messageNum, long recvTime, int channel ) - { - // We're only sending strings, so it's fine to read this like this - var str = UTF8Encoding.UTF8.GetString( (byte*)data, size ); - - Console.WriteLine( $"[SOCKET][{connection}[{identity}][{messageNum}][{recvTime}][{channel}] \"{str}\"" ); - - if ( str.Contains( "Hello, How are you" ) ) - { - connection.SendMessage( "I'm great thanks, how about yourself?" ); - } - - if ( str.Contains( "bye" ) ) - { - connection.SendMessage( "See you later, hater." ); - connection.Flush(); - connection.Close( true, 10, "Said Bye" ); - } + var n = NetAddress.AnyIp( 5543 ); + Assert.AreEqual( n.ToString(), "[::]:5543" ); } } } diff --git a/Facepunch.Steamworks.Test/NetworkingSocketsTest.TestConnectionInterface.cs b/Facepunch.Steamworks.Test/NetworkingSocketsTest.TestConnectionInterface.cs new file mode 100644 index 0000000..03661cd --- /dev/null +++ b/Facepunch.Steamworks.Test/NetworkingSocketsTest.TestConnectionInterface.cs @@ -0,0 +1,130 @@ +using System; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Steamworks.Data; + +namespace Steamworks +{ + public partial class NetworkingSocketsTest + { + private class TestConnectionInterface : ConnectionManager + { + public override void OnConnectionChanged( ConnectionInfo data ) + { + Console.WriteLine( $"[Connection][{Connection}] [{data.State}]" ); + + base.OnConnectionChanged( data ); + } + + public override void OnConnecting( ConnectionInfo data ) + { + Console.WriteLine( $" - OnConnecting" ); + base.OnConnecting( data ); + } + + /// + /// Client is connected. They move from connecting to Connections + /// + public override void OnConnected( ConnectionInfo data ) + { + Console.WriteLine( $" - OnConnected" ); + base.OnConnected( data ); + } + + /// + /// The connection has been closed remotely or disconnected locally. Check data.State for details. + /// + public override void OnDisconnected( ConnectionInfo data ) + { + Console.WriteLine( $" - OnDisconnected" ); + base.OnDisconnected( data ); + } + + internal async Task RunAsync() + { + Console.WriteLine( "[Connection] RunAsync" ); + + var sw = System.Diagnostics.Stopwatch.StartNew(); + + Console.WriteLine( "[Connection] Connecting" ); + while ( Connecting ) + { + await Task.Delay( 10 ); + + if ( sw.Elapsed.TotalSeconds > 10 ) + break; + } + + if ( !Connected ) + { + Console.WriteLine( "[Connection] Couldn't connect!" ); + Console.WriteLine( Connection.DetailedStatus() ); + return; + } + + Console.WriteLine( "[Connection] Hey We're Connected!" ); + + + sw = System.Diagnostics.Stopwatch.StartNew(); + while ( Connected ) + { + Receive(); + await Task.Delay( 100 ); + + if ( sw.Elapsed.TotalSeconds > 30 ) + { + Assert.Fail( "Client Took Too Long" ); + break; + } + } + } + + public override unsafe void OnMessage( IntPtr data, int size, long messageNum, long recvTime, int channel ) + { + // We're only sending strings, so it's fine to read this like this + var str = UTF8Encoding.UTF8.GetString( (byte*) data, size ); + + Console.WriteLine( $"[Connection][{messageNum}][{recvTime}][{channel}] \"{str}\"" ); + + if ( str.Contains( "Hello" ) ) + { + Console.WriteLine( $"[Connection][{messageNum}][{recvTime}][{channel}] Sending: Hello, How are you!?" ); + Connection.SendMessage( "Hello, How are you!?" ); + + Console.WriteLine( $"[Connection][{messageNum}][{recvTime}][{channel}] Sending: How do you like 20 messages in a row?" ); + Connection.SendMessage( "How do you like 20 messages in a row?" ); + + var connections = new[] { Connection }; + var results = new Result[1]; + for ( int i=0; i<20; i++ ) + { + Console.WriteLine( $"[Connection][{messageNum}][{recvTime}][{channel}] Sending: BLAMMO {i}!" ); + SendMessages( connections, connections.Length, $"BLAMMO {i}!", results: results ); + Assert.AreEqual( Result.OK, results[0] ); + } + + Connection.Flush(); + } + + if ( str.Contains( "status" )) + { + Console.WriteLine( Connection.DetailedStatus() ); + } + + if ( str.Contains( "how about yourself" ) ) + { + Connection.SendMessage( "I'm great, but I have to go now, bye." ); + } + + if ( str.Contains( "hater" ) ) + { + Close(); + } + + } + } + } + +} \ No newline at end of file diff --git a/Facepunch.Steamworks.Test/NetworkingSocketsTest.TestSocketInterface.cs b/Facepunch.Steamworks.Test/NetworkingSocketsTest.TestSocketInterface.cs new file mode 100644 index 0000000..ed5b9bd --- /dev/null +++ b/Facepunch.Steamworks.Test/NetworkingSocketsTest.TestSocketInterface.cs @@ -0,0 +1,137 @@ +using System; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Steamworks.Data; + +namespace Steamworks +{ + public partial class NetworkingSocketsTest + { + private class TestSocketInterface : SocketManager + { + public bool HasFinished = false; + + public override void OnConnectionChanged( Connection connection, ConnectionInfo data ) + { + Console.WriteLine( $"[Socket{Socket}][connection:{connection}][data.Identity:{data.Identity}] [data.State:{data.State}]" ); + + base.OnConnectionChanged( connection, data ); + } + + public override void OnConnecting( Connection connection, ConnectionInfo data ) + { + Console.WriteLine( $" - OnConnecting" ); + base.OnConnecting( connection, data ); + } + + /// + /// Client is connected. They move from connecting to Connections + /// + public override void OnConnected( Connection connection, ConnectionInfo data ) + { + Console.WriteLine( $"" ); + Console.WriteLine( $"Socket -> OnConnected:" ); + Console.WriteLine( $" data.Address: {data.Address}" ); + Console.WriteLine( $" data.Identity: {data.Identity}" ); + Console.WriteLine( $" data.Identity.Steamid: {data.Identity.SteamId}" ); + Console.WriteLine( $" data.Identity.IsIpAddress: {data.Identity.IsIpAddress}" ); + Console.WriteLine( $" data.Identity.IsLocalHost: {data.Identity.IsLocalHost}" ); + Console.WriteLine( $" data.Identity.IsSteamId: {data.Identity.IsSteamId}" ); + Console.WriteLine( $" data.Identity.Address: {data.Identity.Address}" ); + Console.WriteLine( $" data.Identity.Address.Address: {data.Identity.Address.Address}" ); + Console.WriteLine( $" data.Identity.Address.Port: {data.Identity.Address.Port}" ); + Console.WriteLine( $"" ); + + base.OnConnected( connection, data ); + } + + /// + /// The connection has been closed remotely or disconnected locally. Check data.State for details. + /// + public override void OnDisconnected( Connection connection, ConnectionInfo data ) + { + Console.WriteLine( $" - OnDisconnected" ); + + base.OnDisconnected( connection, data ); + } + + internal async Task RunAsync() + { + var sw = System.Diagnostics.Stopwatch.StartNew(); + + while ( Connected.Count == 0 ) + { + await Task.Delay( 10 ); + + if ( sw.Elapsed.TotalSeconds > 10 ) + { + Assert.Fail( "Client Took Too Long To Connect" ); + break; + } + } + + await Task.Delay( 1000 ); + + var singleClient = Connected.First(); + + singleClient.SendMessage( "Hey?" ); + await Task.Delay( 100 ); + singleClient.SendMessage( "Anyone?" ); + await Task.Delay( 100 ); + singleClient.SendMessage( "What's this?" ); + await Task.Delay( 100 ); + singleClient.SendMessage( "What's your status?" ); + await Task.Delay( 10 ); + singleClient.SendMessage( "Greetings!!??" ); + await Task.Delay( 100 ); + singleClient.SendMessage( "Hello Client!?" ); + + sw = System.Diagnostics.Stopwatch.StartNew(); + + Console.WriteLine( $"Socket: Listening" ); + + while ( Connected.Contains( singleClient ) ) + { + Receive(); + await Task.Delay( 100 ); + + if ( sw.Elapsed.TotalSeconds > 30 ) + { + Console.WriteLine( "Socket: This all took too long - throwing an exception" ); + Assert.Fail( "Socket Took Too Long" ); + break; + } + } + + Console.WriteLine( $"Socket: Closing connection because {Connected.Count()} Connected" ); + + await Task.Delay( 1000 ); + + Close(); + } + + public override unsafe void OnMessage( Connection connection, NetIdentity identity, IntPtr data, int size, long messageNum, long recvTime, int channel ) + { + // We're only sending strings, so it's fine to read this like this + var str = UTF8Encoding.UTF8.GetString( (byte*)data, size ); + + Console.WriteLine( $"[SOCKET][{connection}[{identity}][{messageNum}][{recvTime}][{channel}] \"{str}\"" ); + + if ( str.Contains( "Hello, How are you" ) ) + { + connection.SendMessage( "I'm great thanks, how about yourself?" ); + } + + if ( str.Contains( "bye" ) ) + { + connection.SendMessage( "See you later, hater." ); + connection.Flush(); + connection.Close( true, 10, "Said Bye" ); + } + } + } + } + +} \ No newline at end of file diff --git a/Facepunch.Steamworks.Test/NetworkingUtils.cs b/Facepunch.Steamworks.Test/NetworkingUtils.cs index 6f8d974..d2f7fb6 100644 --- a/Facepunch.Steamworks.Test/NetworkingUtils.cs +++ b/Facepunch.Steamworks.Test/NetworkingUtils.cs @@ -9,9 +9,10 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] + [DeploymentItem( "steam_api.dll" )] public class NetworkUtilsTest { - static string GarrysLocation = "lhr=19+1,ams=25+2/25+1,par=29+2,fra=31+3/30+1,lux=33+3,vie=44+4/41+1,waw=47+4/45+1,sto2=48+4/46+2,sto=50+5/46+2,iad=107+10/91+1,sgp=186+18,gru=252+25/234+1"; + static string GarrysLocation = "lhr=4+0,ams=13+1/10+0,par=17+1/12+0,lux=17+1,fra=18+1/18+0,sto=25+2,sto2=26+2,mad=27+2,vie=31+3/30+0,iad=90+9/75+0,sgp=173+17/174+17,gru=200+20/219+0"; [TestMethod] public async Task LocalPingLocation() @@ -37,7 +38,7 @@ namespace Steamworks [TestMethod] public void PingLocationParse() { - var pl = Data.PingLocation.TryParseFromString( GarrysLocation ); + var pl = Data.NetPingLocation.TryParseFromString( GarrysLocation ); Assert.IsTrue( pl.HasValue ); @@ -49,7 +50,7 @@ namespace Steamworks { await SteamNetworkingUtils.WaitForPingDataAsync(); - var garrysping = Data.PingLocation.TryParseFromString( GarrysLocation ); + var garrysping = Data.NetPingLocation.TryParseFromString( GarrysLocation ); Assert.IsTrue( garrysping.HasValue ); var ping = SteamNetworkingUtils.EstimatePingTo( garrysping.Value ); @@ -59,4 +60,4 @@ namespace Steamworks } } -} +} \ No newline at end of file diff --git a/Facepunch.Steamworks.Test/RemotePlayTest.cs b/Facepunch.Steamworks.Test/RemotePlayTest.cs new file mode 100644 index 0000000..64e3add --- /dev/null +++ b/Facepunch.Steamworks.Test/RemotePlayTest.cs @@ -0,0 +1,30 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Steamworks +{ + [TestClass] + [DeploymentItem( "steam_api64.dll" )] + [DeploymentItem( "steam_api.dll" )] + public class RemotePlayTest + { + [TestMethod] + public void BasicUsability() + { + Console.WriteLine( $"Sessions: {SteamRemotePlay.SessionCount}" ); + + var session = SteamRemotePlay.GetSession( 4 ); + + Assert.IsFalse( session.IsValid ); + Assert.IsFalse( session.SteamId.IsValid ); + } + + } + +} diff --git a/Facepunch.Steamworks.Test/RemoteStorageTest.cs b/Facepunch.Steamworks.Test/RemoteStorageTest.cs index 157315d..512c5eb 100644 --- a/Facepunch.Steamworks.Test/RemoteStorageTest.cs +++ b/Facepunch.Steamworks.Test/RemoteStorageTest.cs @@ -10,7 +10,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class RemoteStorageTest + [DeploymentItem( "steam_api.dll" )] + public class RemoteStorageTest { [TestMethod] public void Quotas() diff --git a/Facepunch.Steamworks.Test/ServerlistTest.cs b/Facepunch.Steamworks.Test/ServerlistTest.cs index 2568564..5a06d77 100644 --- a/Facepunch.Steamworks.Test/ServerlistTest.cs +++ b/Facepunch.Steamworks.Test/ServerlistTest.cs @@ -11,7 +11,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public partial class ServerListTest + [DeploymentItem( "steam_api.dll" )] + public partial class ServerListTest { [TestMethod] public void IpAddressConversions() diff --git a/Facepunch.Steamworks.Test/SteamMatchmakingTest.cs b/Facepunch.Steamworks.Test/SteamMatchmakingTest.cs index abfe446..0846e94 100644 --- a/Facepunch.Steamworks.Test/SteamMatchmakingTest.cs +++ b/Facepunch.Steamworks.Test/SteamMatchmakingTest.cs @@ -10,7 +10,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class SteamMatchmakingTest + [DeploymentItem( "steam_api.dll" )] + public class SteamMatchmakingTest { [TestMethod] public async Task LobbyList() diff --git a/Facepunch.Steamworks.Test/SteamNetworkingTest.cs b/Facepunch.Steamworks.Test/SteamNetworkingTest.cs index c07d15e..8675f7f 100644 --- a/Facepunch.Steamworks.Test/SteamNetworkingTest.cs +++ b/Facepunch.Steamworks.Test/SteamNetworkingTest.cs @@ -10,13 +10,13 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class SteamNetworkingTest + [DeploymentItem( "steam_api.dll" )] + public class SteamNetworkingTest { [TestMethod] public async Task SendP2PPacket() { var sent = SteamNetworking.SendP2PPacket( SteamClient.SteamId, new byte[] { 1, 2, 3 } ); - Assert.IsTrue( sent ); while ( !SteamNetworking.IsP2PPacketAvailable() ) diff --git a/Facepunch.Steamworks.Test/UgcEditor.cs b/Facepunch.Steamworks.Test/UgcEditor.cs index 6edba5d..76ca8a1 100644 --- a/Facepunch.Steamworks.Test/UgcEditor.cs +++ b/Facepunch.Steamworks.Test/UgcEditor.cs @@ -10,7 +10,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class UgcEditor + [DeploymentItem( "steam_api.dll" )] + public class UgcEditor { [TestMethod] public async Task CreateFile() @@ -129,7 +130,7 @@ namespace Steamworks [TestMethod] public async Task CreateAndThenEditFile() { - PublishedFileId fileid = default; + PublishedFileId fileid; // // Make a file diff --git a/Facepunch.Steamworks.Test/UgcQuery.cs b/Facepunch.Steamworks.Test/UgcQuery.cs index 041e4f5..254141e 100644 --- a/Facepunch.Steamworks.Test/UgcQuery.cs +++ b/Facepunch.Steamworks.Test/UgcQuery.cs @@ -10,7 +10,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class UgcQueryTests + [DeploymentItem( "steam_api.dll" )] + public class UgcQueryTests { [TestMethod] public async Task QueryAll() diff --git a/Facepunch.Steamworks.Test/UgcTest.cs b/Facepunch.Steamworks.Test/UgcTest.cs index 9c15019..1008809 100644 --- a/Facepunch.Steamworks.Test/UgcTest.cs +++ b/Facepunch.Steamworks.Test/UgcTest.cs @@ -10,7 +10,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class UgcTest + [DeploymentItem( "steam_api.dll" )] + public class UgcTest { [TestMethod] public void Download() @@ -34,6 +35,7 @@ namespace Steamworks Console.WriteLine( $"Description: {itemInfo?.Description}" ); Console.WriteLine( $"Owner: {itemInfo?.Owner}" ); Console.WriteLine( $"Score: {itemInfo?.Score}" ); + Console.WriteLine( $"PreviewImageUrl: {itemInfo?.PreviewImageUrl}" ); } } } diff --git a/Facepunch.Steamworks.Test/UserStatsTest.cs b/Facepunch.Steamworks.Test/UserStatsTest.cs index 1f41180..0969447 100644 --- a/Facepunch.Steamworks.Test/UserStatsTest.cs +++ b/Facepunch.Steamworks.Test/UserStatsTest.cs @@ -10,7 +10,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class UserStatsTest + [DeploymentItem( "steam_api.dll" )] + public class UserStatsTest { [TestMethod] public async Task AchievementList() @@ -167,6 +168,30 @@ namespace Steamworks Assert.AreNotEqual( 0, deaths.GetInt() ); } + [TestMethod] + public async Task GetFriendStats() + { + var friend = new Friend( 76561197965732579 ); // Hezzy + + // Download stats + var status = await friend.RequestUserStatsAsync(); + Assert.AreNotEqual( false, status ); + + var deaths = friend.GetStatInt( "deaths" ); + + Console.WriteLine( $"Hezzy has died {deaths} times" ); + + Assert.AreNotEqual( 0, deaths ); + + var unlocked = friend.GetAchievement( "COLLECT_100_WOOD" ); + Assert.AreNotEqual( false, unlocked ); + + var when = friend.GetAchievementUnlockTime( "COLLECT_100_WOOD" ); + Assert.AreNotEqual( when, DateTime.MinValue ); + + Console.WriteLine( $"Hezzy unlocked COLLECT_100_WOOD {when}" ); + } + [TestMethod] public async Task GetStatGlobalInt() { diff --git a/Facepunch.Steamworks.Test/UserTest.cs b/Facepunch.Steamworks.Test/UserTest.cs index 48ef38e..f550106 100644 --- a/Facepunch.Steamworks.Test/UserTest.cs +++ b/Facepunch.Steamworks.Test/UserTest.cs @@ -11,7 +11,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class UserTest + [DeploymentItem( "steam_api.dll" )] + public class UserTest { [TestMethod] public void GetVoice() @@ -135,19 +136,43 @@ namespace Steamworks [TestMethod] public async Task RequestEncryptedAppTicketAsyncWithData() { - var data = await SteamUser.RequestEncryptedAppTicketAsync( new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 } ); - Assert.IsNotNull( data ); + for ( int i=0; i<10; i++ ) + { + var data = await SteamUser.RequestEncryptedAppTicketAsync( new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 } ); - Console.WriteLine( $"data: {string.Join( "", data.Select( x => x.ToString( "x" ) ))}" ); + if ( data == null ) + { + Console.WriteLine( $"Attempt {i}: Returned null.. waiting 1 seconds" ); + await Task.Delay( 10000 ); + continue; + } + + Console.WriteLine( $"data: {BitConverter.ToString( data )}" ); + return; + } + + Assert.Fail(); } [TestMethod] public async Task RequestEncryptedAppTicketAsync() { - var data = await SteamUser.RequestEncryptedAppTicketAsync(); - Assert.IsNotNull( data ); + for ( int i = 0; i < 6; i++ ) + { + var data = await SteamUser.RequestEncryptedAppTicketAsync(); - Console.WriteLine( $"data: {string.Join( "", data.Select( x => x.ToString( "x" ) ) )}" ); + if ( data == null ) + { + Console.WriteLine( $"Attempt {i}: Returned null.. waiting 1 seconds" ); + await Task.Delay( 10000 ); + continue; + } + + Console.WriteLine( $"data: {BitConverter.ToString( data )}" ); + return; + } + + Assert.Fail(); } } diff --git a/Facepunch.Steamworks.Test/UtilsTest.cs b/Facepunch.Steamworks.Test/UtilsTest.cs index 05b4cf7..225faec 100644 --- a/Facepunch.Steamworks.Test/UtilsTest.cs +++ b/Facepunch.Steamworks.Test/UtilsTest.cs @@ -9,7 +9,8 @@ namespace Steamworks { [TestClass] [DeploymentItem( "steam_api64.dll" )] - public class UtilsTest + [DeploymentItem( "steam_api.dll" )] + public class UtilsTest { [TestMethod] public void SecondsSinceAppActive() diff --git a/Facepunch.Steamworks.Test/bin/Debug/steam_api.dll b/Facepunch.Steamworks.Test/bin/Debug/steam_api.dll deleted file mode 100644 index 060b6b9..0000000 Binary files a/Facepunch.Steamworks.Test/bin/Debug/steam_api.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/Debug/steamclient.dll b/Facepunch.Steamworks.Test/bin/Debug/steamclient.dll index b01cd7a..216cf68 100644 Binary files a/Facepunch.Steamworks.Test/bin/Debug/steamclient.dll and b/Facepunch.Steamworks.Test/bin/Debug/steamclient.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Debug/steamclient64.dll b/Facepunch.Steamworks.Test/bin/Debug/steamclient64.dll index 451bb46..9d78727 100644 Binary files a/Facepunch.Steamworks.Test/bin/Debug/steamclient64.dll and b/Facepunch.Steamworks.Test/bin/Debug/steamclient64.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Debug/tier0_s.dll b/Facepunch.Steamworks.Test/bin/Debug/tier0_s.dll index 311c469..e4a2392 100644 Binary files a/Facepunch.Steamworks.Test/bin/Debug/tier0_s.dll and b/Facepunch.Steamworks.Test/bin/Debug/tier0_s.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Debug/tier0_s64.dll b/Facepunch.Steamworks.Test/bin/Debug/tier0_s64.dll index d51e145..155dad4 100644 Binary files a/Facepunch.Steamworks.Test/bin/Debug/tier0_s64.dll and b/Facepunch.Steamworks.Test/bin/Debug/tier0_s64.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s.dll b/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s.dll index 096945e..8ad7e87 100644 Binary files a/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s.dll and b/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s64.dll b/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s64.dll index dfcfaa4..394e8a2 100644 Binary files a/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s64.dll and b/Facepunch.Steamworks.Test/bin/Debug/vstdlib_s64.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Release/steam_api.dll b/Facepunch.Steamworks.Test/bin/Release/steam_api.dll deleted file mode 100644 index 060b6b9..0000000 Binary files a/Facepunch.Steamworks.Test/bin/Release/steam_api.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/Release/steam_api64.dll b/Facepunch.Steamworks.Test/bin/Release/steam_api64.dll deleted file mode 100644 index 328dade..0000000 Binary files a/Facepunch.Steamworks.Test/bin/Release/steam_api64.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/Release/steamclient.dll b/Facepunch.Steamworks.Test/bin/Release/steamclient.dll index b01cd7a..216cf68 100644 Binary files a/Facepunch.Steamworks.Test/bin/Release/steamclient.dll and b/Facepunch.Steamworks.Test/bin/Release/steamclient.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Release/steamclient64.dll b/Facepunch.Steamworks.Test/bin/Release/steamclient64.dll index 451bb46..9d78727 100644 Binary files a/Facepunch.Steamworks.Test/bin/Release/steamclient64.dll and b/Facepunch.Steamworks.Test/bin/Release/steamclient64.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Release/tier0_s.dll b/Facepunch.Steamworks.Test/bin/Release/tier0_s.dll index 311c469..e4a2392 100644 Binary files a/Facepunch.Steamworks.Test/bin/Release/tier0_s.dll and b/Facepunch.Steamworks.Test/bin/Release/tier0_s.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Release/tier0_s64.dll b/Facepunch.Steamworks.Test/bin/Release/tier0_s64.dll index d51e145..155dad4 100644 Binary files a/Facepunch.Steamworks.Test/bin/Release/tier0_s64.dll and b/Facepunch.Steamworks.Test/bin/Release/tier0_s64.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Release/vstdlib_s.dll b/Facepunch.Steamworks.Test/bin/Release/vstdlib_s.dll index 096945e..8ad7e87 100644 Binary files a/Facepunch.Steamworks.Test/bin/Release/vstdlib_s.dll and b/Facepunch.Steamworks.Test/bin/Release/vstdlib_s.dll differ diff --git a/Facepunch.Steamworks.Test/bin/Release/vstdlib_s64.dll b/Facepunch.Steamworks.Test/bin/Release/vstdlib_s64.dll index dfcfaa4..394e8a2 100644 Binary files a/Facepunch.Steamworks.Test/bin/Release/vstdlib_s64.dll and b/Facepunch.Steamworks.Test/bin/Release/vstdlib_s64.dll differ diff --git a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll b/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll deleted file mode 100644 index ba15291..0000000 Binary files a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll b/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll deleted file mode 100644 index 39bd4f3..0000000 Binary files a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll b/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll deleted file mode 100644 index a4db1c1..0000000 Binary files a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll b/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll deleted file mode 100644 index c426bea..0000000 Binary files a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.TestFramework.dll b/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.TestFramework.dll deleted file mode 100644 index d4afc5e..0000000 Binary files a/Facepunch.Steamworks.Test/bin/x64/Debug/Microsoft.VisualStudio.TestPlatform.TestFramework.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/x64/Debug/Newtonsoft.Json.dll b/Facepunch.Steamworks.Test/bin/x64/Debug/Newtonsoft.Json.dll deleted file mode 100644 index 5523f5c..0000000 Binary files a/Facepunch.Steamworks.Test/bin/x64/Debug/Newtonsoft.Json.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/bin/x64/Debug/steam_api64.dll b/Facepunch.Steamworks.Test/bin/x64/Debug/steam_api64.dll deleted file mode 100644 index 328dade..0000000 Binary files a/Facepunch.Steamworks.Test/bin/x64/Debug/steam_api64.dll and /dev/null differ diff --git a/Facepunch.Steamworks.Test/steam_api.dll b/Facepunch.Steamworks.Test/steam_api.dll new file mode 100644 index 0000000..319bb83 Binary files /dev/null and b/Facepunch.Steamworks.Test/steam_api.dll differ diff --git a/Facepunch.Steamworks.Test/steam_api64.dll b/Facepunch.Steamworks.Test/steam_api64.dll new file mode 100644 index 0000000..e1ca692 Binary files /dev/null and b/Facepunch.Steamworks.Test/steam_api64.dll differ diff --git a/Facepunch.Steamworks.sln b/Facepunch.Steamworks.sln index 62426b9..26ca56b 100644 --- a/Facepunch.Steamworks.sln +++ b/Facepunch.Steamworks.sln @@ -7,11 +7,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Generator", "Generator\Gene EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Win64", "Facepunch.Steamworks\Facepunch.Steamworks.Win64.csproj", "{8C73DA93-73AD-4445-9A2C-15D4A44337D3}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Posix64", "Facepunch.Steamworks\Facepunch.Steamworks.Posix64.csproj", "{12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Win32", "Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj", "{2D6247F6-8AB2-405F-A00E-3A364B808A55}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Posix32", "Facepunch.Steamworks\Facepunch.Steamworks.Posix32.csproj", "{C62FF421-BE44-4DB0-B99A-E13E007A30B9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Posix", "Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj", "{C62FF421-BE44-4DB0-B99A-E13E007A30B9}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Facepunch.Steamworks.TestWin32", "Facepunch.Steamworks.Test\Facepunch.Steamworks.TestWin32.csproj", "{3F6183AD-D966-44F2-A6EB-42E61E591B49}" EndProject @@ -51,18 +49,6 @@ Global {8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|x64.Build.0 = Release|Any CPU {8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|x86.ActiveCfg = Release|Any CPU {8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|x86.Build.0 = Release|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Debug|x64.ActiveCfg = Debug|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Debug|x64.Build.0 = Debug|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Debug|x86.ActiveCfg = Debug|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Debug|x86.Build.0 = Debug|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Release|Any CPU.Build.0 = Release|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Release|x64.ActiveCfg = Release|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Release|x64.Build.0 = Release|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Release|x86.ActiveCfg = Release|Any CPU - {12478BAE-7C1F-4FFD-B903-E1DDA6426DDF}.Release|x86.Build.0 = Release|Any CPU {2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|Any CPU.Build.0 = Debug|Any CPU {2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|x64.ActiveCfg = Debug|Any CPU diff --git a/Facepunch.Steamworks/Callbacks/CallResult.cs b/Facepunch.Steamworks/Callbacks/CallResult.cs new file mode 100644 index 0000000..edfa66a --- /dev/null +++ b/Facepunch.Steamworks/Callbacks/CallResult.cs @@ -0,0 +1,98 @@ +using Steamworks.Data; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; + +namespace Steamworks +{ + /// + /// An awaitable version of a SteamAPICall_t + /// + internal struct CallResult : INotifyCompletion where T : struct, ICallbackData + { + SteamAPICall_t call; + ISteamUtils utils; + bool server; + + public CallResult( SteamAPICall_t call, bool server ) + { + this.call = call; + this.server = server; + + utils = (server ? SteamUtils.InterfaceServer : SteamUtils.InterfaceClient) as ISteamUtils; + + if ( utils == null ) + utils = SteamUtils.Interface as ISteamUtils; + } + + /// + /// This gets called if IsComplete returned false on the first call. + /// The Action "continues" the async call. We pass it to the Dispatch + /// to be called when the callback returns. + /// + public void OnCompleted( Action continuation ) + { + if (IsCompleted) + continuation(); + else + Dispatch.OnCallComplete(call, continuation, server); + } + + /// + /// Gets the result. This is called internally by the async shit. + /// + public T? GetResult() + { + bool failed = false; + if ( !utils.IsAPICallCompleted( call, ref failed ) || failed ) + return null; + + var t = default( T ); + var size = t.DataSize; + var ptr = Marshal.AllocHGlobal( size ); + + try + { + if ( !utils.GetAPICallResult( call, ptr, size, (int)t.CallbackType, ref failed ) || failed ) + { + Dispatch.OnDebugCallback?.Invoke( t.CallbackType, "!GetAPICallResult or failed", server ); + return null; + } + + Dispatch.OnDebugCallback?.Invoke( t.CallbackType, Dispatch.CallbackToString( t.CallbackType, ptr, size ), server ); + + return ((T)Marshal.PtrToStructure( ptr, typeof( T ) )); + } + finally + { + Marshal.FreeHGlobal( ptr ); + } + } + + /// + /// Return true if complete or failed + /// + public bool IsCompleted + { + get + { + bool failed = false; + if ( utils.IsAPICallCompleted( call, ref failed ) || failed ) + return true; + + return false; + } + } + + /// + /// This is what makes this struct awaitable + /// + internal CallResult GetAwaiter() + { + return this; + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Callbacks/Callback.cs b/Facepunch.Steamworks/Callbacks/Callback.cs deleted file mode 100644 index a5cc3c9..0000000 --- a/Facepunch.Steamworks/Callbacks/Callback.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using System.Collections.Generic; -using Steamworks.Data; - -namespace Steamworks -{ - [StructLayout( LayoutKind.Sequential )] - internal partial class Callback - { - [UnmanagedFunctionPointer( CallingConvention.ThisCall )] - public delegate void Run( IntPtr thisptr, IntPtr pvParam ); - - [UnmanagedFunctionPointer( CallingConvention.ThisCall )] - public delegate void RunCall( IntPtr thisptr, IntPtr pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); - - [UnmanagedFunctionPointer( CallingConvention.ThisCall )] - public delegate int GetCallbackSizeBytes( IntPtr thisptr ); - - internal enum Flags : byte - { - Registered = 0x01, - GameServer = 0x02 - } - - public IntPtr vTablePtr; - public byte CallbackFlags; - public int CallbackId; - - // - // These are functions that are on CCallback but are never called - // We could just send a IntPtr.Zero but it's probably safer to throw a - // big apeshit message if steam changes its behaviour at some point - // - [MonoPInvokeCallback] - internal static void RunStub( IntPtr self, IntPtr param, bool failure, SteamAPICall_t call ) => - throw new System.Exception( "Something changed in the Steam API and now CCallbackBack is calling the CallResult function [Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall )]" ); - - [MonoPInvokeCallback] - internal static int SizeStub( IntPtr self ) => - throw new System.Exception( "Something changed in the Steam API and now CCallbackBack is calling the GetSize function [GetCallbackSizeBytes()]" ); - }; -} diff --git a/Facepunch.Steamworks/Callbacks/Event.cs b/Facepunch.Steamworks/Callbacks/Event.cs deleted file mode 100644 index 181ba50..0000000 --- a/Facepunch.Steamworks/Callbacks/Event.cs +++ /dev/null @@ -1,135 +0,0 @@ -using Steamworks.Data; -using System; -using System.Collections.Generic; -using System.Runtime.InteropServices; - -namespace Steamworks -{ - // - // Created on registration of a callback - // - internal class Event : IDisposable - { - internal static List AllClient = new List(); - internal static List AllServer = new List(); - - internal static void DisposeAllClient() - { - foreach ( var a in AllClient.ToArray() ) - { - a.Dispose(); - } - - AllClient.Clear(); - } - - internal static void DisposeAllServer() - { - foreach ( var a in AllServer.ToArray() ) - { - a.Dispose(); - } - - AllServer.Clear(); - } - - internal static void Register( Callback.Run func, int size, int callbackId, bool gameserver ) - { - var r = new Event(); - r.vTablePtr = BuildVTable( func, r.Allocations ); - - // - // Create the callback object - // - var cb = new Callback(); - cb.vTablePtr = r.vTablePtr; - cb.CallbackFlags = gameserver ? (byte)0x02 : (byte)0; - cb.CallbackId = callbackId; - - // - // Pin the callback, so it doesn't get garbage collected and we can pass the pointer to native - // - r.PinnedCallback = GCHandle.Alloc( cb, GCHandleType.Pinned ); - - // - // Register the callback with Steam - // - SteamClient.RegisterCallback( r.PinnedCallback.AddrOfPinnedObject(), cb.CallbackId ); - - r.IsAllocated = true; - - if ( gameserver ) - Event.AllServer.Add( r ); - else - Event.AllClient.Add( r ); - } - - static IntPtr BuildVTable( Callback.Run run, List allocations ) - { - var RunStub = (Callback.RunCall)Callback.RunStub; - var SizeStub = (Callback.GetCallbackSizeBytes)Callback.SizeStub; - - allocations.Add( GCHandle.Alloc( run ) ); - allocations.Add( GCHandle.Alloc( RunStub ) ); - allocations.Add( GCHandle.Alloc( SizeStub ) ); - - var a = Marshal.GetFunctionPointerForDelegate( run ); - var b = Marshal.GetFunctionPointerForDelegate( RunStub ); - var c = Marshal.GetFunctionPointerForDelegate( SizeStub ); - - var vt = Marshal.AllocHGlobal( IntPtr.Size * 3 ); - - // Windows switches the function positions - #if PLATFORM_WIN - Marshal.WriteIntPtr( vt, IntPtr.Size * 0, b ); - Marshal.WriteIntPtr( vt, IntPtr.Size * 1, a ); - Marshal.WriteIntPtr( vt, IntPtr.Size * 2, c ); - #else - Marshal.WriteIntPtr( vt, IntPtr.Size * 0, a ); - Marshal.WriteIntPtr( vt, IntPtr.Size * 1, b ); - Marshal.WriteIntPtr( vt, IntPtr.Size * 2, c ); - #endif - - return vt; - } - - bool IsAllocated; - List Allocations = new List(); - internal IntPtr vTablePtr; - internal GCHandle PinnedCallback; - - - public void Dispose() - { - if ( !IsAllocated ) return; - IsAllocated = false; - - if ( !PinnedCallback.IsAllocated ) - throw new System.Exception( "Callback isn't allocated!?" ); - - SteamClient.UnregisterCallback( PinnedCallback.AddrOfPinnedObject() ); - - foreach ( var a in Allocations ) - { - if ( a.IsAllocated ) - a.Free(); - } - - Allocations = null; - - PinnedCallback.Free(); - - if ( vTablePtr != IntPtr.Zero ) - { - Marshal.FreeHGlobal( vTablePtr ); - vTablePtr = IntPtr.Zero; - } - } - - ~Event() - { - Dispose(); - } - - } -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Callbacks/ICallbackData.cs b/Facepunch.Steamworks/Callbacks/ICallbackData.cs new file mode 100644 index 0000000..78610dd --- /dev/null +++ b/Facepunch.Steamworks/Callbacks/ICallbackData.cs @@ -0,0 +1,17 @@ +using Steamworks.Data; +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Threading.Tasks; + +namespace Steamworks +{ + /// + /// Gives us a generic way to get the CallbackId of structs + /// + internal interface ICallbackData + { + CallbackType CallbackType { get; } + int DataSize { get; } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Classes/ConnectionInterface.cs b/Facepunch.Steamworks/Classes/ConnectionInterface.cs deleted file mode 100644 index 2d116aa..0000000 --- a/Facepunch.Steamworks/Classes/ConnectionInterface.cs +++ /dev/null @@ -1,120 +0,0 @@ -using Steamworks.Data; -using System; -using System.Runtime.InteropServices; - -namespace Steamworks -{ - public class ConnectionInterface - { - public Connection Connection; - public bool Connected = false; - public bool Connecting = true; - - public string ConnectionName - { - get => Connection.ConnectionName; - set => Connection.ConnectionName = value; - } - - public long UserData - { - get => Connection.UserData; - set => Connection.UserData = value; - } - - public void Close() => Connection.Close(); - - public override string ToString() => Connection.ToString(); - - public virtual void OnConnectionChanged( ConnectionInfo data ) - { - switch ( data.State ) - { - case ConnectionState.Connecting: - OnConnecting( data ); - break; - case ConnectionState.Connected: - OnConnected( data ); - break; - case ConnectionState.ClosedByPeer: - case ConnectionState.ProblemDetectedLocally: - case ConnectionState.None: - OnDisconnected( data ); - break; - } - } - - /// - /// We're trying to connect! - /// - public virtual void OnConnecting( ConnectionInfo data ) - { - Connecting = true; - } - - /// - /// Client is connected. They move from connecting to Connections - /// - public virtual void OnConnected( ConnectionInfo data ) - { - Connected = true; - Connecting = false; - } - - /// - /// The connection has been closed remotely or disconnected locally. Check data.State for details. - /// - public virtual void OnDisconnected( ConnectionInfo data ) - { - Connected = false; - Connecting = false; - } - - public void Receive( int bufferSize = 32 ) - { - int processed = 0; - IntPtr messageBuffer = Marshal.AllocHGlobal( IntPtr.Size * bufferSize ); - - try - { - processed = SteamNetworkingSockets.Internal.ReceiveMessagesOnConnection( Connection, messageBuffer, bufferSize ); - - for ( int i = 0; i < processed; i++ ) - { - ReceiveMessage( Marshal.ReadIntPtr( messageBuffer, i * IntPtr.Size ) ); - } - } - finally - { - Marshal.FreeHGlobal( messageBuffer ); - } - - // - // Overwhelmed our buffer, keep going - // - if ( processed == bufferSize ) - Receive( bufferSize ); - } - - internal unsafe void ReceiveMessage( IntPtr msgPtr ) - { - var msg = Marshal.PtrToStructure( msgPtr ); - try - { - OnMessage( msg.DataPtr, msg.DataSize, msg.RecvTime, msg.MessageNumber, msg.Channel ); - } - finally - { - // - // Releases the message - // - msg.Release( msgPtr ); - } - } - - public virtual void OnMessage( IntPtr data, int size, long messageNum, long recvTime, int channel ) - { - - } - } -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Classes/Dispatch.cs b/Facepunch.Steamworks/Classes/Dispatch.cs new file mode 100644 index 0000000..ad7700d --- /dev/null +++ b/Facepunch.Steamworks/Classes/Dispatch.cs @@ -0,0 +1,334 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using Steamworks.Data; +using Steamworks; +using System.Linq; + +namespace Steamworks +{ + /// + /// Responsible for all callback/callresult handling + /// + /// This manually pumps Steam's message queue and dispatches those + /// events to any waiting callbacks/callresults. + /// + public static class Dispatch + { + /// + /// If set then we'll call this function every time a callback is generated. + /// + /// This is SLOW!! - it's for debugging - don't keep it on all the time. If you want to access a specific + /// callback then please create an issue on github and I'll add it! + /// + /// Params are : [Callback Type] [Callback Contents] [server] + /// + /// + public static Action OnDebugCallback; + + /// + /// Called if an exception happens during a callback/callresult. + /// This is needed because the exception isn't always accessible when running + /// async.. and can fail silently. With this hooked you won't be stuck wondering + /// what happened. + /// + public static Action OnException; + + #region interop + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ManualDispatch_Init", CallingConvention = CallingConvention.Cdecl )] + internal static extern void SteamAPI_ManualDispatch_Init(); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ManualDispatch_RunFrame", CallingConvention = CallingConvention.Cdecl )] + internal static extern void SteamAPI_ManualDispatch_RunFrame( HSteamPipe pipe ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ManualDispatch_GetNextCallback", CallingConvention = CallingConvention.Cdecl )] + [return: MarshalAs( UnmanagedType.I1 )] + internal static extern bool SteamAPI_ManualDispatch_GetNextCallback( HSteamPipe pipe, [In, Out] ref CallbackMsg_t msg ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ManualDispatch_FreeLastCallback", CallingConvention = CallingConvention.Cdecl )] + [return: MarshalAs( UnmanagedType.I1 )] + internal static extern bool SteamAPI_ManualDispatch_FreeLastCallback( HSteamPipe pipe ); + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct CallbackMsg_t + { + public HSteamUser m_hSteamUser; // Specific user to whom this callback applies. + public CallbackType Type; // Callback identifier. (Corresponds to the k_iCallback enum in the callback structure.) + public IntPtr Data; // Points to the callback structure + public int DataSize; // Size of the data pointed to by m_pubParam + }; + + #endregion + + internal static HSteamPipe ClientPipe { get; set; } + internal static HSteamPipe ServerPipe { get; set; } + + /// + /// This gets called from Client/Server Init + /// It's important to switch to the manual dispatcher + /// + internal static void Init() + { + SteamAPI_ManualDispatch_Init(); + } + + /// + /// Make sure we don't call Frame in a callback - because that'll cause some issues for everyone. + /// + static bool runningFrame = false; + + /// + /// Calls RunFrame and processes events from this Steam Pipe + /// + internal static void Frame( HSteamPipe pipe ) + { + if ( runningFrame ) + return; + + try + { + runningFrame = true; + + SteamAPI_ManualDispatch_RunFrame( pipe ); + SteamNetworkingUtils.OutputDebugMessages(); + + CallbackMsg_t msg = default; + + while ( SteamAPI_ManualDispatch_GetNextCallback( pipe, ref msg ) ) + { + try + { + ProcessCallback( msg, pipe == ServerPipe ); + } + finally + { + SteamAPI_ManualDispatch_FreeLastCallback( pipe ); + } + } + } + catch ( System.Exception e ) + { + OnException?.Invoke( e ); + } + finally + { + runningFrame = false; + } + } + + /// + /// To be safe we don't call the continuation functions while iterating + /// the Callback list. This is maybe overly safe because the only way this + /// could be an issue is if the callback list is modified in the continuation + /// which would only happen if starting or shutting down in the callback. + /// + static List> actionsToCall = new List>(); + + /// + /// A callback is a general global message + /// + private static void ProcessCallback( CallbackMsg_t msg, bool isServer ) + { + OnDebugCallback?.Invoke( msg.Type, CallbackToString( msg.Type, msg.Data, msg.DataSize ), isServer ); + + // Is this a special callback telling us that the call result is ready? + if ( msg.Type == CallbackType.SteamAPICallCompleted ) + { + ProcessResult( msg ); + return; + } + + if ( Callbacks.TryGetValue( msg.Type, out var list ) ) + { + actionsToCall.Clear(); + + foreach ( var item in list ) + { + if ( item.server != isServer ) + continue; + + actionsToCall.Add( item.action ); + } + + foreach ( var action in actionsToCall ) + { + action( msg.Data ); + } + + actionsToCall.Clear(); + } + } + + /// + /// Given a callback, try to turn it into a string + /// + internal static string CallbackToString( CallbackType type, IntPtr data, int expectedsize ) + { + if ( !CallbackTypeFactory.All.TryGetValue( type, out var t ) ) + return $"[{type} not in sdk]"; + + var strct = data.ToType( t ); + if ( strct == null ) + return "[null]"; + + var str = ""; + + var fields = t.GetFields( System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic ); + + if ( fields.Length == 0 ) + return "[no fields]"; + + var columnSize = fields.Max( x => x.Name.Length ) + 1; + + if ( columnSize < 10 ) + columnSize = 10; + + foreach ( var field in fields ) + { + var spaces = (columnSize - field.Name.Length); + if ( spaces < 0 ) spaces = 0; + + str += $"{new String( ' ', spaces )}{field.Name}: {field.GetValue( strct )}\n"; + } + + return str.Trim( '\n' ); + } + + /// + /// A result is a reply to a specific command + /// + private static void ProcessResult( CallbackMsg_t msg ) + { + var result = msg.Data.ToType(); + + // + // Do we have an entry added via OnCallComplete + // + if ( !ResultCallbacks.TryGetValue( result.AsyncCall, out var callbackInfo ) ) + { + // + // This can happen if the callback result was immediately available + // so we just returned that without actually going through the callback + // dance. It's okay for this to fail. + // + + // + // But still let everyone know that this happened.. + // + OnDebugCallback?.Invoke( (CallbackType)result.Callback, $"[no callback waiting/required]", false ); + return; + } + + // Remove it before we do anything, incase the continuation throws exceptions + ResultCallbacks.Remove( result.AsyncCall ); + + // At this point whatever async routine called this + // continues running. + callbackInfo.continuation(); + } + + /// + /// Pumps the queue in an async loop so we don't + /// have to think about it. This has the advantage that + /// you can call .Wait() on async shit and it still works. + /// + internal static async void LoopClientAsync() + { + while ( ClientPipe != 0 ) + { + Frame( ClientPipe ); + await Task.Delay( 16 ); + } + } + + /// + /// Pumps the queue in an async loop so we don't + /// have to think about it. This has the advantage that + /// you can call .Wait() on async shit and it still works. + /// + internal static async void LoopServerAsync() + { + while ( ServerPipe != 0 ) + { + Frame( ServerPipe ); + await Task.Delay( 32 ); + } + } + + struct ResultCallback + { + public Action continuation; + public bool server; + } + + static Dictionary ResultCallbacks = new Dictionary(); + + /// + /// Watch for a steam api call + /// + internal static void OnCallComplete( SteamAPICall_t call, Action continuation, bool server ) where T : struct, ICallbackData + { + ResultCallbacks[call.Value] = new ResultCallback + { + continuation = continuation, + server = server + }; + } + + struct Callback + { + public Action action; + public bool server; + } + + static Dictionary> Callbacks = new Dictionary>(); + + /// + /// Install a global callback. The passed function will get called if it's all good. + /// + internal static void Install( Action p, bool server = false ) where T : ICallbackData + { + var t = default( T ); + var type = t.CallbackType; + + if ( !Callbacks.TryGetValue( type, out var list ) ) + { + list = new List(); + Callbacks[type] = list; + } + + list.Add( new Callback + { + action = x => p( x.ToType() ), + server = server + } ); + } + + internal static void ShutdownServer() + { + ServerPipe = 0; + + foreach ( var callback in Callbacks ) + { + Callbacks[callback.Key].RemoveAll( x => x.server ); + } + + ResultCallbacks = ResultCallbacks.Where( x => !x.Value.server ) + .ToDictionary( x => x.Key, x => x.Value ); + } + + internal static void ShutdownClient() + { + ClientPipe = 0; + + foreach ( var callback in Callbacks ) + { + Callbacks[callback.Key].RemoveAll( x => !x.server ); + } + + ResultCallbacks = ResultCallbacks.Where( x => x.Value.server ) + .ToDictionary( x => x.Key, x => x.Value ); + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Classes/SocketInterface.cs b/Facepunch.Steamworks/Classes/SocketInterface.cs deleted file mode 100644 index 813d082..0000000 --- a/Facepunch.Steamworks/Classes/SocketInterface.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Runtime.InteropServices; -using Steamworks.Data; - -namespace Steamworks -{ - public class SocketInterface - { - public List Connecting = new List(); - public List Connected = new List(); - public Socket Socket { get; internal set; } - - public bool Close() => Socket.Close(); - - public override string ToString() => Socket.ToString(); - - public virtual void OnConnectionChanged( Connection connection, ConnectionInfo data ) - { - switch ( data.State ) - { - case ConnectionState.Connecting: - OnConnecting( connection, data ); - break; - case ConnectionState.Connected: - OnConnected( connection, data ); - break; - case ConnectionState.ClosedByPeer: - case ConnectionState.ProblemDetectedLocally: - case ConnectionState.None: - OnDisconnected( connection, data ); - break; - } - } - - /// - /// Default behaviour is to accept every connection - /// - public virtual void OnConnecting( Connection connection, ConnectionInfo data ) - { - connection.Accept(); - Connecting.Add( connection ); - } - - /// - /// Client is connected. They move from connecting to Connections - /// - public virtual void OnConnected( Connection connection, ConnectionInfo data ) - { - Connecting.Remove( connection ); - Connected.Add( connection ); - } - - /// - /// The connection has been closed remotely or disconnected locally. Check data.State for details. - /// - public virtual void OnDisconnected( Connection connection, ConnectionInfo data ) - { - connection.Close(); - - Connecting.Remove( connection ); - Connected.Remove( connection ); - } - - public void Receive( int bufferSize = 32 ) - { - int processed = 0; - IntPtr messageBuffer = Marshal.AllocHGlobal( IntPtr.Size * bufferSize ); - - try - { - processed = SteamNetworkingSockets.Internal.ReceiveMessagesOnListenSocket( Socket, messageBuffer, bufferSize ); - - for ( int i = 0; i < processed; i++ ) - { - ReceiveMessage( Marshal.ReadIntPtr( messageBuffer, i * IntPtr.Size ) ); - } - } - finally - { - Marshal.FreeHGlobal( messageBuffer ); - } - - // - // Overwhelmed our buffer, keep going - // - if ( processed == bufferSize ) - Receive( bufferSize ); - } - - internal unsafe void ReceiveMessage( IntPtr msgPtr ) - { - var msg = Marshal.PtrToStructure( msgPtr ); - try - { - OnMessage( msg.Connection, msg.Identity, msg.DataPtr, msg.DataSize, msg.RecvTime, msg.MessageNumber, msg.Channel ); - } - finally - { - // - // Releases the message - // - msg.Release( msgPtr ); - } - } - - public virtual void OnMessage( Connection connection, NetIdentity identity, IntPtr data, int size, long messageNum, long recvTime, int channel ) - { - - } - } -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Classes/SteamApi.cs b/Facepunch.Steamworks/Classes/SteamApi.cs new file mode 100644 index 0000000..a8b882b --- /dev/null +++ b/Facepunch.Steamworks/Classes/SteamApi.cs @@ -0,0 +1,50 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal static class SteamAPI + { + internal static class Native + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_Init", CallingConvention = CallingConvention.Cdecl )] + [return: MarshalAs( UnmanagedType.I1 )] + public static extern bool SteamAPI_Init(); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_Shutdown", CallingConvention = CallingConvention.Cdecl )] + public static extern void SteamAPI_Shutdown(); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_GetHSteamPipe", CallingConvention = CallingConvention.Cdecl )] + public static extern HSteamPipe SteamAPI_GetHSteamPipe(); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_RestartAppIfNecessary", CallingConvention = CallingConvention.Cdecl )] + [return: MarshalAs( UnmanagedType.I1 )] + public static extern bool SteamAPI_RestartAppIfNecessary( uint unOwnAppID ); + + } + static internal bool Init() + { + return Native.SteamAPI_Init(); + } + + static internal void Shutdown() + { + Native.SteamAPI_Shutdown(); + } + + static internal HSteamPipe GetHSteamPipe() + { + return Native.SteamAPI_GetHSteamPipe(); + } + + static internal bool RestartAppIfNecessary( uint unOwnAppID ) + { + return Native.SteamAPI_RestartAppIfNecessary( unOwnAppID ); + } + + } +} diff --git a/Facepunch.Steamworks/Generated/SteamGameServer.cs b/Facepunch.Steamworks/Classes/SteamGameServer.cs similarity index 78% rename from Facepunch.Steamworks/Generated/SteamGameServer.cs rename to Facepunch.Steamworks/Classes/SteamGameServer.cs index f9713c1..679d66b 100644 --- a/Facepunch.Steamworks/Generated/SteamGameServer.cs +++ b/Facepunch.Steamworks/Classes/SteamGameServer.cs @@ -17,9 +17,6 @@ namespace Steamworks [DllImport( Platform.LibraryName, EntryPoint = "SteamGameServer_Shutdown", CallingConvention = CallingConvention.Cdecl )] public static extern void SteamGameServer_Shutdown(); - [DllImport( Platform.LibraryName, EntryPoint = "SteamGameServer_GetHSteamUser", CallingConvention = CallingConvention.Cdecl )] - public static extern HSteamUser SteamGameServer_GetHSteamUser(); - [DllImport( Platform.LibraryName, EntryPoint = "SteamGameServer_GetHSteamPipe", CallingConvention = CallingConvention.Cdecl )] public static extern HSteamPipe SteamGameServer_GetHSteamPipe(); @@ -34,11 +31,6 @@ namespace Steamworks Native.SteamGameServer_Shutdown(); } - static internal HSteamUser GetHSteamUser() - { - return Native.SteamGameServer_GetHSteamUser(); - } - static internal HSteamPipe GetHSteamPipe() { return Native.SteamGameServer_GetHSteamPipe(); diff --git a/Facepunch.Steamworks/Classes/SteamInternal.cs b/Facepunch.Steamworks/Classes/SteamInternal.cs new file mode 100644 index 0000000..bc9ea6d --- /dev/null +++ b/Facepunch.Steamworks/Classes/SteamInternal.cs @@ -0,0 +1,24 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal static class SteamInternal + { + internal static class Native + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamInternal_GameServer_Init", CallingConvention = CallingConvention.Cdecl )] + [return: MarshalAs( UnmanagedType.I1 )] + public static extern bool SteamInternal_GameServer_Init( uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, int eServerMode, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersionString ); + } + + static internal bool GameServer_Init( uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, int eServerMode, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersionString ) + { + return Native.SteamInternal_GameServer_Init( unIP, usPort, usGamePort, usQueryPort, eServerMode, pchVersionString ); + } + } +} diff --git a/Facepunch.Steamworks/Enum/ConnectionState.cs b/Facepunch.Steamworks/Enum/ConnectionState.cs deleted file mode 100644 index 7b2b4ad..0000000 --- a/Facepunch.Steamworks/Enum/ConnectionState.cs +++ /dev/null @@ -1,107 +0,0 @@ -namespace Steamworks.Data -{ - /// High level connection status - public enum ConnectionState - { - - /// Dummy value used to indicate an error condition in the API. - /// Specified connection doesn't exist or has already been closed. - None = 0, - - /// We are trying to establish whether peers can talk to each other, - /// whether they WANT to talk to each other, perform basic auth, - /// and exchange crypt keys. - /// - /// - For connections on the "client" side (initiated locally): - /// We're in the process of trying to establish a connection. - /// Depending on the connection type, we might not know who they are. - /// Note that it is not possible to tell if we are waiting on the - /// network to complete handshake packets, or for the application layer - /// to accept the connection. - /// - /// - For connections on the "server" side (accepted through listen socket): - /// We have completed some basic handshake and the client has presented - /// some proof of identity. The connection is ready to be accepted - /// using AcceptConnection(). - /// - /// In either case, any unreliable packets sent now are almost certain - /// to be dropped. Attempts to receive packets are guaranteed to fail. - /// You may send messages if the send mode allows for them to be queued. - /// but if you close the connection before the connection is actually - /// established, any queued messages will be discarded immediately. - /// (We will not attempt to flush the queue and confirm delivery to the - /// remote host, which ordinarily happens when a connection is closed.) - Connecting = 1, - - /// Some connection types use a back channel or trusted 3rd party - /// for earliest communication. If the server accepts the connection, - /// then these connections switch into the rendezvous state. During this - /// state, we still have not yet established an end-to-end route (through - /// the relay network), and so if you send any messages unreliable, they - /// are going to be discarded. - FindingRoute = 2, - - /// We've received communications from our peer (and we know - /// who they are) and are all good. If you close the connection now, - /// we will make our best effort to flush out any reliable sent data that - /// has not been acknowledged by the peer. (But note that this happens - /// from within the application process, so unlike a TCP connection, you are - /// not totally handing it off to the operating system to deal with it.) - Connected = 3, - - /// Connection has been closed by our peer, but not closed locally. - /// The connection still exists from an API perspective. You must close the - /// handle to free up resources. If there are any messages in the inbound queue, - /// you may retrieve them. Otherwise, nothing may be done with the connection - /// except to close it. - /// - /// This stats is similar to CLOSE_WAIT in the TCP state machine. - ClosedByPeer = 4, - - /// A disruption in the connection has been detected locally. (E.g. timeout, - /// local internet connection disrupted, etc.) - /// - /// The connection still exists from an API perspective. You must close the - /// handle to free up resources. - /// - /// Attempts to send further messages will fail. Any remaining received messages - /// in the queue are available. - ProblemDetectedLocally = 5, - - // - // The following values are used internally and will not be returned by any API. - // We document them here to provide a little insight into the state machine that is used - // under the hood. - // - - /// We've disconnected on our side, and from an API perspective the connection is closed. - /// No more data may be sent or received. All reliable data has been flushed, or else - /// we've given up and discarded it. We do not yet know for sure that the peer knows - /// the connection has been closed, however, so we're just hanging around so that if we do - /// get a packet from them, we can send them the appropriate packets so that they can - /// know why the connection was closed (and not have to rely on a timeout, which makes - /// it appear as if something is wrong). - FinWait = -1, - - /// We've disconnected on our side, and from an API perspective the connection is closed. - /// No more data may be sent or received. From a network perspective, however, on the wire, - /// we have not yet given any indication to the peer that the connection is closed. - /// We are in the process of flushing out the last bit of reliable data. Once that is done, - /// we will inform the peer that the connection has been closed, and transition to the - /// FinWait state. - /// - /// Note that no indication is given to the remote host that we have closed the connection, - /// until the data has been flushed. If the remote host attempts to send us data, we will - /// do whatever is necessary to keep the connection alive until it can be closed properly. - /// But in fact the data will be discarded, since there is no way for the application to - /// read it back. Typically this is not a problem, as application protocols that utilize - /// the lingering functionality are designed for the remote host to wait for the response - /// before sending any more data. - Linger = -2, - - /// Connection is completely inactive and ready to be destroyed - Dead = -3, - - Force32Bit = 0x7fffffff - }; -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Enum/DebugOutputType.cs b/Facepunch.Steamworks/Enum/DebugOutputType.cs deleted file mode 100644 index 5f36bbd..0000000 --- a/Facepunch.Steamworks/Enum/DebugOutputType.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Steamworks.Data -{ - enum DebugOutputType : int - { - None = 0, - Bug = 1, // You used the API incorrectly, or an internal error happened - Error = 2, // Run-time error condition that isn't the result of a bug. (E.g. we are offline, cannot bind a port, etc) - Important = 3, // Nothing is wrong, but this is an important notification - Warning = 4, - Msg = 5, // Recommended amount - Verbose = 6, // Quite a bit - Debug = 7, // Practically everything - Everything = 8, // Wall of text, detailed packet contents breakdown, etc - - Force32Bit = 0x7fffffff - }; -} diff --git a/Facepunch.Steamworks/Enum/NetConfig.cs b/Facepunch.Steamworks/Enum/NetConfig.cs deleted file mode 100644 index c45fd64..0000000 --- a/Facepunch.Steamworks/Enum/NetConfig.cs +++ /dev/null @@ -1,57 +0,0 @@ -namespace Steamworks.Data -{ - internal enum NetConfig : int - { - Invalid = 0, - FakePacketLoss_Send = 2, - FakePacketLoss_Recv = 3, - FakePacketLag_Send = 4, - FakePacketLag_Recv = 5, - - FakePacketReorder_Send = 6, - FakePacketReorder_Recv = 7, - - FakePacketReorder_Time = 8, - - FakePacketDup_Send = 26, - FakePacketDup_Recv = 27, - - FakePacketDup_TimeMax = 28, - - TimeoutInitial = 24, - - TimeoutConnected = 25, - - SendBufferSize = 9, - - SendRateMin = 10, - SendRateMax = 11, - - NagleTime = 12, - - IP_AllowWithoutAuth = 23, - - SDRClient_ConsecutitivePingTimeoutsFailInitial = 19, - - SDRClient_ConsecutitivePingTimeoutsFail = 20, - - SDRClient_MinPingsBeforePingAccurate = 21, - - SDRClient_SingleSocket = 22, - - SDRClient_ForceRelayCluster = 29, - - SDRClient_DebugTicketAddress = 30, - - SDRClient_ForceProxyAddr = 31, - - LogLevel_AckRTT = 13, - LogLevel_PacketDecode = 14, - LogLevel_Message = 15, - LogLevel_PacketGaps = 16, - LogLevel_P2PRendezvous = 17, - LogLevel_SDRRelayPings = 18, - - Force32Bit = 0x7fffffff - } -} diff --git a/Facepunch.Steamworks/Enum/NetConfigResult.cs b/Facepunch.Steamworks/Enum/NetConfigResult.cs deleted file mode 100644 index 8f8c6a2..0000000 --- a/Facepunch.Steamworks/Enum/NetConfigResult.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Steamworks.Data -{ - enum NetConfigResult - { - BadValue = -1, // No such configuration value - BadScopeObj = -2, // Bad connection handle, etc - BufferTooSmall = -3, // Couldn't fit the result in your buffer - OK = 1, - OKInherited = 2, // A value was not set at this level, but the effective (inherited) value was returned. - - Force32Bit = 0x7fffffff - }; -} diff --git a/Facepunch.Steamworks/Enum/NetConfigType.cs b/Facepunch.Steamworks/Enum/NetConfigType.cs deleted file mode 100644 index 7e7b60d..0000000 --- a/Facepunch.Steamworks/Enum/NetConfigType.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Steamworks.Data -{ - enum NetConfigType - { - Int32 = 1, - Int64 = 2, - Float = 3, - String = 4, - FunctionPtr = 5, // NOTE: When setting callbacks, you should put the pointer into a variable and pass a pointer to that variable. - - Force32Bit = 0x7fffffff - }; -} diff --git a/Facepunch.Steamworks/Enum/NetScope.cs b/Facepunch.Steamworks/Enum/NetScope.cs deleted file mode 100644 index 4d03d5b..0000000 --- a/Facepunch.Steamworks/Enum/NetScope.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Steamworks.Data -{ - internal enum NetScope : int - { - Global = 1, - SocketsInterface = 2, - ListenSocket = 3, - Connection = 4, - - Force32Bit = 0x7fffffff - } -} diff --git a/Facepunch.Steamworks/Facepunch.Steamworks.Posix64.csproj b/Facepunch.Steamworks/Facepunch.Steamworks.Posix.csproj similarity index 57% rename from Facepunch.Steamworks/Facepunch.Steamworks.Posix64.csproj rename to Facepunch.Steamworks/Facepunch.Steamworks.Posix.csproj index df8fd32..eb41812 100644 --- a/Facepunch.Steamworks/Facepunch.Steamworks.Posix64.csproj +++ b/Facepunch.Steamworks/Facepunch.Steamworks.Posix.csproj @@ -1,11 +1,11 @@  - Facepunch.Steamworks.Posix64 - $(DefineConstants);PLATFORM_POSIX64;PLATFORM_POSIX;PLATFORM_64 - netstandard2.0;net46 + Facepunch.Steamworks.Posix + $(DefineConstants);PLATFORM_POSIX + netstandard2.1;net6.0;net46 true - 7.1 + 10 true false Steamworks diff --git a/Facepunch.Steamworks/Facepunch.Steamworks.Posix32.csproj b/Facepunch.Steamworks/Facepunch.Steamworks.Posix32.csproj deleted file mode 100644 index e0ef778..0000000 --- a/Facepunch.Steamworks/Facepunch.Steamworks.Posix32.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Facepunch.Steamworks.Posix32 - $(DefineConstants);PLATFORM_POSIX32;PLATFORM_POSIX;PLATFORM_32 - netstandard2.0;net46 - true - 7.1 - true - false - Steamworks - - - - - diff --git a/Facepunch.Steamworks/Facepunch.Steamworks.Win32.csproj b/Facepunch.Steamworks/Facepunch.Steamworks.Win32.csproj index ce68aa0..25bab61 100644 --- a/Facepunch.Steamworks/Facepunch.Steamworks.Win32.csproj +++ b/Facepunch.Steamworks/Facepunch.Steamworks.Win32.csproj @@ -2,21 +2,41 @@ Facepunch.Steamworks.Win32 - $(DefineConstants);PLATFORM_WIN32;PLATFORM_WIN;PLATFORM_32 - netstandard2.0;net46 - true - 7.1 + $(DefineConstants);PLATFORM_WIN32;PLATFORM_WIN + netstandard2.1;net6.0;net46 + true true true Steamworks + + C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client + Garry Newman + Facepunch.Steamworks.win32 + Steamworks implementation with an emphasis on making things easy. For Windows x86. + https://github.com/Facepunch/Facepunch.Steamworks + Facepunch.Steamworks.jpg + facepunch;steam;unity;steamworks;valve + 10 + MIT + https://github.com/Facepunch/Facepunch.Steamworks.git + git + true + + - + + true + / + + Always + true + content - \ No newline at end of file + diff --git a/Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj b/Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj index bcfe00c..dcd5682 100644 --- a/Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj +++ b/Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj @@ -3,34 +3,53 @@ Facepunch.Steamworks.Win64 $(DefineConstants);PLATFORM_WIN64;PLATFORM_WIN;PLATFORM_64 - netstandard2.0;net46 - true - 7.1 + netstandard2.1;net6.0;net46 + true true - false + true + Steamworks - - - Always - - - C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client Garry Newman Facepunch.Steamworks - Another fucking c# Steamworks implementation + Steamworks implementation with an emphasis on making things easy. For Windows x64. https://github.com/Facepunch/Facepunch.Steamworks - https://files.facepunch.com/garry/c5edce1c-0c21-4c5d-95b6-37743be7455d.jpg + Facepunch.Steamworks.jpg facepunch;steam;unity;steamworks;valve - 2.2.0 - latest + 10 MIT https://github.com/Facepunch/Facepunch.Steamworks.git git + true + + + + true + / + + + Always + true + content + + + + + + + + + + + + + + + diff --git a/Facepunch.Steamworks/Facepunch.Steamworks.jpg b/Facepunch.Steamworks/Facepunch.Steamworks.jpg new file mode 100644 index 0000000..b70822b Binary files /dev/null and b/Facepunch.Steamworks/Facepunch.Steamworks.jpg differ diff --git a/Facepunch.Steamworks/Facepunch.Steamworks.targets b/Facepunch.Steamworks/Facepunch.Steamworks.targets index d463e4f..a6fcce2 100644 --- a/Facepunch.Steamworks/Facepunch.Steamworks.targets +++ b/Facepunch.Steamworks/Facepunch.Steamworks.targets @@ -5,6 +5,11 @@ true + + 2.3.4 + 2.3.4 + + $(DefineConstants);TRACE;DEBUG 1701;1702;1705;618;1591 @@ -28,9 +33,5 @@ - - - - - + diff --git a/Facepunch.Steamworks/Generated/CustomEnums.cs b/Facepunch.Steamworks/Generated/CustomEnums.cs new file mode 100644 index 0000000..885b918 --- /dev/null +++ b/Facepunch.Steamworks/Generated/CustomEnums.cs @@ -0,0 +1,444 @@ +using System; +using System.Runtime.InteropServices; +using System.Linq; +using Steamworks.Data; +using System.Threading.Tasks; + +namespace Steamworks +{ + public enum CallbackType + { + SteamServersConnected = 101, + SteamServerConnectFailure = 102, + SteamServersDisconnected = 103, + ClientGameServerDeny = 113, + GSPolicyResponse = 115, + IPCFailure = 117, + LicensesUpdated = 125, + ValidateAuthTicketResponse = 143, + MicroTxnAuthorizationResponse = 152, + EncryptedAppTicketResponse = 154, + GetAuthSessionTicketResponse = 163, + GameWebCallback = 164, + StoreAuthURLResponse = 165, + MarketEligibilityResponse = 166, + DurationControl = 167, + GSClientApprove = 201, + GSClientDeny = 202, + GSClientKick = 203, + GSClientAchievementStatus = 206, + GSGameplayStats = 207, + GSClientGroupStatus = 208, + GSReputation = 209, + AssociateWithClanResult = 210, + ComputeNewPlayerCompatibilityResult = 211, + PersonaStateChange = 304, + GameOverlayActivated = 331, + GameServerChangeRequested = 332, + GameLobbyJoinRequested = 333, + AvatarImageLoaded = 334, + ClanOfficerListResponse = 335, + FriendRichPresenceUpdate = 336, + GameRichPresenceJoinRequested = 337, + GameConnectedClanChatMsg = 338, + GameConnectedChatJoin = 339, + GameConnectedChatLeave = 340, + DownloadClanActivityCountsResult = 341, + JoinClanChatRoomCompletionResult = 342, + GameConnectedFriendChatMsg = 343, + FriendsGetFollowerCount = 344, + FriendsIsFollowing = 345, + FriendsEnumerateFollowingList = 346, + SetPersonaNameResponse = 347, + UnreadChatMessagesChanged = 348, + OverlayBrowserProtocolNavigation = 349, + EquippedProfileItemsChanged = 350, + EquippedProfileItems = 351, + FavoritesListChanged = 502, + LobbyInvite = 503, + LobbyEnter = 504, + LobbyDataUpdate = 505, + LobbyChatUpdate = 506, + LobbyChatMsg = 507, + LobbyGameCreated = 509, + LobbyMatchList = 510, + LobbyKicked = 512, + LobbyCreated = 513, + PSNGameBootInviteResult = 515, + FavoritesListAccountsUpdated = 516, + IPCountry = 701, + LowBatteryPower = 702, + SteamAPICallCompleted = 703, + SteamShutdown = 704, + CheckFileSignature = 705, + GamepadTextInputDismissed = 714, + AppResumingFromSuspend = 736, + FloatingGamepadTextInputDismissed = 738, + DlcInstalled = 1005, + RegisterActivationCodeResponse = 1008, + NewUrlLaunchParameters = 1014, + AppProofOfPurchaseKeyResponse = 1021, + FileDetailsResult = 1023, + TimedTrialStatus = 1030, + UserStatsReceived = 1101, + UserStatsStored = 1102, + UserAchievementStored = 1103, + LeaderboardFindResult = 1104, + LeaderboardScoresDownloaded = 1105, + LeaderboardScoreUploaded = 1106, + NumberOfCurrentPlayers = 1107, + UserStatsUnloaded = 1108, + GSStatsUnloaded = 1108, + UserAchievementIconFetched = 1109, + GlobalAchievementPercentagesReady = 1110, + LeaderboardUGCSet = 1111, + // PS3TrophiesInstalled = 1112, + GlobalStatsReceived = 1112, + // SocketStatusCallback = 1201, + P2PSessionRequest = 1202, + P2PSessionConnectFail = 1203, + SteamNetConnectionStatusChangedCallback = 1221, + SteamNetAuthenticationStatus = 1222, + SteamNetworkingFakeIPResult = 1223, + SteamNetworkingMessagesSessionRequest = 1251, + SteamNetworkingMessagesSessionFailed = 1252, + SteamRelayNetworkStatus = 1281, + RemoteStorageFileShareResult = 1307, + RemoteStoragePublishFileResult = 1309, + RemoteStorageDeletePublishedFileResult = 1311, + RemoteStorageEnumerateUserPublishedFilesResult = 1312, + RemoteStorageSubscribePublishedFileResult = 1313, + RemoteStorageEnumerateUserSubscribedFilesResult = 1314, + RemoteStorageUnsubscribePublishedFileResult = 1315, + RemoteStorageUpdatePublishedFileResult = 1316, + RemoteStorageDownloadUGCResult = 1317, + RemoteStorageGetPublishedFileDetailsResult = 1318, + RemoteStorageEnumerateWorkshopFilesResult = 1319, + RemoteStorageGetPublishedItemVoteDetailsResult = 1320, + RemoteStoragePublishedFileSubscribed = 1321, + RemoteStoragePublishedFileUnsubscribed = 1322, + RemoteStoragePublishedFileDeleted = 1323, + RemoteStorageUpdateUserPublishedItemVoteResult = 1324, + RemoteStorageUserVoteDetails = 1325, + RemoteStorageEnumerateUserSharedWorkshopFilesResult = 1326, + RemoteStorageSetUserPublishedFileActionResult = 1327, + RemoteStorageEnumeratePublishedFilesByUserActionResult = 1328, + RemoteStoragePublishFileProgress = 1329, + RemoteStoragePublishedFileUpdated = 1330, + RemoteStorageFileWriteAsyncComplete = 1331, + RemoteStorageFileReadAsyncComplete = 1332, + RemoteStorageLocalFileChange = 1333, + GSStatsReceived = 1800, + GSStatsStored = 1801, + HTTPRequestCompleted = 2101, + HTTPRequestHeadersReceived = 2102, + HTTPRequestDataReceived = 2103, + ScreenshotReady = 2301, + ScreenshotRequested = 2302, + SteamInputDeviceConnected = 2801, + SteamInputDeviceDisconnected = 2802, + SteamInputConfigurationLoaded = 2803, + SteamUGCQueryCompleted = 3401, + SteamUGCRequestUGCDetailsResult = 3402, + CreateItemResult = 3403, + SubmitItemUpdateResult = 3404, + ItemInstalled = 3405, + DownloadItemResult = 3406, + UserFavoriteItemsListChanged = 3407, + SetUserItemVoteResult = 3408, + GetUserItemVoteResult = 3409, + StartPlaytimeTrackingResult = 3410, + StopPlaytimeTrackingResult = 3411, + AddUGCDependencyResult = 3412, + RemoveUGCDependencyResult = 3413, + AddAppDependencyResult = 3414, + RemoveAppDependencyResult = 3415, + GetAppDependenciesResult = 3416, + DeleteItemResult = 3417, + UserSubscribedItemsListChanged = 3418, + WorkshopEULAStatus = 3420, + SteamAppInstalled = 3901, + SteamAppUninstalled = 3902, + PlaybackStatusHasChanged = 4001, + VolumeHasChanged = 4002, + MusicPlayerWantsVolume = 4011, + MusicPlayerSelectsQueueEntry = 4012, + MusicPlayerSelectsPlaylistEntry = 4013, + MusicPlayerRemoteWillActivate = 4101, + MusicPlayerRemoteWillDeactivate = 4102, + MusicPlayerRemoteToFront = 4103, + MusicPlayerWillQuit = 4104, + MusicPlayerWantsPlay = 4105, + MusicPlayerWantsPause = 4106, + MusicPlayerWantsPlayPrevious = 4107, + MusicPlayerWantsPlayNext = 4108, + MusicPlayerWantsShuffled = 4109, + MusicPlayerWantsLooped = 4110, + MusicPlayerWantsPlayingRepeatStatus = 4114, + HTML_BrowserReady = 4501, + HTML_NeedsPaint = 4502, + HTML_StartRequest = 4503, + HTML_CloseBrowser = 4504, + HTML_URLChanged = 4505, + HTML_FinishedRequest = 4506, + HTML_OpenLinkInNewTab = 4507, + HTML_ChangedTitle = 4508, + HTML_SearchResults = 4509, + HTML_CanGoBackAndForward = 4510, + HTML_HorizontalScroll = 4511, + HTML_VerticalScroll = 4512, + HTML_LinkAtPosition = 4513, + HTML_JSAlert = 4514, + HTML_JSConfirm = 4515, + HTML_FileOpenDialog = 4516, + HTML_NewWindow = 4521, + HTML_SetCursor = 4522, + HTML_StatusText = 4523, + HTML_ShowToolTip = 4524, + HTML_UpdateToolTip = 4525, + HTML_HideToolTip = 4526, + HTML_BrowserRestarted = 4527, + GetVideoURLResult = 4611, + GetOPFSettingsResult = 4624, + SteamInventoryResultReady = 4700, + SteamInventoryFullUpdate = 4701, + SteamInventoryDefinitionUpdate = 4702, + SteamInventoryEligiblePromoItemDefIDs = 4703, + SteamInventoryStartPurchaseResult = 4704, + SteamInventoryRequestPricesResult = 4705, + SteamParentalSettingsChanged = 5001, + SearchForGameProgressCallback = 5201, + SearchForGameResultCallback = 5202, + RequestPlayersForGameProgressCallback = 5211, + RequestPlayersForGameResultCallback = 5212, + RequestPlayersForGameFinalResultCallback = 5213, + SubmitPlayerResultResultCallback = 5214, + EndGameResultCallback = 5215, + JoinPartyCallback = 5301, + CreateBeaconCallback = 5302, + ReservationNotificationCallback = 5303, + ChangeNumOpenSlotsCallback = 5304, + AvailableBeaconLocationsUpdated = 5305, + ActiveBeaconsUpdated = 5306, + SteamRemotePlaySessionConnected = 5701, + SteamRemotePlaySessionDisconnected = 5702, + } + internal static partial class CallbackTypeFactory + { + internal static System.Collections.Generic.Dictionary All = new System.Collections.Generic.Dictionary + { + { CallbackType.SteamServersConnected, typeof( SteamServersConnected_t )}, + { CallbackType.SteamServerConnectFailure, typeof( SteamServerConnectFailure_t )}, + { CallbackType.SteamServersDisconnected, typeof( SteamServersDisconnected_t )}, + { CallbackType.ClientGameServerDeny, typeof( ClientGameServerDeny_t )}, + { CallbackType.GSPolicyResponse, typeof( GSPolicyResponse_t )}, + { CallbackType.IPCFailure, typeof( IPCFailure_t )}, + { CallbackType.LicensesUpdated, typeof( LicensesUpdated_t )}, + { CallbackType.ValidateAuthTicketResponse, typeof( ValidateAuthTicketResponse_t )}, + { CallbackType.MicroTxnAuthorizationResponse, typeof( MicroTxnAuthorizationResponse_t )}, + { CallbackType.EncryptedAppTicketResponse, typeof( EncryptedAppTicketResponse_t )}, + { CallbackType.GetAuthSessionTicketResponse, typeof( GetAuthSessionTicketResponse_t )}, + { CallbackType.GameWebCallback, typeof( GameWebCallback_t )}, + { CallbackType.StoreAuthURLResponse, typeof( StoreAuthURLResponse_t )}, + { CallbackType.MarketEligibilityResponse, typeof( MarketEligibilityResponse_t )}, + { CallbackType.DurationControl, typeof( DurationControl_t )}, + { CallbackType.GSClientApprove, typeof( GSClientApprove_t )}, + { CallbackType.GSClientDeny, typeof( GSClientDeny_t )}, + { CallbackType.GSClientKick, typeof( GSClientKick_t )}, + { CallbackType.GSClientAchievementStatus, typeof( GSClientAchievementStatus_t )}, + { CallbackType.GSGameplayStats, typeof( GSGameplayStats_t )}, + { CallbackType.GSClientGroupStatus, typeof( GSClientGroupStatus_t )}, + { CallbackType.GSReputation, typeof( GSReputation_t )}, + { CallbackType.AssociateWithClanResult, typeof( AssociateWithClanResult_t )}, + { CallbackType.ComputeNewPlayerCompatibilityResult, typeof( ComputeNewPlayerCompatibilityResult_t )}, + { CallbackType.PersonaStateChange, typeof( PersonaStateChange_t )}, + { CallbackType.GameOverlayActivated, typeof( GameOverlayActivated_t )}, + { CallbackType.GameServerChangeRequested, typeof( GameServerChangeRequested_t )}, + { CallbackType.GameLobbyJoinRequested, typeof( GameLobbyJoinRequested_t )}, + { CallbackType.AvatarImageLoaded, typeof( AvatarImageLoaded_t )}, + { CallbackType.ClanOfficerListResponse, typeof( ClanOfficerListResponse_t )}, + { CallbackType.FriendRichPresenceUpdate, typeof( FriendRichPresenceUpdate_t )}, + { CallbackType.GameRichPresenceJoinRequested, typeof( GameRichPresenceJoinRequested_t )}, + { CallbackType.GameConnectedClanChatMsg, typeof( GameConnectedClanChatMsg_t )}, + { CallbackType.GameConnectedChatJoin, typeof( GameConnectedChatJoin_t )}, + { CallbackType.GameConnectedChatLeave, typeof( GameConnectedChatLeave_t )}, + { CallbackType.DownloadClanActivityCountsResult, typeof( DownloadClanActivityCountsResult_t )}, + { CallbackType.JoinClanChatRoomCompletionResult, typeof( JoinClanChatRoomCompletionResult_t )}, + { CallbackType.GameConnectedFriendChatMsg, typeof( GameConnectedFriendChatMsg_t )}, + { CallbackType.FriendsGetFollowerCount, typeof( FriendsGetFollowerCount_t )}, + { CallbackType.FriendsIsFollowing, typeof( FriendsIsFollowing_t )}, + { CallbackType.FriendsEnumerateFollowingList, typeof( FriendsEnumerateFollowingList_t )}, + { CallbackType.SetPersonaNameResponse, typeof( SetPersonaNameResponse_t )}, + { CallbackType.UnreadChatMessagesChanged, typeof( UnreadChatMessagesChanged_t )}, + { CallbackType.OverlayBrowserProtocolNavigation, typeof( OverlayBrowserProtocolNavigation_t )}, + { CallbackType.EquippedProfileItemsChanged, typeof( EquippedProfileItemsChanged_t )}, + { CallbackType.EquippedProfileItems, typeof( EquippedProfileItems_t )}, + { CallbackType.FavoritesListChanged, typeof( FavoritesListChanged_t )}, + { CallbackType.LobbyInvite, typeof( LobbyInvite_t )}, + { CallbackType.LobbyEnter, typeof( LobbyEnter_t )}, + { CallbackType.LobbyDataUpdate, typeof( LobbyDataUpdate_t )}, + { CallbackType.LobbyChatUpdate, typeof( LobbyChatUpdate_t )}, + { CallbackType.LobbyChatMsg, typeof( LobbyChatMsg_t )}, + { CallbackType.LobbyGameCreated, typeof( LobbyGameCreated_t )}, + { CallbackType.LobbyMatchList, typeof( LobbyMatchList_t )}, + { CallbackType.LobbyKicked, typeof( LobbyKicked_t )}, + { CallbackType.LobbyCreated, typeof( LobbyCreated_t )}, + { CallbackType.PSNGameBootInviteResult, typeof( PSNGameBootInviteResult_t )}, + { CallbackType.FavoritesListAccountsUpdated, typeof( FavoritesListAccountsUpdated_t )}, + { CallbackType.IPCountry, typeof( IPCountry_t )}, + { CallbackType.LowBatteryPower, typeof( LowBatteryPower_t )}, + { CallbackType.SteamAPICallCompleted, typeof( SteamAPICallCompleted_t )}, + { CallbackType.SteamShutdown, typeof( SteamShutdown_t )}, + { CallbackType.CheckFileSignature, typeof( CheckFileSignature_t )}, + { CallbackType.GamepadTextInputDismissed, typeof( GamepadTextInputDismissed_t )}, + { CallbackType.AppResumingFromSuspend, typeof( AppResumingFromSuspend_t )}, + { CallbackType.FloatingGamepadTextInputDismissed, typeof( FloatingGamepadTextInputDismissed_t )}, + { CallbackType.DlcInstalled, typeof( DlcInstalled_t )}, + { CallbackType.RegisterActivationCodeResponse, typeof( RegisterActivationCodeResponse_t )}, + { CallbackType.NewUrlLaunchParameters, typeof( NewUrlLaunchParameters_t )}, + { CallbackType.AppProofOfPurchaseKeyResponse, typeof( AppProofOfPurchaseKeyResponse_t )}, + { CallbackType.FileDetailsResult, typeof( FileDetailsResult_t )}, + { CallbackType.TimedTrialStatus, typeof( TimedTrialStatus_t )}, + { CallbackType.UserStatsReceived, typeof( UserStatsReceived_t )}, + { CallbackType.UserStatsStored, typeof( UserStatsStored_t )}, + { CallbackType.UserAchievementStored, typeof( UserAchievementStored_t )}, + { CallbackType.LeaderboardFindResult, typeof( LeaderboardFindResult_t )}, + { CallbackType.LeaderboardScoresDownloaded, typeof( LeaderboardScoresDownloaded_t )}, + { CallbackType.LeaderboardScoreUploaded, typeof( LeaderboardScoreUploaded_t )}, + { CallbackType.NumberOfCurrentPlayers, typeof( NumberOfCurrentPlayers_t )}, + { CallbackType.UserStatsUnloaded, typeof( UserStatsUnloaded_t )}, + // { CallbackType.GSStatsUnloaded, typeof( GSStatsUnloaded_t )}, + { CallbackType.UserAchievementIconFetched, typeof( UserAchievementIconFetched_t )}, + { CallbackType.GlobalAchievementPercentagesReady, typeof( GlobalAchievementPercentagesReady_t )}, + { CallbackType.LeaderboardUGCSet, typeof( LeaderboardUGCSet_t )}, + { CallbackType.GlobalStatsReceived, typeof( GlobalStatsReceived_t )}, + { CallbackType.P2PSessionRequest, typeof( P2PSessionRequest_t )}, + { CallbackType.P2PSessionConnectFail, typeof( P2PSessionConnectFail_t )}, + { CallbackType.SteamNetConnectionStatusChangedCallback, typeof( SteamNetConnectionStatusChangedCallback_t )}, + { CallbackType.SteamNetAuthenticationStatus, typeof( SteamNetAuthenticationStatus_t )}, + { CallbackType.SteamNetworkingFakeIPResult, typeof( SteamNetworkingFakeIPResult_t )}, + { CallbackType.SteamNetworkingMessagesSessionRequest, typeof( SteamNetworkingMessagesSessionRequest_t )}, + { CallbackType.SteamNetworkingMessagesSessionFailed, typeof( SteamNetworkingMessagesSessionFailed_t )}, + { CallbackType.SteamRelayNetworkStatus, typeof( SteamRelayNetworkStatus_t )}, + { CallbackType.RemoteStorageFileShareResult, typeof( RemoteStorageFileShareResult_t )}, + { CallbackType.RemoteStoragePublishFileResult, typeof( RemoteStoragePublishFileResult_t )}, + { CallbackType.RemoteStorageDeletePublishedFileResult, typeof( RemoteStorageDeletePublishedFileResult_t )}, + { CallbackType.RemoteStorageEnumerateUserPublishedFilesResult, typeof( RemoteStorageEnumerateUserPublishedFilesResult_t )}, + { CallbackType.RemoteStorageSubscribePublishedFileResult, typeof( RemoteStorageSubscribePublishedFileResult_t )}, + { CallbackType.RemoteStorageEnumerateUserSubscribedFilesResult, typeof( RemoteStorageEnumerateUserSubscribedFilesResult_t )}, + { CallbackType.RemoteStorageUnsubscribePublishedFileResult, typeof( RemoteStorageUnsubscribePublishedFileResult_t )}, + { CallbackType.RemoteStorageUpdatePublishedFileResult, typeof( RemoteStorageUpdatePublishedFileResult_t )}, + { CallbackType.RemoteStorageDownloadUGCResult, typeof( RemoteStorageDownloadUGCResult_t )}, + { CallbackType.RemoteStorageGetPublishedFileDetailsResult, typeof( RemoteStorageGetPublishedFileDetailsResult_t )}, + { CallbackType.RemoteStorageEnumerateWorkshopFilesResult, typeof( RemoteStorageEnumerateWorkshopFilesResult_t )}, + { CallbackType.RemoteStorageGetPublishedItemVoteDetailsResult, typeof( RemoteStorageGetPublishedItemVoteDetailsResult_t )}, + { CallbackType.RemoteStoragePublishedFileSubscribed, typeof( RemoteStoragePublishedFileSubscribed_t )}, + { CallbackType.RemoteStoragePublishedFileUnsubscribed, typeof( RemoteStoragePublishedFileUnsubscribed_t )}, + { CallbackType.RemoteStoragePublishedFileDeleted, typeof( RemoteStoragePublishedFileDeleted_t )}, + { CallbackType.RemoteStorageUpdateUserPublishedItemVoteResult, typeof( RemoteStorageUpdateUserPublishedItemVoteResult_t )}, + { CallbackType.RemoteStorageUserVoteDetails, typeof( RemoteStorageUserVoteDetails_t )}, + { CallbackType.RemoteStorageEnumerateUserSharedWorkshopFilesResult, typeof( RemoteStorageEnumerateUserSharedWorkshopFilesResult_t )}, + { CallbackType.RemoteStorageSetUserPublishedFileActionResult, typeof( RemoteStorageSetUserPublishedFileActionResult_t )}, + { CallbackType.RemoteStorageEnumeratePublishedFilesByUserActionResult, typeof( RemoteStorageEnumeratePublishedFilesByUserActionResult_t )}, + { CallbackType.RemoteStoragePublishFileProgress, typeof( RemoteStoragePublishFileProgress_t )}, + { CallbackType.RemoteStoragePublishedFileUpdated, typeof( RemoteStoragePublishedFileUpdated_t )}, + { CallbackType.RemoteStorageFileWriteAsyncComplete, typeof( RemoteStorageFileWriteAsyncComplete_t )}, + { CallbackType.RemoteStorageFileReadAsyncComplete, typeof( RemoteStorageFileReadAsyncComplete_t )}, + { CallbackType.RemoteStorageLocalFileChange, typeof( RemoteStorageLocalFileChange_t )}, + { CallbackType.GSStatsReceived, typeof( GSStatsReceived_t )}, + { CallbackType.GSStatsStored, typeof( GSStatsStored_t )}, + { CallbackType.HTTPRequestCompleted, typeof( HTTPRequestCompleted_t )}, + { CallbackType.HTTPRequestHeadersReceived, typeof( HTTPRequestHeadersReceived_t )}, + { CallbackType.HTTPRequestDataReceived, typeof( HTTPRequestDataReceived_t )}, + { CallbackType.ScreenshotReady, typeof( ScreenshotReady_t )}, + { CallbackType.ScreenshotRequested, typeof( ScreenshotRequested_t )}, + { CallbackType.SteamInputDeviceConnected, typeof( SteamInputDeviceConnected_t )}, + { CallbackType.SteamInputDeviceDisconnected, typeof( SteamInputDeviceDisconnected_t )}, + { CallbackType.SteamInputConfigurationLoaded, typeof( SteamInputConfigurationLoaded_t )}, + { CallbackType.SteamUGCQueryCompleted, typeof( SteamUGCQueryCompleted_t )}, + { CallbackType.SteamUGCRequestUGCDetailsResult, typeof( SteamUGCRequestUGCDetailsResult_t )}, + { CallbackType.CreateItemResult, typeof( CreateItemResult_t )}, + { CallbackType.SubmitItemUpdateResult, typeof( SubmitItemUpdateResult_t )}, + { CallbackType.ItemInstalled, typeof( ItemInstalled_t )}, + { CallbackType.DownloadItemResult, typeof( DownloadItemResult_t )}, + { CallbackType.UserFavoriteItemsListChanged, typeof( UserFavoriteItemsListChanged_t )}, + { CallbackType.SetUserItemVoteResult, typeof( SetUserItemVoteResult_t )}, + { CallbackType.GetUserItemVoteResult, typeof( GetUserItemVoteResult_t )}, + { CallbackType.StartPlaytimeTrackingResult, typeof( StartPlaytimeTrackingResult_t )}, + { CallbackType.StopPlaytimeTrackingResult, typeof( StopPlaytimeTrackingResult_t )}, + { CallbackType.AddUGCDependencyResult, typeof( AddUGCDependencyResult_t )}, + { CallbackType.RemoveUGCDependencyResult, typeof( RemoveUGCDependencyResult_t )}, + { CallbackType.AddAppDependencyResult, typeof( AddAppDependencyResult_t )}, + { CallbackType.RemoveAppDependencyResult, typeof( RemoveAppDependencyResult_t )}, + { CallbackType.GetAppDependenciesResult, typeof( GetAppDependenciesResult_t )}, + { CallbackType.DeleteItemResult, typeof( DeleteItemResult_t )}, + { CallbackType.UserSubscribedItemsListChanged, typeof( UserSubscribedItemsListChanged_t )}, + { CallbackType.WorkshopEULAStatus, typeof( WorkshopEULAStatus_t )}, + { CallbackType.SteamAppInstalled, typeof( SteamAppInstalled_t )}, + { CallbackType.SteamAppUninstalled, typeof( SteamAppUninstalled_t )}, + { CallbackType.PlaybackStatusHasChanged, typeof( PlaybackStatusHasChanged_t )}, + { CallbackType.VolumeHasChanged, typeof( VolumeHasChanged_t )}, + { CallbackType.MusicPlayerWantsVolume, typeof( MusicPlayerWantsVolume_t )}, + { CallbackType.MusicPlayerSelectsQueueEntry, typeof( MusicPlayerSelectsQueueEntry_t )}, + { CallbackType.MusicPlayerSelectsPlaylistEntry, typeof( MusicPlayerSelectsPlaylistEntry_t )}, + { CallbackType.MusicPlayerRemoteWillActivate, typeof( MusicPlayerRemoteWillActivate_t )}, + { CallbackType.MusicPlayerRemoteWillDeactivate, typeof( MusicPlayerRemoteWillDeactivate_t )}, + { CallbackType.MusicPlayerRemoteToFront, typeof( MusicPlayerRemoteToFront_t )}, + { CallbackType.MusicPlayerWillQuit, typeof( MusicPlayerWillQuit_t )}, + { CallbackType.MusicPlayerWantsPlay, typeof( MusicPlayerWantsPlay_t )}, + { CallbackType.MusicPlayerWantsPause, typeof( MusicPlayerWantsPause_t )}, + { CallbackType.MusicPlayerWantsPlayPrevious, typeof( MusicPlayerWantsPlayPrevious_t )}, + { CallbackType.MusicPlayerWantsPlayNext, typeof( MusicPlayerWantsPlayNext_t )}, + { CallbackType.MusicPlayerWantsShuffled, typeof( MusicPlayerWantsShuffled_t )}, + { CallbackType.MusicPlayerWantsLooped, typeof( MusicPlayerWantsLooped_t )}, + { CallbackType.MusicPlayerWantsPlayingRepeatStatus, typeof( MusicPlayerWantsPlayingRepeatStatus_t )}, + { CallbackType.HTML_BrowserReady, typeof( HTML_BrowserReady_t )}, + { CallbackType.HTML_NeedsPaint, typeof( HTML_NeedsPaint_t )}, + { CallbackType.HTML_StartRequest, typeof( HTML_StartRequest_t )}, + { CallbackType.HTML_CloseBrowser, typeof( HTML_CloseBrowser_t )}, + { CallbackType.HTML_URLChanged, typeof( HTML_URLChanged_t )}, + { CallbackType.HTML_FinishedRequest, typeof( HTML_FinishedRequest_t )}, + { CallbackType.HTML_OpenLinkInNewTab, typeof( HTML_OpenLinkInNewTab_t )}, + { CallbackType.HTML_ChangedTitle, typeof( HTML_ChangedTitle_t )}, + { CallbackType.HTML_SearchResults, typeof( HTML_SearchResults_t )}, + { CallbackType.HTML_CanGoBackAndForward, typeof( HTML_CanGoBackAndForward_t )}, + { CallbackType.HTML_HorizontalScroll, typeof( HTML_HorizontalScroll_t )}, + { CallbackType.HTML_VerticalScroll, typeof( HTML_VerticalScroll_t )}, + { CallbackType.HTML_LinkAtPosition, typeof( HTML_LinkAtPosition_t )}, + { CallbackType.HTML_JSAlert, typeof( HTML_JSAlert_t )}, + { CallbackType.HTML_JSConfirm, typeof( HTML_JSConfirm_t )}, + { CallbackType.HTML_FileOpenDialog, typeof( HTML_FileOpenDialog_t )}, + { CallbackType.HTML_NewWindow, typeof( HTML_NewWindow_t )}, + { CallbackType.HTML_SetCursor, typeof( HTML_SetCursor_t )}, + { CallbackType.HTML_StatusText, typeof( HTML_StatusText_t )}, + { CallbackType.HTML_ShowToolTip, typeof( HTML_ShowToolTip_t )}, + { CallbackType.HTML_UpdateToolTip, typeof( HTML_UpdateToolTip_t )}, + { CallbackType.HTML_HideToolTip, typeof( HTML_HideToolTip_t )}, + { CallbackType.HTML_BrowserRestarted, typeof( HTML_BrowserRestarted_t )}, + { CallbackType.GetVideoURLResult, typeof( GetVideoURLResult_t )}, + { CallbackType.GetOPFSettingsResult, typeof( GetOPFSettingsResult_t )}, + { CallbackType.SteamInventoryResultReady, typeof( SteamInventoryResultReady_t )}, + { CallbackType.SteamInventoryFullUpdate, typeof( SteamInventoryFullUpdate_t )}, + { CallbackType.SteamInventoryDefinitionUpdate, typeof( SteamInventoryDefinitionUpdate_t )}, + { CallbackType.SteamInventoryEligiblePromoItemDefIDs, typeof( SteamInventoryEligiblePromoItemDefIDs_t )}, + { CallbackType.SteamInventoryStartPurchaseResult, typeof( SteamInventoryStartPurchaseResult_t )}, + { CallbackType.SteamInventoryRequestPricesResult, typeof( SteamInventoryRequestPricesResult_t )}, + { CallbackType.SteamParentalSettingsChanged, typeof( SteamParentalSettingsChanged_t )}, + { CallbackType.SearchForGameProgressCallback, typeof( SearchForGameProgressCallback_t )}, + { CallbackType.SearchForGameResultCallback, typeof( SearchForGameResultCallback_t )}, + { CallbackType.RequestPlayersForGameProgressCallback, typeof( RequestPlayersForGameProgressCallback_t )}, + { CallbackType.RequestPlayersForGameResultCallback, typeof( RequestPlayersForGameResultCallback_t )}, + { CallbackType.RequestPlayersForGameFinalResultCallback, typeof( RequestPlayersForGameFinalResultCallback_t )}, + { CallbackType.SubmitPlayerResultResultCallback, typeof( SubmitPlayerResultResultCallback_t )}, + { CallbackType.EndGameResultCallback, typeof( EndGameResultCallback_t )}, + { CallbackType.JoinPartyCallback, typeof( JoinPartyCallback_t )}, + { CallbackType.CreateBeaconCallback, typeof( CreateBeaconCallback_t )}, + { CallbackType.ReservationNotificationCallback, typeof( ReservationNotificationCallback_t )}, + { CallbackType.ChangeNumOpenSlotsCallback, typeof( ChangeNumOpenSlotsCallback_t )}, + { CallbackType.AvailableBeaconLocationsUpdated, typeof( AvailableBeaconLocationsUpdated_t )}, + { CallbackType.ActiveBeaconsUpdated, typeof( ActiveBeaconsUpdated_t )}, + { CallbackType.SteamRemotePlaySessionConnected, typeof( SteamRemotePlaySessionConnected_t )}, + { CallbackType.SteamRemotePlaySessionDisconnected, typeof( SteamRemotePlaySessionDisconnected_t )}, + }; + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamAppList.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamAppList.cs new file mode 100644 index 0000000..b674575 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamAppList.cs @@ -0,0 +1,83 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamAppList : SteamInterface + { + + internal ISteamAppList( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamAppList_v001", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamAppList_v001(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamAppList_v001(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamAppList_GetNumInstalledApps", CallingConvention = Platform.CC)] + private static extern uint _GetNumInstalledApps( IntPtr self ); + + #endregion + internal uint GetNumInstalledApps() + { + var returnValue = _GetNumInstalledApps( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamAppList_GetInstalledApps", CallingConvention = Platform.CC)] + private static extern uint _GetInstalledApps( IntPtr self, [In,Out] AppId[] pvecAppID, uint unMaxAppIDs ); + + #endregion + internal uint GetInstalledApps( [In,Out] AppId[] pvecAppID, uint unMaxAppIDs ) + { + var returnValue = _GetInstalledApps( Self, pvecAppID, unMaxAppIDs ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamAppList_GetAppName", CallingConvention = Platform.CC)] + private static extern int _GetAppName( IntPtr self, AppId nAppID, IntPtr pchName, int cchNameMax ); + + #endregion + internal int GetAppName( AppId nAppID, out string pchName ) + { + using var mempchName = Helpers.TakeMemory(); + var returnValue = _GetAppName( Self, nAppID, mempchName, (1024 * 32) ); + pchName = Helpers.MemoryToString( mempchName ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamAppList_GetAppInstallDir", CallingConvention = Platform.CC)] + private static extern int _GetAppInstallDir( IntPtr self, AppId nAppID, IntPtr pchDirectory, int cchNameMax ); + + #endregion + internal int GetAppInstallDir( AppId nAppID, out string pchDirectory ) + { + using var mempchDirectory = Helpers.TakeMemory(); + var returnValue = _GetAppInstallDir( Self, nAppID, mempchDirectory, (1024 * 32) ); + pchDirectory = Helpers.MemoryToString( mempchDirectory ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamAppList_GetAppBuildId", CallingConvention = Platform.CC)] + private static extern int _GetAppBuildId( IntPtr self, AppId nAppID ); + + #endregion + internal int GetAppBuildId( AppId nAppID ) + { + var returnValue = _GetAppBuildId( Self, nAppID ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs index af26303..2888c39 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamApps.cs @@ -7,80 +7,23 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamApps : SteamInterface + internal unsafe class ISteamApps : SteamInterface { - public override string InterfaceName => "STEAMAPPS_INTERFACE_VERSION008"; - public override void InitInternals() + internal ISteamApps( bool IsGameServer ) { - _BIsSubscribed = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _BIsLowViolence = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _BIsCybercafe = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _BIsVACBanned = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _GetCurrentGameLanguage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _GetAvailableGameLanguages = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _BIsSubscribedApp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _BIsDlcInstalled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _GetEarliestPurchaseUnixTime = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _BIsSubscribedFromFreeWeekend = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetDLCCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _BGetDLCDataByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _InstallDLC = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _UninstallDLC = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _RequestAppProofOfPurchaseKey = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetCurrentBetaName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _MarkContentCorrupt = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _GetInstalledDepots = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetAppInstallDir = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _BIsAppInstalled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _GetAppOwner = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _GetLaunchQueryParam = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _GetDlcDownloadProgress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _GetAppBuildId = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _RequestAllProofOfPurchaseKeys = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _GetFileDetails = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _GetLaunchCommandLine = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _BIsSubscribedFromFamilySharing = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _BIsSubscribed = null; - _BIsLowViolence = null; - _BIsCybercafe = null; - _BIsVACBanned = null; - _GetCurrentGameLanguage = null; - _GetAvailableGameLanguages = null; - _BIsSubscribedApp = null; - _BIsDlcInstalled = null; - _GetEarliestPurchaseUnixTime = null; - _BIsSubscribedFromFreeWeekend = null; - _GetDLCCount = null; - _BGetDLCDataByIndex = null; - _InstallDLC = null; - _UninstallDLC = null; - _RequestAppProofOfPurchaseKey = null; - _GetCurrentBetaName = null; - _MarkContentCorrupt = null; - _GetInstalledDepots = null; - _GetAppInstallDir = null; - _BIsAppInstalled = null; - _GetAppOwner = null; - _GetLaunchQueryParam = null; - _GetDlcDownloadProgress = null; - _GetAppBuildId = null; - _RequestAllProofOfPurchaseKeys = null; - _GetFileDetails = null; - _GetLaunchCommandLine = null; - _BIsSubscribedFromFamilySharing = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamApps_v008", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamApps_v008(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamApps_v008(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsSubscribed", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsSubscribed( IntPtr self ); - private FBIsSubscribed _BIsSubscribed; + private static extern bool _BIsSubscribed( IntPtr self ); #endregion internal bool BIsSubscribed() @@ -90,10 +33,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsLowViolence", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsLowViolence( IntPtr self ); - private FBIsLowViolence _BIsLowViolence; + private static extern bool _BIsLowViolence( IntPtr self ); #endregion internal bool BIsLowViolence() @@ -103,10 +45,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsCybercafe", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsCybercafe( IntPtr self ); - private FBIsCybercafe _BIsCybercafe; + private static extern bool _BIsCybercafe( IntPtr self ); #endregion internal bool BIsCybercafe() @@ -116,10 +57,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsVACBanned", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsVACBanned( IntPtr self ); - private FBIsVACBanned _BIsVACBanned; + private static extern bool _BIsVACBanned( IntPtr self ); #endregion internal bool BIsVACBanned() @@ -129,9 +69,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetCurrentGameLanguage( IntPtr self ); - private FGetCurrentGameLanguage _GetCurrentGameLanguage; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetCurrentGameLanguage", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetCurrentGameLanguage( IntPtr self ); #endregion internal string GetCurrentGameLanguage() @@ -141,9 +80,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetAvailableGameLanguages( IntPtr self ); - private FGetAvailableGameLanguages _GetAvailableGameLanguages; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetAvailableGameLanguages", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetAvailableGameLanguages( IntPtr self ); #endregion internal string GetAvailableGameLanguages() @@ -153,10 +91,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedApp", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsSubscribedApp( IntPtr self, AppId appID ); - private FBIsSubscribedApp _BIsSubscribedApp; + private static extern bool _BIsSubscribedApp( IntPtr self, AppId appID ); #endregion internal bool BIsSubscribedApp( AppId appID ) @@ -166,10 +103,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsDlcInstalled", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsDlcInstalled( IntPtr self, AppId appID ); - private FBIsDlcInstalled _BIsDlcInstalled; + private static extern bool _BIsDlcInstalled( IntPtr self, AppId appID ); #endregion internal bool BIsDlcInstalled( AppId appID ) @@ -179,9 +115,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetEarliestPurchaseUnixTime( IntPtr self, AppId nAppID ); - private FGetEarliestPurchaseUnixTime _GetEarliestPurchaseUnixTime; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime", CallingConvention = Platform.CC)] + private static extern uint _GetEarliestPurchaseUnixTime( IntPtr self, AppId nAppID ); #endregion internal uint GetEarliestPurchaseUnixTime( AppId nAppID ) @@ -191,10 +126,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsSubscribedFromFreeWeekend( IntPtr self ); - private FBIsSubscribedFromFreeWeekend _BIsSubscribedFromFreeWeekend; + private static extern bool _BIsSubscribedFromFreeWeekend( IntPtr self ); #endregion internal bool BIsSubscribedFromFreeWeekend() @@ -204,9 +138,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetDLCCount( IntPtr self ); - private FGetDLCCount _GetDLCCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetDLCCount", CallingConvention = Platform.CC)] + private static extern int _GetDLCCount( IntPtr self ); #endregion internal int GetDLCCount() @@ -216,24 +149,22 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BGetDLCDataByIndex", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBGetDLCDataByIndex( IntPtr self, int iDLC, ref AppId pAppID, [MarshalAs( UnmanagedType.U1 )] ref bool pbAvailable, IntPtr pchName, int cchNameBufferSize ); - private FBGetDLCDataByIndex _BGetDLCDataByIndex; + private static extern bool _BGetDLCDataByIndex( IntPtr self, int iDLC, ref AppId pAppID, [MarshalAs( UnmanagedType.U1 )] ref bool pbAvailable, IntPtr pchName, int cchNameBufferSize ); #endregion internal bool BGetDLCDataByIndex( int iDLC, ref AppId pAppID, [MarshalAs( UnmanagedType.U1 )] ref bool pbAvailable, out string pchName ) { - IntPtr mempchName = Helpers.TakeMemory(); + using var mempchName = Helpers.TakeMemory(); var returnValue = _BGetDLCDataByIndex( Self, iDLC, ref pAppID, ref pbAvailable, mempchName, (1024 * 32) ); pchName = Helpers.MemoryToString( mempchName ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FInstallDLC( IntPtr self, AppId nAppID ); - private FInstallDLC _InstallDLC; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_InstallDLC", CallingConvention = Platform.CC)] + private static extern void _InstallDLC( IntPtr self, AppId nAppID ); #endregion internal void InstallDLC( AppId nAppID ) @@ -242,9 +173,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FUninstallDLC( IntPtr self, AppId nAppID ); - private FUninstallDLC _UninstallDLC; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_UninstallDLC", CallingConvention = Platform.CC)] + private static extern void _UninstallDLC( IntPtr self, AppId nAppID ); #endregion internal void UninstallDLC( AppId nAppID ) @@ -253,9 +183,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRequestAppProofOfPurchaseKey( IntPtr self, AppId nAppID ); - private FRequestAppProofOfPurchaseKey _RequestAppProofOfPurchaseKey; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey", CallingConvention = Platform.CC)] + private static extern void _RequestAppProofOfPurchaseKey( IntPtr self, AppId nAppID ); #endregion internal void RequestAppProofOfPurchaseKey( AppId nAppID ) @@ -264,25 +193,23 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetCurrentBetaName", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetCurrentBetaName( IntPtr self, IntPtr pchName, int cchNameBufferSize ); - private FGetCurrentBetaName _GetCurrentBetaName; + private static extern bool _GetCurrentBetaName( IntPtr self, IntPtr pchName, int cchNameBufferSize ); #endregion internal bool GetCurrentBetaName( out string pchName ) { - IntPtr mempchName = Helpers.TakeMemory(); + using var mempchName = Helpers.TakeMemory(); var returnValue = _GetCurrentBetaName( Self, mempchName, (1024 * 32) ); pchName = Helpers.MemoryToString( mempchName ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_MarkContentCorrupt", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FMarkContentCorrupt( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bMissingFilesOnly ); - private FMarkContentCorrupt _MarkContentCorrupt; + private static extern bool _MarkContentCorrupt( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bMissingFilesOnly ); #endregion internal bool MarkContentCorrupt( [MarshalAs( UnmanagedType.U1 )] bool bMissingFilesOnly ) @@ -292,9 +219,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetInstalledDepots( IntPtr self, AppId appID, [In,Out] DepotId_t[] pvecDepots, uint cMaxDepots ); - private FGetInstalledDepots _GetInstalledDepots; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetInstalledDepots", CallingConvention = Platform.CC)] + private static extern uint _GetInstalledDepots( IntPtr self, AppId appID, [In,Out] DepotId_t[] pvecDepots, uint cMaxDepots ); #endregion internal uint GetInstalledDepots( AppId appID, [In,Out] DepotId_t[] pvecDepots, uint cMaxDepots ) @@ -304,24 +230,22 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetAppInstallDir( IntPtr self, AppId appID, IntPtr pchFolder, uint cchFolderBufferSize ); - private FGetAppInstallDir _GetAppInstallDir; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetAppInstallDir", CallingConvention = Platform.CC)] + private static extern uint _GetAppInstallDir( IntPtr self, AppId appID, IntPtr pchFolder, uint cchFolderBufferSize ); #endregion internal uint GetAppInstallDir( AppId appID, out string pchFolder ) { - IntPtr mempchFolder = Helpers.TakeMemory(); + using var mempchFolder = Helpers.TakeMemory(); var returnValue = _GetAppInstallDir( Self, appID, mempchFolder, (1024 * 32) ); pchFolder = Helpers.MemoryToString( mempchFolder ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsAppInstalled", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsAppInstalled( IntPtr self, AppId appID ); - private FBIsAppInstalled _BIsAppInstalled; + private static extern bool _BIsAppInstalled( IntPtr self, AppId appID ); #endregion internal bool BIsAppInstalled( AppId appID ) @@ -331,31 +255,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetAppOwner( IntPtr self, ref SteamId retVal ); - #else - private delegate SteamId FGetAppOwner( IntPtr self ); - #endif - private FGetAppOwner _GetAppOwner; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetAppOwner", CallingConvention = Platform.CC)] + private static extern SteamId _GetAppOwner( IntPtr self ); #endregion internal SteamId GetAppOwner() { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetAppOwner( Self, ref retVal ); - return retVal; - #else var returnValue = _GetAppOwner( Self ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetLaunchQueryParam( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); - private FGetLaunchQueryParam _GetLaunchQueryParam; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetLaunchQueryParam", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetLaunchQueryParam( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); #endregion internal string GetLaunchQueryParam( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ) @@ -365,10 +277,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetDlcDownloadProgress", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetDlcDownloadProgress( IntPtr self, AppId nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal ); - private FGetDlcDownloadProgress _GetDlcDownloadProgress; + private static extern bool _GetDlcDownloadProgress( IntPtr self, AppId nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal ); #endregion internal bool GetDlcDownloadProgress( AppId nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal ) @@ -378,9 +289,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetAppBuildId( IntPtr self ); - private FGetAppBuildId _GetAppBuildId; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetAppBuildId", CallingConvention = Platform.CC)] + private static extern int _GetAppBuildId( IntPtr self ); #endregion internal int GetAppBuildId() @@ -390,9 +300,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRequestAllProofOfPurchaseKeys( IntPtr self ); - private FRequestAllProofOfPurchaseKeys _RequestAllProofOfPurchaseKeys; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys", CallingConvention = Platform.CC)] + private static extern void _RequestAllProofOfPurchaseKeys( IntPtr self ); #endregion internal void RequestAllProofOfPurchaseKeys() @@ -401,36 +310,33 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FGetFileDetails( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszFileName ); - private FGetFileDetails _GetFileDetails; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetFileDetails", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetFileDetails( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszFileName ); #endregion - internal async Task GetFileDetails( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszFileName ) + internal CallResult GetFileDetails( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszFileName ) { var returnValue = _GetFileDetails( Self, pszFileName ); - return await FileDetailsResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetLaunchCommandLine( IntPtr self, IntPtr pszCommandLine, int cubCommandLine ); - private FGetLaunchCommandLine _GetLaunchCommandLine; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_GetLaunchCommandLine", CallingConvention = Platform.CC)] + private static extern int _GetLaunchCommandLine( IntPtr self, IntPtr pszCommandLine, int cubCommandLine ); #endregion internal int GetLaunchCommandLine( out string pszCommandLine ) { - IntPtr mempszCommandLine = Helpers.TakeMemory(); + using var mempszCommandLine = Helpers.TakeMemory(); var returnValue = _GetLaunchCommandLine( Self, mempszCommandLine, (1024 * 32) ); pszCommandLine = Helpers.MemoryToString( mempszCommandLine ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsSubscribedFromFamilySharing( IntPtr self ); - private FBIsSubscribedFromFamilySharing _BIsSubscribedFromFamilySharing; + private static extern bool _BIsSubscribedFromFamilySharing( IntPtr self ); #endregion internal bool BIsSubscribedFromFamilySharing() @@ -439,5 +345,29 @@ namespace Steamworks return returnValue; } + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsTimedTrial", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BIsTimedTrial( IntPtr self, ref uint punSecondsAllowed, ref uint punSecondsPlayed ); + + #endregion + internal bool BIsTimedTrial( ref uint punSecondsAllowed, ref uint punSecondsPlayed ) + { + var returnValue = _BIsTimedTrial( Self, ref punSecondsAllowed, ref punSecondsPlayed ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamApps_SetDlcContext", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetDlcContext( IntPtr self, AppId nAppID ); + + #endregion + internal bool SetDlcContext( AppId nAppID ) + { + var returnValue = _SetDlcContext( Self, nAppID ); + return returnValue; + } + } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamClient.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamClient.cs new file mode 100644 index 0000000..418f5da --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamClient.cs @@ -0,0 +1,414 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamClient : SteamInterface + { + + internal ISteamClient( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe", CallingConvention = Platform.CC)] + private static extern HSteamPipe _CreateSteamPipe( IntPtr self ); + + #endregion + internal HSteamPipe CreateSteamPipe() + { + var returnValue = _CreateSteamPipe( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_BReleaseSteamPipe", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BReleaseSteamPipe( IntPtr self, HSteamPipe hSteamPipe ); + + #endregion + internal bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) + { + var returnValue = _BReleaseSteamPipe( Self, hSteamPipe ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_ConnectToGlobalUser", CallingConvention = Platform.CC)] + private static extern HSteamUser _ConnectToGlobalUser( IntPtr self, HSteamPipe hSteamPipe ); + + #endregion + internal HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) + { + var returnValue = _ConnectToGlobalUser( Self, hSteamPipe ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_CreateLocalUser", CallingConvention = Platform.CC)] + private static extern HSteamUser _CreateLocalUser( IntPtr self, ref HSteamPipe phSteamPipe, AccountType eAccountType ); + + #endregion + internal HSteamUser CreateLocalUser( ref HSteamPipe phSteamPipe, AccountType eAccountType ) + { + var returnValue = _CreateLocalUser( Self, ref phSteamPipe, eAccountType ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_ReleaseUser", CallingConvention = Platform.CC)] + private static extern void _ReleaseUser( IntPtr self, HSteamPipe hSteamPipe, HSteamUser hUser ); + + #endregion + internal void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) + { + _ReleaseUser( Self, hSteamPipe, hUser ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamUser", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamUser( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamUser( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServer", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamGameServer( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamGameServer( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_SetLocalIPBinding", CallingConvention = Platform.CC)] + private static extern void _SetLocalIPBinding( IntPtr self, ref SteamIPAddress unIP, ushort usPort ); + + #endregion + internal void SetLocalIPBinding( ref SteamIPAddress unIP, ushort usPort ) + { + _SetLocalIPBinding( Self, ref unIP, usPort ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamFriends", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamFriends( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamFriends( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamUtils", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamUtils( IntPtr self, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamUtils( HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamUtils( Self, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmaking", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamMatchmaking( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamMatchmaking( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmakingServers", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamMatchmakingServers( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamMatchmakingServers( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamGenericInterface", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamGenericInterface( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamGenericInterface( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamUserStats", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamUserStats( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamUserStats( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServerStats", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamGameServerStats( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamGameServerStats( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamApps", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamApps( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamApps( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamNetworking", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamNetworking( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamNetworking( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamRemoteStorage", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamRemoteStorage( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamRemoteStorage( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamScreenshots", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamScreenshots( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamScreenshots( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamGameSearch", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamGameSearch( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamGameSearch( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamGameSearch( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetIPCCallCount", CallingConvention = Platform.CC)] + private static extern uint _GetIPCCallCount( IntPtr self ); + + #endregion + internal uint GetIPCCallCount() + { + var returnValue = _GetIPCCallCount( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_SetWarningMessageHook", CallingConvention = Platform.CC)] + private static extern void _SetWarningMessageHook( IntPtr self, IntPtr pFunction ); + + #endregion + internal void SetWarningMessageHook( IntPtr pFunction ) + { + _SetWarningMessageHook( Self, pFunction ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BShutdownIfAllPipesClosed( IntPtr self ); + + #endregion + internal bool BShutdownIfAllPipesClosed() + { + var returnValue = _BShutdownIfAllPipesClosed( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamHTTP", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamHTTP( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamHTTP( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamController", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamController( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamController( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamUGC", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamUGC( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamUGC( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamAppList", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamAppList( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamAppList( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamMusic", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamMusic( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamMusic( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamMusicRemote", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamMusicRemote( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamMusicRemote( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamMusicRemote( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamHTMLSurface", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamHTMLSurface( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamHTMLSurface( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamHTMLSurface( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamInventory", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamInventory( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamInventory( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamVideo", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamVideo( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamVideo( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamParentalSettings", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamParentalSettings( IntPtr self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamParentalSettings( HSteamUser hSteamuser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamParentalSettings( Self, hSteamuser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamInput", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamInput( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamInput( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamInput( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamParties", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamParties( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamParties( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamParties( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamClient_GetISteamRemotePlay", CallingConvention = Platform.CC)] + private static extern IntPtr _GetISteamRemotePlay( IntPtr self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ); + + #endregion + internal IntPtr GetISteamRemotePlay( HSteamUser hSteamUser, HSteamPipe hSteamPipe, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersion ) + { + var returnValue = _GetISteamRemotePlay( Self, hSteamUser, hSteamPipe, pchVersion ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamController.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamController.cs new file mode 100644 index 0000000..d93dccf --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamController.cs @@ -0,0 +1,392 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamController : SteamInterface + { + + internal ISteamController( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamController_v008", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamController_v008(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamController_v008(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_Init", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _Init( IntPtr self ); + + #endregion + internal bool Init() + { + var returnValue = _Init( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_Shutdown", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _Shutdown( IntPtr self ); + + #endregion + internal bool Shutdown() + { + var returnValue = _Shutdown( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_RunFrame", CallingConvention = Platform.CC)] + private static extern void _RunFrame( IntPtr self ); + + #endregion + internal void RunFrame() + { + _RunFrame( Self ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetConnectedControllers", CallingConvention = Platform.CC)] + private static extern int _GetConnectedControllers( IntPtr self, [In,Out] ControllerHandle_t[] handlesOut ); + + #endregion + internal int GetConnectedControllers( [In,Out] ControllerHandle_t[] handlesOut ) + { + var returnValue = _GetConnectedControllers( Self, handlesOut ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetActionSetHandle", CallingConvention = Platform.CC)] + private static extern ControllerActionSetHandle_t _GetActionSetHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionSetName ); + + #endregion + internal ControllerActionSetHandle_t GetActionSetHandle( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionSetName ) + { + var returnValue = _GetActionSetHandle( Self, pszActionSetName ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_ActivateActionSet", CallingConvention = Platform.CC)] + private static extern void _ActivateActionSet( IntPtr self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ); + + #endregion + internal void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) + { + _ActivateActionSet( Self, controllerHandle, actionSetHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetCurrentActionSet", CallingConvention = Platform.CC)] + private static extern ControllerActionSetHandle_t _GetCurrentActionSet( IntPtr self, ControllerHandle_t controllerHandle ); + + #endregion + internal ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) + { + var returnValue = _GetCurrentActionSet( Self, controllerHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_ActivateActionSetLayer", CallingConvention = Platform.CC)] + private static extern void _ActivateActionSetLayer( IntPtr self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); + + #endregion + internal void ActivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) + { + _ActivateActionSetLayer( Self, controllerHandle, actionSetLayerHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_DeactivateActionSetLayer", CallingConvention = Platform.CC)] + private static extern void _DeactivateActionSetLayer( IntPtr self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); + + #endregion + internal void DeactivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) + { + _DeactivateActionSetLayer( Self, controllerHandle, actionSetLayerHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_DeactivateAllActionSetLayers", CallingConvention = Platform.CC)] + private static extern void _DeactivateAllActionSetLayers( IntPtr self, ControllerHandle_t controllerHandle ); + + #endregion + internal void DeactivateAllActionSetLayers( ControllerHandle_t controllerHandle ) + { + _DeactivateAllActionSetLayers( Self, controllerHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetActiveActionSetLayers", CallingConvention = Platform.CC)] + private static extern int _GetActiveActionSetLayers( IntPtr self, ControllerHandle_t controllerHandle, [In,Out] ControllerActionSetHandle_t[] handlesOut ); + + #endregion + internal int GetActiveActionSetLayers( ControllerHandle_t controllerHandle, [In,Out] ControllerActionSetHandle_t[] handlesOut ) + { + var returnValue = _GetActiveActionSetLayers( Self, controllerHandle, handlesOut ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetDigitalActionHandle", CallingConvention = Platform.CC)] + private static extern ControllerDigitalActionHandle_t _GetDigitalActionHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ); + + #endregion + internal ControllerDigitalActionHandle_t GetDigitalActionHandle( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ) + { + var returnValue = _GetDigitalActionHandle( Self, pszActionName ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetDigitalActionData", CallingConvention = Platform.CC)] + private static extern DigitalState _GetDigitalActionData( IntPtr self, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ); + + #endregion + internal DigitalState GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) + { + var returnValue = _GetDigitalActionData( Self, controllerHandle, digitalActionHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetDigitalActionOrigins", CallingConvention = Platform.CC)] + private static extern int _GetDigitalActionOrigins( IntPtr self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, ref ControllerActionOrigin originsOut ); + + #endregion + internal int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, ref ControllerActionOrigin originsOut ) + { + var returnValue = _GetDigitalActionOrigins( Self, controllerHandle, actionSetHandle, digitalActionHandle, ref originsOut ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetAnalogActionHandle", CallingConvention = Platform.CC)] + private static extern ControllerAnalogActionHandle_t _GetAnalogActionHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ); + + #endregion + internal ControllerAnalogActionHandle_t GetAnalogActionHandle( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ) + { + var returnValue = _GetAnalogActionHandle( Self, pszActionName ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetAnalogActionData", CallingConvention = Platform.CC)] + private static extern AnalogState _GetAnalogActionData( IntPtr self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ); + + #endregion + internal AnalogState GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) + { + var returnValue = _GetAnalogActionData( Self, controllerHandle, analogActionHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetAnalogActionOrigins", CallingConvention = Platform.CC)] + private static extern int _GetAnalogActionOrigins( IntPtr self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, ref ControllerActionOrigin originsOut ); + + #endregion + internal int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, ref ControllerActionOrigin originsOut ) + { + var returnValue = _GetAnalogActionOrigins( Self, controllerHandle, actionSetHandle, analogActionHandle, ref originsOut ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetGlyphForActionOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetGlyphForActionOrigin( IntPtr self, ControllerActionOrigin eOrigin ); + + #endregion + internal string GetGlyphForActionOrigin( ControllerActionOrigin eOrigin ) + { + var returnValue = _GetGlyphForActionOrigin( Self, eOrigin ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetStringForActionOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetStringForActionOrigin( IntPtr self, ControllerActionOrigin eOrigin ); + + #endregion + internal string GetStringForActionOrigin( ControllerActionOrigin eOrigin ) + { + var returnValue = _GetStringForActionOrigin( Self, eOrigin ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_StopAnalogActionMomentum", CallingConvention = Platform.CC)] + private static extern void _StopAnalogActionMomentum( IntPtr self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ); + + #endregion + internal void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) + { + _StopAnalogActionMomentum( Self, controllerHandle, eAction ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetMotionData", CallingConvention = Platform.CC)] + private static extern MotionState _GetMotionData( IntPtr self, ControllerHandle_t controllerHandle ); + + #endregion + internal MotionState GetMotionData( ControllerHandle_t controllerHandle ) + { + var returnValue = _GetMotionData( Self, controllerHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_TriggerHapticPulse", CallingConvention = Platform.CC)] + private static extern void _TriggerHapticPulse( IntPtr self, ControllerHandle_t controllerHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec ); + + #endregion + internal void TriggerHapticPulse( ControllerHandle_t controllerHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec ) + { + _TriggerHapticPulse( Self, controllerHandle, eTargetPad, usDurationMicroSec ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_TriggerRepeatedHapticPulse", CallingConvention = Platform.CC)] + private static extern void _TriggerRepeatedHapticPulse( IntPtr self, ControllerHandle_t controllerHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags ); + + #endregion + internal void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags ) + { + _TriggerRepeatedHapticPulse( Self, controllerHandle, eTargetPad, usDurationMicroSec, usOffMicroSec, unRepeat, nFlags ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_TriggerVibration", CallingConvention = Platform.CC)] + private static extern void _TriggerVibration( IntPtr self, ControllerHandle_t controllerHandle, ushort usLeftSpeed, ushort usRightSpeed ); + + #endregion + internal void TriggerVibration( ControllerHandle_t controllerHandle, ushort usLeftSpeed, ushort usRightSpeed ) + { + _TriggerVibration( Self, controllerHandle, usLeftSpeed, usRightSpeed ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_SetLEDColor", CallingConvention = Platform.CC)] + private static extern void _SetLEDColor( IntPtr self, ControllerHandle_t controllerHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags ); + + #endregion + internal void SetLEDColor( ControllerHandle_t controllerHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags ) + { + _SetLEDColor( Self, controllerHandle, nColorR, nColorG, nColorB, nFlags ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_ShowBindingPanel", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ShowBindingPanel( IntPtr self, ControllerHandle_t controllerHandle ); + + #endregion + internal bool ShowBindingPanel( ControllerHandle_t controllerHandle ) + { + var returnValue = _ShowBindingPanel( Self, controllerHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetInputTypeForHandle", CallingConvention = Platform.CC)] + private static extern InputType _GetInputTypeForHandle( IntPtr self, ControllerHandle_t controllerHandle ); + + #endregion + internal InputType GetInputTypeForHandle( ControllerHandle_t controllerHandle ) + { + var returnValue = _GetInputTypeForHandle( Self, controllerHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetControllerForGamepadIndex", CallingConvention = Platform.CC)] + private static extern ControllerHandle_t _GetControllerForGamepadIndex( IntPtr self, int nIndex ); + + #endregion + internal ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) + { + var returnValue = _GetControllerForGamepadIndex( Self, nIndex ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetGamepadIndexForController", CallingConvention = Platform.CC)] + private static extern int _GetGamepadIndexForController( IntPtr self, ControllerHandle_t ulControllerHandle ); + + #endregion + internal int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) + { + var returnValue = _GetGamepadIndexForController( Self, ulControllerHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetStringForXboxOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetStringForXboxOrigin( IntPtr self, XboxOrigin eOrigin ); + + #endregion + internal string GetStringForXboxOrigin( XboxOrigin eOrigin ) + { + var returnValue = _GetStringForXboxOrigin( Self, eOrigin ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetGlyphForXboxOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetGlyphForXboxOrigin( IntPtr self, XboxOrigin eOrigin ); + + #endregion + internal string GetGlyphForXboxOrigin( XboxOrigin eOrigin ) + { + var returnValue = _GetGlyphForXboxOrigin( Self, eOrigin ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetActionOriginFromXboxOrigin", CallingConvention = Platform.CC)] + private static extern ControllerActionOrigin _GetActionOriginFromXboxOrigin( IntPtr self, ControllerHandle_t controllerHandle, XboxOrigin eOrigin ); + + #endregion + internal ControllerActionOrigin GetActionOriginFromXboxOrigin( ControllerHandle_t controllerHandle, XboxOrigin eOrigin ) + { + var returnValue = _GetActionOriginFromXboxOrigin( Self, controllerHandle, eOrigin ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_TranslateActionOrigin", CallingConvention = Platform.CC)] + private static extern ControllerActionOrigin _TranslateActionOrigin( IntPtr self, InputType eDestinationInputType, ControllerActionOrigin eSourceOrigin ); + + #endregion + internal ControllerActionOrigin TranslateActionOrigin( InputType eDestinationInputType, ControllerActionOrigin eSourceOrigin ) + { + var returnValue = _TranslateActionOrigin( Self, eDestinationInputType, eSourceOrigin ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamController_GetControllerBindingRevision", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetControllerBindingRevision( IntPtr self, ControllerHandle_t controllerHandle, ref int pMajor, ref int pMinor ); + + #endregion + internal bool GetControllerBindingRevision( ControllerHandle_t controllerHandle, ref int pMajor, ref int pMinor ) + { + var returnValue = _GetControllerBindingRevision( Self, controllerHandle, ref pMajor, ref pMinor ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs index d0cf691..b8e5cd4 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamFriends.cs @@ -7,169 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamFriends : SteamInterface + internal unsafe class ISteamFriends : SteamInterface { - public override string InterfaceName => "SteamFriends017"; - public override void InitInternals() + internal ISteamFriends( bool IsGameServer ) { - _GetPersonaName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _SetPersonaName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetPersonaState = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _GetFriendCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _GetFriendByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _GetFriendRelationship = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetFriendPersonaState = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _GetFriendPersonaName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _GetFriendGamePlayed = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _GetFriendPersonaNameHistory = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetFriendSteamLevel = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GetPlayerNickname = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _GetFriendsGroupCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _GetFriendsGroupIDByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _GetFriendsGroupName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetFriendsGroupMembersCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _GetFriendsGroupMembersList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _HasFriend = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetClanCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _GetClanByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _GetClanName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _GetClanTag = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _GetClanActivityCounts = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _DownloadClanActivityCounts = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _GetFriendCountFromSource = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _GetFriendFromSourceByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _IsUserInSource = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _SetInGameVoiceSpeaking = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _ActivateGameOverlay = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _ActivateGameOverlayToUser = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - _ActivateGameOverlayToWebPage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 240 ) ) ); - _ActivateGameOverlayToStore = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 248 ) ) ); - _SetPlayedWith = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 256 ) ) ); - _ActivateGameOverlayInviteDialog = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 264 ) ) ); - _GetSmallFriendAvatar = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 272 ) ) ); - _GetMediumFriendAvatar = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 280 ) ) ); - _GetLargeFriendAvatar = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 288 ) ) ); - _RequestUserInformation = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 296 ) ) ); - _RequestClanOfficerList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 304 ) ) ); - _GetClanOwner = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 312 ) ) ); - _GetClanOfficerCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 320 ) ) ); - _GetClanOfficerByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 328 ) ) ); - _GetUserRestrictions = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 336 ) ) ); - _SetRichPresence = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 344 ) ) ); - _ClearRichPresence = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 352 ) ) ); - _GetFriendRichPresence = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 360 ) ) ); - _GetFriendRichPresenceKeyCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 368 ) ) ); - _GetFriendRichPresenceKeyByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 376 ) ) ); - _RequestFriendRichPresence = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 384 ) ) ); - _InviteUserToGame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 392 ) ) ); - _GetCoplayFriendCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 400 ) ) ); - _GetCoplayFriend = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 408 ) ) ); - _GetFriendCoplayTime = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 416 ) ) ); - _GetFriendCoplayGame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 424 ) ) ); - _JoinClanChatRoom = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 432 ) ) ); - _LeaveClanChatRoom = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 440 ) ) ); - _GetClanChatMemberCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 448 ) ) ); - _GetChatMemberByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 456 ) ) ); - _SendClanChatMessage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 464 ) ) ); - _GetClanChatMessage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 472 ) ) ); - _IsClanChatAdmin = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 480 ) ) ); - _IsClanChatWindowOpenInSteam = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 488 ) ) ); - _OpenClanChatWindowInSteam = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 496 ) ) ); - _CloseClanChatWindowInSteam = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 504 ) ) ); - _SetListenForFriendsMessages = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 512 ) ) ); - _ReplyToFriendMessage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 520 ) ) ); - _GetFriendMessage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 528 ) ) ); - _GetFollowerCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 536 ) ) ); - _IsFollowing = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 544 ) ) ); - _EnumerateFollowingList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 552 ) ) ); - _IsClanPublic = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 560 ) ) ); - _IsClanOfficialGameGroup = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 568 ) ) ); - _GetNumChatsWithUnreadPriorityMessages = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 576 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _GetPersonaName = null; - _SetPersonaName = null; - _GetPersonaState = null; - _GetFriendCount = null; - _GetFriendByIndex = null; - _GetFriendRelationship = null; - _GetFriendPersonaState = null; - _GetFriendPersonaName = null; - _GetFriendGamePlayed = null; - _GetFriendPersonaNameHistory = null; - _GetFriendSteamLevel = null; - _GetPlayerNickname = null; - _GetFriendsGroupCount = null; - _GetFriendsGroupIDByIndex = null; - _GetFriendsGroupName = null; - _GetFriendsGroupMembersCount = null; - _GetFriendsGroupMembersList = null; - _HasFriend = null; - _GetClanCount = null; - _GetClanByIndex = null; - _GetClanName = null; - _GetClanTag = null; - _GetClanActivityCounts = null; - _DownloadClanActivityCounts = null; - _GetFriendCountFromSource = null; - _GetFriendFromSourceByIndex = null; - _IsUserInSource = null; - _SetInGameVoiceSpeaking = null; - _ActivateGameOverlay = null; - _ActivateGameOverlayToUser = null; - _ActivateGameOverlayToWebPage = null; - _ActivateGameOverlayToStore = null; - _SetPlayedWith = null; - _ActivateGameOverlayInviteDialog = null; - _GetSmallFriendAvatar = null; - _GetMediumFriendAvatar = null; - _GetLargeFriendAvatar = null; - _RequestUserInformation = null; - _RequestClanOfficerList = null; - _GetClanOwner = null; - _GetClanOfficerCount = null; - _GetClanOfficerByIndex = null; - _GetUserRestrictions = null; - _SetRichPresence = null; - _ClearRichPresence = null; - _GetFriendRichPresence = null; - _GetFriendRichPresenceKeyCount = null; - _GetFriendRichPresenceKeyByIndex = null; - _RequestFriendRichPresence = null; - _InviteUserToGame = null; - _GetCoplayFriendCount = null; - _GetCoplayFriend = null; - _GetFriendCoplayTime = null; - _GetFriendCoplayGame = null; - _JoinClanChatRoom = null; - _LeaveClanChatRoom = null; - _GetClanChatMemberCount = null; - _GetChatMemberByIndex = null; - _SendClanChatMessage = null; - _GetClanChatMessage = null; - _IsClanChatAdmin = null; - _IsClanChatWindowOpenInSteam = null; - _OpenClanChatWindowInSteam = null; - _CloseClanChatWindowInSteam = null; - _SetListenForFriendsMessages = null; - _ReplyToFriendMessage = null; - _GetFriendMessage = null; - _GetFollowerCount = null; - _IsFollowing = null; - _EnumerateFollowingList = null; - _IsClanPublic = null; - _IsClanOfficialGameGroup = null; - _GetNumChatsWithUnreadPriorityMessages = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamFriends_v017", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamFriends_v017(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamFriends_v017(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetPersonaName( IntPtr self ); - private FGetPersonaName _GetPersonaName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetPersonaName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetPersonaName( IntPtr self ); #endregion internal string GetPersonaName() @@ -179,21 +32,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FSetPersonaName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPersonaName ); - private FSetPersonaName _SetPersonaName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_SetPersonaName", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _SetPersonaName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPersonaName ); #endregion - internal async Task SetPersonaName( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPersonaName ) + internal CallResult SetPersonaName( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPersonaName ) { var returnValue = _SetPersonaName( Self, pchPersonaName ); - return await SetPersonaNameResponse_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate FriendState FGetPersonaState( IntPtr self ); - private FGetPersonaState _GetPersonaState; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetPersonaState", CallingConvention = Platform.CC)] + private static extern FriendState _GetPersonaState( IntPtr self ); #endregion internal FriendState GetPersonaState() @@ -203,9 +54,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendCount( IntPtr self, int iFriendFlags ); - private FGetFriendCount _GetFriendCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendCount", CallingConvention = Platform.CC)] + private static extern int _GetFriendCount( IntPtr self, int iFriendFlags ); #endregion internal int GetFriendCount( int iFriendFlags ) @@ -215,31 +65,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetFriendByIndex( IntPtr self, ref SteamId retVal, int iFriend, int iFriendFlags ); - #else - private delegate SteamId FGetFriendByIndex( IntPtr self, int iFriend, int iFriendFlags ); - #endif - private FGetFriendByIndex _GetFriendByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendByIndex", CallingConvention = Platform.CC)] + private static extern SteamId _GetFriendByIndex( IntPtr self, int iFriend, int iFriendFlags ); #endregion internal SteamId GetFriendByIndex( int iFriend, int iFriendFlags ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetFriendByIndex( Self, ref retVal, iFriend, iFriendFlags ); - return retVal; - #else var returnValue = _GetFriendByIndex( Self, iFriend, iFriendFlags ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Relationship FGetFriendRelationship( IntPtr self, SteamId steamIDFriend ); - private FGetFriendRelationship _GetFriendRelationship; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendRelationship", CallingConvention = Platform.CC)] + private static extern Relationship _GetFriendRelationship( IntPtr self, SteamId steamIDFriend ); #endregion internal Relationship GetFriendRelationship( SteamId steamIDFriend ) @@ -249,9 +87,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate FriendState FGetFriendPersonaState( IntPtr self, SteamId steamIDFriend ); - private FGetFriendPersonaState _GetFriendPersonaState; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaState", CallingConvention = Platform.CC)] + private static extern FriendState _GetFriendPersonaState( IntPtr self, SteamId steamIDFriend ); #endregion internal FriendState GetFriendPersonaState( SteamId steamIDFriend ) @@ -261,9 +98,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetFriendPersonaName( IntPtr self, SteamId steamIDFriend ); - private FGetFriendPersonaName _GetFriendPersonaName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetFriendPersonaName( IntPtr self, SteamId steamIDFriend ); #endregion internal string GetFriendPersonaName( SteamId steamIDFriend ) @@ -273,10 +109,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendGamePlayed", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetFriendGamePlayed( IntPtr self, SteamId steamIDFriend, ref FriendGameInfo_t pFriendGameInfo ); - private FGetFriendGamePlayed _GetFriendGamePlayed; + private static extern bool _GetFriendGamePlayed( IntPtr self, SteamId steamIDFriend, ref FriendGameInfo_t pFriendGameInfo ); #endregion internal bool GetFriendGamePlayed( SteamId steamIDFriend, ref FriendGameInfo_t pFriendGameInfo ) @@ -286,9 +121,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetFriendPersonaNameHistory( IntPtr self, SteamId steamIDFriend, int iPersonaName ); - private FGetFriendPersonaNameHistory _GetFriendPersonaNameHistory; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetFriendPersonaNameHistory( IntPtr self, SteamId steamIDFriend, int iPersonaName ); #endregion internal string GetFriendPersonaNameHistory( SteamId steamIDFriend, int iPersonaName ) @@ -298,9 +132,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendSteamLevel( IntPtr self, SteamId steamIDFriend ); - private FGetFriendSteamLevel _GetFriendSteamLevel; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendSteamLevel", CallingConvention = Platform.CC)] + private static extern int _GetFriendSteamLevel( IntPtr self, SteamId steamIDFriend ); #endregion internal int GetFriendSteamLevel( SteamId steamIDFriend ) @@ -310,9 +143,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetPlayerNickname( IntPtr self, SteamId steamIDPlayer ); - private FGetPlayerNickname _GetPlayerNickname; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetPlayerNickname", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetPlayerNickname( IntPtr self, SteamId steamIDPlayer ); #endregion internal string GetPlayerNickname( SteamId steamIDPlayer ) @@ -322,9 +154,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendsGroupCount( IntPtr self ); - private FGetFriendsGroupCount _GetFriendsGroupCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupCount", CallingConvention = Platform.CC)] + private static extern int _GetFriendsGroupCount( IntPtr self ); #endregion internal int GetFriendsGroupCount() @@ -334,9 +165,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate FriendsGroupID_t FGetFriendsGroupIDByIndex( IntPtr self, int iFG ); - private FGetFriendsGroupIDByIndex _GetFriendsGroupIDByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex", CallingConvention = Platform.CC)] + private static extern FriendsGroupID_t _GetFriendsGroupIDByIndex( IntPtr self, int iFG ); #endregion internal FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) @@ -346,9 +176,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetFriendsGroupName( IntPtr self, FriendsGroupID_t friendsGroupID ); - private FGetFriendsGroupName _GetFriendsGroupName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetFriendsGroupName( IntPtr self, FriendsGroupID_t friendsGroupID ); #endregion internal string GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) @@ -358,9 +187,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendsGroupMembersCount( IntPtr self, FriendsGroupID_t friendsGroupID ); - private FGetFriendsGroupMembersCount _GetFriendsGroupMembersCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount", CallingConvention = Platform.CC)] + private static extern int _GetFriendsGroupMembersCount( IntPtr self, FriendsGroupID_t friendsGroupID ); #endregion internal int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) @@ -370,9 +198,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FGetFriendsGroupMembersList( IntPtr self, FriendsGroupID_t friendsGroupID, [In,Out] SteamId[] pOutSteamIDMembers, int nMembersCount ); - private FGetFriendsGroupMembersList _GetFriendsGroupMembersList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersList", CallingConvention = Platform.CC)] + private static extern void _GetFriendsGroupMembersList( IntPtr self, FriendsGroupID_t friendsGroupID, [In,Out] SteamId[] pOutSteamIDMembers, int nMembersCount ); #endregion internal void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, [In,Out] SteamId[] pOutSteamIDMembers, int nMembersCount ) @@ -381,10 +208,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_HasFriend", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FHasFriend( IntPtr self, SteamId steamIDFriend, int iFriendFlags ); - private FHasFriend _HasFriend; + private static extern bool _HasFriend( IntPtr self, SteamId steamIDFriend, int iFriendFlags ); #endregion internal bool HasFriend( SteamId steamIDFriend, int iFriendFlags ) @@ -394,9 +220,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetClanCount( IntPtr self ); - private FGetClanCount _GetClanCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanCount", CallingConvention = Platform.CC)] + private static extern int _GetClanCount( IntPtr self ); #endregion internal int GetClanCount() @@ -406,31 +231,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetClanByIndex( IntPtr self, ref SteamId retVal, int iClan ); - #else - private delegate SteamId FGetClanByIndex( IntPtr self, int iClan ); - #endif - private FGetClanByIndex _GetClanByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanByIndex", CallingConvention = Platform.CC)] + private static extern SteamId _GetClanByIndex( IntPtr self, int iClan ); #endregion internal SteamId GetClanByIndex( int iClan ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetClanByIndex( Self, ref retVal, iClan ); - return retVal; - #else var returnValue = _GetClanByIndex( Self, iClan ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetClanName( IntPtr self, SteamId steamIDClan ); - private FGetClanName _GetClanName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetClanName( IntPtr self, SteamId steamIDClan ); #endregion internal string GetClanName( SteamId steamIDClan ) @@ -440,9 +253,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetClanTag( IntPtr self, SteamId steamIDClan ); - private FGetClanTag _GetClanTag; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanTag", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetClanTag( IntPtr self, SteamId steamIDClan ); #endregion internal string GetClanTag( SteamId steamIDClan ) @@ -452,10 +264,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanActivityCounts", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetClanActivityCounts( IntPtr self, SteamId steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting ); - private FGetClanActivityCounts _GetClanActivityCounts; + private static extern bool _GetClanActivityCounts( IntPtr self, SteamId steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting ); #endregion internal bool GetClanActivityCounts( SteamId steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting ) @@ -465,21 +276,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FDownloadClanActivityCounts( IntPtr self, [In,Out] SteamId[] psteamIDClans, int cClansToRequest ); - private FDownloadClanActivityCounts _DownloadClanActivityCounts; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_DownloadClanActivityCounts", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _DownloadClanActivityCounts( IntPtr self, [In,Out] SteamId[] psteamIDClans, int cClansToRequest ); #endregion - internal async Task DownloadClanActivityCounts( [In,Out] SteamId[] psteamIDClans, int cClansToRequest ) + internal CallResult DownloadClanActivityCounts( [In,Out] SteamId[] psteamIDClans, int cClansToRequest ) { var returnValue = _DownloadClanActivityCounts( Self, psteamIDClans, cClansToRequest ); - return await DownloadClanActivityCountsResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendCountFromSource( IntPtr self, SteamId steamIDSource ); - private FGetFriendCountFromSource _GetFriendCountFromSource; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendCountFromSource", CallingConvention = Platform.CC)] + private static extern int _GetFriendCountFromSource( IntPtr self, SteamId steamIDSource ); #endregion internal int GetFriendCountFromSource( SteamId steamIDSource ) @@ -489,32 +298,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetFriendFromSourceByIndex( IntPtr self, ref SteamId retVal, SteamId steamIDSource, int iFriend ); - #else - private delegate SteamId FGetFriendFromSourceByIndex( IntPtr self, SteamId steamIDSource, int iFriend ); - #endif - private FGetFriendFromSourceByIndex _GetFriendFromSourceByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex", CallingConvention = Platform.CC)] + private static extern SteamId _GetFriendFromSourceByIndex( IntPtr self, SteamId steamIDSource, int iFriend ); #endregion internal SteamId GetFriendFromSourceByIndex( SteamId steamIDSource, int iFriend ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetFriendFromSourceByIndex( Self, ref retVal, steamIDSource, iFriend ); - return retVal; - #else var returnValue = _GetFriendFromSourceByIndex( Self, steamIDSource, iFriend ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_IsUserInSource", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsUserInSource( IntPtr self, SteamId steamIDUser, SteamId steamIDSource ); - private FIsUserInSource _IsUserInSource; + private static extern bool _IsUserInSource( IntPtr self, SteamId steamIDUser, SteamId steamIDSource ); #endregion internal bool IsUserInSource( SteamId steamIDUser, SteamId steamIDSource ) @@ -524,9 +321,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetInGameVoiceSpeaking( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.U1 )] bool bSpeaking ); - private FSetInGameVoiceSpeaking _SetInGameVoiceSpeaking; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking", CallingConvention = Platform.CC)] + private static extern void _SetInGameVoiceSpeaking( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.U1 )] bool bSpeaking ); #endregion internal void SetInGameVoiceSpeaking( SteamId steamIDUser, [MarshalAs( UnmanagedType.U1 )] bool bSpeaking ) @@ -535,9 +331,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FActivateGameOverlay( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDialog ); - private FActivateGameOverlay _ActivateGameOverlay; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlay", CallingConvention = Platform.CC)] + private static extern void _ActivateGameOverlay( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDialog ); #endregion internal void ActivateGameOverlay( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDialog ) @@ -546,9 +341,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FActivateGameOverlayToUser( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDialog, SteamId steamID ); - private FActivateGameOverlayToUser _ActivateGameOverlayToUser; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToUser", CallingConvention = Platform.CC)] + private static extern void _ActivateGameOverlayToUser( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDialog, SteamId steamID ); #endregion internal void ActivateGameOverlayToUser( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDialog, SteamId steamID ) @@ -557,9 +351,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FActivateGameOverlayToWebPage( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchURL, ActivateGameOverlayToWebPageMode eMode ); - private FActivateGameOverlayToWebPage _ActivateGameOverlayToWebPage; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage", CallingConvention = Platform.CC)] + private static extern void _ActivateGameOverlayToWebPage( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchURL, ActivateGameOverlayToWebPageMode eMode ); #endregion internal void ActivateGameOverlayToWebPage( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchURL, ActivateGameOverlayToWebPageMode eMode ) @@ -568,9 +361,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FActivateGameOverlayToStore( IntPtr self, AppId nAppID, OverlayToStoreFlag eFlag ); - private FActivateGameOverlayToStore _ActivateGameOverlayToStore; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToStore", CallingConvention = Platform.CC)] + private static extern void _ActivateGameOverlayToStore( IntPtr self, AppId nAppID, OverlayToStoreFlag eFlag ); #endregion internal void ActivateGameOverlayToStore( AppId nAppID, OverlayToStoreFlag eFlag ) @@ -579,9 +371,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetPlayedWith( IntPtr self, SteamId steamIDUserPlayedWith ); - private FSetPlayedWith _SetPlayedWith; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_SetPlayedWith", CallingConvention = Platform.CC)] + private static extern void _SetPlayedWith( IntPtr self, SteamId steamIDUserPlayedWith ); #endregion internal void SetPlayedWith( SteamId steamIDUserPlayedWith ) @@ -590,9 +381,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FActivateGameOverlayInviteDialog( IntPtr self, SteamId steamIDLobby ); - private FActivateGameOverlayInviteDialog _ActivateGameOverlayInviteDialog; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog", CallingConvention = Platform.CC)] + private static extern void _ActivateGameOverlayInviteDialog( IntPtr self, SteamId steamIDLobby ); #endregion internal void ActivateGameOverlayInviteDialog( SteamId steamIDLobby ) @@ -601,9 +391,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetSmallFriendAvatar( IntPtr self, SteamId steamIDFriend ); - private FGetSmallFriendAvatar _GetSmallFriendAvatar; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetSmallFriendAvatar", CallingConvention = Platform.CC)] + private static extern int _GetSmallFriendAvatar( IntPtr self, SteamId steamIDFriend ); #endregion internal int GetSmallFriendAvatar( SteamId steamIDFriend ) @@ -613,9 +402,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetMediumFriendAvatar( IntPtr self, SteamId steamIDFriend ); - private FGetMediumFriendAvatar _GetMediumFriendAvatar; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetMediumFriendAvatar", CallingConvention = Platform.CC)] + private static extern int _GetMediumFriendAvatar( IntPtr self, SteamId steamIDFriend ); #endregion internal int GetMediumFriendAvatar( SteamId steamIDFriend ) @@ -625,9 +413,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetLargeFriendAvatar( IntPtr self, SteamId steamIDFriend ); - private FGetLargeFriendAvatar _GetLargeFriendAvatar; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetLargeFriendAvatar", CallingConvention = Platform.CC)] + private static extern int _GetLargeFriendAvatar( IntPtr self, SteamId steamIDFriend ); #endregion internal int GetLargeFriendAvatar( SteamId steamIDFriend ) @@ -637,10 +424,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_RequestUserInformation", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRequestUserInformation( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.U1 )] bool bRequireNameOnly ); - private FRequestUserInformation _RequestUserInformation; + private static extern bool _RequestUserInformation( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.U1 )] bool bRequireNameOnly ); #endregion internal bool RequestUserInformation( SteamId steamIDUser, [MarshalAs( UnmanagedType.U1 )] bool bRequireNameOnly ) @@ -650,43 +436,30 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestClanOfficerList( IntPtr self, SteamId steamIDClan ); - private FRequestClanOfficerList _RequestClanOfficerList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_RequestClanOfficerList", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestClanOfficerList( IntPtr self, SteamId steamIDClan ); #endregion - internal async Task RequestClanOfficerList( SteamId steamIDClan ) + internal CallResult RequestClanOfficerList( SteamId steamIDClan ) { var returnValue = _RequestClanOfficerList( Self, steamIDClan ); - return await ClanOfficerListResponse_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetClanOwner( IntPtr self, ref SteamId retVal, SteamId steamIDClan ); - #else - private delegate SteamId FGetClanOwner( IntPtr self, SteamId steamIDClan ); - #endif - private FGetClanOwner _GetClanOwner; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanOwner", CallingConvention = Platform.CC)] + private static extern SteamId _GetClanOwner( IntPtr self, SteamId steamIDClan ); #endregion internal SteamId GetClanOwner( SteamId steamIDClan ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetClanOwner( Self, ref retVal, steamIDClan ); - return retVal; - #else var returnValue = _GetClanOwner( Self, steamIDClan ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetClanOfficerCount( IntPtr self, SteamId steamIDClan ); - private FGetClanOfficerCount _GetClanOfficerCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerCount", CallingConvention = Platform.CC)] + private static extern int _GetClanOfficerCount( IntPtr self, SteamId steamIDClan ); #endregion internal int GetClanOfficerCount( SteamId steamIDClan ) @@ -696,31 +469,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetClanOfficerByIndex( IntPtr self, ref SteamId retVal, SteamId steamIDClan, int iOfficer ); - #else - private delegate SteamId FGetClanOfficerByIndex( IntPtr self, SteamId steamIDClan, int iOfficer ); - #endif - private FGetClanOfficerByIndex _GetClanOfficerByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerByIndex", CallingConvention = Platform.CC)] + private static extern SteamId _GetClanOfficerByIndex( IntPtr self, SteamId steamIDClan, int iOfficer ); #endregion internal SteamId GetClanOfficerByIndex( SteamId steamIDClan, int iOfficer ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetClanOfficerByIndex( Self, ref retVal, steamIDClan, iOfficer ); - return retVal; - #else var returnValue = _GetClanOfficerByIndex( Self, steamIDClan, iOfficer ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetUserRestrictions( IntPtr self ); - private FGetUserRestrictions _GetUserRestrictions; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetUserRestrictions", CallingConvention = Platform.CC)] + private static extern uint _GetUserRestrictions( IntPtr self ); #endregion internal uint GetUserRestrictions() @@ -730,10 +491,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_SetRichPresence", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetRichPresence( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); - private FSetRichPresence _SetRichPresence; + private static extern bool _SetRichPresence( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); #endregion internal bool SetRichPresence( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ) @@ -743,9 +503,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FClearRichPresence( IntPtr self ); - private FClearRichPresence _ClearRichPresence; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ClearRichPresence", CallingConvention = Platform.CC)] + private static extern void _ClearRichPresence( IntPtr self ); #endregion internal void ClearRichPresence() @@ -754,9 +513,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetFriendRichPresence( IntPtr self, SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); - private FGetFriendRichPresence _GetFriendRichPresence; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresence", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetFriendRichPresence( IntPtr self, SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); #endregion internal string GetFriendRichPresence( SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ) @@ -766,9 +524,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendRichPresenceKeyCount( IntPtr self, SteamId steamIDFriend ); - private FGetFriendRichPresenceKeyCount _GetFriendRichPresenceKeyCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount", CallingConvention = Platform.CC)] + private static extern int _GetFriendRichPresenceKeyCount( IntPtr self, SteamId steamIDFriend ); #endregion internal int GetFriendRichPresenceKeyCount( SteamId steamIDFriend ) @@ -778,9 +535,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetFriendRichPresenceKeyByIndex( IntPtr self, SteamId steamIDFriend, int iKey ); - private FGetFriendRichPresenceKeyByIndex _GetFriendRichPresenceKeyByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetFriendRichPresenceKeyByIndex( IntPtr self, SteamId steamIDFriend, int iKey ); #endregion internal string GetFriendRichPresenceKeyByIndex( SteamId steamIDFriend, int iKey ) @@ -790,9 +546,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRequestFriendRichPresence( IntPtr self, SteamId steamIDFriend ); - private FRequestFriendRichPresence _RequestFriendRichPresence; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_RequestFriendRichPresence", CallingConvention = Platform.CC)] + private static extern void _RequestFriendRichPresence( IntPtr self, SteamId steamIDFriend ); #endregion internal void RequestFriendRichPresence( SteamId steamIDFriend ) @@ -801,10 +556,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_InviteUserToGame", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FInviteUserToGame( IntPtr self, SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString ); - private FInviteUserToGame _InviteUserToGame; + private static extern bool _InviteUserToGame( IntPtr self, SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString ); #endregion internal bool InviteUserToGame( SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString ) @@ -814,9 +568,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetCoplayFriendCount( IntPtr self ); - private FGetCoplayFriendCount _GetCoplayFriendCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriendCount", CallingConvention = Platform.CC)] + private static extern int _GetCoplayFriendCount( IntPtr self ); #endregion internal int GetCoplayFriendCount() @@ -826,31 +579,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetCoplayFriend( IntPtr self, ref SteamId retVal, int iCoplayFriend ); - #else - private delegate SteamId FGetCoplayFriend( IntPtr self, int iCoplayFriend ); - #endif - private FGetCoplayFriend _GetCoplayFriend; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriend", CallingConvention = Platform.CC)] + private static extern SteamId _GetCoplayFriend( IntPtr self, int iCoplayFriend ); #endregion internal SteamId GetCoplayFriend( int iCoplayFriend ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetCoplayFriend( Self, ref retVal, iCoplayFriend ); - return retVal; - #else var returnValue = _GetCoplayFriend( Self, iCoplayFriend ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendCoplayTime( IntPtr self, SteamId steamIDFriend ); - private FGetFriendCoplayTime _GetFriendCoplayTime; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayTime", CallingConvention = Platform.CC)] + private static extern int _GetFriendCoplayTime( IntPtr self, SteamId steamIDFriend ); #endregion internal int GetFriendCoplayTime( SteamId steamIDFriend ) @@ -860,9 +601,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate AppId FGetFriendCoplayGame( IntPtr self, SteamId steamIDFriend ); - private FGetFriendCoplayGame _GetFriendCoplayGame; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayGame", CallingConvention = Platform.CC)] + private static extern AppId _GetFriendCoplayGame( IntPtr self, SteamId steamIDFriend ); #endregion internal AppId GetFriendCoplayGame( SteamId steamIDFriend ) @@ -872,22 +612,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FJoinClanChatRoom( IntPtr self, SteamId steamIDClan ); - private FJoinClanChatRoom _JoinClanChatRoom; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_JoinClanChatRoom", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _JoinClanChatRoom( IntPtr self, SteamId steamIDClan ); #endregion - internal async Task JoinClanChatRoom( SteamId steamIDClan ) + internal CallResult JoinClanChatRoom( SteamId steamIDClan ) { var returnValue = _JoinClanChatRoom( Self, steamIDClan ); - return await JoinClanChatRoomCompletionResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_LeaveClanChatRoom", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FLeaveClanChatRoom( IntPtr self, SteamId steamIDClan ); - private FLeaveClanChatRoom _LeaveClanChatRoom; + private static extern bool _LeaveClanChatRoom( IntPtr self, SteamId steamIDClan ); #endregion internal bool LeaveClanChatRoom( SteamId steamIDClan ) @@ -897,9 +635,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetClanChatMemberCount( IntPtr self, SteamId steamIDClan ); - private FGetClanChatMemberCount _GetClanChatMemberCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMemberCount", CallingConvention = Platform.CC)] + private static extern int _GetClanChatMemberCount( IntPtr self, SteamId steamIDClan ); #endregion internal int GetClanChatMemberCount( SteamId steamIDClan ) @@ -909,32 +646,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetChatMemberByIndex( IntPtr self, ref SteamId retVal, SteamId steamIDClan, int iUser ); - #else - private delegate SteamId FGetChatMemberByIndex( IntPtr self, SteamId steamIDClan, int iUser ); - #endif - private FGetChatMemberByIndex _GetChatMemberByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetChatMemberByIndex", CallingConvention = Platform.CC)] + private static extern SteamId _GetChatMemberByIndex( IntPtr self, SteamId steamIDClan, int iUser ); #endregion internal SteamId GetChatMemberByIndex( SteamId steamIDClan, int iUser ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetChatMemberByIndex( Self, ref retVal, steamIDClan, iUser ); - return retVal; - #else var returnValue = _GetChatMemberByIndex( Self, steamIDClan, iUser ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_SendClanChatMessage", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSendClanChatMessage( IntPtr self, SteamId steamIDClanChat, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchText ); - private FSendClanChatMessage _SendClanChatMessage; + private static extern bool _SendClanChatMessage( IntPtr self, SteamId steamIDClanChat, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchText ); #endregion internal bool SendClanChatMessage( SteamId steamIDClanChat, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchText ) @@ -944,9 +669,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetClanChatMessage( IntPtr self, SteamId steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref ChatEntryType peChatEntryType, ref SteamId psteamidChatter ); - private FGetClanChatMessage _GetClanChatMessage; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMessage", CallingConvention = Platform.CC)] + private static extern int _GetClanChatMessage( IntPtr self, SteamId steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref ChatEntryType peChatEntryType, ref SteamId psteamidChatter ); #endregion internal int GetClanChatMessage( SteamId steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref ChatEntryType peChatEntryType, ref SteamId psteamidChatter ) @@ -956,10 +680,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_IsClanChatAdmin", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsClanChatAdmin( IntPtr self, SteamId steamIDClanChat, SteamId steamIDUser ); - private FIsClanChatAdmin _IsClanChatAdmin; + private static extern bool _IsClanChatAdmin( IntPtr self, SteamId steamIDClanChat, SteamId steamIDUser ); #endregion internal bool IsClanChatAdmin( SteamId steamIDClanChat, SteamId steamIDUser ) @@ -969,10 +692,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsClanChatWindowOpenInSteam( IntPtr self, SteamId steamIDClanChat ); - private FIsClanChatWindowOpenInSteam _IsClanChatWindowOpenInSteam; + private static extern bool _IsClanChatWindowOpenInSteam( IntPtr self, SteamId steamIDClanChat ); #endregion internal bool IsClanChatWindowOpenInSteam( SteamId steamIDClanChat ) @@ -982,10 +704,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FOpenClanChatWindowInSteam( IntPtr self, SteamId steamIDClanChat ); - private FOpenClanChatWindowInSteam _OpenClanChatWindowInSteam; + private static extern bool _OpenClanChatWindowInSteam( IntPtr self, SteamId steamIDClanChat ); #endregion internal bool OpenClanChatWindowInSteam( SteamId steamIDClanChat ) @@ -995,10 +716,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCloseClanChatWindowInSteam( IntPtr self, SteamId steamIDClanChat ); - private FCloseClanChatWindowInSteam _CloseClanChatWindowInSteam; + private static extern bool _CloseClanChatWindowInSteam( IntPtr self, SteamId steamIDClanChat ); #endregion internal bool CloseClanChatWindowInSteam( SteamId steamIDClanChat ) @@ -1008,10 +728,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_SetListenForFriendsMessages", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetListenForFriendsMessages( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bInterceptEnabled ); - private FSetListenForFriendsMessages _SetListenForFriendsMessages; + private static extern bool _SetListenForFriendsMessages( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bInterceptEnabled ); #endregion internal bool SetListenForFriendsMessages( [MarshalAs( UnmanagedType.U1 )] bool bInterceptEnabled ) @@ -1021,10 +740,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ReplyToFriendMessage", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FReplyToFriendMessage( IntPtr self, SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMsgToSend ); - private FReplyToFriendMessage _ReplyToFriendMessage; + private static extern bool _ReplyToFriendMessage( IntPtr self, SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMsgToSend ); #endregion internal bool ReplyToFriendMessage( SteamId steamIDFriend, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMsgToSend ) @@ -1034,9 +752,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFriendMessage( IntPtr self, SteamId steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref ChatEntryType peChatEntryType ); - private FGetFriendMessage _GetFriendMessage; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFriendMessage", CallingConvention = Platform.CC)] + private static extern int _GetFriendMessage( IntPtr self, SteamId steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref ChatEntryType peChatEntryType ); #endregion internal int GetFriendMessage( SteamId steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref ChatEntryType peChatEntryType ) @@ -1046,46 +763,42 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FGetFollowerCount( IntPtr self, SteamId steamID ); - private FGetFollowerCount _GetFollowerCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetFollowerCount", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetFollowerCount( IntPtr self, SteamId steamID ); #endregion - internal async Task GetFollowerCount( SteamId steamID ) + internal CallResult GetFollowerCount( SteamId steamID ) { var returnValue = _GetFollowerCount( Self, steamID ); - return await FriendsGetFollowerCount_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FIsFollowing( IntPtr self, SteamId steamID ); - private FIsFollowing _IsFollowing; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_IsFollowing", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _IsFollowing( IntPtr self, SteamId steamID ); #endregion - internal async Task IsFollowing( SteamId steamID ) + internal CallResult IsFollowing( SteamId steamID ) { var returnValue = _IsFollowing( Self, steamID ); - return await FriendsIsFollowing_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FEnumerateFollowingList( IntPtr self, uint unStartIndex ); - private FEnumerateFollowingList _EnumerateFollowingList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_EnumerateFollowingList", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _EnumerateFollowingList( IntPtr self, uint unStartIndex ); #endregion - internal async Task EnumerateFollowingList( uint unStartIndex ) + internal CallResult EnumerateFollowingList( uint unStartIndex ) { var returnValue = _EnumerateFollowingList( Self, unStartIndex ); - return await FriendsEnumerateFollowingList_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_IsClanPublic", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsClanPublic( IntPtr self, SteamId steamIDClan ); - private FIsClanPublic _IsClanPublic; + private static extern bool _IsClanPublic( IntPtr self, SteamId steamIDClan ); #endregion internal bool IsClanPublic( SteamId steamIDClan ) @@ -1095,10 +808,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_IsClanOfficialGameGroup", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsClanOfficialGameGroup( IntPtr self, SteamId steamIDClan ); - private FIsClanOfficialGameGroup _IsClanOfficialGameGroup; + private static extern bool _IsClanOfficialGameGroup( IntPtr self, SteamId steamIDClan ); #endregion internal bool IsClanOfficialGameGroup( SteamId steamIDClan ) @@ -1108,9 +820,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetNumChatsWithUnreadPriorityMessages( IntPtr self ); - private FGetNumChatsWithUnreadPriorityMessages _GetNumChatsWithUnreadPriorityMessages; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages", CallingConvention = Platform.CC)] + private static extern int _GetNumChatsWithUnreadPriorityMessages( IntPtr self ); #endregion internal int GetNumChatsWithUnreadPriorityMessages() @@ -1119,5 +830,82 @@ namespace Steamworks return returnValue; } + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog", CallingConvention = Platform.CC)] + private static extern void _ActivateGameOverlayRemotePlayTogetherInviteDialog( IntPtr self, SteamId steamIDLobby ); + + #endregion + internal void ActivateGameOverlayRemotePlayTogetherInviteDialog( SteamId steamIDLobby ) + { + _ActivateGameOverlayRemotePlayTogetherInviteDialog( Self, steamIDLobby ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _RegisterProtocolInOverlayBrowser( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchProtocol ); + + #endregion + internal bool RegisterProtocolInOverlayBrowser( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchProtocol ) + { + var returnValue = _RegisterProtocolInOverlayBrowser( Self, pchProtocol ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString", CallingConvention = Platform.CC)] + private static extern void _ActivateGameOverlayInviteDialogConnectString( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString ); + + #endregion + internal void ActivateGameOverlayInviteDialogConnectString( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString ) + { + _ActivateGameOverlayInviteDialogConnectString( Self, pchConnectString ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_RequestEquippedProfileItems", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestEquippedProfileItems( IntPtr self, SteamId steamID ); + + #endregion + internal CallResult RequestEquippedProfileItems( SteamId steamID ) + { + var returnValue = _RequestEquippedProfileItems( Self, steamID ); + return new CallResult( returnValue, IsServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_BHasEquippedProfileItem", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BHasEquippedProfileItem( IntPtr self, SteamId steamID, CommunityProfileItemType itemType ); + + #endregion + internal bool BHasEquippedProfileItem( SteamId steamID, CommunityProfileItemType itemType ) + { + var returnValue = _BHasEquippedProfileItem( Self, steamID, itemType ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetProfileItemPropertyString", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetProfileItemPropertyString( IntPtr self, SteamId steamID, CommunityProfileItemType itemType, CommunityProfileItemProperty prop ); + + #endregion + internal string GetProfileItemPropertyString( SteamId steamID, CommunityProfileItemType itemType, CommunityProfileItemProperty prop ) + { + var returnValue = _GetProfileItemPropertyString( Self, steamID, itemType, prop ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamFriends_GetProfileItemPropertyUint", CallingConvention = Platform.CC)] + private static extern uint _GetProfileItemPropertyUint( IntPtr self, SteamId steamID, CommunityProfileItemType itemType, CommunityProfileItemProperty prop ); + + #endregion + internal uint GetProfileItemPropertyUint( SteamId steamID, CommunityProfileItemType itemType, CommunityProfileItemProperty prop ) + { + var returnValue = _GetProfileItemPropertyUint( Self, steamID, itemType, prop ); + return returnValue; + } + } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameSearch.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameSearch.cs new file mode 100644 index 0000000..3c70b84 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameSearch.cs @@ -0,0 +1,180 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamGameSearch : SteamInterface + { + + internal ISteamGameSearch( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameSearch_v001", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameSearch_v001(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamGameSearch_v001(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_AddGameSearchParams", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _AddGameSearchParams( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToFind, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValuesToFind ); + + #endregion + internal GameSearchErrorCode_t AddGameSearchParams( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToFind, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValuesToFind ) + { + var returnValue = _AddGameSearchParams( Self, pchKeyToFind, pchValuesToFind ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_SearchForGameWithLobby", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _SearchForGameWithLobby( IntPtr self, SteamId steamIDLobby, int nPlayerMin, int nPlayerMax ); + + #endregion + internal GameSearchErrorCode_t SearchForGameWithLobby( SteamId steamIDLobby, int nPlayerMin, int nPlayerMax ) + { + var returnValue = _SearchForGameWithLobby( Self, steamIDLobby, nPlayerMin, nPlayerMax ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_SearchForGameSolo", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _SearchForGameSolo( IntPtr self, int nPlayerMin, int nPlayerMax ); + + #endregion + internal GameSearchErrorCode_t SearchForGameSolo( int nPlayerMin, int nPlayerMax ) + { + var returnValue = _SearchForGameSolo( Self, nPlayerMin, nPlayerMax ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_AcceptGame", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _AcceptGame( IntPtr self ); + + #endregion + internal GameSearchErrorCode_t AcceptGame() + { + var returnValue = _AcceptGame( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_DeclineGame", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _DeclineGame( IntPtr self ); + + #endregion + internal GameSearchErrorCode_t DeclineGame() + { + var returnValue = _DeclineGame( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_RetrieveConnectionDetails", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _RetrieveConnectionDetails( IntPtr self, SteamId steamIDHost, IntPtr pchConnectionDetails, int cubConnectionDetails ); + + #endregion + internal GameSearchErrorCode_t RetrieveConnectionDetails( SteamId steamIDHost, out string pchConnectionDetails ) + { + using var mempchConnectionDetails = Helpers.TakeMemory(); + var returnValue = _RetrieveConnectionDetails( Self, steamIDHost, mempchConnectionDetails, (1024 * 32) ); + pchConnectionDetails = Helpers.MemoryToString( mempchConnectionDetails ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_EndGameSearch", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _EndGameSearch( IntPtr self ); + + #endregion + internal GameSearchErrorCode_t EndGameSearch() + { + var returnValue = _EndGameSearch( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_SetGameHostParams", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _SetGameHostParams( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); + + #endregion + internal GameSearchErrorCode_t SetGameHostParams( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ) + { + var returnValue = _SetGameHostParams( Self, pchKey, pchValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_SetConnectionDetails", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _SetConnectionDetails( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectionDetails, int cubConnectionDetails ); + + #endregion + internal GameSearchErrorCode_t SetConnectionDetails( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectionDetails, int cubConnectionDetails ) + { + var returnValue = _SetConnectionDetails( Self, pchConnectionDetails, cubConnectionDetails ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_RequestPlayersForGame", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _RequestPlayersForGame( IntPtr self, int nPlayerMin, int nPlayerMax, int nMaxTeamSize ); + + #endregion + internal GameSearchErrorCode_t RequestPlayersForGame( int nPlayerMin, int nPlayerMax, int nMaxTeamSize ) + { + var returnValue = _RequestPlayersForGame( Self, nPlayerMin, nPlayerMax, nMaxTeamSize ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_HostConfirmGameStart", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _HostConfirmGameStart( IntPtr self, ulong ullUniqueGameID ); + + #endregion + internal GameSearchErrorCode_t HostConfirmGameStart( ulong ullUniqueGameID ) + { + var returnValue = _HostConfirmGameStart( Self, ullUniqueGameID ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _CancelRequestPlayersForGame( IntPtr self ); + + #endregion + internal GameSearchErrorCode_t CancelRequestPlayersForGame() + { + var returnValue = _CancelRequestPlayersForGame( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_SubmitPlayerResult", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _SubmitPlayerResult( IntPtr self, ulong ullUniqueGameID, SteamId steamIDPlayer, PlayerResult_t EPlayerResult ); + + #endregion + internal GameSearchErrorCode_t SubmitPlayerResult( ulong ullUniqueGameID, SteamId steamIDPlayer, PlayerResult_t EPlayerResult ) + { + var returnValue = _SubmitPlayerResult( Self, ullUniqueGameID, steamIDPlayer, EPlayerResult ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameSearch_EndGame", CallingConvention = Platform.CC)] + private static extern GameSearchErrorCode_t _EndGame( IntPtr self, ulong ullUniqueGameID ); + + #endregion + internal GameSearchErrorCode_t EndGame( ulong ullUniqueGameID ) + { + var returnValue = _EndGame( Self, ullUniqueGameID ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs index 50bb040..3d23f31 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServer.cs @@ -7,124 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamGameServer : SteamInterface + internal unsafe class ISteamGameServer : SteamInterface { - public override string InterfaceName => "SteamGameServer012"; - public override void InitInternals() + internal ISteamGameServer( bool IsGameServer ) { - _InitGameServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _SetProduct = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _SetGameDescription = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _SetModDir = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _SetDedicatedServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _LogOn = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _LogOnAnonymous = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _LogOff = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _BLoggedOn = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _BSecure = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetSteamID = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _WasRestartRequested = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _SetMaxPlayerCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _SetBotPlayerCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _SetServerName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _SetMapName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _SetPasswordProtected = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _SetSpectatorPort = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _SetSpectatorServerName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _ClearAllKeyValues = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _SetKeyValue = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _SetGameTags = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _SetGameData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _SetRegion = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _SendUserConnectAndAuthenticate = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _CreateUnauthenticatedUserConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _SendUserDisconnect = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _BUpdateUserData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _GetAuthSessionTicket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _BeginAuthSession = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - _EndAuthSession = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 240 ) ) ); - _CancelAuthTicket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 248 ) ) ); - _UserHasLicenseForApp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 256 ) ) ); - _RequestUserGroupStatus = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 264 ) ) ); - _GetGameplayStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 272 ) ) ); - _GetServerReputation = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 280 ) ) ); - _GetPublicIP = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 288 ) ) ); - _HandleIncomingPacket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 296 ) ) ); - _GetNextOutgoingPacket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 304 ) ) ); - _EnableHeartbeats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 312 ) ) ); - _SetHeartbeatInterval = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 320 ) ) ); - _ForceHeartbeat = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 328 ) ) ); - _AssociateWithClan = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 336 ) ) ); - _ComputeNewPlayerCompatibility = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 344 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _InitGameServer = null; - _SetProduct = null; - _SetGameDescription = null; - _SetModDir = null; - _SetDedicatedServer = null; - _LogOn = null; - _LogOnAnonymous = null; - _LogOff = null; - _BLoggedOn = null; - _BSecure = null; - _GetSteamID = null; - _WasRestartRequested = null; - _SetMaxPlayerCount = null; - _SetBotPlayerCount = null; - _SetServerName = null; - _SetMapName = null; - _SetPasswordProtected = null; - _SetSpectatorPort = null; - _SetSpectatorServerName = null; - _ClearAllKeyValues = null; - _SetKeyValue = null; - _SetGameTags = null; - _SetGameData = null; - _SetRegion = null; - _SendUserConnectAndAuthenticate = null; - _CreateUnauthenticatedUserConnection = null; - _SendUserDisconnect = null; - _BUpdateUserData = null; - _GetAuthSessionTicket = null; - _BeginAuthSession = null; - _EndAuthSession = null; - _CancelAuthTicket = null; - _UserHasLicenseForApp = null; - _RequestUserGroupStatus = null; - _GetGameplayStats = null; - _GetServerReputation = null; - _GetPublicIP = null; - _HandleIncomingPacket = null; - _GetNextOutgoingPacket = null; - _EnableHeartbeats = null; - _SetHeartbeatInterval = null; - _ForceHeartbeat = null; - _AssociateWithClan = null; - _ComputeNewPlayerCompatibility = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServer_v014", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServer_v014(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServer_v014(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FInitGameServer( IntPtr self, uint unIP, ushort usGamePort, ushort usQueryPort, uint unFlags, AppId nGameAppId, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersionString ); - private FInitGameServer _InitGameServer; - - #endregion - internal bool InitGameServer( uint unIP, ushort usGamePort, ushort usQueryPort, uint unFlags, AppId nGameAppId, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersionString ) - { - var returnValue = _InitGameServer( Self, unIP, usGamePort, usQueryPort, unFlags, nGameAppId, pchVersionString ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetProduct( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszProduct ); - private FSetProduct _SetProduct; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetProduct", CallingConvention = Platform.CC)] + private static extern void _SetProduct( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszProduct ); #endregion internal void SetProduct( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszProduct ) @@ -133,9 +31,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetGameDescription( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszGameDescription ); - private FSetGameDescription _SetGameDescription; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetGameDescription", CallingConvention = Platform.CC)] + private static extern void _SetGameDescription( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszGameDescription ); #endregion internal void SetGameDescription( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszGameDescription ) @@ -144,9 +41,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetModDir( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszModDir ); - private FSetModDir _SetModDir; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetModDir", CallingConvention = Platform.CC)] + private static extern void _SetModDir( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszModDir ); #endregion internal void SetModDir( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszModDir ) @@ -155,9 +51,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetDedicatedServer( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bDedicated ); - private FSetDedicatedServer _SetDedicatedServer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetDedicatedServer", CallingConvention = Platform.CC)] + private static extern void _SetDedicatedServer( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bDedicated ); #endregion internal void SetDedicatedServer( [MarshalAs( UnmanagedType.U1 )] bool bDedicated ) @@ -166,9 +61,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FLogOn( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszToken ); - private FLogOn _LogOn; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_LogOn", CallingConvention = Platform.CC)] + private static extern void _LogOn( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszToken ); #endregion internal void LogOn( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszToken ) @@ -177,9 +71,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FLogOnAnonymous( IntPtr self ); - private FLogOnAnonymous _LogOnAnonymous; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_LogOnAnonymous", CallingConvention = Platform.CC)] + private static extern void _LogOnAnonymous( IntPtr self ); #endregion internal void LogOnAnonymous() @@ -188,9 +81,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FLogOff( IntPtr self ); - private FLogOff _LogOff; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_LogOff", CallingConvention = Platform.CC)] + private static extern void _LogOff( IntPtr self ); #endregion internal void LogOff() @@ -199,10 +91,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_BLoggedOn", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBLoggedOn( IntPtr self ); - private FBLoggedOn _BLoggedOn; + private static extern bool _BLoggedOn( IntPtr self ); #endregion internal bool BLoggedOn() @@ -212,10 +103,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_BSecure", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBSecure( IntPtr self ); - private FBSecure _BSecure; + private static extern bool _BSecure( IntPtr self ); #endregion internal bool BSecure() @@ -225,32 +115,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetSteamID( IntPtr self, ref SteamId retVal ); - #else - private delegate SteamId FGetSteamID( IntPtr self ); - #endif - private FGetSteamID _GetSteamID; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetSteamID", CallingConvention = Platform.CC)] + private static extern SteamId _GetSteamID( IntPtr self ); #endregion internal SteamId GetSteamID() { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetSteamID( Self, ref retVal ); - return retVal; - #else var returnValue = _GetSteamID( Self ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_WasRestartRequested", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FWasRestartRequested( IntPtr self ); - private FWasRestartRequested _WasRestartRequested; + private static extern bool _WasRestartRequested( IntPtr self ); #endregion internal bool WasRestartRequested() @@ -260,9 +138,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetMaxPlayerCount( IntPtr self, int cPlayersMax ); - private FSetMaxPlayerCount _SetMaxPlayerCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetMaxPlayerCount", CallingConvention = Platform.CC)] + private static extern void _SetMaxPlayerCount( IntPtr self, int cPlayersMax ); #endregion internal void SetMaxPlayerCount( int cPlayersMax ) @@ -271,9 +148,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetBotPlayerCount( IntPtr self, int cBotplayers ); - private FSetBotPlayerCount _SetBotPlayerCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetBotPlayerCount", CallingConvention = Platform.CC)] + private static extern void _SetBotPlayerCount( IntPtr self, int cBotplayers ); #endregion internal void SetBotPlayerCount( int cBotplayers ) @@ -282,9 +158,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetServerName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszServerName ); - private FSetServerName _SetServerName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetServerName", CallingConvention = Platform.CC)] + private static extern void _SetServerName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszServerName ); #endregion internal void SetServerName( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszServerName ) @@ -293,9 +168,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetMapName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszMapName ); - private FSetMapName _SetMapName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetMapName", CallingConvention = Platform.CC)] + private static extern void _SetMapName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszMapName ); #endregion internal void SetMapName( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszMapName ) @@ -304,9 +178,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetPasswordProtected( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bPasswordProtected ); - private FSetPasswordProtected _SetPasswordProtected; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetPasswordProtected", CallingConvention = Platform.CC)] + private static extern void _SetPasswordProtected( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bPasswordProtected ); #endregion internal void SetPasswordProtected( [MarshalAs( UnmanagedType.U1 )] bool bPasswordProtected ) @@ -315,9 +188,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetSpectatorPort( IntPtr self, ushort unSpectatorPort ); - private FSetSpectatorPort _SetSpectatorPort; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorPort", CallingConvention = Platform.CC)] + private static extern void _SetSpectatorPort( IntPtr self, ushort unSpectatorPort ); #endregion internal void SetSpectatorPort( ushort unSpectatorPort ) @@ -326,9 +198,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetSpectatorServerName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszSpectatorServerName ); - private FSetSpectatorServerName _SetSpectatorServerName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorServerName", CallingConvention = Platform.CC)] + private static extern void _SetSpectatorServerName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszSpectatorServerName ); #endregion internal void SetSpectatorServerName( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszSpectatorServerName ) @@ -337,9 +208,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FClearAllKeyValues( IntPtr self ); - private FClearAllKeyValues _ClearAllKeyValues; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_ClearAllKeyValues", CallingConvention = Platform.CC)] + private static extern void _ClearAllKeyValues( IntPtr self ); #endregion internal void ClearAllKeyValues() @@ -348,9 +218,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetKeyValue( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pValue ); - private FSetKeyValue _SetKeyValue; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetKeyValue", CallingConvention = Platform.CC)] + private static extern void _SetKeyValue( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pValue ); #endregion internal void SetKeyValue( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pValue ) @@ -359,9 +228,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetGameTags( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchGameTags ); - private FSetGameTags _SetGameTags; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetGameTags", CallingConvention = Platform.CC)] + private static extern void _SetGameTags( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchGameTags ); #endregion internal void SetGameTags( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchGameTags ) @@ -370,9 +238,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetGameData( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchGameData ); - private FSetGameData _SetGameData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetGameData", CallingConvention = Platform.CC)] + private static extern void _SetGameData( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchGameData ); #endregion internal void SetGameData( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchGameData ) @@ -381,9 +248,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetRegion( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszRegion ); - private FSetRegion _SetRegion; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetRegion", CallingConvention = Platform.CC)] + private static extern void _SetRegion( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszRegion ); #endregion internal void SetRegion( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszRegion ) @@ -392,68 +258,18 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSendUserConnectAndAuthenticate( IntPtr self, uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref SteamId pSteamIDUser ); - private FSendUserConnectAndAuthenticate _SendUserConnectAndAuthenticate; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetAdvertiseServerActive", CallingConvention = Platform.CC)] + private static extern void _SetAdvertiseServerActive( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bActive ); #endregion - internal bool SendUserConnectAndAuthenticate( uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref SteamId pSteamIDUser ) + internal void SetAdvertiseServerActive( [MarshalAs( UnmanagedType.U1 )] bool bActive ) { - var returnValue = _SendUserConnectAndAuthenticate( Self, unIPClient, pvAuthBlob, cubAuthBlobSize, ref pSteamIDUser ); - return returnValue; + _SetAdvertiseServerActive( Self, bActive ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FCreateUnauthenticatedUserConnection( IntPtr self, ref SteamId retVal ); - #else - private delegate SteamId FCreateUnauthenticatedUserConnection( IntPtr self ); - #endif - private FCreateUnauthenticatedUserConnection _CreateUnauthenticatedUserConnection; - - #endregion - internal SteamId CreateUnauthenticatedUserConnection() - { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _CreateUnauthenticatedUserConnection( Self, ref retVal ); - return retVal; - #else - var returnValue = _CreateUnauthenticatedUserConnection( Self ); - return returnValue; - #endif - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSendUserDisconnect( IntPtr self, SteamId steamIDUser ); - private FSendUserDisconnect _SendUserDisconnect; - - #endregion - internal void SendUserDisconnect( SteamId steamIDUser ) - { - _SendUserDisconnect( Self, steamIDUser ); - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBUpdateUserData( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPlayerName, uint uScore ); - private FBUpdateUserData _BUpdateUserData; - - #endregion - internal bool BUpdateUserData( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPlayerName, uint uScore ) - { - var returnValue = _BUpdateUserData( Self, steamIDUser, pchPlayerName, uScore ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HAuthTicket FGetAuthSessionTicket( IntPtr self, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ); - private FGetAuthSessionTicket _GetAuthSessionTicket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket", CallingConvention = Platform.CC)] + private static extern HAuthTicket _GetAuthSessionTicket( IntPtr self, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ); #endregion internal HAuthTicket GetAuthSessionTicket( IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ) @@ -463,9 +279,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate BeginAuthResult FBeginAuthSession( IntPtr self, IntPtr pAuthTicket, int cbAuthTicket, SteamId steamID ); - private FBeginAuthSession _BeginAuthSession; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_BeginAuthSession", CallingConvention = Platform.CC)] + private static extern BeginAuthResult _BeginAuthSession( IntPtr self, IntPtr pAuthTicket, int cbAuthTicket, SteamId steamID ); #endregion internal BeginAuthResult BeginAuthSession( IntPtr pAuthTicket, int cbAuthTicket, SteamId steamID ) @@ -475,9 +290,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FEndAuthSession( IntPtr self, SteamId steamID ); - private FEndAuthSession _EndAuthSession; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_EndAuthSession", CallingConvention = Platform.CC)] + private static extern void _EndAuthSession( IntPtr self, SteamId steamID ); #endregion internal void EndAuthSession( SteamId steamID ) @@ -486,9 +300,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FCancelAuthTicket( IntPtr self, HAuthTicket hAuthTicket ); - private FCancelAuthTicket _CancelAuthTicket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_CancelAuthTicket", CallingConvention = Platform.CC)] + private static extern void _CancelAuthTicket( IntPtr self, HAuthTicket hAuthTicket ); #endregion internal void CancelAuthTicket( HAuthTicket hAuthTicket ) @@ -497,9 +310,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UserHasLicenseForAppResult FUserHasLicenseForApp( IntPtr self, SteamId steamID, AppId appID ); - private FUserHasLicenseForApp _UserHasLicenseForApp; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_UserHasLicenseForApp", CallingConvention = Platform.CC)] + private static extern UserHasLicenseForAppResult _UserHasLicenseForApp( IntPtr self, SteamId steamID, AppId appID ); #endregion internal UserHasLicenseForAppResult UserHasLicenseForApp( SteamId steamID, AppId appID ) @@ -509,10 +321,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_RequestUserGroupStatus", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRequestUserGroupStatus( IntPtr self, SteamId steamIDUser, SteamId steamIDGroup ); - private FRequestUserGroupStatus _RequestUserGroupStatus; + private static extern bool _RequestUserGroupStatus( IntPtr self, SteamId steamIDUser, SteamId steamIDGroup ); #endregion internal bool RequestUserGroupStatus( SteamId steamIDUser, SteamId steamIDGroup ) @@ -522,9 +333,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FGetGameplayStats( IntPtr self ); - private FGetGameplayStats _GetGameplayStats; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetGameplayStats", CallingConvention = Platform.CC)] + private static extern void _GetGameplayStats( IntPtr self ); #endregion internal void GetGameplayStats() @@ -533,34 +343,31 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FGetServerReputation( IntPtr self ); - private FGetServerReputation _GetServerReputation; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetServerReputation", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetServerReputation( IntPtr self ); #endregion - internal async Task GetServerReputation() + internal CallResult GetServerReputation() { var returnValue = _GetServerReputation( Self ); - return await GSReputation_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetPublicIP( IntPtr self ); - private FGetPublicIP _GetPublicIP; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetPublicIP", CallingConvention = Platform.CC)] + private static extern SteamIPAddress _GetPublicIP( IntPtr self ); #endregion - internal uint GetPublicIP() + internal SteamIPAddress GetPublicIP() { var returnValue = _GetPublicIP( Self ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_HandleIncomingPacket", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FHandleIncomingPacket( IntPtr self, IntPtr pData, int cbData, uint srcIP, ushort srcPort ); - private FHandleIncomingPacket _HandleIncomingPacket; + private static extern bool _HandleIncomingPacket( IntPtr self, IntPtr pData, int cbData, uint srcIP, ushort srcPort ); #endregion internal bool HandleIncomingPacket( IntPtr pData, int cbData, uint srcIP, ushort srcPort ) @@ -570,9 +377,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetNextOutgoingPacket( IntPtr self, IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref ushort pPort ); - private FGetNextOutgoingPacket _GetNextOutgoingPacket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetNextOutgoingPacket", CallingConvention = Platform.CC)] + private static extern int _GetNextOutgoingPacket( IntPtr self, IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref ushort pPort ); #endregion internal int GetNextOutgoingPacket( IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref ushort pPort ) @@ -582,60 +388,70 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FEnableHeartbeats( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bActive ); - private FEnableHeartbeats _EnableHeartbeats; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_AssociateWithClan", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _AssociateWithClan( IntPtr self, SteamId steamIDClan ); #endregion - internal void EnableHeartbeats( [MarshalAs( UnmanagedType.U1 )] bool bActive ) - { - _EnableHeartbeats( Self, bActive ); - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetHeartbeatInterval( IntPtr self, int iHeartbeatInterval ); - private FSetHeartbeatInterval _SetHeartbeatInterval; - - #endregion - internal void SetHeartbeatInterval( int iHeartbeatInterval ) - { - _SetHeartbeatInterval( Self, iHeartbeatInterval ); - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FForceHeartbeat( IntPtr self ); - private FForceHeartbeat _ForceHeartbeat; - - #endregion - internal void ForceHeartbeat() - { - _ForceHeartbeat( Self ); - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FAssociateWithClan( IntPtr self, SteamId steamIDClan ); - private FAssociateWithClan _AssociateWithClan; - - #endregion - internal async Task AssociateWithClan( SteamId steamIDClan ) + internal CallResult AssociateWithClan( SteamId steamIDClan ) { var returnValue = _AssociateWithClan( Self, steamIDClan ); - return await AssociateWithClanResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FComputeNewPlayerCompatibility( IntPtr self, SteamId steamIDNewPlayer ); - private FComputeNewPlayerCompatibility _ComputeNewPlayerCompatibility; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _ComputeNewPlayerCompatibility( IntPtr self, SteamId steamIDNewPlayer ); #endregion - internal async Task ComputeNewPlayerCompatibility( SteamId steamIDNewPlayer ) + internal CallResult ComputeNewPlayerCompatibility( SteamId steamIDNewPlayer ) { var returnValue = _ComputeNewPlayerCompatibility( Self, steamIDNewPlayer ); - return await ComputeNewPlayerCompatibilityResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SendUserConnectAndAuthenticate_DEPRECATED( IntPtr self, uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref SteamId pSteamIDUser ); + + #endregion + internal bool SendUserConnectAndAuthenticate_DEPRECATED( uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref SteamId pSteamIDUser ) + { + var returnValue = _SendUserConnectAndAuthenticate_DEPRECATED( Self, unIPClient, pvAuthBlob, cubAuthBlobSize, ref pSteamIDUser ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", CallingConvention = Platform.CC)] + private static extern SteamId _CreateUnauthenticatedUserConnection( IntPtr self ); + + #endregion + internal SteamId CreateUnauthenticatedUserConnection() + { + var returnValue = _CreateUnauthenticatedUserConnection( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect_DEPRECATED", CallingConvention = Platform.CC)] + private static extern void _SendUserDisconnect_DEPRECATED( IntPtr self, SteamId steamIDUser ); + + #endregion + internal void SendUserDisconnect_DEPRECATED( SteamId steamIDUser ) + { + _SendUserDisconnect_DEPRECATED( Self, steamIDUser ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BUpdateUserData( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPlayerName, uint uScore ); + + #endregion + internal bool BUpdateUserData( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPlayerName, uint uScore ) + { + var returnValue = _BUpdateUserData( Self, steamIDUser, pchPlayerName, uScore ); + return returnValue; } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs index 108b728..de293cb 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamGameServerStats.cs @@ -7,90 +7,58 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamGameServerStats : SteamInterface + internal unsafe class ISteamGameServerStats : SteamInterface { - public override string InterfaceName => "SteamGameServerStats001"; - public override void InitInternals() + internal ISteamGameServerStats( bool IsGameServer ) { - _RequestUserStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _GetUserAchievement = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _UpdateUserAvgRateStat = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _SetUserAchievement = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _ClearUserAchievement = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _StoreUserStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - - #if PLATFORM_WIN - _GetUserStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _GetUserStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _SetUserStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _SetUserStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - #else - _GetUserStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetUserStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _SetUserStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _SetUserStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - #endif - } - internal override void Shutdown() - { - base.Shutdown(); - - _RequestUserStats = null; - _GetUserStat1 = null; - _GetUserStat2 = null; - _GetUserAchievement = null; - _SetUserStat1 = null; - _SetUserStat2 = null; - _UpdateUserAvgRateStat = null; - _SetUserAchievement = null; - _ClearUserAchievement = null; - _StoreUserStats = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerStats_v001", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerStats_v001(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerStats_v001(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestUserStats( IntPtr self, SteamId steamIDUser ); - private FRequestUserStats _RequestUserStats; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_RequestUserStats", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestUserStats( IntPtr self, SteamId steamIDUser ); #endregion - internal async Task RequestUserStats( SteamId steamIDUser ) + internal CallResult RequestUserStats( SteamId steamIDUser ) { var returnValue = _RequestUserStats( Self, steamIDUser ); - return await GSStatsReceived_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStatInt32", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserStat1( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ); - private FGetUserStat1 _GetUserStat1; + private static extern bool _GetUserStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ); #endregion - internal bool GetUserStat1( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ) + internal bool GetUserStat( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ) { - var returnValue = _GetUserStat1( Self, steamIDUser, pchName, ref pData ); + var returnValue = _GetUserStat( Self, steamIDUser, pchName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStatFloat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserStat2( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ); - private FGetUserStat2 _GetUserStat2; + private static extern bool _GetUserStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ); #endregion - internal bool GetUserStat2( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ) + internal bool GetUserStat( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ) { - var returnValue = _GetUserStat2( Self, steamIDUser, pchName, ref pData ); + var returnValue = _GetUserStat( Self, steamIDUser, pchName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserAchievement", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); - private FGetUserAchievement _GetUserAchievement; + private static extern bool _GetUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); #endregion internal bool GetUserAchievement( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ) @@ -100,36 +68,33 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStatInt32", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetUserStat1( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ); - private FSetUserStat1 _SetUserStat1; + private static extern bool _SetUserStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ); #endregion - internal bool SetUserStat1( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ) + internal bool SetUserStat( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ) { - var returnValue = _SetUserStat1( Self, steamIDUser, pchName, nData ); + var returnValue = _SetUserStat( Self, steamIDUser, pchName, nData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStatFloat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetUserStat2( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ); - private FSetUserStat2 _SetUserStat2; + private static extern bool _SetUserStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ); #endregion - internal bool SetUserStat2( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ) + internal bool SetUserStat( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ) { - var returnValue = _SetUserStat2( Self, steamIDUser, pchName, fData ); + var returnValue = _SetUserStat( Self, steamIDUser, pchName, fData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FUpdateUserAvgRateStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float flCountThisSession, double dSessionLength ); - private FUpdateUserAvgRateStat _UpdateUserAvgRateStat; + private static extern bool _UpdateUserAvgRateStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float flCountThisSession, double dSessionLength ); #endregion internal bool UpdateUserAvgRateStat( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float flCountThisSession, double dSessionLength ) @@ -139,10 +104,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserAchievement", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); - private FSetUserAchievement _SetUserAchievement; + private static extern bool _SetUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); #endregion internal bool SetUserAchievement( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ) @@ -152,10 +116,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_ClearUserAchievement", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FClearUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); - private FClearUserAchievement _ClearUserAchievement; + private static extern bool _ClearUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); #endregion internal bool ClearUserAchievement( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ) @@ -165,15 +128,14 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FStoreUserStats( IntPtr self, SteamId steamIDUser ); - private FStoreUserStats _StoreUserStats; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_StoreUserStats", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _StoreUserStats( IntPtr self, SteamId steamIDUser ); #endregion - internal async Task StoreUserStats( SteamId steamIDUser ) + internal CallResult StoreUserStats( SteamId steamIDUser ) { var returnValue = _StoreUserStats( Self, steamIDUser ); - return await GSStatsStored_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamHTMLSurface.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTMLSurface.cs new file mode 100644 index 0000000..38c6b46 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTMLSurface.cs @@ -0,0 +1,399 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamHTMLSurface : SteamInterface + { + + internal ISteamHTMLSurface( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamHTMLSurface_v005", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamHTMLSurface_v005(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamHTMLSurface_v005(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_Init", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _Init( IntPtr self ); + + #endregion + internal bool Init() + { + var returnValue = _Init( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_Shutdown", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _Shutdown( IntPtr self ); + + #endregion + internal bool Shutdown() + { + var returnValue = _Shutdown( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_CreateBrowser", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _CreateBrowser( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUserAgent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUserCSS ); + + #endregion + internal CallResult CreateBrowser( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUserAgent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUserCSS ) + { + var returnValue = _CreateBrowser( Self, pchUserAgent, pchUserCSS ); + return new CallResult( returnValue, IsServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_RemoveBrowser", CallingConvention = Platform.CC)] + private static extern void _RemoveBrowser( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void RemoveBrowser( HHTMLBrowser unBrowserHandle ) + { + _RemoveBrowser( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_LoadURL", CallingConvention = Platform.CC)] + private static extern void _LoadURL( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchURL, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPostData ); + + #endregion + internal void LoadURL( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchURL, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPostData ) + { + _LoadURL( Self, unBrowserHandle, pchURL, pchPostData ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetSize", CallingConvention = Platform.CC)] + private static extern void _SetSize( IntPtr self, HHTMLBrowser unBrowserHandle, uint unWidth, uint unHeight ); + + #endregion + internal void SetSize( HHTMLBrowser unBrowserHandle, uint unWidth, uint unHeight ) + { + _SetSize( Self, unBrowserHandle, unWidth, unHeight ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_StopLoad", CallingConvention = Platform.CC)] + private static extern void _StopLoad( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void StopLoad( HHTMLBrowser unBrowserHandle ) + { + _StopLoad( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_Reload", CallingConvention = Platform.CC)] + private static extern void _Reload( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void Reload( HHTMLBrowser unBrowserHandle ) + { + _Reload( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_GoBack", CallingConvention = Platform.CC)] + private static extern void _GoBack( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void GoBack( HHTMLBrowser unBrowserHandle ) + { + _GoBack( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_GoForward", CallingConvention = Platform.CC)] + private static extern void _GoForward( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void GoForward( HHTMLBrowser unBrowserHandle ) + { + _GoForward( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_AddHeader", CallingConvention = Platform.CC)] + private static extern void _AddHeader( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); + + #endregion + internal void AddHeader( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ) + { + _AddHeader( Self, unBrowserHandle, pchKey, pchValue ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_ExecuteJavascript", CallingConvention = Platform.CC)] + private static extern void _ExecuteJavascript( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchScript ); + + #endregion + internal void ExecuteJavascript( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchScript ) + { + _ExecuteJavascript( Self, unBrowserHandle, pchScript ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseUp", CallingConvention = Platform.CC)] + private static extern void _MouseUp( IntPtr self, HHTMLBrowser unBrowserHandle, IntPtr eMouseButton ); + + #endregion + internal void MouseUp( HHTMLBrowser unBrowserHandle, IntPtr eMouseButton ) + { + _MouseUp( Self, unBrowserHandle, eMouseButton ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDown", CallingConvention = Platform.CC)] + private static extern void _MouseDown( IntPtr self, HHTMLBrowser unBrowserHandle, IntPtr eMouseButton ); + + #endregion + internal void MouseDown( HHTMLBrowser unBrowserHandle, IntPtr eMouseButton ) + { + _MouseDown( Self, unBrowserHandle, eMouseButton ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDoubleClick", CallingConvention = Platform.CC)] + private static extern void _MouseDoubleClick( IntPtr self, HHTMLBrowser unBrowserHandle, IntPtr eMouseButton ); + + #endregion + internal void MouseDoubleClick( HHTMLBrowser unBrowserHandle, IntPtr eMouseButton ) + { + _MouseDoubleClick( Self, unBrowserHandle, eMouseButton ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseMove", CallingConvention = Platform.CC)] + private static extern void _MouseMove( IntPtr self, HHTMLBrowser unBrowserHandle, int x, int y ); + + #endregion + internal void MouseMove( HHTMLBrowser unBrowserHandle, int x, int y ) + { + _MouseMove( Self, unBrowserHandle, x, y ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseWheel", CallingConvention = Platform.CC)] + private static extern void _MouseWheel( IntPtr self, HHTMLBrowser unBrowserHandle, int nDelta ); + + #endregion + internal void MouseWheel( HHTMLBrowser unBrowserHandle, int nDelta ) + { + _MouseWheel( Self, unBrowserHandle, nDelta ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyDown", CallingConvention = Platform.CC)] + private static extern void _KeyDown( IntPtr self, HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, IntPtr eHTMLKeyModifiers, [MarshalAs( UnmanagedType.U1 )] bool bIsSystemKey ); + + #endregion + internal void KeyDown( HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, IntPtr eHTMLKeyModifiers, [MarshalAs( UnmanagedType.U1 )] bool bIsSystemKey ) + { + _KeyDown( Self, unBrowserHandle, nNativeKeyCode, eHTMLKeyModifiers, bIsSystemKey ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyUp", CallingConvention = Platform.CC)] + private static extern void _KeyUp( IntPtr self, HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, IntPtr eHTMLKeyModifiers ); + + #endregion + internal void KeyUp( HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, IntPtr eHTMLKeyModifiers ) + { + _KeyUp( Self, unBrowserHandle, nNativeKeyCode, eHTMLKeyModifiers ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyChar", CallingConvention = Platform.CC)] + private static extern void _KeyChar( IntPtr self, HHTMLBrowser unBrowserHandle, uint cUnicodeChar, IntPtr eHTMLKeyModifiers ); + + #endregion + internal void KeyChar( HHTMLBrowser unBrowserHandle, uint cUnicodeChar, IntPtr eHTMLKeyModifiers ) + { + _KeyChar( Self, unBrowserHandle, cUnicodeChar, eHTMLKeyModifiers ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll", CallingConvention = Platform.CC)] + private static extern void _SetHorizontalScroll( IntPtr self, HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll ); + + #endregion + internal void SetHorizontalScroll( HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll ) + { + _SetHorizontalScroll( Self, unBrowserHandle, nAbsolutePixelScroll ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetVerticalScroll", CallingConvention = Platform.CC)] + private static extern void _SetVerticalScroll( IntPtr self, HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll ); + + #endregion + internal void SetVerticalScroll( HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll ) + { + _SetVerticalScroll( Self, unBrowserHandle, nAbsolutePixelScroll ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetKeyFocus", CallingConvention = Platform.CC)] + private static extern void _SetKeyFocus( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bHasKeyFocus ); + + #endregion + internal void SetKeyFocus( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bHasKeyFocus ) + { + _SetKeyFocus( Self, unBrowserHandle, bHasKeyFocus ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_ViewSource", CallingConvention = Platform.CC)] + private static extern void _ViewSource( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void ViewSource( HHTMLBrowser unBrowserHandle ) + { + _ViewSource( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_CopyToClipboard", CallingConvention = Platform.CC)] + private static extern void _CopyToClipboard( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void CopyToClipboard( HHTMLBrowser unBrowserHandle ) + { + _CopyToClipboard( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_PasteFromClipboard", CallingConvention = Platform.CC)] + private static extern void _PasteFromClipboard( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void PasteFromClipboard( HHTMLBrowser unBrowserHandle ) + { + _PasteFromClipboard( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_Find", CallingConvention = Platform.CC)] + private static extern void _Find( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchSearchStr, [MarshalAs( UnmanagedType.U1 )] bool bCurrentlyInFind, [MarshalAs( UnmanagedType.U1 )] bool bReverse ); + + #endregion + internal void Find( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchSearchStr, [MarshalAs( UnmanagedType.U1 )] bool bCurrentlyInFind, [MarshalAs( UnmanagedType.U1 )] bool bReverse ) + { + _Find( Self, unBrowserHandle, pchSearchStr, bCurrentlyInFind, bReverse ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_StopFind", CallingConvention = Platform.CC)] + private static extern void _StopFind( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void StopFind( HHTMLBrowser unBrowserHandle ) + { + _StopFind( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition", CallingConvention = Platform.CC)] + private static extern void _GetLinkAtPosition( IntPtr self, HHTMLBrowser unBrowserHandle, int x, int y ); + + #endregion + internal void GetLinkAtPosition( HHTMLBrowser unBrowserHandle, int x, int y ) + { + _GetLinkAtPosition( Self, unBrowserHandle, x, y ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetCookie", CallingConvention = Platform.CC)] + private static extern void _SetCookie( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHostname, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPath, RTime32 nExpires, [MarshalAs( UnmanagedType.U1 )] bool bSecure, [MarshalAs( UnmanagedType.U1 )] bool bHTTPOnly ); + + #endregion + internal void SetCookie( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHostname, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPath, RTime32 nExpires, [MarshalAs( UnmanagedType.U1 )] bool bSecure, [MarshalAs( UnmanagedType.U1 )] bool bHTTPOnly ) + { + _SetCookie( Self, pchHostname, pchKey, pchValue, pchPath, nExpires, bSecure, bHTTPOnly ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor", CallingConvention = Platform.CC)] + private static extern void _SetPageScaleFactor( IntPtr self, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ); + + #endregion + internal void SetPageScaleFactor( HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ) + { + _SetPageScaleFactor( Self, unBrowserHandle, flZoom, nPointX, nPointY ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetBackgroundMode", CallingConvention = Platform.CC)] + private static extern void _SetBackgroundMode( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bBackgroundMode ); + + #endregion + internal void SetBackgroundMode( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bBackgroundMode ) + { + _SetBackgroundMode( Self, unBrowserHandle, bBackgroundMode ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor", CallingConvention = Platform.CC)] + private static extern void _SetDPIScalingFactor( IntPtr self, HHTMLBrowser unBrowserHandle, float flDPIScaling ); + + #endregion + internal void SetDPIScalingFactor( HHTMLBrowser unBrowserHandle, float flDPIScaling ) + { + _SetDPIScalingFactor( Self, unBrowserHandle, flDPIScaling ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_OpenDeveloperTools", CallingConvention = Platform.CC)] + private static extern void _OpenDeveloperTools( IntPtr self, HHTMLBrowser unBrowserHandle ); + + #endregion + internal void OpenDeveloperTools( HHTMLBrowser unBrowserHandle ) + { + _OpenDeveloperTools( Self, unBrowserHandle ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_AllowStartRequest", CallingConvention = Platform.CC)] + private static extern void _AllowStartRequest( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bAllowed ); + + #endregion + internal void AllowStartRequest( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bAllowed ) + { + _AllowStartRequest( Self, unBrowserHandle, bAllowed ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_JSDialogResponse", CallingConvention = Platform.CC)] + private static extern void _JSDialogResponse( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bResult ); + + #endregion + internal void JSDialogResponse( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.U1 )] bool bResult ) + { + _JSDialogResponse( Self, unBrowserHandle, bResult ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse", CallingConvention = Platform.CC)] + private static extern void _FileLoadDialogResponse( IntPtr self, HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchSelectedFiles ); + + #endregion + internal void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchSelectedFiles ) + { + _FileLoadDialogResponse( Self, unBrowserHandle, pchSelectedFiles ); + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamHTTP.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTTP.cs new file mode 100644 index 0000000..599054b --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamHTTP.cs @@ -0,0 +1,325 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamHTTP : SteamInterface + { + + internal ISteamHTTP( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamHTTP_v003", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamHTTP_v003(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamHTTP_v003(); + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerHTTP_v003", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerHTTP_v003(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerHTTP_v003(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_CreateHTTPRequest", CallingConvention = Platform.CC)] + private static extern HTTPRequestHandle _CreateHTTPRequest( IntPtr self, HTTPMethod eHTTPRequestMethod, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchAbsoluteURL ); + + #endregion + internal HTTPRequestHandle CreateHTTPRequest( HTTPMethod eHTTPRequestMethod, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchAbsoluteURL ) + { + var returnValue = _CreateHTTPRequest( Self, eHTTPRequestMethod, pchAbsoluteURL ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestContextValue( IntPtr self, HTTPRequestHandle hRequest, ulong ulContextValue ); + + #endregion + internal bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, ulong ulContextValue ) + { + var returnValue = _SetHTTPRequestContextValue( Self, hRequest, ulContextValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestNetworkActivityTimeout( IntPtr self, HTTPRequestHandle hRequest, uint unTimeoutSeconds ); + + #endregion + internal bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint unTimeoutSeconds ) + { + var returnValue = _SetHTTPRequestNetworkActivityTimeout( Self, hRequest, unTimeoutSeconds ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestHeaderValue( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderValue ); + + #endregion + internal bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderValue ) + { + var returnValue = _SetHTTPRequestHeaderValue( Self, hRequest, pchHeaderName, pchHeaderValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestGetOrPostParameter( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchParamName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchParamValue ); + + #endregion + internal bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchParamName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchParamValue ) + { + var returnValue = _SetHTTPRequestGetOrPostParameter( Self, hRequest, pchParamName, pchParamValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequest", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SendHTTPRequest( IntPtr self, HTTPRequestHandle hRequest, ref SteamAPICall_t pCallHandle ); + + #endregion + internal bool SendHTTPRequest( HTTPRequestHandle hRequest, ref SteamAPICall_t pCallHandle ) + { + var returnValue = _SendHTTPRequest( Self, hRequest, ref pCallHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SendHTTPRequestAndStreamResponse( IntPtr self, HTTPRequestHandle hRequest, ref SteamAPICall_t pCallHandle ); + + #endregion + internal bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, ref SteamAPICall_t pCallHandle ) + { + var returnValue = _SendHTTPRequestAndStreamResponse( Self, hRequest, ref pCallHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_DeferHTTPRequest", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _DeferHTTPRequest( IntPtr self, HTTPRequestHandle hRequest ); + + #endregion + internal bool DeferHTTPRequest( HTTPRequestHandle hRequest ) + { + var returnValue = _DeferHTTPRequest( Self, hRequest ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _PrioritizeHTTPRequest( IntPtr self, HTTPRequestHandle hRequest ); + + #endregion + internal bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest ) + { + var returnValue = _PrioritizeHTTPRequest( Self, hRequest ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetHTTPResponseHeaderSize( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderName, ref uint unResponseHeaderSize ); + + #endregion + internal bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderName, ref uint unResponseHeaderSize ) + { + var returnValue = _GetHTTPResponseHeaderSize( Self, hRequest, pchHeaderName, ref unResponseHeaderSize ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetHTTPResponseHeaderValue( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderName, ref byte pHeaderValueBuffer, uint unBufferSize ); + + #endregion + internal bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHeaderName, ref byte pHeaderValueBuffer, uint unBufferSize ) + { + var returnValue = _GetHTTPResponseHeaderValue( Self, hRequest, pchHeaderName, ref pHeaderValueBuffer, unBufferSize ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetHTTPResponseBodySize( IntPtr self, HTTPRequestHandle hRequest, ref uint unBodySize ); + + #endregion + internal bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, ref uint unBodySize ) + { + var returnValue = _GetHTTPResponseBodySize( Self, hRequest, ref unBodySize ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetHTTPResponseBodyData( IntPtr self, HTTPRequestHandle hRequest, ref byte pBodyDataBuffer, uint unBufferSize ); + + #endregion + internal bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, ref byte pBodyDataBuffer, uint unBufferSize ) + { + var returnValue = _GetHTTPResponseBodyData( Self, hRequest, ref pBodyDataBuffer, unBufferSize ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetHTTPStreamingResponseBodyData( IntPtr self, HTTPRequestHandle hRequest, uint cOffset, ref byte pBodyDataBuffer, uint unBufferSize ); + + #endregion + internal bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint cOffset, ref byte pBodyDataBuffer, uint unBufferSize ) + { + var returnValue = _GetHTTPStreamingResponseBodyData( Self, hRequest, cOffset, ref pBodyDataBuffer, unBufferSize ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_ReleaseHTTPRequest", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ReleaseHTTPRequest( IntPtr self, HTTPRequestHandle hRequest ); + + #endregion + internal bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) + { + var returnValue = _ReleaseHTTPRequest( Self, hRequest ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetHTTPDownloadProgressPct( IntPtr self, HTTPRequestHandle hRequest, ref float pflPercentOut ); + + #endregion + internal bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, ref float pflPercentOut ) + { + var returnValue = _GetHTTPDownloadProgressPct( Self, hRequest, ref pflPercentOut ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestRawPostBody( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchContentType, [In,Out] byte[] pubBody, uint unBodyLen ); + + #endregion + internal bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchContentType, [In,Out] byte[] pubBody, uint unBodyLen ) + { + var returnValue = _SetHTTPRequestRawPostBody( Self, hRequest, pchContentType, pubBody, unBodyLen ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_CreateCookieContainer", CallingConvention = Platform.CC)] + private static extern HTTPCookieContainerHandle _CreateCookieContainer( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bAllowResponsesToModify ); + + #endregion + internal HTTPCookieContainerHandle CreateCookieContainer( [MarshalAs( UnmanagedType.U1 )] bool bAllowResponsesToModify ) + { + var returnValue = _CreateCookieContainer( Self, bAllowResponsesToModify ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_ReleaseCookieContainer", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ReleaseCookieContainer( IntPtr self, HTTPCookieContainerHandle hCookieContainer ); + + #endregion + internal bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer ) + { + var returnValue = _ReleaseCookieContainer( Self, hCookieContainer ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetCookie", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetCookie( IntPtr self, HTTPCookieContainerHandle hCookieContainer, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHost, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUrl, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchCookie ); + + #endregion + internal bool SetCookie( HTTPCookieContainerHandle hCookieContainer, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchHost, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUrl, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchCookie ) + { + var returnValue = _SetCookie( Self, hCookieContainer, pchHost, pchUrl, pchCookie ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestCookieContainer( IntPtr self, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ); + + #endregion + internal bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ) + { + var returnValue = _SetHTTPRequestCookieContainer( Self, hRequest, hCookieContainer ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestUserAgentInfo( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUserAgentInfo ); + + #endregion + internal bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchUserAgentInfo ) + { + var returnValue = _SetHTTPRequestUserAgentInfo( Self, hRequest, pchUserAgentInfo ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestRequiresVerifiedCertificate( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.U1 )] bool bRequireVerifiedCertificate ); + + #endregion + internal bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.U1 )] bool bRequireVerifiedCertificate ) + { + var returnValue = _SetHTTPRequestRequiresVerifiedCertificate( Self, hRequest, bRequireVerifiedCertificate ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetHTTPRequestAbsoluteTimeoutMS( IntPtr self, HTTPRequestHandle hRequest, uint unMilliseconds ); + + #endregion + internal bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint unMilliseconds ) + { + var returnValue = _SetHTTPRequestAbsoluteTimeoutMS( Self, hRequest, unMilliseconds ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetHTTPRequestWasTimedOut( IntPtr self, HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.U1 )] ref bool pbWasTimedOut ); + + #endregion + internal bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, [MarshalAs( UnmanagedType.U1 )] ref bool pbWasTimedOut ) + { + var returnValue = _GetHTTPRequestWasTimedOut( Self, hRequest, ref pbWasTimedOut ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs index 3f68640..3d1ab52 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamInput.cs @@ -7,126 +7,92 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamInput : SteamInterface + internal unsafe class ISteamInput : SteamInterface { - public override string InterfaceName => "SteamInput001"; - public override void InitInternals() + internal ISteamInput( bool IsGameServer ) { - _DoInit = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _DoShutdown = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _RunFrame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _GetConnectedControllers = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _GetActionSetHandle = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _ActivateActionSet = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetCurrentActionSet = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _ActivateActionSetLayer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _DeactivateActionSetLayer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _DeactivateAllActionSetLayers = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetActiveActionSetLayers = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GetDigitalActionHandle = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _GetDigitalActionData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _GetDigitalActionOrigins = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _GetAnalogActionHandle = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetAnalogActionData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _GetAnalogActionOrigins = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _GetGlyphForActionOrigin = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetStringForActionOrigin = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _StopAnalogActionMomentum = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _GetMotionData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _TriggerVibration = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _SetLEDColor = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _TriggerHapticPulse = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _TriggerRepeatedHapticPulse = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _ShowBindingPanel = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _GetInputTypeForHandle = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _GetControllerForGamepadIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _GetGamepadIndexForController = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _GetStringForXboxOrigin = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - _GetGlyphForXboxOrigin = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 240 ) ) ); - _GetActionOriginFromXboxOrigin = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 248 ) ) ); - _TranslateActionOrigin = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 256 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _DoInit = null; - _DoShutdown = null; - _RunFrame = null; - _GetConnectedControllers = null; - _GetActionSetHandle = null; - _ActivateActionSet = null; - _GetCurrentActionSet = null; - _ActivateActionSetLayer = null; - _DeactivateActionSetLayer = null; - _DeactivateAllActionSetLayers = null; - _GetActiveActionSetLayers = null; - _GetDigitalActionHandle = null; - _GetDigitalActionData = null; - _GetDigitalActionOrigins = null; - _GetAnalogActionHandle = null; - _GetAnalogActionData = null; - _GetAnalogActionOrigins = null; - _GetGlyphForActionOrigin = null; - _GetStringForActionOrigin = null; - _StopAnalogActionMomentum = null; - _GetMotionData = null; - _TriggerVibration = null; - _SetLEDColor = null; - _TriggerHapticPulse = null; - _TriggerRepeatedHapticPulse = null; - _ShowBindingPanel = null; - _GetInputTypeForHandle = null; - _GetControllerForGamepadIndex = null; - _GetGamepadIndexForController = null; - _GetStringForXboxOrigin = null; - _GetGlyphForXboxOrigin = null; - _GetActionOriginFromXboxOrigin = null; - _TranslateActionOrigin = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamInput_v006", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamInput_v006(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamInput_v006(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_Init", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDoInit( IntPtr self ); - private FDoInit _DoInit; + private static extern bool _Init( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bExplicitlyCallRunFrame ); #endregion - internal bool DoInit() + internal bool Init( [MarshalAs( UnmanagedType.U1 )] bool bExplicitlyCallRunFrame ) { - var returnValue = _DoInit( Self ); + var returnValue = _Init( Self, bExplicitlyCallRunFrame ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_Shutdown", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDoShutdown( IntPtr self ); - private FDoShutdown _DoShutdown; + private static extern bool _Shutdown( IntPtr self ); #endregion - internal bool DoShutdown() + internal bool Shutdown() { - var returnValue = _DoShutdown( Self ); + var returnValue = _Shutdown( Self ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRunFrame( IntPtr self ); - private FRunFrame _RunFrame; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_SetInputActionManifestFilePath", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetInputActionManifestFilePath( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchInputActionManifestAbsolutePath ); #endregion - internal void RunFrame() + internal bool SetInputActionManifestFilePath( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchInputActionManifestAbsolutePath ) { - _RunFrame( Self ); + var returnValue = _SetInputActionManifestFilePath( Self, pchInputActionManifestAbsolutePath ); + return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetConnectedControllers( IntPtr self, [In,Out] InputHandle_t[] handlesOut ); - private FGetConnectedControllers _GetConnectedControllers; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_RunFrame", CallingConvention = Platform.CC)] + private static extern void _RunFrame( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bReservedValue ); + + #endregion + internal void RunFrame( [MarshalAs( UnmanagedType.U1 )] bool bReservedValue ) + { + _RunFrame( Self, bReservedValue ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_BWaitForData", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BWaitForData( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bWaitForever, uint unTimeout ); + + #endregion + internal bool BWaitForData( [MarshalAs( UnmanagedType.U1 )] bool bWaitForever, uint unTimeout ) + { + var returnValue = _BWaitForData( Self, bWaitForever, unTimeout ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_BNewDataAvailable", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BNewDataAvailable( IntPtr self ); + + #endregion + internal bool BNewDataAvailable() + { + var returnValue = _BNewDataAvailable( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetConnectedControllers", CallingConvention = Platform.CC)] + private static extern int _GetConnectedControllers( IntPtr self, [In,Out] InputHandle_t[] handlesOut ); #endregion internal int GetConnectedControllers( [In,Out] InputHandle_t[] handlesOut ) @@ -136,9 +102,18 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputActionSetHandle_t FGetActionSetHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionSetName ); - private FGetActionSetHandle _GetActionSetHandle; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_EnableDeviceCallbacks", CallingConvention = Platform.CC)] + private static extern void _EnableDeviceCallbacks( IntPtr self ); + + #endregion + internal void EnableDeviceCallbacks() + { + _EnableDeviceCallbacks( Self ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetActionSetHandle", CallingConvention = Platform.CC)] + private static extern InputActionSetHandle_t _GetActionSetHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionSetName ); #endregion internal InputActionSetHandle_t GetActionSetHandle( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionSetName ) @@ -148,9 +123,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FActivateActionSet( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ); - private FActivateActionSet _ActivateActionSet; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_ActivateActionSet", CallingConvention = Platform.CC)] + private static extern void _ActivateActionSet( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ); #endregion internal void ActivateActionSet( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ) @@ -159,9 +133,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputActionSetHandle_t FGetCurrentActionSet( IntPtr self, InputHandle_t inputHandle ); - private FGetCurrentActionSet _GetCurrentActionSet; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetCurrentActionSet", CallingConvention = Platform.CC)] + private static extern InputActionSetHandle_t _GetCurrentActionSet( IntPtr self, InputHandle_t inputHandle ); #endregion internal InputActionSetHandle_t GetCurrentActionSet( InputHandle_t inputHandle ) @@ -171,9 +144,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FActivateActionSetLayer( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); - private FActivateActionSetLayer _ActivateActionSetLayer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_ActivateActionSetLayer", CallingConvention = Platform.CC)] + private static extern void _ActivateActionSetLayer( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); #endregion internal void ActivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) @@ -182,9 +154,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FDeactivateActionSetLayer( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); - private FDeactivateActionSetLayer _DeactivateActionSetLayer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_DeactivateActionSetLayer", CallingConvention = Platform.CC)] + private static extern void _DeactivateActionSetLayer( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); #endregion internal void DeactivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) @@ -193,9 +164,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FDeactivateAllActionSetLayers( IntPtr self, InputHandle_t inputHandle ); - private FDeactivateAllActionSetLayers _DeactivateAllActionSetLayers; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_DeactivateAllActionSetLayers", CallingConvention = Platform.CC)] + private static extern void _DeactivateAllActionSetLayers( IntPtr self, InputHandle_t inputHandle ); #endregion internal void DeactivateAllActionSetLayers( InputHandle_t inputHandle ) @@ -204,9 +174,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetActiveActionSetLayers( IntPtr self, InputHandle_t inputHandle, [In,Out] InputActionSetHandle_t[] handlesOut ); - private FGetActiveActionSetLayers _GetActiveActionSetLayers; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetActiveActionSetLayers", CallingConvention = Platform.CC)] + private static extern int _GetActiveActionSetLayers( IntPtr self, InputHandle_t inputHandle, [In,Out] InputActionSetHandle_t[] handlesOut ); #endregion internal int GetActiveActionSetLayers( InputHandle_t inputHandle, [In,Out] InputActionSetHandle_t[] handlesOut ) @@ -216,9 +185,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputDigitalActionHandle_t FGetDigitalActionHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ); - private FGetDigitalActionHandle _GetDigitalActionHandle; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetDigitalActionHandle", CallingConvention = Platform.CC)] + private static extern InputDigitalActionHandle_t _GetDigitalActionHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ); #endregion internal InputDigitalActionHandle_t GetDigitalActionHandle( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ) @@ -228,31 +196,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetDigitalActionData( IntPtr self, ref DigitalState retVal, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ); - #else - private delegate DigitalState FGetDigitalActionData( IntPtr self, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ); - #endif - private FGetDigitalActionData _GetDigitalActionData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetDigitalActionData", CallingConvention = Platform.CC)] + private static extern DigitalState _GetDigitalActionData( IntPtr self, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ); #endregion internal DigitalState GetDigitalActionData( InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ) { - #if PLATFORM_WIN - var retVal = default( DigitalState ); - _GetDigitalActionData( Self, ref retVal, inputHandle, digitalActionHandle ); - return retVal; - #else var returnValue = _GetDigitalActionData( Self, inputHandle, digitalActionHandle ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetDigitalActionOrigins( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, ref InputActionOrigin originsOut ); - private FGetDigitalActionOrigins _GetDigitalActionOrigins; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetDigitalActionOrigins", CallingConvention = Platform.CC)] + private static extern int _GetDigitalActionOrigins( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, ref InputActionOrigin originsOut ); #endregion internal int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, ref InputActionOrigin originsOut ) @@ -262,9 +218,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputAnalogActionHandle_t FGetAnalogActionHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ); - private FGetAnalogActionHandle _GetAnalogActionHandle; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetStringForDigitalActionName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetStringForDigitalActionName( IntPtr self, InputDigitalActionHandle_t eActionHandle ); + + #endregion + internal string GetStringForDigitalActionName( InputDigitalActionHandle_t eActionHandle ) + { + var returnValue = _GetStringForDigitalActionName( Self, eActionHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionHandle", CallingConvention = Platform.CC)] + private static extern InputAnalogActionHandle_t _GetAnalogActionHandle( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ); #endregion internal InputAnalogActionHandle_t GetAnalogActionHandle( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszActionName ) @@ -274,31 +240,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetAnalogActionData( IntPtr self, ref AnalogState retVal, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ); - #else - private delegate AnalogState FGetAnalogActionData( IntPtr self, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ); - #endif - private FGetAnalogActionData _GetAnalogActionData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionData", CallingConvention = Platform.CC)] + private static extern AnalogState _GetAnalogActionData( IntPtr self, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ); #endregion internal AnalogState GetAnalogActionData( InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ) { - #if PLATFORM_WIN - var retVal = default( AnalogState ); - _GetAnalogActionData( Self, ref retVal, inputHandle, analogActionHandle ); - return retVal; - #else var returnValue = _GetAnalogActionData( Self, inputHandle, analogActionHandle ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetAnalogActionOrigins( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, ref InputActionOrigin originsOut ); - private FGetAnalogActionOrigins _GetAnalogActionOrigins; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionOrigins", CallingConvention = Platform.CC)] + private static extern int _GetAnalogActionOrigins( IntPtr self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, ref InputActionOrigin originsOut ); #endregion internal int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, ref InputActionOrigin originsOut ) @@ -308,21 +262,41 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetGlyphForActionOrigin( IntPtr self, InputActionOrigin eOrigin ); - private FGetGlyphForActionOrigin _GetGlyphForActionOrigin; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphPNGForActionOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetGlyphPNGForActionOrigin( IntPtr self, InputActionOrigin eOrigin, GlyphSize eSize, uint unFlags ); #endregion - internal string GetGlyphForActionOrigin( InputActionOrigin eOrigin ) + internal string GetGlyphPNGForActionOrigin( InputActionOrigin eOrigin, GlyphSize eSize, uint unFlags ) { - var returnValue = _GetGlyphForActionOrigin( Self, eOrigin ); + var returnValue = _GetGlyphPNGForActionOrigin( Self, eOrigin, eSize, unFlags ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetStringForActionOrigin( IntPtr self, InputActionOrigin eOrigin ); - private FGetStringForActionOrigin _GetStringForActionOrigin; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphSVGForActionOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetGlyphSVGForActionOrigin( IntPtr self, InputActionOrigin eOrigin, uint unFlags ); + + #endregion + internal string GetGlyphSVGForActionOrigin( InputActionOrigin eOrigin, uint unFlags ) + { + var returnValue = _GetGlyphSVGForActionOrigin( Self, eOrigin, unFlags ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphForActionOrigin_Legacy", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetGlyphForActionOrigin_Legacy( IntPtr self, InputActionOrigin eOrigin ); + + #endregion + internal string GetGlyphForActionOrigin_Legacy( InputActionOrigin eOrigin ) + { + var returnValue = _GetGlyphForActionOrigin_Legacy( Self, eOrigin ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetStringForActionOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetStringForActionOrigin( IntPtr self, InputActionOrigin eOrigin ); #endregion internal string GetStringForActionOrigin( InputActionOrigin eOrigin ) @@ -332,9 +306,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FStopAnalogActionMomentum( IntPtr self, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ); - private FStopAnalogActionMomentum _StopAnalogActionMomentum; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetStringForAnalogActionName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetStringForAnalogActionName( IntPtr self, InputAnalogActionHandle_t eActionHandle ); + + #endregion + internal string GetStringForAnalogActionName( InputAnalogActionHandle_t eActionHandle ) + { + var returnValue = _GetStringForAnalogActionName( Self, eActionHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_StopAnalogActionMomentum", CallingConvention = Platform.CC)] + private static extern void _StopAnalogActionMomentum( IntPtr self, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ); #endregion internal void StopAnalogActionMomentum( InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ) @@ -343,31 +327,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetMotionData( IntPtr self, ref MotionState retVal, InputHandle_t inputHandle ); - #else - private delegate MotionState FGetMotionData( IntPtr self, InputHandle_t inputHandle ); - #endif - private FGetMotionData _GetMotionData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetMotionData", CallingConvention = Platform.CC)] + private static extern MotionState _GetMotionData( IntPtr self, InputHandle_t inputHandle ); #endregion internal MotionState GetMotionData( InputHandle_t inputHandle ) { - #if PLATFORM_WIN - var retVal = default( MotionState ); - _GetMotionData( Self, ref retVal, inputHandle ); - return retVal; - #else var returnValue = _GetMotionData( Self, inputHandle ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FTriggerVibration( IntPtr self, InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed ); - private FTriggerVibration _TriggerVibration; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerVibration", CallingConvention = Platform.CC)] + private static extern void _TriggerVibration( IntPtr self, InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed ); #endregion internal void TriggerVibration( InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed ) @@ -376,9 +348,28 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetLEDColor( IntPtr self, InputHandle_t inputHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags ); - private FSetLEDColor _SetLEDColor; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerVibrationExtended", CallingConvention = Platform.CC)] + private static extern void _TriggerVibrationExtended( IntPtr self, InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed, ushort usLeftTriggerSpeed, ushort usRightTriggerSpeed ); + + #endregion + internal void TriggerVibrationExtended( InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed, ushort usLeftTriggerSpeed, ushort usRightTriggerSpeed ) + { + _TriggerVibrationExtended( Self, inputHandle, usLeftSpeed, usRightSpeed, usLeftTriggerSpeed, usRightTriggerSpeed ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerSimpleHapticEvent", CallingConvention = Platform.CC)] + private static extern void _TriggerSimpleHapticEvent( IntPtr self, InputHandle_t inputHandle, ControllerHapticLocation eHapticLocation, byte nIntensity, char nGainDB, byte nOtherIntensity, char nOtherGainDB ); + + #endregion + internal void TriggerSimpleHapticEvent( InputHandle_t inputHandle, ControllerHapticLocation eHapticLocation, byte nIntensity, char nGainDB, byte nOtherIntensity, char nOtherGainDB ) + { + _TriggerSimpleHapticEvent( Self, inputHandle, eHapticLocation, nIntensity, nGainDB, nOtherIntensity, nOtherGainDB ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_SetLEDColor", CallingConvention = Platform.CC)] + private static extern void _SetLEDColor( IntPtr self, InputHandle_t inputHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags ); #endregion internal void SetLEDColor( InputHandle_t inputHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags ) @@ -387,32 +378,29 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FTriggerHapticPulse( IntPtr self, InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec ); - private FTriggerHapticPulse _TriggerHapticPulse; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_Legacy_TriggerHapticPulse", CallingConvention = Platform.CC)] + private static extern void _Legacy_TriggerHapticPulse( IntPtr self, InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec ); #endregion - internal void TriggerHapticPulse( InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec ) + internal void Legacy_TriggerHapticPulse( InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec ) { - _TriggerHapticPulse( Self, inputHandle, eTargetPad, usDurationMicroSec ); + _Legacy_TriggerHapticPulse( Self, inputHandle, eTargetPad, usDurationMicroSec ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FTriggerRepeatedHapticPulse( IntPtr self, InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags ); - private FTriggerRepeatedHapticPulse _TriggerRepeatedHapticPulse; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_Legacy_TriggerRepeatedHapticPulse", CallingConvention = Platform.CC)] + private static extern void _Legacy_TriggerRepeatedHapticPulse( IntPtr self, InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags ); #endregion - internal void TriggerRepeatedHapticPulse( InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags ) + internal void Legacy_TriggerRepeatedHapticPulse( InputHandle_t inputHandle, SteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags ) { - _TriggerRepeatedHapticPulse( Self, inputHandle, eTargetPad, usDurationMicroSec, usOffMicroSec, unRepeat, nFlags ); + _Legacy_TriggerRepeatedHapticPulse( Self, inputHandle, eTargetPad, usDurationMicroSec, usOffMicroSec, unRepeat, nFlags ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_ShowBindingPanel", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FShowBindingPanel( IntPtr self, InputHandle_t inputHandle ); - private FShowBindingPanel _ShowBindingPanel; + private static extern bool _ShowBindingPanel( IntPtr self, InputHandle_t inputHandle ); #endregion internal bool ShowBindingPanel( InputHandle_t inputHandle ) @@ -422,9 +410,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputType FGetInputTypeForHandle( IntPtr self, InputHandle_t inputHandle ); - private FGetInputTypeForHandle _GetInputTypeForHandle; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetInputTypeForHandle", CallingConvention = Platform.CC)] + private static extern InputType _GetInputTypeForHandle( IntPtr self, InputHandle_t inputHandle ); #endregion internal InputType GetInputTypeForHandle( InputHandle_t inputHandle ) @@ -434,9 +421,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputHandle_t FGetControllerForGamepadIndex( IntPtr self, int nIndex ); - private FGetControllerForGamepadIndex _GetControllerForGamepadIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetControllerForGamepadIndex", CallingConvention = Platform.CC)] + private static extern InputHandle_t _GetControllerForGamepadIndex( IntPtr self, int nIndex ); #endregion internal InputHandle_t GetControllerForGamepadIndex( int nIndex ) @@ -446,9 +432,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetGamepadIndexForController( IntPtr self, InputHandle_t ulinputHandle ); - private FGetGamepadIndexForController _GetGamepadIndexForController; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGamepadIndexForController", CallingConvention = Platform.CC)] + private static extern int _GetGamepadIndexForController( IntPtr self, InputHandle_t ulinputHandle ); #endregion internal int GetGamepadIndexForController( InputHandle_t ulinputHandle ) @@ -458,9 +443,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetStringForXboxOrigin( IntPtr self, XboxOrigin eOrigin ); - private FGetStringForXboxOrigin _GetStringForXboxOrigin; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetStringForXboxOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetStringForXboxOrigin( IntPtr self, XboxOrigin eOrigin ); #endregion internal string GetStringForXboxOrigin( XboxOrigin eOrigin ) @@ -470,9 +454,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetGlyphForXboxOrigin( IntPtr self, XboxOrigin eOrigin ); - private FGetGlyphForXboxOrigin _GetGlyphForXboxOrigin; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphForXboxOrigin", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetGlyphForXboxOrigin( IntPtr self, XboxOrigin eOrigin ); #endregion internal string GetGlyphForXboxOrigin( XboxOrigin eOrigin ) @@ -482,9 +465,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputActionOrigin FGetActionOriginFromXboxOrigin( IntPtr self, InputHandle_t inputHandle, XboxOrigin eOrigin ); - private FGetActionOriginFromXboxOrigin _GetActionOriginFromXboxOrigin; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin", CallingConvention = Platform.CC)] + private static extern InputActionOrigin _GetActionOriginFromXboxOrigin( IntPtr self, InputHandle_t inputHandle, XboxOrigin eOrigin ); #endregion internal InputActionOrigin GetActionOriginFromXboxOrigin( InputHandle_t inputHandle, XboxOrigin eOrigin ) @@ -494,9 +476,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate InputActionOrigin FTranslateActionOrigin( IntPtr self, InputType eDestinationInputType, InputActionOrigin eSourceOrigin ); - private FTranslateActionOrigin _TranslateActionOrigin; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_TranslateActionOrigin", CallingConvention = Platform.CC)] + private static extern InputActionOrigin _TranslateActionOrigin( IntPtr self, InputType eDestinationInputType, InputActionOrigin eSourceOrigin ); #endregion internal InputActionOrigin TranslateActionOrigin( InputType eDestinationInputType, InputActionOrigin eSourceOrigin ) @@ -505,5 +486,39 @@ namespace Steamworks return returnValue; } + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetDeviceBindingRevision", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetDeviceBindingRevision( IntPtr self, InputHandle_t inputHandle, ref int pMajor, ref int pMinor ); + + #endregion + internal bool GetDeviceBindingRevision( InputHandle_t inputHandle, ref int pMajor, ref int pMinor ) + { + var returnValue = _GetDeviceBindingRevision( Self, inputHandle, ref pMajor, ref pMinor ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetRemotePlaySessionID", CallingConvention = Platform.CC)] + private static extern uint _GetRemotePlaySessionID( IntPtr self, InputHandle_t inputHandle ); + + #endregion + internal uint GetRemotePlaySessionID( InputHandle_t inputHandle ) + { + var returnValue = _GetRemotePlaySessionID( Self, inputHandle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInput_GetSessionInputConfigurationSettings", CallingConvention = Platform.CC)] + private static extern ushort _GetSessionInputConfigurationSettings( IntPtr self ); + + #endregion + internal ushort GetSessionInputConfigurationSettings() + { + var returnValue = _GetSessionInputConfigurationSettings( Self ); + return returnValue; + } + } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs index e1a4d34..c5ea02c 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamInventory.cs @@ -7,97 +7,25 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamInventory : SteamInterface + internal unsafe class ISteamInventory : SteamInterface { - public override string InterfaceName => "STEAMINVENTORY_INTERFACE_V003"; - public override void InitInternals() + internal ISteamInventory( bool IsGameServer ) { - _GetResultStatus = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _GetResultItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetResultItemProperty = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _GetResultTimestamp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _CheckResultSteamID = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _DestroyResult = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetAllItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _GetItemsByID = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _SerializeResult = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _DeserializeResult = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GenerateItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GrantPromoItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _AddPromoItem = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _AddPromoItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _ConsumeItem = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _ExchangeItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _TransferItemQuantity = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _SendItemDropHeartbeat = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _TriggerItemDrop = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _TradeItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _LoadItemDefinitions = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _GetItemDefinitionIDs = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _GetItemDefinitionProperty = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _RequestEligiblePromoItemDefinitionsIDs = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _GetEligiblePromoItemDefinitionIDs = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _StartPurchase = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _RequestPrices = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _GetNumItemsWithPrices = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _GetItemsWithPrices = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _GetItemPrice = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - _StartUpdateProperties = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 240 ) ) ); - _RemoveProperty = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 248 ) ) ); - _SetProperty1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 256 ) ) ); - _SetProperty2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 264 ) ) ); - _SetProperty3 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 272 ) ) ); - _SetProperty4 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 280 ) ) ); - _SubmitUpdateProperties = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 288 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _GetResultStatus = null; - _GetResultItems = null; - _GetResultItemProperty = null; - _GetResultTimestamp = null; - _CheckResultSteamID = null; - _DestroyResult = null; - _GetAllItems = null; - _GetItemsByID = null; - _SerializeResult = null; - _DeserializeResult = null; - _GenerateItems = null; - _GrantPromoItems = null; - _AddPromoItem = null; - _AddPromoItems = null; - _ConsumeItem = null; - _ExchangeItems = null; - _TransferItemQuantity = null; - _SendItemDropHeartbeat = null; - _TriggerItemDrop = null; - _TradeItems = null; - _LoadItemDefinitions = null; - _GetItemDefinitionIDs = null; - _GetItemDefinitionProperty = null; - _RequestEligiblePromoItemDefinitionsIDs = null; - _GetEligiblePromoItemDefinitionIDs = null; - _StartPurchase = null; - _RequestPrices = null; - _GetNumItemsWithPrices = null; - _GetItemsWithPrices = null; - _GetItemPrice = null; - _StartUpdateProperties = null; - _RemoveProperty = null; - _SetProperty1 = null; - _SetProperty2 = null; - _SetProperty3 = null; - _SetProperty4 = null; - _SubmitUpdateProperties = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamInventory_v003", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamInventory_v003(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamInventory_v003(); + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerInventory_v003", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerInventory_v003(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerInventory_v003(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Result FGetResultStatus( IntPtr self, SteamInventoryResult_t resultHandle ); - private FGetResultStatus _GetResultStatus; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus", CallingConvention = Platform.CC)] + private static extern Result _GetResultStatus( IntPtr self, SteamInventoryResult_t resultHandle ); #endregion internal Result GetResultStatus( SteamInventoryResult_t resultHandle ) @@ -107,10 +35,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetResultItems", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetResultItems( IntPtr self, SteamInventoryResult_t resultHandle, [In,Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize ); - private FGetResultItems _GetResultItems; + private static extern bool _GetResultItems( IntPtr self, SteamInventoryResult_t resultHandle, [In,Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize ); #endregion internal bool GetResultItems( SteamInventoryResult_t resultHandle, [In,Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize ) @@ -120,24 +47,22 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetResultItemProperty", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetResultItemProperty( IntPtr self, SteamInventoryResult_t resultHandle, uint unItemIndex, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, IntPtr pchValueBuffer, ref uint punValueBufferSizeOut ); - private FGetResultItemProperty _GetResultItemProperty; + private static extern bool _GetResultItemProperty( IntPtr self, SteamInventoryResult_t resultHandle, uint unItemIndex, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, IntPtr pchValueBuffer, ref uint punValueBufferSizeOut ); #endregion internal bool GetResultItemProperty( SteamInventoryResult_t resultHandle, uint unItemIndex, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, out string pchValueBuffer, ref uint punValueBufferSizeOut ) { - IntPtr mempchValueBuffer = Helpers.TakeMemory(); + using var mempchValueBuffer = Helpers.TakeMemory(); var returnValue = _GetResultItemProperty( Self, resultHandle, unItemIndex, pchPropertyName, mempchValueBuffer, ref punValueBufferSizeOut ); pchValueBuffer = Helpers.MemoryToString( mempchValueBuffer ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetResultTimestamp( IntPtr self, SteamInventoryResult_t resultHandle ); - private FGetResultTimestamp _GetResultTimestamp; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetResultTimestamp", CallingConvention = Platform.CC)] + private static extern uint _GetResultTimestamp( IntPtr self, SteamInventoryResult_t resultHandle ); #endregion internal uint GetResultTimestamp( SteamInventoryResult_t resultHandle ) @@ -147,10 +72,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_CheckResultSteamID", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCheckResultSteamID( IntPtr self, SteamInventoryResult_t resultHandle, SteamId steamIDExpected ); - private FCheckResultSteamID _CheckResultSteamID; + private static extern bool _CheckResultSteamID( IntPtr self, SteamInventoryResult_t resultHandle, SteamId steamIDExpected ); #endregion internal bool CheckResultSteamID( SteamInventoryResult_t resultHandle, SteamId steamIDExpected ) @@ -160,9 +84,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FDestroyResult( IntPtr self, SteamInventoryResult_t resultHandle ); - private FDestroyResult _DestroyResult; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_DestroyResult", CallingConvention = Platform.CC)] + private static extern void _DestroyResult( IntPtr self, SteamInventoryResult_t resultHandle ); #endregion internal void DestroyResult( SteamInventoryResult_t resultHandle ) @@ -171,10 +94,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetAllItems", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetAllItems( IntPtr self, ref SteamInventoryResult_t pResultHandle ); - private FGetAllItems _GetAllItems; + private static extern bool _GetAllItems( IntPtr self, ref SteamInventoryResult_t pResultHandle ); #endregion internal bool GetAllItems( ref SteamInventoryResult_t pResultHandle ) @@ -184,10 +106,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetItemsByID", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetItemsByID( IntPtr self, ref SteamInventoryResult_t pResultHandle, ref InventoryItemId pInstanceIDs, uint unCountInstanceIDs ); - private FGetItemsByID _GetItemsByID; + private static extern bool _GetItemsByID( IntPtr self, ref SteamInventoryResult_t pResultHandle, ref InventoryItemId pInstanceIDs, uint unCountInstanceIDs ); #endregion internal bool GetItemsByID( ref SteamInventoryResult_t pResultHandle, ref InventoryItemId pInstanceIDs, uint unCountInstanceIDs ) @@ -197,10 +118,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_SerializeResult", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSerializeResult( IntPtr self, SteamInventoryResult_t resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize ); - private FSerializeResult _SerializeResult; + private static extern bool _SerializeResult( IntPtr self, SteamInventoryResult_t resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize ); #endregion internal bool SerializeResult( SteamInventoryResult_t resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize ) @@ -210,10 +130,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_DeserializeResult", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDeserializeResult( IntPtr self, ref SteamInventoryResult_t pOutResultHandle, IntPtr pBuffer, uint unBufferSize, [MarshalAs( UnmanagedType.U1 )] bool bRESERVED_MUST_BE_FALSE ); - private FDeserializeResult _DeserializeResult; + private static extern bool _DeserializeResult( IntPtr self, ref SteamInventoryResult_t pOutResultHandle, IntPtr pBuffer, uint unBufferSize, [MarshalAs( UnmanagedType.U1 )] bool bRESERVED_MUST_BE_FALSE ); #endregion internal bool DeserializeResult( ref SteamInventoryResult_t pOutResultHandle, IntPtr pBuffer, uint unBufferSize, [MarshalAs( UnmanagedType.U1 )] bool bRESERVED_MUST_BE_FALSE ) @@ -223,10 +142,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GenerateItems", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGenerateItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] uint[] punArrayQuantity, uint unArrayLength ); - private FGenerateItems _GenerateItems; + private static extern bool _GenerateItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] uint[] punArrayQuantity, uint unArrayLength ); #endregion internal bool GenerateItems( ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] uint[] punArrayQuantity, uint unArrayLength ) @@ -236,10 +154,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GrantPromoItems", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGrantPromoItems( IntPtr self, ref SteamInventoryResult_t pResultHandle ); - private FGrantPromoItems _GrantPromoItems; + private static extern bool _GrantPromoItems( IntPtr self, ref SteamInventoryResult_t pResultHandle ); #endregion internal bool GrantPromoItems( ref SteamInventoryResult_t pResultHandle ) @@ -249,10 +166,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_AddPromoItem", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddPromoItem( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryDefId itemDef ); - private FAddPromoItem _AddPromoItem; + private static extern bool _AddPromoItem( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryDefId itemDef ); #endregion internal bool AddPromoItem( ref SteamInventoryResult_t pResultHandle, InventoryDefId itemDef ) @@ -262,10 +178,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_AddPromoItems", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddPromoItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayItemDefs, uint unArrayLength ); - private FAddPromoItems _AddPromoItems; + private static extern bool _AddPromoItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayItemDefs, uint unArrayLength ); #endregion internal bool AddPromoItems( ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayItemDefs, uint unArrayLength ) @@ -275,10 +190,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_ConsumeItem", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FConsumeItem( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryItemId itemConsume, uint unQuantity ); - private FConsumeItem _ConsumeItem; + private static extern bool _ConsumeItem( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryItemId itemConsume, uint unQuantity ); #endregion internal bool ConsumeItem( ref SteamInventoryResult_t pResultHandle, InventoryItemId itemConsume, uint unQuantity ) @@ -288,10 +202,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_ExchangeItems", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FExchangeItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayGenerate, [In,Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In,Out] InventoryItemId[] pArrayDestroy, [In,Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength ); - private FExchangeItems _ExchangeItems; + private static extern bool _ExchangeItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayGenerate, [In,Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In,Out] InventoryItemId[] pArrayDestroy, [In,Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength ); #endregion internal bool ExchangeItems( ref SteamInventoryResult_t pResultHandle, [In,Out] InventoryDefId[] pArrayGenerate, [In,Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In,Out] InventoryItemId[] pArrayDestroy, [In,Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength ) @@ -301,10 +214,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_TransferItemQuantity", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FTransferItemQuantity( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryItemId itemIdSource, uint unQuantity, InventoryItemId itemIdDest ); - private FTransferItemQuantity _TransferItemQuantity; + private static extern bool _TransferItemQuantity( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryItemId itemIdSource, uint unQuantity, InventoryItemId itemIdDest ); #endregion internal bool TransferItemQuantity( ref SteamInventoryResult_t pResultHandle, InventoryItemId itemIdSource, uint unQuantity, InventoryItemId itemIdDest ) @@ -314,9 +226,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSendItemDropHeartbeat( IntPtr self ); - private FSendItemDropHeartbeat _SendItemDropHeartbeat; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_SendItemDropHeartbeat", CallingConvention = Platform.CC)] + private static extern void _SendItemDropHeartbeat( IntPtr self ); #endregion internal void SendItemDropHeartbeat() @@ -325,10 +236,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_TriggerItemDrop", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FTriggerItemDrop( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryDefId dropListDefinition ); - private FTriggerItemDrop _TriggerItemDrop; + private static extern bool _TriggerItemDrop( IntPtr self, ref SteamInventoryResult_t pResultHandle, InventoryDefId dropListDefinition ); #endregion internal bool TriggerItemDrop( ref SteamInventoryResult_t pResultHandle, InventoryDefId dropListDefinition ) @@ -338,10 +248,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_TradeItems", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FTradeItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, SteamId steamIDTradePartner, [In,Out] InventoryItemId[] pArrayGive, [In,Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In,Out] InventoryItemId[] pArrayGet, [In,Out] uint[] pArrayGetQuantity, uint nArrayGetLength ); - private FTradeItems _TradeItems; + private static extern bool _TradeItems( IntPtr self, ref SteamInventoryResult_t pResultHandle, SteamId steamIDTradePartner, [In,Out] InventoryItemId[] pArrayGive, [In,Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In,Out] InventoryItemId[] pArrayGet, [In,Out] uint[] pArrayGetQuantity, uint nArrayGetLength ); #endregion internal bool TradeItems( ref SteamInventoryResult_t pResultHandle, SteamId steamIDTradePartner, [In,Out] InventoryItemId[] pArrayGive, [In,Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In,Out] InventoryItemId[] pArrayGet, [In,Out] uint[] pArrayGetQuantity, uint nArrayGetLength ) @@ -351,10 +260,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_LoadItemDefinitions", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FLoadItemDefinitions( IntPtr self ); - private FLoadItemDefinitions _LoadItemDefinitions; + private static extern bool _LoadItemDefinitions( IntPtr self ); #endregion internal bool LoadItemDefinitions() @@ -364,10 +272,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionIDs", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetItemDefinitionIDs( IntPtr self, [In,Out] InventoryDefId[] pItemDefIDs, ref uint punItemDefIDsArraySize ); - private FGetItemDefinitionIDs _GetItemDefinitionIDs; + private static extern bool _GetItemDefinitionIDs( IntPtr self, [In,Out] InventoryDefId[] pItemDefIDs, ref uint punItemDefIDsArraySize ); #endregion internal bool GetItemDefinitionIDs( [In,Out] InventoryDefId[] pItemDefIDs, ref uint punItemDefIDsArraySize ) @@ -377,37 +284,34 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionProperty", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetItemDefinitionProperty( IntPtr self, InventoryDefId iDefinition, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, IntPtr pchValueBuffer, ref uint punValueBufferSizeOut ); - private FGetItemDefinitionProperty _GetItemDefinitionProperty; + private static extern bool _GetItemDefinitionProperty( IntPtr self, InventoryDefId iDefinition, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, IntPtr pchValueBuffer, ref uint punValueBufferSizeOut ); #endregion internal bool GetItemDefinitionProperty( InventoryDefId iDefinition, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, out string pchValueBuffer, ref uint punValueBufferSizeOut ) { - IntPtr mempchValueBuffer = Helpers.TakeMemory(); + using var mempchValueBuffer = Helpers.TakeMemory(); var returnValue = _GetItemDefinitionProperty( Self, iDefinition, pchPropertyName, mempchValueBuffer, ref punValueBufferSizeOut ); pchValueBuffer = Helpers.MemoryToString( mempchValueBuffer ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestEligiblePromoItemDefinitionsIDs( IntPtr self, SteamId steamID ); - private FRequestEligiblePromoItemDefinitionsIDs _RequestEligiblePromoItemDefinitionsIDs; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestEligiblePromoItemDefinitionsIDs( IntPtr self, SteamId steamID ); #endregion - internal async Task RequestEligiblePromoItemDefinitionsIDs( SteamId steamID ) + internal CallResult RequestEligiblePromoItemDefinitionsIDs( SteamId steamID ) { var returnValue = _RequestEligiblePromoItemDefinitionsIDs( Self, steamID ); - return await SteamInventoryEligiblePromoItemDefIDs_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetEligiblePromoItemDefinitionIDs( IntPtr self, SteamId steamID, [In,Out] InventoryDefId[] pItemDefIDs, ref uint punItemDefIDsArraySize ); - private FGetEligiblePromoItemDefinitionIDs _GetEligiblePromoItemDefinitionIDs; + private static extern bool _GetEligiblePromoItemDefinitionIDs( IntPtr self, SteamId steamID, [In,Out] InventoryDefId[] pItemDefIDs, ref uint punItemDefIDsArraySize ); #endregion internal bool GetEligiblePromoItemDefinitionIDs( SteamId steamID, [In,Out] InventoryDefId[] pItemDefIDs, ref uint punItemDefIDsArraySize ) @@ -417,33 +321,30 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FStartPurchase( IntPtr self, [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] uint[] punArrayQuantity, uint unArrayLength ); - private FStartPurchase _StartPurchase; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_StartPurchase", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _StartPurchase( IntPtr self, [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] uint[] punArrayQuantity, uint unArrayLength ); #endregion - internal async Task StartPurchase( [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] uint[] punArrayQuantity, uint unArrayLength ) + internal CallResult StartPurchase( [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] uint[] punArrayQuantity, uint unArrayLength ) { var returnValue = _StartPurchase( Self, pArrayItemDefs, punArrayQuantity, unArrayLength ); - return await SteamInventoryStartPurchaseResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestPrices( IntPtr self ); - private FRequestPrices _RequestPrices; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_RequestPrices", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestPrices( IntPtr self ); #endregion - internal async Task RequestPrices() + internal CallResult RequestPrices() { var returnValue = _RequestPrices( Self ); - return await SteamInventoryRequestPricesResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetNumItemsWithPrices( IntPtr self ); - private FGetNumItemsWithPrices _GetNumItemsWithPrices; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetNumItemsWithPrices", CallingConvention = Platform.CC)] + private static extern uint _GetNumItemsWithPrices( IntPtr self ); #endregion internal uint GetNumItemsWithPrices() @@ -453,10 +354,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetItemsWithPrices", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetItemsWithPrices( IntPtr self, [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] ulong[] pCurrentPrices, [In,Out] ulong[] pBasePrices, uint unArrayLength ); - private FGetItemsWithPrices _GetItemsWithPrices; + private static extern bool _GetItemsWithPrices( IntPtr self, [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] ulong[] pCurrentPrices, [In,Out] ulong[] pBasePrices, uint unArrayLength ); #endregion internal bool GetItemsWithPrices( [In,Out] InventoryDefId[] pArrayItemDefs, [In,Out] ulong[] pCurrentPrices, [In,Out] ulong[] pBasePrices, uint unArrayLength ) @@ -466,10 +366,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetItemPrice", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetItemPrice( IntPtr self, InventoryDefId iDefinition, ref ulong pCurrentPrice, ref ulong pBasePrice ); - private FGetItemPrice _GetItemPrice; + private static extern bool _GetItemPrice( IntPtr self, InventoryDefId iDefinition, ref ulong pCurrentPrice, ref ulong pBasePrice ); #endregion internal bool GetItemPrice( InventoryDefId iDefinition, ref ulong pCurrentPrice, ref ulong pBasePrice ) @@ -479,9 +378,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamInventoryUpdateHandle_t FStartUpdateProperties( IntPtr self ); - private FStartUpdateProperties _StartUpdateProperties; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_StartUpdateProperties", CallingConvention = Platform.CC)] + private static extern SteamInventoryUpdateHandle_t _StartUpdateProperties( IntPtr self ); #endregion internal SteamInventoryUpdateHandle_t StartUpdateProperties() @@ -491,10 +389,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_RemoveProperty", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRemoveProperty( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName ); - private FRemoveProperty _RemoveProperty; + private static extern bool _RemoveProperty( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName ); #endregion internal bool RemoveProperty( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName ) @@ -504,62 +401,57 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_SetPropertyString", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetProperty1( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyValue ); - private FSetProperty1 _SetProperty1; + private static extern bool _SetProperty( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyValue ); #endregion - internal bool SetProperty1( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyValue ) + internal bool SetProperty( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyValue ) { - var returnValue = _SetProperty1( Self, handle, nItemID, pchPropertyName, pchPropertyValue ); + var returnValue = _SetProperty( Self, handle, nItemID, pchPropertyName, pchPropertyValue ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_SetPropertyBool", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetProperty2( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.U1 )] bool bValue ); - private FSetProperty2 _SetProperty2; + private static extern bool _SetProperty( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.U1 )] bool bValue ); #endregion - internal bool SetProperty2( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.U1 )] bool bValue ) + internal bool SetProperty( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, [MarshalAs( UnmanagedType.U1 )] bool bValue ) { - var returnValue = _SetProperty2( Self, handle, nItemID, pchPropertyName, bValue ); + var returnValue = _SetProperty( Self, handle, nItemID, pchPropertyName, bValue ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_SetPropertyInt64", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetProperty3( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, long nValue ); - private FSetProperty3 _SetProperty3; + private static extern bool _SetProperty( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, long nValue ); #endregion - internal bool SetProperty3( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, long nValue ) + internal bool SetProperty( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, long nValue ) { - var returnValue = _SetProperty3( Self, handle, nItemID, pchPropertyName, nValue ); + var returnValue = _SetProperty( Self, handle, nItemID, pchPropertyName, nValue ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_SetPropertyFloat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetProperty4( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, float flValue ); - private FSetProperty4 _SetProperty4; + private static extern bool _SetProperty( IntPtr self, SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, float flValue ); #endregion - internal bool SetProperty4( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, float flValue ) + internal bool SetProperty( SteamInventoryUpdateHandle_t handle, InventoryItemId nItemID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchPropertyName, float flValue ) { - var returnValue = _SetProperty4( Self, handle, nItemID, pchPropertyName, flValue ); + var returnValue = _SetProperty( Self, handle, nItemID, pchPropertyName, flValue ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_SubmitUpdateProperties", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSubmitUpdateProperties( IntPtr self, SteamInventoryUpdateHandle_t handle, ref SteamInventoryResult_t pResultHandle ); - private FSubmitUpdateProperties _SubmitUpdateProperties; + private static extern bool _SubmitUpdateProperties( IntPtr self, SteamInventoryUpdateHandle_t handle, ref SteamInventoryResult_t pResultHandle ); #endregion internal bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, ref SteamInventoryResult_t pResultHandle ) @@ -568,5 +460,17 @@ namespace Steamworks return returnValue; } + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamInventory_InspectItem", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _InspectItem( IntPtr self, ref SteamInventoryResult_t pResultHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchItemToken ); + + #endregion + internal bool InspectItem( ref SteamInventoryResult_t pResultHandle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchItemToken ) + { + var returnValue = _InspectItem( Self, ref pResultHandle, pchItemToken ); + return returnValue; + } + } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs index 6a134dc..801d410 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmaking.cs @@ -7,99 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamMatchmaking : SteamInterface + internal unsafe class ISteamMatchmaking : SteamInterface { - public override string InterfaceName => "SteamMatchMaking009"; - public override void InitInternals() + internal ISteamMatchmaking( bool IsGameServer ) { - _GetFavoriteGameCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _GetFavoriteGame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _AddFavoriteGame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _RemoveFavoriteGame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _RequestLobbyList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _AddRequestLobbyListStringFilter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _AddRequestLobbyListNumericalFilter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _AddRequestLobbyListNearValueFilter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _AddRequestLobbyListFilterSlotsAvailable = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _AddRequestLobbyListDistanceFilter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _AddRequestLobbyListResultCountFilter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _AddRequestLobbyListCompatibleMembersFilter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _GetLobbyByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _CreateLobby = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _JoinLobby = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _LeaveLobby = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _InviteUserToLobby = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _GetNumLobbyMembers = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetLobbyMemberByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _GetLobbyData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _SetLobbyData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _GetLobbyDataCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _GetLobbyDataByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _DeleteLobbyData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _GetLobbyMemberData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _SetLobbyMemberData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _SendLobbyChatMsg = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _GetLobbyChatEntry = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _RequestLobbyData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _SetLobbyGameServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - _GetLobbyGameServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 240 ) ) ); - _SetLobbyMemberLimit = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 248 ) ) ); - _GetLobbyMemberLimit = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 256 ) ) ); - _SetLobbyType = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 264 ) ) ); - _SetLobbyJoinable = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 272 ) ) ); - _GetLobbyOwner = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 280 ) ) ); - _SetLobbyOwner = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 288 ) ) ); - _SetLinkedLobby = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 296 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _GetFavoriteGameCount = null; - _GetFavoriteGame = null; - _AddFavoriteGame = null; - _RemoveFavoriteGame = null; - _RequestLobbyList = null; - _AddRequestLobbyListStringFilter = null; - _AddRequestLobbyListNumericalFilter = null; - _AddRequestLobbyListNearValueFilter = null; - _AddRequestLobbyListFilterSlotsAvailable = null; - _AddRequestLobbyListDistanceFilter = null; - _AddRequestLobbyListResultCountFilter = null; - _AddRequestLobbyListCompatibleMembersFilter = null; - _GetLobbyByIndex = null; - _CreateLobby = null; - _JoinLobby = null; - _LeaveLobby = null; - _InviteUserToLobby = null; - _GetNumLobbyMembers = null; - _GetLobbyMemberByIndex = null; - _GetLobbyData = null; - _SetLobbyData = null; - _GetLobbyDataCount = null; - _GetLobbyDataByIndex = null; - _DeleteLobbyData = null; - _GetLobbyMemberData = null; - _SetLobbyMemberData = null; - _SendLobbyChatMsg = null; - _GetLobbyChatEntry = null; - _RequestLobbyData = null; - _SetLobbyGameServer = null; - _GetLobbyGameServer = null; - _SetLobbyMemberLimit = null; - _GetLobbyMemberLimit = null; - _SetLobbyType = null; - _SetLobbyJoinable = null; - _GetLobbyOwner = null; - _SetLobbyOwner = null; - _SetLinkedLobby = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamMatchmaking_v009", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamMatchmaking_v009(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamMatchmaking_v009(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFavoriteGameCount( IntPtr self ); - private FGetFavoriteGameCount _GetFavoriteGameCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount", CallingConvention = Platform.CC)] + private static extern int _GetFavoriteGameCount( IntPtr self ); #endregion internal int GetFavoriteGameCount() @@ -109,10 +32,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetFavoriteGame( IntPtr self, int iGame, ref AppId pnAppID, ref uint pnIP, ref ushort pnConnPort, ref ushort pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer ); - private FGetFavoriteGame _GetFavoriteGame; + private static extern bool _GetFavoriteGame( IntPtr self, int iGame, ref AppId pnAppID, ref uint pnIP, ref ushort pnConnPort, ref ushort pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer ); #endregion internal bool GetFavoriteGame( int iGame, ref AppId pnAppID, ref uint pnIP, ref ushort pnConnPort, ref ushort pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer ) @@ -122,9 +44,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FAddFavoriteGame( IntPtr self, AppId nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer ); - private FAddFavoriteGame _AddFavoriteGame; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddFavoriteGame", CallingConvention = Platform.CC)] + private static extern int _AddFavoriteGame( IntPtr self, AppId nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer ); #endregion internal int AddFavoriteGame( AppId nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer ) @@ -134,10 +55,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRemoveFavoriteGame( IntPtr self, AppId nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags ); - private FRemoveFavoriteGame _RemoveFavoriteGame; + private static extern bool _RemoveFavoriteGame( IntPtr self, AppId nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags ); #endregion internal bool RemoveFavoriteGame( AppId nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags ) @@ -147,21 +67,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestLobbyList( IntPtr self ); - private FRequestLobbyList _RequestLobbyList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyList", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestLobbyList( IntPtr self ); #endregion - internal async Task RequestLobbyList() + internal CallResult RequestLobbyList() { var returnValue = _RequestLobbyList( Self ); - return await LobbyMatchList_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAddRequestLobbyListStringFilter( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValueToMatch, LobbyComparison eComparisonType ); - private FAddRequestLobbyListStringFilter _AddRequestLobbyListStringFilter; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter", CallingConvention = Platform.CC)] + private static extern void _AddRequestLobbyListStringFilter( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValueToMatch, LobbyComparison eComparisonType ); #endregion internal void AddRequestLobbyListStringFilter( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValueToMatch, LobbyComparison eComparisonType ) @@ -170,9 +88,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAddRequestLobbyListNumericalFilter( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, int nValueToMatch, LobbyComparison eComparisonType ); - private FAddRequestLobbyListNumericalFilter _AddRequestLobbyListNumericalFilter; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter", CallingConvention = Platform.CC)] + private static extern void _AddRequestLobbyListNumericalFilter( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, int nValueToMatch, LobbyComparison eComparisonType ); #endregion internal void AddRequestLobbyListNumericalFilter( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, int nValueToMatch, LobbyComparison eComparisonType ) @@ -181,9 +98,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAddRequestLobbyListNearValueFilter( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, int nValueToBeCloseTo ); - private FAddRequestLobbyListNearValueFilter _AddRequestLobbyListNearValueFilter; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter", CallingConvention = Platform.CC)] + private static extern void _AddRequestLobbyListNearValueFilter( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, int nValueToBeCloseTo ); #endregion internal void AddRequestLobbyListNearValueFilter( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKeyToMatch, int nValueToBeCloseTo ) @@ -192,9 +108,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAddRequestLobbyListFilterSlotsAvailable( IntPtr self, int nSlotsAvailable ); - private FAddRequestLobbyListFilterSlotsAvailable _AddRequestLobbyListFilterSlotsAvailable; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable", CallingConvention = Platform.CC)] + private static extern void _AddRequestLobbyListFilterSlotsAvailable( IntPtr self, int nSlotsAvailable ); #endregion internal void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable ) @@ -203,9 +118,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAddRequestLobbyListDistanceFilter( IntPtr self, LobbyDistanceFilter eLobbyDistanceFilter ); - private FAddRequestLobbyListDistanceFilter _AddRequestLobbyListDistanceFilter; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter", CallingConvention = Platform.CC)] + private static extern void _AddRequestLobbyListDistanceFilter( IntPtr self, LobbyDistanceFilter eLobbyDistanceFilter ); #endregion internal void AddRequestLobbyListDistanceFilter( LobbyDistanceFilter eLobbyDistanceFilter ) @@ -214,9 +128,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAddRequestLobbyListResultCountFilter( IntPtr self, int cMaxResults ); - private FAddRequestLobbyListResultCountFilter _AddRequestLobbyListResultCountFilter; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter", CallingConvention = Platform.CC)] + private static extern void _AddRequestLobbyListResultCountFilter( IntPtr self, int cMaxResults ); #endregion internal void AddRequestLobbyListResultCountFilter( int cMaxResults ) @@ -225,9 +138,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAddRequestLobbyListCompatibleMembersFilter( IntPtr self, SteamId steamIDLobby ); - private FAddRequestLobbyListCompatibleMembersFilter _AddRequestLobbyListCompatibleMembersFilter; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter", CallingConvention = Platform.CC)] + private static extern void _AddRequestLobbyListCompatibleMembersFilter( IntPtr self, SteamId steamIDLobby ); #endregion internal void AddRequestLobbyListCompatibleMembersFilter( SteamId steamIDLobby ) @@ -236,55 +148,41 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetLobbyByIndex( IntPtr self, ref SteamId retVal, int iLobby ); - #else - private delegate SteamId FGetLobbyByIndex( IntPtr self, int iLobby ); - #endif - private FGetLobbyByIndex _GetLobbyByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyByIndex", CallingConvention = Platform.CC)] + private static extern SteamId _GetLobbyByIndex( IntPtr self, int iLobby ); #endregion internal SteamId GetLobbyByIndex( int iLobby ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetLobbyByIndex( Self, ref retVal, iLobby ); - return retVal; - #else var returnValue = _GetLobbyByIndex( Self, iLobby ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FCreateLobby( IntPtr self, LobbyType eLobbyType, int cMaxMembers ); - private FCreateLobby _CreateLobby; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_CreateLobby", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _CreateLobby( IntPtr self, LobbyType eLobbyType, int cMaxMembers ); #endregion - internal async Task CreateLobby( LobbyType eLobbyType, int cMaxMembers ) + internal CallResult CreateLobby( LobbyType eLobbyType, int cMaxMembers ) { var returnValue = _CreateLobby( Self, eLobbyType, cMaxMembers ); - return await LobbyCreated_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FJoinLobby( IntPtr self, SteamId steamIDLobby ); - private FJoinLobby _JoinLobby; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_JoinLobby", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _JoinLobby( IntPtr self, SteamId steamIDLobby ); #endregion - internal async Task JoinLobby( SteamId steamIDLobby ) + internal CallResult JoinLobby( SteamId steamIDLobby ) { var returnValue = _JoinLobby( Self, steamIDLobby ); - return await LobbyEnter_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FLeaveLobby( IntPtr self, SteamId steamIDLobby ); - private FLeaveLobby _LeaveLobby; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_LeaveLobby", CallingConvention = Platform.CC)] + private static extern void _LeaveLobby( IntPtr self, SteamId steamIDLobby ); #endregion internal void LeaveLobby( SteamId steamIDLobby ) @@ -293,10 +191,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_InviteUserToLobby", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FInviteUserToLobby( IntPtr self, SteamId steamIDLobby, SteamId steamIDInvitee ); - private FInviteUserToLobby _InviteUserToLobby; + private static extern bool _InviteUserToLobby( IntPtr self, SteamId steamIDLobby, SteamId steamIDInvitee ); #endregion internal bool InviteUserToLobby( SteamId steamIDLobby, SteamId steamIDInvitee ) @@ -306,9 +203,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetNumLobbyMembers( IntPtr self, SteamId steamIDLobby ); - private FGetNumLobbyMembers _GetNumLobbyMembers; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers", CallingConvention = Platform.CC)] + private static extern int _GetNumLobbyMembers( IntPtr self, SteamId steamIDLobby ); #endregion internal int GetNumLobbyMembers( SteamId steamIDLobby ) @@ -318,31 +214,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetLobbyMemberByIndex( IntPtr self, ref SteamId retVal, SteamId steamIDLobby, int iMember ); - #else - private delegate SteamId FGetLobbyMemberByIndex( IntPtr self, SteamId steamIDLobby, int iMember ); - #endif - private FGetLobbyMemberByIndex _GetLobbyMemberByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex", CallingConvention = Platform.CC)] + private static extern SteamId _GetLobbyMemberByIndex( IntPtr self, SteamId steamIDLobby, int iMember ); #endregion internal SteamId GetLobbyMemberByIndex( SteamId steamIDLobby, int iMember ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetLobbyMemberByIndex( Self, ref retVal, steamIDLobby, iMember ); - return retVal; - #else var returnValue = _GetLobbyMemberByIndex( Self, steamIDLobby, iMember ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetLobbyData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); - private FGetLobbyData _GetLobbyData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyData", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetLobbyData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); #endregion internal string GetLobbyData( SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ) @@ -352,10 +236,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyData", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLobbyData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); - private FSetLobbyData _SetLobbyData; + private static extern bool _SetLobbyData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); #endregion internal bool SetLobbyData( SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ) @@ -365,9 +248,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetLobbyDataCount( IntPtr self, SteamId steamIDLobby ); - private FGetLobbyDataCount _GetLobbyDataCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataCount", CallingConvention = Platform.CC)] + private static extern int _GetLobbyDataCount( IntPtr self, SteamId steamIDLobby ); #endregion internal int GetLobbyDataCount( SteamId steamIDLobby ) @@ -377,16 +259,15 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetLobbyDataByIndex( IntPtr self, SteamId steamIDLobby, int iLobbyData, IntPtr pchKey, int cchKeyBufferSize, IntPtr pchValue, int cchValueBufferSize ); - private FGetLobbyDataByIndex _GetLobbyDataByIndex; + private static extern bool _GetLobbyDataByIndex( IntPtr self, SteamId steamIDLobby, int iLobbyData, IntPtr pchKey, int cchKeyBufferSize, IntPtr pchValue, int cchValueBufferSize ); #endregion internal bool GetLobbyDataByIndex( SteamId steamIDLobby, int iLobbyData, out string pchKey, out string pchValue ) { - IntPtr mempchKey = Helpers.TakeMemory(); - IntPtr mempchValue = Helpers.TakeMemory(); + using var mempchKey = Helpers.TakeMemory(); + using var mempchValue = Helpers.TakeMemory(); var returnValue = _GetLobbyDataByIndex( Self, steamIDLobby, iLobbyData, mempchKey, (1024 * 32), mempchValue, (1024 * 32) ); pchKey = Helpers.MemoryToString( mempchKey ); pchValue = Helpers.MemoryToString( mempchValue ); @@ -394,10 +275,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_DeleteLobbyData", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDeleteLobbyData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); - private FDeleteLobbyData _DeleteLobbyData; + private static extern bool _DeleteLobbyData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); #endregion internal bool DeleteLobbyData( SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ) @@ -407,9 +287,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetLobbyMemberData( IntPtr self, SteamId steamIDLobby, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); - private FGetLobbyMemberData _GetLobbyMemberData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberData", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetLobbyMemberData( IntPtr self, SteamId steamIDLobby, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); #endregion internal string GetLobbyMemberData( SteamId steamIDLobby, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ) @@ -419,9 +298,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetLobbyMemberData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); - private FSetLobbyMemberData _SetLobbyMemberData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberData", CallingConvention = Platform.CC)] + private static extern void _SetLobbyMemberData( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); #endregion internal void SetLobbyMemberData( SteamId steamIDLobby, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ) @@ -430,10 +308,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSendLobbyChatMsg( IntPtr self, SteamId steamIDLobby, IntPtr pvMsgBody, int cubMsgBody ); - private FSendLobbyChatMsg _SendLobbyChatMsg; + private static extern bool _SendLobbyChatMsg( IntPtr self, SteamId steamIDLobby, IntPtr pvMsgBody, int cubMsgBody ); #endregion internal bool SendLobbyChatMsg( SteamId steamIDLobby, IntPtr pvMsgBody, int cubMsgBody ) @@ -443,9 +320,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetLobbyChatEntry( IntPtr self, SteamId steamIDLobby, int iChatID, ref SteamId pSteamIDUser, IntPtr pvData, int cubData, ref ChatEntryType peChatEntryType ); - private FGetLobbyChatEntry _GetLobbyChatEntry; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry", CallingConvention = Platform.CC)] + private static extern int _GetLobbyChatEntry( IntPtr self, SteamId steamIDLobby, int iChatID, ref SteamId pSteamIDUser, IntPtr pvData, int cubData, ref ChatEntryType peChatEntryType ); #endregion internal int GetLobbyChatEntry( SteamId steamIDLobby, int iChatID, ref SteamId pSteamIDUser, IntPtr pvData, int cubData, ref ChatEntryType peChatEntryType ) @@ -455,10 +331,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyData", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRequestLobbyData( IntPtr self, SteamId steamIDLobby ); - private FRequestLobbyData _RequestLobbyData; + private static extern bool _RequestLobbyData( IntPtr self, SteamId steamIDLobby ); #endregion internal bool RequestLobbyData( SteamId steamIDLobby ) @@ -468,9 +343,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetLobbyGameServer( IntPtr self, SteamId steamIDLobby, uint unGameServerIP, ushort unGameServerPort, SteamId steamIDGameServer ); - private FSetLobbyGameServer _SetLobbyGameServer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyGameServer", CallingConvention = Platform.CC)] + private static extern void _SetLobbyGameServer( IntPtr self, SteamId steamIDLobby, uint unGameServerIP, ushort unGameServerPort, SteamId steamIDGameServer ); #endregion internal void SetLobbyGameServer( SteamId steamIDLobby, uint unGameServerIP, ushort unGameServerPort, SteamId steamIDGameServer ) @@ -479,10 +353,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyGameServer", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetLobbyGameServer( IntPtr self, SteamId steamIDLobby, ref uint punGameServerIP, ref ushort punGameServerPort, ref SteamId psteamIDGameServer ); - private FGetLobbyGameServer _GetLobbyGameServer; + private static extern bool _GetLobbyGameServer( IntPtr self, SteamId steamIDLobby, ref uint punGameServerIP, ref ushort punGameServerPort, ref SteamId psteamIDGameServer ); #endregion internal bool GetLobbyGameServer( SteamId steamIDLobby, ref uint punGameServerIP, ref ushort punGameServerPort, ref SteamId psteamIDGameServer ) @@ -492,10 +365,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLobbyMemberLimit( IntPtr self, SteamId steamIDLobby, int cMaxMembers ); - private FSetLobbyMemberLimit _SetLobbyMemberLimit; + private static extern bool _SetLobbyMemberLimit( IntPtr self, SteamId steamIDLobby, int cMaxMembers ); #endregion internal bool SetLobbyMemberLimit( SteamId steamIDLobby, int cMaxMembers ) @@ -505,9 +377,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetLobbyMemberLimit( IntPtr self, SteamId steamIDLobby ); - private FGetLobbyMemberLimit _GetLobbyMemberLimit; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit", CallingConvention = Platform.CC)] + private static extern int _GetLobbyMemberLimit( IntPtr self, SteamId steamIDLobby ); #endregion internal int GetLobbyMemberLimit( SteamId steamIDLobby ) @@ -517,10 +388,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyType", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLobbyType( IntPtr self, SteamId steamIDLobby, LobbyType eLobbyType ); - private FSetLobbyType _SetLobbyType; + private static extern bool _SetLobbyType( IntPtr self, SteamId steamIDLobby, LobbyType eLobbyType ); #endregion internal bool SetLobbyType( SteamId steamIDLobby, LobbyType eLobbyType ) @@ -530,10 +400,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyJoinable", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLobbyJoinable( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.U1 )] bool bLobbyJoinable ); - private FSetLobbyJoinable _SetLobbyJoinable; + private static extern bool _SetLobbyJoinable( IntPtr self, SteamId steamIDLobby, [MarshalAs( UnmanagedType.U1 )] bool bLobbyJoinable ); #endregion internal bool SetLobbyJoinable( SteamId steamIDLobby, [MarshalAs( UnmanagedType.U1 )] bool bLobbyJoinable ) @@ -543,32 +412,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetLobbyOwner( IntPtr self, ref SteamId retVal, SteamId steamIDLobby ); - #else - private delegate SteamId FGetLobbyOwner( IntPtr self, SteamId steamIDLobby ); - #endif - private FGetLobbyOwner _GetLobbyOwner; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyOwner", CallingConvention = Platform.CC)] + private static extern SteamId _GetLobbyOwner( IntPtr self, SteamId steamIDLobby ); #endregion internal SteamId GetLobbyOwner( SteamId steamIDLobby ) { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetLobbyOwner( Self, ref retVal, steamIDLobby ); - return retVal; - #else var returnValue = _GetLobbyOwner( Self, steamIDLobby ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyOwner", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLobbyOwner( IntPtr self, SteamId steamIDLobby, SteamId steamIDNewOwner ); - private FSetLobbyOwner _SetLobbyOwner; + private static extern bool _SetLobbyOwner( IntPtr self, SteamId steamIDLobby, SteamId steamIDNewOwner ); #endregion internal bool SetLobbyOwner( SteamId steamIDLobby, SteamId steamIDNewOwner ) @@ -578,10 +435,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmaking_SetLinkedLobby", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLinkedLobby( IntPtr self, SteamId steamIDLobby, SteamId steamIDLobbyDependent ); - private FSetLinkedLobby _SetLinkedLobby; + private static extern bool _SetLinkedLobby( IntPtr self, SteamId steamIDLobby, SteamId steamIDLobbyDependent ); #endregion internal bool SetLinkedLobby( SteamId steamIDLobby, SteamId steamIDLobbyDependent ) diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPingResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPingResponse.cs new file mode 100644 index 0000000..0306b76 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPingResponse.cs @@ -0,0 +1,39 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamMatchmakingPingResponse : SteamInterface + { + + internal ISteamMatchmakingPingResponse( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded", CallingConvention = Platform.CC)] + private static extern void _ServerResponded( IntPtr self, ref gameserveritem_t server ); + + #endregion + internal void ServerResponded( ref gameserveritem_t server ) + { + _ServerResponded( Self, ref server ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond", CallingConvention = Platform.CC)] + private static extern void _ServerFailedToRespond( IntPtr self ); + + #endregion + internal void ServerFailedToRespond() + { + _ServerFailedToRespond( Self ); + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPlayersResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPlayersResponse.cs new file mode 100644 index 0000000..a5ed926 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingPlayersResponse.cs @@ -0,0 +1,49 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamMatchmakingPlayersResponse : SteamInterface + { + + internal ISteamMatchmakingPlayersResponse( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList", CallingConvention = Platform.CC)] + private static extern void _AddPlayerToList( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nScore, float flTimePlayed ); + + #endregion + internal void AddPlayerToList( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nScore, float flTimePlayed ) + { + _AddPlayerToList( Self, pchName, nScore, flTimePlayed ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond", CallingConvention = Platform.CC)] + private static extern void _PlayersFailedToRespond( IntPtr self ); + + #endregion + internal void PlayersFailedToRespond() + { + _PlayersFailedToRespond( Self ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete", CallingConvention = Platform.CC)] + private static extern void _PlayersRefreshComplete( IntPtr self ); + + #endregion + internal void PlayersRefreshComplete() + { + _PlayersRefreshComplete( Self ); + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingRulesResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingRulesResponse.cs new file mode 100644 index 0000000..78507b9 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingRulesResponse.cs @@ -0,0 +1,49 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamMatchmakingRulesResponse : SteamInterface + { + + internal ISteamMatchmakingRulesResponse( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded", CallingConvention = Platform.CC)] + private static extern void _RulesResponded( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchRule, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); + + #endregion + internal void RulesResponded( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchRule, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ) + { + _RulesResponded( Self, pchRule, pchValue ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond", CallingConvention = Platform.CC)] + private static extern void _RulesFailedToRespond( IntPtr self ); + + #endregion + internal void RulesFailedToRespond() + { + _RulesFailedToRespond( Self ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete", CallingConvention = Platform.CC)] + private static extern void _RulesRefreshComplete( IntPtr self ); + + #endregion + internal void RulesRefreshComplete() + { + _RulesRefreshComplete( Self ); + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServerListResponse.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServerListResponse.cs new file mode 100644 index 0000000..8fd0a9e --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServerListResponse.cs @@ -0,0 +1,49 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamMatchmakingServerListResponse : SteamInterface + { + + internal ISteamMatchmakingServerListResponse( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded", CallingConvention = Platform.CC)] + private static extern void _ServerResponded( IntPtr self, HServerListRequest hRequest, int iServer ); + + #endregion + internal void ServerResponded( HServerListRequest hRequest, int iServer ) + { + _ServerResponded( Self, hRequest, iServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond", CallingConvention = Platform.CC)] + private static extern void _ServerFailedToRespond( IntPtr self, HServerListRequest hRequest, int iServer ); + + #endregion + internal void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) + { + _ServerFailedToRespond( Self, hRequest, iServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete", CallingConvention = Platform.CC)] + private static extern void _RefreshComplete( IntPtr self, HServerListRequest hRequest, MatchMakingServerResponse response ); + + #endregion + internal void RefreshComplete( HServerListRequest hRequest, MatchMakingServerResponse response ) + { + _RefreshComplete( Self, hRequest, response ); + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs index 3401895..6f9ee8b 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMatchmakingServers.cs @@ -7,57 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamMatchmakingServers : SteamInterface + internal unsafe class ISteamMatchmakingServers : SteamInterface { - public override string InterfaceName => "SteamMatchMakingServers002"; - public override void InitInternals() + internal ISteamMatchmakingServers( bool IsGameServer ) { - _RequestInternetServerList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _RequestLANServerList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _RequestFriendsServerList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _RequestFavoritesServerList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _RequestHistoryServerList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _RequestSpectatorServerList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _ReleaseRequest = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _GetServerDetails = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _CancelQuery = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _RefreshQuery = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _IsRefreshing = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GetServerCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _RefreshServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _PingServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _PlayerDetails = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _ServerRules = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _CancelServerQuery = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _RequestInternetServerList = null; - _RequestLANServerList = null; - _RequestFriendsServerList = null; - _RequestFavoritesServerList = null; - _RequestHistoryServerList = null; - _RequestSpectatorServerList = null; - _ReleaseRequest = null; - _GetServerDetails = null; - _CancelQuery = null; - _RefreshQuery = null; - _IsRefreshing = null; - _GetServerCount = null; - _RefreshServer = null; - _PingServer = null; - _PlayerDetails = null; - _ServerRules = null; - _CancelServerQuery = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamMatchmakingServers_v002", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamMatchmakingServers_v002(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamMatchmakingServers_v002(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerListRequest FRequestInternetServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); - private FRequestInternetServerList _RequestInternetServerList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList", CallingConvention = Platform.CC)] + private static extern HServerListRequest _RequestInternetServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); #endregion internal HServerListRequest RequestInternetServerList( AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ) @@ -67,9 +32,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerListRequest FRequestLANServerList( IntPtr self, AppId iApp, IntPtr pRequestServersResponse ); - private FRequestLANServerList _RequestLANServerList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestLANServerList", CallingConvention = Platform.CC)] + private static extern HServerListRequest _RequestLANServerList( IntPtr self, AppId iApp, IntPtr pRequestServersResponse ); #endregion internal HServerListRequest RequestLANServerList( AppId iApp, IntPtr pRequestServersResponse ) @@ -79,9 +43,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerListRequest FRequestFriendsServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); - private FRequestFriendsServerList _RequestFriendsServerList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList", CallingConvention = Platform.CC)] + private static extern HServerListRequest _RequestFriendsServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); #endregion internal HServerListRequest RequestFriendsServerList( AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ) @@ -91,9 +54,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerListRequest FRequestFavoritesServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); - private FRequestFavoritesServerList _RequestFavoritesServerList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList", CallingConvention = Platform.CC)] + private static extern HServerListRequest _RequestFavoritesServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); #endregion internal HServerListRequest RequestFavoritesServerList( AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ) @@ -103,9 +65,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerListRequest FRequestHistoryServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); - private FRequestHistoryServerList _RequestHistoryServerList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList", CallingConvention = Platform.CC)] + private static extern HServerListRequest _RequestHistoryServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); #endregion internal HServerListRequest RequestHistoryServerList( AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ) @@ -115,9 +76,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerListRequest FRequestSpectatorServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); - private FRequestSpectatorServerList _RequestSpectatorServerList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList", CallingConvention = Platform.CC)] + private static extern HServerListRequest _RequestSpectatorServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ); #endregion internal HServerListRequest RequestSpectatorServerList( AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse ) @@ -127,9 +87,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FReleaseRequest( IntPtr self, HServerListRequest hServerListRequest ); - private FReleaseRequest _ReleaseRequest; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_ReleaseRequest", CallingConvention = Platform.CC)] + private static extern void _ReleaseRequest( IntPtr self, HServerListRequest hServerListRequest ); #endregion internal void ReleaseRequest( HServerListRequest hServerListRequest ) @@ -138,21 +97,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate IntPtr FGetServerDetails( IntPtr self, HServerListRequest hRequest, int iServer ); - private FGetServerDetails _GetServerDetails; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerDetails", CallingConvention = Platform.CC)] + private static extern IntPtr _GetServerDetails( IntPtr self, HServerListRequest hRequest, int iServer ); #endregion internal gameserveritem_t GetServerDetails( HServerListRequest hRequest, int iServer ) { var returnValue = _GetServerDetails( Self, hRequest, iServer ); - return gameserveritem_t.Fill( returnValue ); + return returnValue.ToType(); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FCancelQuery( IntPtr self, HServerListRequest hRequest ); - private FCancelQuery _CancelQuery; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelQuery", CallingConvention = Platform.CC)] + private static extern void _CancelQuery( IntPtr self, HServerListRequest hRequest ); #endregion internal void CancelQuery( HServerListRequest hRequest ) @@ -161,9 +118,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRefreshQuery( IntPtr self, HServerListRequest hRequest ); - private FRefreshQuery _RefreshQuery; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshQuery", CallingConvention = Platform.CC)] + private static extern void _RefreshQuery( IntPtr self, HServerListRequest hRequest ); #endregion internal void RefreshQuery( HServerListRequest hRequest ) @@ -172,10 +128,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_IsRefreshing", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsRefreshing( IntPtr self, HServerListRequest hRequest ); - private FIsRefreshing _IsRefreshing; + private static extern bool _IsRefreshing( IntPtr self, HServerListRequest hRequest ); #endregion internal bool IsRefreshing( HServerListRequest hRequest ) @@ -185,9 +140,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetServerCount( IntPtr self, HServerListRequest hRequest ); - private FGetServerCount _GetServerCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerCount", CallingConvention = Platform.CC)] + private static extern int _GetServerCount( IntPtr self, HServerListRequest hRequest ); #endregion internal int GetServerCount( HServerListRequest hRequest ) @@ -197,9 +151,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRefreshServer( IntPtr self, HServerListRequest hRequest, int iServer ); - private FRefreshServer _RefreshServer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshServer", CallingConvention = Platform.CC)] + private static extern void _RefreshServer( IntPtr self, HServerListRequest hRequest, int iServer ); #endregion internal void RefreshServer( HServerListRequest hRequest, int iServer ) @@ -208,9 +161,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerQuery FPingServer( IntPtr self, uint unIP, ushort usPort, IntPtr pRequestServersResponse ); - private FPingServer _PingServer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_PingServer", CallingConvention = Platform.CC)] + private static extern HServerQuery _PingServer( IntPtr self, uint unIP, ushort usPort, IntPtr pRequestServersResponse ); #endregion internal HServerQuery PingServer( uint unIP, ushort usPort, IntPtr pRequestServersResponse ) @@ -220,9 +172,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerQuery FPlayerDetails( IntPtr self, uint unIP, ushort usPort, IntPtr pRequestServersResponse ); - private FPlayerDetails _PlayerDetails; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_PlayerDetails", CallingConvention = Platform.CC)] + private static extern HServerQuery _PlayerDetails( IntPtr self, uint unIP, ushort usPort, IntPtr pRequestServersResponse ); #endregion internal HServerQuery PlayerDetails( uint unIP, ushort usPort, IntPtr pRequestServersResponse ) @@ -232,9 +183,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HServerQuery FServerRules( IntPtr self, uint unIP, ushort usPort, IntPtr pRequestServersResponse ); - private FServerRules _ServerRules; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_ServerRules", CallingConvention = Platform.CC)] + private static extern HServerQuery _ServerRules( IntPtr self, uint unIP, ushort usPort, IntPtr pRequestServersResponse ); #endregion internal HServerQuery ServerRules( uint unIP, ushort usPort, IntPtr pRequestServersResponse ) @@ -244,9 +194,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FCancelServerQuery( IntPtr self, HServerQuery hServerQuery ); - private FCancelServerQuery _CancelServerQuery; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelServerQuery", CallingConvention = Platform.CC)] + private static extern void _CancelServerQuery( IntPtr self, HServerQuery hServerQuery ); #endregion internal void CancelServerQuery( HServerQuery hServerQuery ) diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs index f07f7ad..6534a83 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusic.cs @@ -7,42 +7,23 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamMusic : SteamInterface + internal unsafe class ISteamMusic : SteamInterface { - public override string InterfaceName => "STEAMMUSIC_INTERFACE_VERSION001"; - public override void InitInternals() + internal ISteamMusic( bool IsGameServer ) { - _BIsEnabled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _BIsPlaying = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetPlaybackStatus = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _Play = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _Pause = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _PlayPrevious = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _PlayNext = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _SetVolume = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _GetVolume = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _BIsEnabled = null; - _BIsPlaying = null; - _GetPlaybackStatus = null; - _Play = null; - _Pause = null; - _PlayPrevious = null; - _PlayNext = null; - _SetVolume = null; - _GetVolume = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamMusic_v001", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamMusic_v001(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamMusic_v001(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_BIsEnabled", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsEnabled( IntPtr self ); - private FBIsEnabled _BIsEnabled; + private static extern bool _BIsEnabled( IntPtr self ); #endregion internal bool BIsEnabled() @@ -52,10 +33,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_BIsPlaying", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsPlaying( IntPtr self ); - private FBIsPlaying _BIsPlaying; + private static extern bool _BIsPlaying( IntPtr self ); #endregion internal bool BIsPlaying() @@ -65,9 +45,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate MusicStatus FGetPlaybackStatus( IntPtr self ); - private FGetPlaybackStatus _GetPlaybackStatus; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_GetPlaybackStatus", CallingConvention = Platform.CC)] + private static extern MusicStatus _GetPlaybackStatus( IntPtr self ); #endregion internal MusicStatus GetPlaybackStatus() @@ -77,9 +56,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FPlay( IntPtr self ); - private FPlay _Play; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_Play", CallingConvention = Platform.CC)] + private static extern void _Play( IntPtr self ); #endregion internal void Play() @@ -88,9 +66,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FPause( IntPtr self ); - private FPause _Pause; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_Pause", CallingConvention = Platform.CC)] + private static extern void _Pause( IntPtr self ); #endregion internal void Pause() @@ -99,9 +76,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FPlayPrevious( IntPtr self ); - private FPlayPrevious _PlayPrevious; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_PlayPrevious", CallingConvention = Platform.CC)] + private static extern void _PlayPrevious( IntPtr self ); #endregion internal void PlayPrevious() @@ -110,9 +86,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FPlayNext( IntPtr self ); - private FPlayNext _PlayNext; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_PlayNext", CallingConvention = Platform.CC)] + private static extern void _PlayNext( IntPtr self ); #endregion internal void PlayNext() @@ -121,9 +96,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetVolume( IntPtr self, float flVolume ); - private FSetVolume _SetVolume; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_SetVolume", CallingConvention = Platform.CC)] + private static extern void _SetVolume( IntPtr self, float flVolume ); #endregion internal void SetVolume( float flVolume ) @@ -132,9 +106,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate float FGetVolume( IntPtr self ); - private FGetVolume _GetVolume; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusic_GetVolume", CallingConvention = Platform.CC)] + private static extern float _GetVolume( IntPtr self ); #endregion internal float GetVolume() diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamMusicRemote.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusicRemote.cs new file mode 100644 index 0000000..cf73502 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamMusicRemote.cs @@ -0,0 +1,408 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamMusicRemote : SteamInterface + { + + internal ISteamMusicRemote( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamMusicRemote_v001", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamMusicRemote_v001(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamMusicRemote_v001(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _RegisterSteamMusicRemote( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); + + #endregion + internal bool RegisterSteamMusicRemote( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ) + { + var returnValue = _RegisterSteamMusicRemote( Self, pchName ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _DeregisterSteamMusicRemote( IntPtr self ); + + #endregion + internal bool DeregisterSteamMusicRemote() + { + var returnValue = _DeregisterSteamMusicRemote( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BIsCurrentMusicRemote( IntPtr self ); + + #endregion + internal bool BIsCurrentMusicRemote() + { + var returnValue = _BIsCurrentMusicRemote( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_BActivationSuccess", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BActivationSuccess( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool BActivationSuccess( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _BActivationSuccess( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_SetDisplayName", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetDisplayName( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDisplayName ); + + #endregion + internal bool SetDisplayName( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDisplayName ) + { + var returnValue = _SetDisplayName( Self, pchDisplayName ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetPNGIcon_64x64( IntPtr self, IntPtr pvBuffer, uint cbBufferLength ); + + #endregion + internal bool SetPNGIcon_64x64( IntPtr pvBuffer, uint cbBufferLength ) + { + var returnValue = _SetPNGIcon_64x64( Self, pvBuffer, cbBufferLength ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayPrevious", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _EnablePlayPrevious( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool EnablePlayPrevious( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _EnablePlayPrevious( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayNext", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _EnablePlayNext( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool EnablePlayNext( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _EnablePlayNext( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_EnableShuffled", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _EnableShuffled( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool EnableShuffled( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _EnableShuffled( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_EnableLooped", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _EnableLooped( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool EnableLooped( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _EnableLooped( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_EnableQueue", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _EnableQueue( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool EnableQueue( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _EnableQueue( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlaylists", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _EnablePlaylists( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool EnablePlaylists( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _EnablePlaylists( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _UpdatePlaybackStatus( IntPtr self, MusicStatus nStatus ); + + #endregion + internal bool UpdatePlaybackStatus( MusicStatus nStatus ) + { + var returnValue = _UpdatePlaybackStatus( Self, nStatus ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateShuffled", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _UpdateShuffled( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool UpdateShuffled( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _UpdateShuffled( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateLooped", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _UpdateLooped( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bValue ); + + #endregion + internal bool UpdateLooped( [MarshalAs( UnmanagedType.U1 )] bool bValue ) + { + var returnValue = _UpdateLooped( Self, bValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateVolume", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _UpdateVolume( IntPtr self, float flValue ); + + #endregion + internal bool UpdateVolume( float flValue ) + { + var returnValue = _UpdateVolume( Self, flValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _CurrentEntryWillChange( IntPtr self ); + + #endregion + internal bool CurrentEntryWillChange() + { + var returnValue = _CurrentEntryWillChange( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _CurrentEntryIsAvailable( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bAvailable ); + + #endregion + internal bool CurrentEntryIsAvailable( [MarshalAs( UnmanagedType.U1 )] bool bAvailable ) + { + var returnValue = _CurrentEntryIsAvailable( Self, bAvailable ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _UpdateCurrentEntryText( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchText ); + + #endregion + internal bool UpdateCurrentEntryText( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchText ) + { + var returnValue = _UpdateCurrentEntryText( Self, pchText ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _UpdateCurrentEntryElapsedSeconds( IntPtr self, int nValue ); + + #endregion + internal bool UpdateCurrentEntryElapsedSeconds( int nValue ) + { + var returnValue = _UpdateCurrentEntryElapsedSeconds( Self, nValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _UpdateCurrentEntryCoverArt( IntPtr self, IntPtr pvBuffer, uint cbBufferLength ); + + #endregion + internal bool UpdateCurrentEntryCoverArt( IntPtr pvBuffer, uint cbBufferLength ) + { + var returnValue = _UpdateCurrentEntryCoverArt( Self, pvBuffer, cbBufferLength ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _CurrentEntryDidChange( IntPtr self ); + + #endregion + internal bool CurrentEntryDidChange() + { + var returnValue = _CurrentEntryDidChange( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_QueueWillChange", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _QueueWillChange( IntPtr self ); + + #endregion + internal bool QueueWillChange() + { + var returnValue = _QueueWillChange( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_ResetQueueEntries", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ResetQueueEntries( IntPtr self ); + + #endregion + internal bool ResetQueueEntries() + { + var returnValue = _ResetQueueEntries( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_SetQueueEntry", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetQueueEntry( IntPtr self, int nID, int nPosition, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchEntryText ); + + #endregion + internal bool SetQueueEntry( int nID, int nPosition, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchEntryText ) + { + var returnValue = _SetQueueEntry( Self, nID, nPosition, pchEntryText ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetCurrentQueueEntry( IntPtr self, int nID ); + + #endregion + internal bool SetCurrentQueueEntry( int nID ) + { + var returnValue = _SetCurrentQueueEntry( Self, nID ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_QueueDidChange", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _QueueDidChange( IntPtr self ); + + #endregion + internal bool QueueDidChange() + { + var returnValue = _QueueDidChange( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistWillChange", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _PlaylistWillChange( IntPtr self ); + + #endregion + internal bool PlaylistWillChange() + { + var returnValue = _PlaylistWillChange( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ResetPlaylistEntries( IntPtr self ); + + #endregion + internal bool ResetPlaylistEntries() + { + var returnValue = _ResetPlaylistEntries( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_SetPlaylistEntry", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetPlaylistEntry( IntPtr self, int nID, int nPosition, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchEntryText ); + + #endregion + internal bool SetPlaylistEntry( int nID, int nPosition, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchEntryText ) + { + var returnValue = _SetPlaylistEntry( Self, nID, nPosition, pchEntryText ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetCurrentPlaylistEntry( IntPtr self, int nID ); + + #endregion + internal bool SetCurrentPlaylistEntry( int nID ) + { + var returnValue = _SetCurrentPlaylistEntry( Self, nID ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistDidChange", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _PlaylistDidChange( IntPtr self ); + + #endregion + internal bool PlaylistDidChange() + { + var returnValue = _PlaylistDidChange( Self ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs index ee94c80..f149557 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworking.cs @@ -7,68 +7,26 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamNetworking : SteamInterface + internal unsafe class ISteamNetworking : SteamInterface { - public override string InterfaceName => "SteamNetworking005"; - public override void InitInternals() + internal ISteamNetworking( bool IsGameServer ) { - _SendP2PPacket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _IsP2PPacketAvailable = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _ReadP2PPacket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _AcceptP2PSessionWithUser = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _CloseP2PSessionWithUser = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _CloseP2PChannelWithUser = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetP2PSessionState = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _AllowP2PPacketRelay = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _CreateListenSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _CreateP2PConnectionSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _CreateConnectionSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _DestroySocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _DestroyListenSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _SendDataOnSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _IsDataAvailableOnSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _RetrieveDataFromSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _IsDataAvailable = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _RetrieveData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetSocketInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _GetListenSocketInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _GetSocketConnectionType = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _GetMaxPacketSize = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _SendP2PPacket = null; - _IsP2PPacketAvailable = null; - _ReadP2PPacket = null; - _AcceptP2PSessionWithUser = null; - _CloseP2PSessionWithUser = null; - _CloseP2PChannelWithUser = null; - _GetP2PSessionState = null; - _AllowP2PPacketRelay = null; - _CreateListenSocket = null; - _CreateP2PConnectionSocket = null; - _CreateConnectionSocket = null; - _DestroySocket = null; - _DestroyListenSocket = null; - _SendDataOnSocket = null; - _IsDataAvailableOnSocket = null; - _RetrieveDataFromSocket = null; - _IsDataAvailable = null; - _RetrieveData = null; - _GetSocketInfo = null; - _GetListenSocketInfo = null; - _GetSocketConnectionType = null; - _GetMaxPacketSize = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworking_v006", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamNetworking_v006(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamNetworking_v006(); + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerNetworking_v006", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerNetworking_v006(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerNetworking_v006(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_SendP2PPacket", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSendP2PPacket( IntPtr self, SteamId steamIDRemote, IntPtr pubData, uint cubData, P2PSend eP2PSendType, int nChannel ); - private FSendP2PPacket _SendP2PPacket; + private static extern bool _SendP2PPacket( IntPtr self, SteamId steamIDRemote, IntPtr pubData, uint cubData, P2PSend eP2PSendType, int nChannel ); #endregion internal bool SendP2PPacket( SteamId steamIDRemote, IntPtr pubData, uint cubData, P2PSend eP2PSendType, int nChannel ) @@ -78,10 +36,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_IsP2PPacketAvailable", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsP2PPacketAvailable( IntPtr self, ref uint pcubMsgSize, int nChannel ); - private FIsP2PPacketAvailable _IsP2PPacketAvailable; + private static extern bool _IsP2PPacketAvailable( IntPtr self, ref uint pcubMsgSize, int nChannel ); #endregion internal bool IsP2PPacketAvailable( ref uint pcubMsgSize, int nChannel ) @@ -91,10 +48,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_ReadP2PPacket", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FReadP2PPacket( IntPtr self, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref SteamId psteamIDRemote, int nChannel ); - private FReadP2PPacket _ReadP2PPacket; + private static extern bool _ReadP2PPacket( IntPtr self, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref SteamId psteamIDRemote, int nChannel ); #endregion internal bool ReadP2PPacket( IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref SteamId psteamIDRemote, int nChannel ) @@ -104,10 +60,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAcceptP2PSessionWithUser( IntPtr self, SteamId steamIDRemote ); - private FAcceptP2PSessionWithUser _AcceptP2PSessionWithUser; + private static extern bool _AcceptP2PSessionWithUser( IntPtr self, SteamId steamIDRemote ); #endregion internal bool AcceptP2PSessionWithUser( SteamId steamIDRemote ) @@ -117,10 +72,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCloseP2PSessionWithUser( IntPtr self, SteamId steamIDRemote ); - private FCloseP2PSessionWithUser _CloseP2PSessionWithUser; + private static extern bool _CloseP2PSessionWithUser( IntPtr self, SteamId steamIDRemote ); #endregion internal bool CloseP2PSessionWithUser( SteamId steamIDRemote ) @@ -130,10 +84,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCloseP2PChannelWithUser( IntPtr self, SteamId steamIDRemote, int nChannel ); - private FCloseP2PChannelWithUser _CloseP2PChannelWithUser; + private static extern bool _CloseP2PChannelWithUser( IntPtr self, SteamId steamIDRemote, int nChannel ); #endregion internal bool CloseP2PChannelWithUser( SteamId steamIDRemote, int nChannel ) @@ -143,10 +96,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_GetP2PSessionState", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetP2PSessionState( IntPtr self, SteamId steamIDRemote, ref P2PSessionState_t pConnectionState ); - private FGetP2PSessionState _GetP2PSessionState; + private static extern bool _GetP2PSessionState( IntPtr self, SteamId steamIDRemote, ref P2PSessionState_t pConnectionState ); #endregion internal bool GetP2PSessionState( SteamId steamIDRemote, ref P2PSessionState_t pConnectionState ) @@ -156,10 +108,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_AllowP2PPacketRelay", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAllowP2PPacketRelay( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bAllow ); - private FAllowP2PPacketRelay _AllowP2PPacketRelay; + private static extern bool _AllowP2PPacketRelay( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bAllow ); #endregion internal bool AllowP2PPacketRelay( [MarshalAs( UnmanagedType.U1 )] bool bAllow ) @@ -169,21 +120,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SNetListenSocket_t FCreateListenSocket( IntPtr self, int nVirtualP2PPort, uint nIP, ushort nPort, [MarshalAs( UnmanagedType.U1 )] bool bAllowUseOfPacketRelay ); - private FCreateListenSocket _CreateListenSocket; - - #endregion - internal SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, uint nIP, ushort nPort, [MarshalAs( UnmanagedType.U1 )] bool bAllowUseOfPacketRelay ) - { - var returnValue = _CreateListenSocket( Self, nVirtualP2PPort, nIP, nPort, bAllowUseOfPacketRelay ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SNetSocket_t FCreateP2PConnectionSocket( IntPtr self, SteamId steamIDTarget, int nVirtualPort, int nTimeoutSec, [MarshalAs( UnmanagedType.U1 )] bool bAllowUseOfPacketRelay ); - private FCreateP2PConnectionSocket _CreateP2PConnectionSocket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket", CallingConvention = Platform.CC)] + private static extern SNetSocket_t _CreateP2PConnectionSocket( IntPtr self, SteamId steamIDTarget, int nVirtualPort, int nTimeoutSec, [MarshalAs( UnmanagedType.U1 )] bool bAllowUseOfPacketRelay ); #endregion internal SNetSocket_t CreateP2PConnectionSocket( SteamId steamIDTarget, int nVirtualPort, int nTimeoutSec, [MarshalAs( UnmanagedType.U1 )] bool bAllowUseOfPacketRelay ) @@ -192,158 +130,5 @@ namespace Steamworks return returnValue; } - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SNetSocket_t FCreateConnectionSocket( IntPtr self, uint nIP, ushort nPort, int nTimeoutSec ); - private FCreateConnectionSocket _CreateConnectionSocket; - - #endregion - internal SNetSocket_t CreateConnectionSocket( uint nIP, ushort nPort, int nTimeoutSec ) - { - var returnValue = _CreateConnectionSocket( Self, nIP, nPort, nTimeoutSec ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDestroySocket( IntPtr self, SNetSocket_t hSocket, [MarshalAs( UnmanagedType.U1 )] bool bNotifyRemoteEnd ); - private FDestroySocket _DestroySocket; - - #endregion - internal bool DestroySocket( SNetSocket_t hSocket, [MarshalAs( UnmanagedType.U1 )] bool bNotifyRemoteEnd ) - { - var returnValue = _DestroySocket( Self, hSocket, bNotifyRemoteEnd ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDestroyListenSocket( IntPtr self, SNetListenSocket_t hSocket, [MarshalAs( UnmanagedType.U1 )] bool bNotifyRemoteEnd ); - private FDestroyListenSocket _DestroyListenSocket; - - #endregion - internal bool DestroyListenSocket( SNetListenSocket_t hSocket, [MarshalAs( UnmanagedType.U1 )] bool bNotifyRemoteEnd ) - { - var returnValue = _DestroyListenSocket( Self, hSocket, bNotifyRemoteEnd ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSendDataOnSocket( IntPtr self, SNetSocket_t hSocket, [In,Out] IntPtr[] pubData, uint cubData, [MarshalAs( UnmanagedType.U1 )] bool bReliable ); - private FSendDataOnSocket _SendDataOnSocket; - - #endregion - internal bool SendDataOnSocket( SNetSocket_t hSocket, [In,Out] IntPtr[] pubData, uint cubData, [MarshalAs( UnmanagedType.U1 )] bool bReliable ) - { - var returnValue = _SendDataOnSocket( Self, hSocket, pubData, cubData, bReliable ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsDataAvailableOnSocket( IntPtr self, SNetSocket_t hSocket, ref uint pcubMsgSize ); - private FIsDataAvailableOnSocket _IsDataAvailableOnSocket; - - #endregion - internal bool IsDataAvailableOnSocket( SNetSocket_t hSocket, ref uint pcubMsgSize ) - { - var returnValue = _IsDataAvailableOnSocket( Self, hSocket, ref pcubMsgSize ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRetrieveDataFromSocket( IntPtr self, SNetSocket_t hSocket, [In,Out] IntPtr[] pubDest, uint cubDest, ref uint pcubMsgSize ); - private FRetrieveDataFromSocket _RetrieveDataFromSocket; - - #endregion - internal bool RetrieveDataFromSocket( SNetSocket_t hSocket, [In,Out] IntPtr[] pubDest, uint cubDest, ref uint pcubMsgSize ) - { - var returnValue = _RetrieveDataFromSocket( Self, hSocket, pubDest, cubDest, ref pcubMsgSize ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsDataAvailable( IntPtr self, SNetListenSocket_t hListenSocket, ref uint pcubMsgSize, ref SNetSocket_t phSocket ); - private FIsDataAvailable _IsDataAvailable; - - #endregion - internal bool IsDataAvailable( SNetListenSocket_t hListenSocket, ref uint pcubMsgSize, ref SNetSocket_t phSocket ) - { - var returnValue = _IsDataAvailable( Self, hListenSocket, ref pcubMsgSize, ref phSocket ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRetrieveData( IntPtr self, SNetListenSocket_t hListenSocket, [In,Out] IntPtr[] pubDest, uint cubDest, ref uint pcubMsgSize, ref SNetSocket_t phSocket ); - private FRetrieveData _RetrieveData; - - #endregion - internal bool RetrieveData( SNetListenSocket_t hListenSocket, [In,Out] IntPtr[] pubDest, uint cubDest, ref uint pcubMsgSize, ref SNetSocket_t phSocket ) - { - var returnValue = _RetrieveData( Self, hListenSocket, pubDest, cubDest, ref pcubMsgSize, ref phSocket ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetSocketInfo( IntPtr self, SNetSocket_t hSocket, ref SteamId pSteamIDRemote, ref int peSocketStatus, ref uint punIPRemote, ref ushort punPortRemote ); - private FGetSocketInfo _GetSocketInfo; - - #endregion - internal bool GetSocketInfo( SNetSocket_t hSocket, ref SteamId pSteamIDRemote, ref int peSocketStatus, ref uint punIPRemote, ref ushort punPortRemote ) - { - var returnValue = _GetSocketInfo( Self, hSocket, ref pSteamIDRemote, ref peSocketStatus, ref punIPRemote, ref punPortRemote ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetListenSocketInfo( IntPtr self, SNetListenSocket_t hListenSocket, ref uint pnIP, ref ushort pnPort ); - private FGetListenSocketInfo _GetListenSocketInfo; - - #endregion - internal bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, ref uint pnIP, ref ushort pnPort ) - { - var returnValue = _GetListenSocketInfo( Self, hListenSocket, ref pnIP, ref pnPort ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SNetSocketConnectionType FGetSocketConnectionType( IntPtr self, SNetSocket_t hSocket ); - private FGetSocketConnectionType _GetSocketConnectionType; - - #endregion - internal SNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) - { - var returnValue = _GetSocketConnectionType( Self, hSocket ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetMaxPacketSize( IntPtr self, SNetSocket_t hSocket ); - private FGetMaxPacketSize _GetMaxPacketSize; - - #endregion - internal int GetMaxPacketSize( SNetSocket_t hSocket ) - { - var returnValue = _GetMaxPacketSize( Self, hSocket ); - return returnValue; - } - } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingFakeUDPPort.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingFakeUDPPort.cs new file mode 100644 index 0000000..776ab8a --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingFakeUDPPort.cs @@ -0,0 +1,61 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamNetworkingFakeUDPPort : SteamInterface + { + + internal ISteamNetworkingFakeUDPPort( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingFakeUDPPort_DestroyFakeUDPPort", CallingConvention = Platform.CC)] + private static extern void _DestroyFakeUDPPort( IntPtr self ); + + #endregion + internal void DestroyFakeUDPPort() + { + _DestroyFakeUDPPort( Self ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingFakeUDPPort_SendMessageToFakeIP", CallingConvention = Platform.CC)] + private static extern Result _SendMessageToFakeIP( IntPtr self, ref NetAddress remoteAddress, IntPtr pData, uint cbData, int nSendFlags ); + + #endregion + internal Result SendMessageToFakeIP( ref NetAddress remoteAddress, IntPtr pData, uint cbData, int nSendFlags ) + { + var returnValue = _SendMessageToFakeIP( Self, ref remoteAddress, pData, cbData, nSendFlags ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingFakeUDPPort_ReceiveMessages", CallingConvention = Platform.CC)] + private static extern int _ReceiveMessages( IntPtr self, IntPtr ppOutMessages, int nMaxMessages ); + + #endregion + internal int ReceiveMessages( IntPtr ppOutMessages, int nMaxMessages ) + { + var returnValue = _ReceiveMessages( Self, ppOutMessages, nMaxMessages ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingFakeUDPPort_ScheduleCleanup", CallingConvention = Platform.CC)] + private static extern void _ScheduleCleanup( IntPtr self, ref NetAddress remoteAddress ); + + #endregion + internal void ScheduleCleanup( ref NetAddress remoteAddress ) + { + _ScheduleCleanup( Self, ref remoteAddress ); + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingMessages.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingMessages.cs new file mode 100644 index 0000000..715c34a --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingMessages.cs @@ -0,0 +1,96 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamNetworkingMessages : SteamInterface + { + + internal ISteamNetworkingMessages( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingMessages_SteamAPI_v002", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingMessages_SendMessageToUser", CallingConvention = Platform.CC)] + private static extern Result _SendMessageToUser( IntPtr self, ref NetIdentity identityRemote, [In,Out] IntPtr[] pubData, uint cubData, int nSendFlags, int nRemoteChannel ); + + #endregion + internal Result SendMessageToUser( ref NetIdentity identityRemote, [In,Out] IntPtr[] pubData, uint cubData, int nSendFlags, int nRemoteChannel ) + { + var returnValue = _SendMessageToUser( Self, ref identityRemote, pubData, cubData, nSendFlags, nRemoteChannel ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel", CallingConvention = Platform.CC)] + private static extern int _ReceiveMessagesOnChannel( IntPtr self, int nLocalChannel, IntPtr ppOutMessages, int nMaxMessages ); + + #endregion + internal int ReceiveMessagesOnChannel( int nLocalChannel, IntPtr ppOutMessages, int nMaxMessages ) + { + var returnValue = _ReceiveMessagesOnChannel( Self, nLocalChannel, ppOutMessages, nMaxMessages ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _AcceptSessionWithUser( IntPtr self, ref NetIdentity identityRemote ); + + #endregion + internal bool AcceptSessionWithUser( ref NetIdentity identityRemote ) + { + var returnValue = _AcceptSessionWithUser( Self, ref identityRemote ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _CloseSessionWithUser( IntPtr self, ref NetIdentity identityRemote ); + + #endregion + internal bool CloseSessionWithUser( ref NetIdentity identityRemote ) + { + var returnValue = _CloseSessionWithUser( Self, ref identityRemote ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _CloseChannelWithUser( IntPtr self, ref NetIdentity identityRemote, int nLocalChannel ); + + #endregion + internal bool CloseChannelWithUser( ref NetIdentity identityRemote, int nLocalChannel ) + { + var returnValue = _CloseChannelWithUser( Self, ref identityRemote, nLocalChannel ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo", CallingConvention = Platform.CC)] + private static extern ConnectionState _GetSessionConnectionInfo( IntPtr self, ref NetIdentity identityRemote, ref ConnectionInfo pConnectionInfo, ref ConnectionStatus pQuickStatus ); + + #endregion + internal ConnectionState GetSessionConnectionInfo( ref NetIdentity identityRemote, ref ConnectionInfo pConnectionInfo, ref ConnectionStatus pQuickStatus ) + { + var returnValue = _GetSessionConnectionInfo( Self, ref identityRemote, ref pConnectionInfo, ref pQuickStatus ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs index 4dcf5c5..6a0e858 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingSockets.cs @@ -7,129 +7,69 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamNetworkingSockets : SteamInterface + internal unsafe class ISteamNetworkingSockets : SteamInterface { - public override string InterfaceName => "SteamNetworkingSockets002"; - public override void InitInternals() + internal ISteamNetworkingSockets( bool IsGameServer ) { - _CreateListenSocketIP = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _ConnectByIPAddress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _CreateListenSocketP2P = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _ConnectP2P = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _AcceptConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _CloseConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _CloseListenSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _SetConnectionUserData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _GetConnectionUserData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _SetConnectionName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetConnectionName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _SendMessageToConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _FlushMessagesOnConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _ReceiveMessagesOnConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _ReceiveMessagesOnListenSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetConnectionInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _GetQuickConnectionStatus = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _GetDetailedConnectionStatus = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetListenSocketAddress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _CreateSocketPair = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _GetIdentity = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _ReceivedRelayAuthTicket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _FindRelayAuthTicketForServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _ConnectToHostedDedicatedServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _GetHostedDedicatedServerPort = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _GetHostedDedicatedServerPOPID = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _GetHostedDedicatedServerAddress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _CreateHostedDedicatedServerListenSocket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _RunCallbacks = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _CreateListenSocketIP = null; - _ConnectByIPAddress = null; - _CreateListenSocketP2P = null; - _ConnectP2P = null; - _AcceptConnection = null; - _CloseConnection = null; - _CloseListenSocket = null; - _SetConnectionUserData = null; - _GetConnectionUserData = null; - _SetConnectionName = null; - _GetConnectionName = null; - _SendMessageToConnection = null; - _FlushMessagesOnConnection = null; - _ReceiveMessagesOnConnection = null; - _ReceiveMessagesOnListenSocket = null; - _GetConnectionInfo = null; - _GetQuickConnectionStatus = null; - _GetDetailedConnectionStatus = null; - _GetListenSocketAddress = null; - _CreateSocketPair = null; - _GetIdentity = null; - _ReceivedRelayAuthTicket = null; - _FindRelayAuthTicketForServer = null; - _ConnectToHostedDedicatedServer = null; - _GetHostedDedicatedServerPort = null; - _GetHostedDedicatedServerPOPID = null; - _GetHostedDedicatedServerAddress = null; - _CreateHostedDedicatedServerListenSocket = null; - _RunCallbacks = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingSockets_SteamAPI_v012", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamNetworkingSockets_SteamAPI_v012(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamNetworkingSockets_SteamAPI_v012(); + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Socket FCreateListenSocketIP( IntPtr self, ref NetAddress localAddress ); - private FCreateListenSocketIP _CreateListenSocketIP; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP", CallingConvention = Platform.CC)] + private static extern Socket _CreateListenSocketIP( IntPtr self, ref NetAddress localAddress, int nOptions, [In,Out] NetKeyValue[] pOptions ); #endregion - internal Socket CreateListenSocketIP( ref NetAddress localAddress ) + internal Socket CreateListenSocketIP( ref NetAddress localAddress, int nOptions, [In,Out] NetKeyValue[] pOptions ) { - var returnValue = _CreateListenSocketIP( Self, ref localAddress ); + var returnValue = _CreateListenSocketIP( Self, ref localAddress, nOptions, pOptions ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Connection FConnectByIPAddress( IntPtr self, ref NetAddress address ); - private FConnectByIPAddress _ConnectByIPAddress; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress", CallingConvention = Platform.CC)] + private static extern Connection _ConnectByIPAddress( IntPtr self, ref NetAddress address, int nOptions, [In,Out] NetKeyValue[] pOptions ); #endregion - internal Connection ConnectByIPAddress( ref NetAddress address ) + internal Connection ConnectByIPAddress( ref NetAddress address, int nOptions, [In,Out] NetKeyValue[] pOptions ) { - var returnValue = _ConnectByIPAddress( Self, ref address ); + var returnValue = _ConnectByIPAddress( Self, ref address, nOptions, pOptions ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Socket FCreateListenSocketP2P( IntPtr self, int nVirtualPort ); - private FCreateListenSocketP2P _CreateListenSocketP2P; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P", CallingConvention = Platform.CC)] + private static extern Socket _CreateListenSocketP2P( IntPtr self, int nLocalVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ); #endregion - internal Socket CreateListenSocketP2P( int nVirtualPort ) + internal Socket CreateListenSocketP2P( int nLocalVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ) { - var returnValue = _CreateListenSocketP2P( Self, nVirtualPort ); + var returnValue = _CreateListenSocketP2P( Self, nLocalVirtualPort, nOptions, pOptions ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Connection FConnectP2P( IntPtr self, ref NetIdentity identityRemote, int nVirtualPort ); - private FConnectP2P _ConnectP2P; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConnectP2P", CallingConvention = Platform.CC)] + private static extern Connection _ConnectP2P( IntPtr self, ref NetIdentity identityRemote, int nRemoteVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ); #endregion - internal Connection ConnectP2P( ref NetIdentity identityRemote, int nVirtualPort ) + internal Connection ConnectP2P( ref NetIdentity identityRemote, int nRemoteVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ) { - var returnValue = _ConnectP2P( Self, ref identityRemote, nVirtualPort ); + var returnValue = _ConnectP2P( Self, ref identityRemote, nRemoteVirtualPort, nOptions, pOptions ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Result FAcceptConnection( IntPtr self, Connection hConn ); - private FAcceptConnection _AcceptConnection; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_AcceptConnection", CallingConvention = Platform.CC)] + private static extern Result _AcceptConnection( IntPtr self, Connection hConn ); #endregion internal Result AcceptConnection( Connection hConn ) @@ -139,10 +79,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CloseConnection", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCloseConnection( IntPtr self, Connection hPeer, int nReason, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszDebug, [MarshalAs( UnmanagedType.U1 )] bool bEnableLinger ); - private FCloseConnection _CloseConnection; + private static extern bool _CloseConnection( IntPtr self, Connection hPeer, int nReason, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszDebug, [MarshalAs( UnmanagedType.U1 )] bool bEnableLinger ); #endregion internal bool CloseConnection( Connection hPeer, int nReason, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszDebug, [MarshalAs( UnmanagedType.U1 )] bool bEnableLinger ) @@ -152,10 +91,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CloseListenSocket", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCloseListenSocket( IntPtr self, Socket hSocket ); - private FCloseListenSocket _CloseListenSocket; + private static extern bool _CloseListenSocket( IntPtr self, Socket hSocket ); #endregion internal bool CloseListenSocket( Socket hSocket ) @@ -165,10 +103,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_SetConnectionUserData", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetConnectionUserData( IntPtr self, Connection hPeer, long nUserData ); - private FSetConnectionUserData _SetConnectionUserData; + private static extern bool _SetConnectionUserData( IntPtr self, Connection hPeer, long nUserData ); #endregion internal bool SetConnectionUserData( Connection hPeer, long nUserData ) @@ -178,9 +115,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate long FGetConnectionUserData( IntPtr self, Connection hPeer ); - private FGetConnectionUserData _GetConnectionUserData; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetConnectionUserData", CallingConvention = Platform.CC)] + private static extern long _GetConnectionUserData( IntPtr self, Connection hPeer ); #endregion internal long GetConnectionUserData( Connection hPeer ) @@ -190,9 +126,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetConnectionName( IntPtr self, Connection hPeer, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszName ); - private FSetConnectionName _SetConnectionName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_SetConnectionName", CallingConvention = Platform.CC)] + private static extern void _SetConnectionName( IntPtr self, Connection hPeer, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszName ); #endregion internal void SetConnectionName( Connection hPeer, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszName ) @@ -201,36 +136,43 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetConnectionName", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetConnectionName( IntPtr self, Connection hPeer, IntPtr pszName, int nMaxLen ); - private FGetConnectionName _GetConnectionName; + private static extern bool _GetConnectionName( IntPtr self, Connection hPeer, IntPtr pszName, int nMaxLen ); #endregion internal bool GetConnectionName( Connection hPeer, out string pszName ) { - IntPtr mempszName = Helpers.TakeMemory(); + using var mempszName = Helpers.TakeMemory(); var returnValue = _GetConnectionName( Self, hPeer, mempszName, (1024 * 32) ); pszName = Helpers.MemoryToString( mempszName ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Result FSendMessageToConnection( IntPtr self, Connection hConn, IntPtr pData, uint cbData, int nSendFlags ); - private FSendMessageToConnection _SendMessageToConnection; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_SendMessageToConnection", CallingConvention = Platform.CC)] + private static extern Result _SendMessageToConnection( IntPtr self, Connection hConn, IntPtr pData, uint cbData, int nSendFlags, ref long pOutMessageNumber ); #endregion - internal Result SendMessageToConnection( Connection hConn, IntPtr pData, uint cbData, int nSendFlags ) + internal Result SendMessageToConnection( Connection hConn, IntPtr pData, uint cbData, int nSendFlags, ref long pOutMessageNumber ) { - var returnValue = _SendMessageToConnection( Self, hConn, pData, cbData, nSendFlags ); + var returnValue = _SendMessageToConnection( Self, hConn, pData, cbData, nSendFlags, ref pOutMessageNumber ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Result FFlushMessagesOnConnection( IntPtr self, Connection hConn ); - private FFlushMessagesOnConnection _FlushMessagesOnConnection; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_SendMessages", CallingConvention = Platform.CC)] + private static extern void _SendMessages( IntPtr self, int nMessages, NetMsg** pMessages, long* pOutMessageNumberOrResult ); + + #endregion + internal void SendMessages( int nMessages, NetMsg** pMessages, long* pOutMessageNumberOrResult ) + { + _SendMessages( Self, nMessages, pMessages, pOutMessageNumberOrResult ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection", CallingConvention = Platform.CC)] + private static extern Result _FlushMessagesOnConnection( IntPtr self, Connection hConn ); #endregion internal Result FlushMessagesOnConnection( Connection hConn ) @@ -240,9 +182,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FReceiveMessagesOnConnection( IntPtr self, Connection hConn, IntPtr ppOutMessages, int nMaxMessages ); - private FReceiveMessagesOnConnection _ReceiveMessagesOnConnection; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection", CallingConvention = Platform.CC)] + private static extern int _ReceiveMessagesOnConnection( IntPtr self, Connection hConn, IntPtr ppOutMessages, int nMaxMessages ); #endregion internal int ReceiveMessagesOnConnection( Connection hConn, IntPtr ppOutMessages, int nMaxMessages ) @@ -252,22 +193,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FReceiveMessagesOnListenSocket( IntPtr self, Socket hSocket, IntPtr ppOutMessages, int nMaxMessages ); - private FReceiveMessagesOnListenSocket _ReceiveMessagesOnListenSocket; - - #endregion - internal int ReceiveMessagesOnListenSocket( Socket hSocket, IntPtr ppOutMessages, int nMaxMessages ) - { - var returnValue = _ReceiveMessagesOnListenSocket( Self, hSocket, ppOutMessages, nMaxMessages ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetConnectionInfo", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetConnectionInfo( IntPtr self, Connection hConn, ref ConnectionInfo pInfo ); - private FGetConnectionInfo _GetConnectionInfo; + private static extern bool _GetConnectionInfo( IntPtr self, Connection hConn, ref ConnectionInfo pInfo ); #endregion internal bool GetConnectionInfo( Connection hConn, ref ConnectionInfo pInfo ) @@ -277,37 +205,33 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQuickConnectionStatus( IntPtr self, Connection hConn, ref SteamNetworkingQuickConnectionStatus pStats ); - private FGetQuickConnectionStatus _GetQuickConnectionStatus; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetConnectionRealTimeStatus", CallingConvention = Platform.CC)] + private static extern Result _GetConnectionRealTimeStatus( IntPtr self, Connection hConn, ref ConnectionStatus pStatus, int nLanes, [In,Out] ConnectionLaneStatus[] pLanes ); #endregion - internal bool GetQuickConnectionStatus( Connection hConn, ref SteamNetworkingQuickConnectionStatus pStats ) + internal Result GetConnectionRealTimeStatus( Connection hConn, ref ConnectionStatus pStatus, int nLanes, [In,Out] ConnectionLaneStatus[] pLanes ) { - var returnValue = _GetQuickConnectionStatus( Self, hConn, ref pStats ); + var returnValue = _GetConnectionRealTimeStatus( Self, hConn, ref pStatus, nLanes, pLanes ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetDetailedConnectionStatus( IntPtr self, Connection hConn, IntPtr pszBuf, int cbBuf ); - private FGetDetailedConnectionStatus _GetDetailedConnectionStatus; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus", CallingConvention = Platform.CC)] + private static extern int _GetDetailedConnectionStatus( IntPtr self, Connection hConn, IntPtr pszBuf, int cbBuf ); #endregion internal int GetDetailedConnectionStatus( Connection hConn, out string pszBuf ) { - IntPtr mempszBuf = Helpers.TakeMemory(); + using var mempszBuf = Helpers.TakeMemory(); var returnValue = _GetDetailedConnectionStatus( Self, hConn, mempszBuf, (1024 * 32) ); pszBuf = Helpers.MemoryToString( mempszBuf ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetListenSocketAddress( IntPtr self, Socket hSocket, ref NetAddress address ); - private FGetListenSocketAddress _GetListenSocketAddress; + private static extern bool _GetListenSocketAddress( IntPtr self, Socket hSocket, ref NetAddress address ); #endregion internal bool GetListenSocketAddress( Socket hSocket, ref NetAddress address ) @@ -317,10 +241,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateSocketPair", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCreateSocketPair( IntPtr self, [In,Out] Connection[] pOutConnection1, [In,Out] Connection[] pOutConnection2, [MarshalAs( UnmanagedType.U1 )] bool bUseNetworkLoopback, ref NetIdentity pIdentity1, ref NetIdentity pIdentity2 ); - private FCreateSocketPair _CreateSocketPair; + private static extern bool _CreateSocketPair( IntPtr self, [In,Out] Connection[] pOutConnection1, [In,Out] Connection[] pOutConnection2, [MarshalAs( UnmanagedType.U1 )] bool bUseNetworkLoopback, ref NetIdentity pIdentity1, ref NetIdentity pIdentity2 ); #endregion internal bool CreateSocketPair( [In,Out] Connection[] pOutConnection1, [In,Out] Connection[] pOutConnection2, [MarshalAs( UnmanagedType.U1 )] bool bUseNetworkLoopback, ref NetIdentity pIdentity1, ref NetIdentity pIdentity2 ) @@ -330,10 +253,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConfigureConnectionLanes", CallingConvention = Platform.CC)] + private static extern Result _ConfigureConnectionLanes( IntPtr self, Connection hConn, int nNumLanes, [In,Out] int[] pLanePriorities, [In,Out] ushort[] pLaneWeights ); + + #endregion + internal Result ConfigureConnectionLanes( Connection hConn, int nNumLanes, [In,Out] int[] pLanePriorities, [In,Out] ushort[] pLaneWeights ) + { + var returnValue = _ConfigureConnectionLanes( Self, hConn, nNumLanes, pLanePriorities, pLaneWeights ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetIdentity", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetIdentity( IntPtr self, ref NetIdentity pIdentity ); - private FGetIdentity _GetIdentity; + private static extern bool _GetIdentity( IntPtr self, ref NetIdentity pIdentity ); #endregion internal bool GetIdentity( ref NetIdentity pIdentity ) @@ -343,10 +276,77 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_InitAuthentication", CallingConvention = Platform.CC)] + private static extern SteamNetworkingAvailability _InitAuthentication( IntPtr self ); + + #endregion + internal SteamNetworkingAvailability InitAuthentication() + { + var returnValue = _InitAuthentication( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus", CallingConvention = Platform.CC)] + private static extern SteamNetworkingAvailability _GetAuthenticationStatus( IntPtr self, ref SteamNetAuthenticationStatus_t pDetails ); + + #endregion + internal SteamNetworkingAvailability GetAuthenticationStatus( ref SteamNetAuthenticationStatus_t pDetails ) + { + var returnValue = _GetAuthenticationStatus( Self, ref pDetails ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreatePollGroup", CallingConvention = Platform.CC)] + private static extern HSteamNetPollGroup _CreatePollGroup( IntPtr self ); + + #endregion + internal HSteamNetPollGroup CreatePollGroup() + { + var returnValue = _CreatePollGroup( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_DestroyPollGroup", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FReceivedRelayAuthTicket( IntPtr self, IntPtr pvTicket, int cbTicket, [In,Out] SteamDatagramRelayAuthTicket[] pOutParsedTicket ); - private FReceivedRelayAuthTicket _ReceivedRelayAuthTicket; + private static extern bool _DestroyPollGroup( IntPtr self, HSteamNetPollGroup hPollGroup ); + + #endregion + internal bool DestroyPollGroup( HSteamNetPollGroup hPollGroup ) + { + var returnValue = _DestroyPollGroup( Self, hPollGroup ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_SetConnectionPollGroup", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetConnectionPollGroup( IntPtr self, Connection hConn, HSteamNetPollGroup hPollGroup ); + + #endregion + internal bool SetConnectionPollGroup( Connection hConn, HSteamNetPollGroup hPollGroup ) + { + var returnValue = _SetConnectionPollGroup( Self, hConn, hPollGroup ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnPollGroup", CallingConvention = Platform.CC)] + private static extern int _ReceiveMessagesOnPollGroup( IntPtr self, HSteamNetPollGroup hPollGroup, IntPtr ppOutMessages, int nMaxMessages ); + + #endregion + internal int ReceiveMessagesOnPollGroup( HSteamNetPollGroup hPollGroup, IntPtr ppOutMessages, int nMaxMessages ) + { + var returnValue = _ReceiveMessagesOnPollGroup( Self, hPollGroup, ppOutMessages, nMaxMessages ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ReceivedRelayAuthTicket", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ReceivedRelayAuthTicket( IntPtr self, IntPtr pvTicket, int cbTicket, [In,Out] SteamDatagramRelayAuthTicket[] pOutParsedTicket ); #endregion internal bool ReceivedRelayAuthTicket( IntPtr pvTicket, int cbTicket, [In,Out] SteamDatagramRelayAuthTicket[] pOutParsedTicket ) @@ -356,33 +356,30 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FFindRelayAuthTicketForServer( IntPtr self, ref NetIdentity identityGameServer, int nVirtualPort, [In,Out] SteamDatagramRelayAuthTicket[] pOutParsedTicket ); - private FFindRelayAuthTicketForServer _FindRelayAuthTicketForServer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_FindRelayAuthTicketForServer", CallingConvention = Platform.CC)] + private static extern int _FindRelayAuthTicketForServer( IntPtr self, ref NetIdentity identityGameServer, int nRemoteVirtualPort, [In,Out] SteamDatagramRelayAuthTicket[] pOutParsedTicket ); #endregion - internal int FindRelayAuthTicketForServer( ref NetIdentity identityGameServer, int nVirtualPort, [In,Out] SteamDatagramRelayAuthTicket[] pOutParsedTicket ) + internal int FindRelayAuthTicketForServer( ref NetIdentity identityGameServer, int nRemoteVirtualPort, [In,Out] SteamDatagramRelayAuthTicket[] pOutParsedTicket ) { - var returnValue = _FindRelayAuthTicketForServer( Self, ref identityGameServer, nVirtualPort, pOutParsedTicket ); + var returnValue = _FindRelayAuthTicketForServer( Self, ref identityGameServer, nRemoteVirtualPort, pOutParsedTicket ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Connection FConnectToHostedDedicatedServer( IntPtr self, ref NetIdentity identityTarget, int nVirtualPort ); - private FConnectToHostedDedicatedServer _ConnectToHostedDedicatedServer; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConnectToHostedDedicatedServer", CallingConvention = Platform.CC)] + private static extern Connection _ConnectToHostedDedicatedServer( IntPtr self, ref NetIdentity identityTarget, int nRemoteVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ); #endregion - internal Connection ConnectToHostedDedicatedServer( ref NetIdentity identityTarget, int nVirtualPort ) + internal Connection ConnectToHostedDedicatedServer( ref NetIdentity identityTarget, int nRemoteVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ) { - var returnValue = _ConnectToHostedDedicatedServer( Self, ref identityTarget, nVirtualPort ); + var returnValue = _ConnectToHostedDedicatedServer( Self, ref identityTarget, nRemoteVirtualPort, nOptions, pOptions ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate ushort FGetHostedDedicatedServerPort( IntPtr self ); - private FGetHostedDedicatedServerPort _GetHostedDedicatedServerPort; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPort", CallingConvention = Platform.CC)] + private static extern ushort _GetHostedDedicatedServerPort( IntPtr self ); #endregion internal ushort GetHostedDedicatedServerPort() @@ -392,9 +389,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamNetworkingPOPID FGetHostedDedicatedServerPOPID( IntPtr self ); - private FGetHostedDedicatedServerPOPID _GetHostedDedicatedServerPOPID; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPOPID", CallingConvention = Platform.CC)] + private static extern SteamNetworkingPOPID _GetHostedDedicatedServerPOPID( IntPtr self ); #endregion internal SteamNetworkingPOPID GetHostedDedicatedServerPOPID() @@ -404,39 +400,158 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetHostedDedicatedServerAddress( IntPtr self, ref SteamDatagramHostedAddress pRouting ); - private FGetHostedDedicatedServerAddress _GetHostedDedicatedServerAddress; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerAddress", CallingConvention = Platform.CC)] + private static extern Result _GetHostedDedicatedServerAddress( IntPtr self, ref SteamDatagramHostedAddress pRouting ); #endregion - internal bool GetHostedDedicatedServerAddress( ref SteamDatagramHostedAddress pRouting ) + internal Result GetHostedDedicatedServerAddress( ref SteamDatagramHostedAddress pRouting ) { var returnValue = _GetHostedDedicatedServerAddress( Self, ref pRouting ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Socket FCreateHostedDedicatedServerListenSocket( IntPtr self, int nVirtualPort ); - private FCreateHostedDedicatedServerListenSocket _CreateHostedDedicatedServerListenSocket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket", CallingConvention = Platform.CC)] + private static extern Socket _CreateHostedDedicatedServerListenSocket( IntPtr self, int nLocalVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ); #endregion - internal Socket CreateHostedDedicatedServerListenSocket( int nVirtualPort ) + internal Socket CreateHostedDedicatedServerListenSocket( int nLocalVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ) { - var returnValue = _CreateHostedDedicatedServerListenSocket( Self, nVirtualPort ); + var returnValue = _CreateHostedDedicatedServerListenSocket( Self, nLocalVirtualPort, nOptions, pOptions ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRunCallbacks( IntPtr self, IntPtr pCallbacks ); - private FRunCallbacks _RunCallbacks; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin", CallingConvention = Platform.CC)] + private static extern Result _GetGameCoordinatorServerLogin( IntPtr self, ref SteamDatagramGameCoordinatorServerLogin pLoginInfo, ref int pcbSignedBlob, IntPtr pBlob ); #endregion - internal void RunCallbacks( IntPtr pCallbacks ) + internal Result GetGameCoordinatorServerLogin( ref SteamDatagramGameCoordinatorServerLogin pLoginInfo, ref int pcbSignedBlob, IntPtr pBlob ) { - _RunCallbacks( Self, pCallbacks ); + var returnValue = _GetGameCoordinatorServerLogin( Self, ref pLoginInfo, ref pcbSignedBlob, pBlob ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling", CallingConvention = Platform.CC)] + private static extern Connection _ConnectP2PCustomSignaling( IntPtr self, IntPtr pSignaling, ref NetIdentity pPeerIdentity, int nRemoteVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ); + + #endregion + internal Connection ConnectP2PCustomSignaling( IntPtr pSignaling, ref NetIdentity pPeerIdentity, int nRemoteVirtualPort, int nOptions, [In,Out] NetKeyValue[] pOptions ) + { + var returnValue = _ConnectP2PCustomSignaling( Self, pSignaling, ref pPeerIdentity, nRemoteVirtualPort, nOptions, pOptions ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ReceivedP2PCustomSignal( IntPtr self, IntPtr pMsg, int cbMsg, IntPtr pContext ); + + #endregion + internal bool ReceivedP2PCustomSignal( IntPtr pMsg, int cbMsg, IntPtr pContext ) + { + var returnValue = _ReceivedP2PCustomSignal( Self, pMsg, cbMsg, pContext ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetCertificateRequest", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetCertificateRequest( IntPtr self, ref int pcbBlob, IntPtr pBlob, ref NetErrorMessage errMsg ); + + #endregion + internal bool GetCertificateRequest( ref int pcbBlob, IntPtr pBlob, ref NetErrorMessage errMsg ) + { + var returnValue = _GetCertificateRequest( Self, ref pcbBlob, pBlob, ref errMsg ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_SetCertificate", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetCertificate( IntPtr self, IntPtr pCertificate, int cbCertificate, ref NetErrorMessage errMsg ); + + #endregion + internal bool SetCertificate( IntPtr pCertificate, int cbCertificate, ref NetErrorMessage errMsg ) + { + var returnValue = _SetCertificate( Self, pCertificate, cbCertificate, ref errMsg ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ResetIdentity", CallingConvention = Platform.CC)] + private static extern void _ResetIdentity( IntPtr self, ref NetIdentity pIdentity ); + + #endregion + internal void ResetIdentity( ref NetIdentity pIdentity ) + { + _ResetIdentity( Self, ref pIdentity ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_RunCallbacks", CallingConvention = Platform.CC)] + private static extern void _RunCallbacks( IntPtr self ); + + #endregion + internal void RunCallbacks() + { + _RunCallbacks( Self ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_BeginAsyncRequestFakeIP", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BeginAsyncRequestFakeIP( IntPtr self, int nNumPorts ); + + #endregion + internal bool BeginAsyncRequestFakeIP( int nNumPorts ) + { + var returnValue = _BeginAsyncRequestFakeIP( Self, nNumPorts ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetFakeIP", CallingConvention = Platform.CC)] + private static extern void _GetFakeIP( IntPtr self, int idxFirstPort, ref SteamNetworkingFakeIPResult_t pInfo ); + + #endregion + internal void GetFakeIP( int idxFirstPort, ref SteamNetworkingFakeIPResult_t pInfo ) + { + _GetFakeIP( Self, idxFirstPort, ref pInfo ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2PFakeIP", CallingConvention = Platform.CC)] + private static extern Socket _CreateListenSocketP2PFakeIP( IntPtr self, int idxFakePort, int nOptions, [In,Out] NetKeyValue[] pOptions ); + + #endregion + internal Socket CreateListenSocketP2PFakeIP( int idxFakePort, int nOptions, [In,Out] NetKeyValue[] pOptions ) + { + var returnValue = _CreateListenSocketP2PFakeIP( Self, idxFakePort, nOptions, pOptions ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetRemoteFakeIPForConnection", CallingConvention = Platform.CC)] + private static extern Result _GetRemoteFakeIPForConnection( IntPtr self, Connection hConn, [In,Out] NetAddress[] pOutAddr ); + + #endregion + internal Result GetRemoteFakeIPForConnection( Connection hConn, [In,Out] NetAddress[] pOutAddr ) + { + var returnValue = _GetRemoteFakeIPForConnection( Self, hConn, pOutAddr ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateFakeUDPPort", CallingConvention = Platform.CC)] + private static extern IntPtr _CreateFakeUDPPort( IntPtr self, int idxFakeServerPort ); + + #endregion + internal IntPtr CreateFakeUDPPort( int idxFakeServerPort ) + { + var returnValue = _CreateFakeUDPPort( Self, idxFakeServerPort ); + return returnValue; } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs index 8da7049..50d6d7d 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamNetworkingUtils.cs @@ -7,120 +7,112 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamNetworkingUtils : SteamInterface + internal unsafe class ISteamNetworkingUtils : SteamInterface { - public override string InterfaceName => "SteamNetworkingUtils001"; - public override void InitInternals() + internal ISteamNetworkingUtils( bool IsGameServer ) { - _GetLocalPingLocation = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _EstimatePingTimeBetweenTwoLocations = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _EstimatePingTimeFromLocalHost = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _ConvertPingLocationToString = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _ParsePingLocationString = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _CheckPingDataUpToDate = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _IsPingMeasurementInProgress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _GetPingToDataCenter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _GetDirectPingToPOP = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _GetPOPCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetPOPList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GetLocalTimestamp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _SetDebugOutputFunction = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _SetConfigValue = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _GetConfigValue = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetConfigValueInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _GetFirstConfigValue = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); + SetupInterface( IsGameServer ); } - internal override void Shutdown() + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingUtils_SteamAPI_v004", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamNetworkingUtils_SteamAPI_v004(); + public override IntPtr GetGlobalInterfacePointer() => SteamAPI_SteamNetworkingUtils_SteamAPI_v004(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_AllocateMessage", CallingConvention = Platform.CC)] + private static extern NetMsg* _AllocateMessage( IntPtr self, int cbAllocateBuffer ); + + #endregion + internal NetMsg* AllocateMessage( int cbAllocateBuffer ) { - base.Shutdown(); - - _GetLocalPingLocation = null; - _EstimatePingTimeBetweenTwoLocations = null; - _EstimatePingTimeFromLocalHost = null; - _ConvertPingLocationToString = null; - _ParsePingLocationString = null; - _CheckPingDataUpToDate = null; - _IsPingMeasurementInProgress = null; - _GetPingToDataCenter = null; - _GetDirectPingToPOP = null; - _GetPOPCount = null; - _GetPOPList = null; - _GetLocalTimestamp = null; - _SetDebugOutputFunction = null; - _SetConfigValue = null; - _GetConfigValue = null; - _GetConfigValueInfo = null; - _GetFirstConfigValue = null; + var returnValue = _AllocateMessage( Self, cbAllocateBuffer ); + return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate float FGetLocalPingLocation( IntPtr self, ref PingLocation result ); - private FGetLocalPingLocation _GetLocalPingLocation; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess", CallingConvention = Platform.CC)] + private static extern void _InitRelayNetworkAccess( IntPtr self ); #endregion - internal float GetLocalPingLocation( ref PingLocation result ) + internal void InitRelayNetworkAccess() + { + _InitRelayNetworkAccess( Self ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus", CallingConvention = Platform.CC)] + private static extern SteamNetworkingAvailability _GetRelayNetworkStatus( IntPtr self, ref SteamRelayNetworkStatus_t pDetails ); + + #endregion + internal SteamNetworkingAvailability GetRelayNetworkStatus( ref SteamRelayNetworkStatus_t pDetails ) + { + var returnValue = _GetRelayNetworkStatus( Self, ref pDetails ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetLocalPingLocation", CallingConvention = Platform.CC)] + private static extern float _GetLocalPingLocation( IntPtr self, ref NetPingLocation result ); + + #endregion + internal float GetLocalPingLocation( ref NetPingLocation result ) { var returnValue = _GetLocalPingLocation( Self, ref result ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FEstimatePingTimeBetweenTwoLocations( IntPtr self, ref PingLocation location1, ref PingLocation location2 ); - private FEstimatePingTimeBetweenTwoLocations _EstimatePingTimeBetweenTwoLocations; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeBetweenTwoLocations", CallingConvention = Platform.CC)] + private static extern int _EstimatePingTimeBetweenTwoLocations( IntPtr self, ref NetPingLocation location1, ref NetPingLocation location2 ); #endregion - internal int EstimatePingTimeBetweenTwoLocations( ref PingLocation location1, ref PingLocation location2 ) + internal int EstimatePingTimeBetweenTwoLocations( ref NetPingLocation location1, ref NetPingLocation location2 ) { var returnValue = _EstimatePingTimeBetweenTwoLocations( Self, ref location1, ref location2 ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FEstimatePingTimeFromLocalHost( IntPtr self, ref PingLocation remoteLocation ); - private FEstimatePingTimeFromLocalHost _EstimatePingTimeFromLocalHost; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeFromLocalHost", CallingConvention = Platform.CC)] + private static extern int _EstimatePingTimeFromLocalHost( IntPtr self, ref NetPingLocation remoteLocation ); #endregion - internal int EstimatePingTimeFromLocalHost( ref PingLocation remoteLocation ) + internal int EstimatePingTimeFromLocalHost( ref NetPingLocation remoteLocation ) { var returnValue = _EstimatePingTimeFromLocalHost( Self, ref remoteLocation ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FConvertPingLocationToString( IntPtr self, ref PingLocation location, IntPtr pszBuf, int cchBufSize ); - private FConvertPingLocationToString _ConvertPingLocationToString; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_ConvertPingLocationToString", CallingConvention = Platform.CC)] + private static extern void _ConvertPingLocationToString( IntPtr self, ref NetPingLocation location, IntPtr pszBuf, int cchBufSize ); #endregion - internal void ConvertPingLocationToString( ref PingLocation location, out string pszBuf ) + internal void ConvertPingLocationToString( ref NetPingLocation location, out string pszBuf ) { - IntPtr mempszBuf = Helpers.TakeMemory(); + using var mempszBuf = Helpers.TakeMemory(); _ConvertPingLocationToString( Self, ref location, mempszBuf, (1024 * 32) ); pszBuf = Helpers.MemoryToString( mempszBuf ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_ParsePingLocationString", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FParsePingLocationString( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszString, ref PingLocation result ); - private FParsePingLocationString _ParsePingLocationString; + private static extern bool _ParsePingLocationString( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszString, ref NetPingLocation result ); #endregion - internal bool ParsePingLocationString( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszString, ref PingLocation result ) + internal bool ParsePingLocationString( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszString, ref NetPingLocation result ) { var returnValue = _ParsePingLocationString( Self, pszString, ref result ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_CheckPingDataUpToDate", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FCheckPingDataUpToDate( IntPtr self, float flMaxAgeSeconds ); - private FCheckPingDataUpToDate _CheckPingDataUpToDate; + private static extern bool _CheckPingDataUpToDate( IntPtr self, float flMaxAgeSeconds ); #endregion internal bool CheckPingDataUpToDate( float flMaxAgeSeconds ) @@ -130,22 +122,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsPingMeasurementInProgress( IntPtr self ); - private FIsPingMeasurementInProgress _IsPingMeasurementInProgress; - - #endregion - internal bool IsPingMeasurementInProgress() - { - var returnValue = _IsPingMeasurementInProgress( Self ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetPingToDataCenter( IntPtr self, SteamNetworkingPOPID popID, ref SteamNetworkingPOPID pViaRelayPoP ); - private FGetPingToDataCenter _GetPingToDataCenter; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetPingToDataCenter", CallingConvention = Platform.CC)] + private static extern int _GetPingToDataCenter( IntPtr self, SteamNetworkingPOPID popID, ref SteamNetworkingPOPID pViaRelayPoP ); #endregion internal int GetPingToDataCenter( SteamNetworkingPOPID popID, ref SteamNetworkingPOPID pViaRelayPoP ) @@ -155,9 +133,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetDirectPingToPOP( IntPtr self, SteamNetworkingPOPID popID ); - private FGetDirectPingToPOP _GetDirectPingToPOP; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetDirectPingToPOP", CallingConvention = Platform.CC)] + private static extern int _GetDirectPingToPOP( IntPtr self, SteamNetworkingPOPID popID ); #endregion internal int GetDirectPingToPOP( SteamNetworkingPOPID popID ) @@ -167,9 +144,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetPOPCount( IntPtr self ); - private FGetPOPCount _GetPOPCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetPOPCount", CallingConvention = Platform.CC)] + private static extern int _GetPOPCount( IntPtr self ); #endregion internal int GetPOPCount() @@ -179,9 +155,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetPOPList( IntPtr self, ref SteamNetworkingPOPID list, int nListSz ); - private FGetPOPList _GetPOPList; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetPOPList", CallingConvention = Platform.CC)] + private static extern int _GetPOPList( IntPtr self, ref SteamNetworkingPOPID list, int nListSz ); #endregion internal int GetPOPList( ref SteamNetworkingPOPID list, int nListSz ) @@ -191,9 +166,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate long FGetLocalTimestamp( IntPtr self ); - private FGetLocalTimestamp _GetLocalTimestamp; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp", CallingConvention = Platform.CC)] + private static extern long _GetLocalTimestamp( IntPtr self ); #endregion internal long GetLocalTimestamp() @@ -203,63 +177,318 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetDebugOutputFunction( IntPtr self, DebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ); - private FSetDebugOutputFunction _SetDebugOutputFunction; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction", CallingConvention = Platform.CC)] + private static extern void _SetDebugOutputFunction( IntPtr self, NetDebugOutput eDetailLevel, NetDebugFunc pfnFunc ); #endregion - internal void SetDebugOutputFunction( DebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ) + internal void SetDebugOutputFunction( NetDebugOutput eDetailLevel, NetDebugFunc pfnFunc ) { _SetDebugOutputFunction( Self, eDetailLevel, pfnFunc ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_IsFakeIPv4", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetConfigValue( IntPtr self, NetConfig eValue, NetScope eScopeType, long scopeObj, NetConfigType eDataType, IntPtr pArg ); - private FSetConfigValue _SetConfigValue; + private static extern bool _IsFakeIPv4( IntPtr self, uint nIPv4 ); #endregion - internal bool SetConfigValue( NetConfig eValue, NetScope eScopeType, long scopeObj, NetConfigType eDataType, IntPtr pArg ) + internal bool IsFakeIPv4( uint nIPv4 ) + { + var returnValue = _IsFakeIPv4( Self, nIPv4 ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetIPv4FakeIPType", CallingConvention = Platform.CC)] + private static extern SteamNetworkingFakeIPType _GetIPv4FakeIPType( IntPtr self, uint nIPv4 ); + + #endregion + internal SteamNetworkingFakeIPType GetIPv4FakeIPType( uint nIPv4 ) + { + var returnValue = _GetIPv4FakeIPType( Self, nIPv4 ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetRealIdentityForFakeIP", CallingConvention = Platform.CC)] + private static extern Result _GetRealIdentityForFakeIP( IntPtr self, ref NetAddress fakeIP, [In,Out] NetIdentity[] pOutRealIdentity ); + + #endregion + internal Result GetRealIdentityForFakeIP( ref NetAddress fakeIP, [In,Out] NetIdentity[] pOutRealIdentity ) + { + var returnValue = _GetRealIdentityForFakeIP( Self, ref fakeIP, pOutRealIdentity ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalConfigValueInt32( IntPtr self, NetConfig eValue, int val ); + + #endregion + internal bool SetGlobalConfigValueInt32( NetConfig eValue, int val ) + { + var returnValue = _SetGlobalConfigValueInt32( Self, eValue, val ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalConfigValueFloat( IntPtr self, NetConfig eValue, float val ); + + #endregion + internal bool SetGlobalConfigValueFloat( NetConfig eValue, float val ) + { + var returnValue = _SetGlobalConfigValueFloat( Self, eValue, val ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalConfigValueString( IntPtr self, NetConfig eValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string val ); + + #endregion + internal bool SetGlobalConfigValueString( NetConfig eValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string val ) + { + var returnValue = _SetGlobalConfigValueString( Self, eValue, val ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValuePtr", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalConfigValuePtr( IntPtr self, NetConfig eValue, IntPtr val ); + + #endregion + internal bool SetGlobalConfigValuePtr( NetConfig eValue, IntPtr val ) + { + var returnValue = _SetGlobalConfigValuePtr( Self, eValue, val ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueInt32", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetConnectionConfigValueInt32( IntPtr self, Connection hConn, NetConfig eValue, int val ); + + #endregion + internal bool SetConnectionConfigValueInt32( Connection hConn, NetConfig eValue, int val ) + { + var returnValue = _SetConnectionConfigValueInt32( Self, hConn, eValue, val ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueFloat", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetConnectionConfigValueFloat( IntPtr self, Connection hConn, NetConfig eValue, float val ); + + #endregion + internal bool SetConnectionConfigValueFloat( Connection hConn, NetConfig eValue, float val ) + { + var returnValue = _SetConnectionConfigValueFloat( Self, hConn, eValue, val ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetConnectionConfigValueString( IntPtr self, Connection hConn, NetConfig eValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string val ); + + #endregion + internal bool SetConnectionConfigValueString( Connection hConn, NetConfig eValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string val ) + { + var returnValue = _SetConnectionConfigValueString( Self, hConn, eValue, val ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalCallback_SteamNetConnectionStatusChanged( IntPtr self, FnSteamNetConnectionStatusChanged fnCallback ); + + #endregion + internal bool SetGlobalCallback_SteamNetConnectionStatusChanged( FnSteamNetConnectionStatusChanged fnCallback ) + { + var returnValue = _SetGlobalCallback_SteamNetConnectionStatusChanged( Self, fnCallback ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalCallback_SteamNetAuthenticationStatusChanged( IntPtr self, FnSteamNetAuthenticationStatusChanged fnCallback ); + + #endregion + internal bool SetGlobalCallback_SteamNetAuthenticationStatusChanged( FnSteamNetAuthenticationStatusChanged fnCallback ) + { + var returnValue = _SetGlobalCallback_SteamNetAuthenticationStatusChanged( Self, fnCallback ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalCallback_SteamRelayNetworkStatusChanged( IntPtr self, FnSteamRelayNetworkStatusChanged fnCallback ); + + #endregion + internal bool SetGlobalCallback_SteamRelayNetworkStatusChanged( FnSteamRelayNetworkStatusChanged fnCallback ) + { + var returnValue = _SetGlobalCallback_SteamRelayNetworkStatusChanged( Self, fnCallback ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_FakeIPResult", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalCallback_FakeIPResult( IntPtr self, FnSteamNetworkingFakeIPResult fnCallback ); + + #endregion + internal bool SetGlobalCallback_FakeIPResult( FnSteamNetworkingFakeIPResult fnCallback ) + { + var returnValue = _SetGlobalCallback_FakeIPResult( Self, fnCallback ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalCallback_MessagesSessionRequest( IntPtr self, FnSteamNetworkingMessagesSessionRequest fnCallback ); + + #endregion + internal bool SetGlobalCallback_MessagesSessionRequest( FnSteamNetworkingMessagesSessionRequest fnCallback ) + { + var returnValue = _SetGlobalCallback_MessagesSessionRequest( Self, fnCallback ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetGlobalCallback_MessagesSessionFailed( IntPtr self, FnSteamNetworkingMessagesSessionFailed fnCallback ); + + #endregion + internal bool SetGlobalCallback_MessagesSessionFailed( FnSteamNetworkingMessagesSessionFailed fnCallback ) + { + var returnValue = _SetGlobalCallback_MessagesSessionFailed( Self, fnCallback ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetConfigValue", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetConfigValue( IntPtr self, NetConfig eValue, NetConfigScope eScopeType, IntPtr scopeObj, NetConfigType eDataType, IntPtr pArg ); + + #endregion + internal bool SetConfigValue( NetConfig eValue, NetConfigScope eScopeType, IntPtr scopeObj, NetConfigType eDataType, IntPtr pArg ) { var returnValue = _SetConfigValue( Self, eValue, eScopeType, scopeObj, eDataType, pArg ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate NetConfigResult FGetConfigValue( IntPtr self, NetConfig eValue, NetScope eScopeType, long scopeObj, ref NetConfigType pOutDataType, IntPtr pResult, ref ulong cbResult ); - private FGetConfigValue _GetConfigValue; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetConfigValueStruct( IntPtr self, ref NetKeyValue opt, NetConfigScope eScopeType, IntPtr scopeObj ); #endregion - internal NetConfigResult GetConfigValue( NetConfig eValue, NetScope eScopeType, long scopeObj, ref NetConfigType pOutDataType, IntPtr pResult, ref ulong cbResult ) + internal bool SetConfigValueStruct( ref NetKeyValue opt, NetConfigScope eScopeType, IntPtr scopeObj ) + { + var returnValue = _SetConfigValueStruct( Self, ref opt, eScopeType, scopeObj ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetConfigValue", CallingConvention = Platform.CC)] + private static extern NetConfigResult _GetConfigValue( IntPtr self, NetConfig eValue, NetConfigScope eScopeType, IntPtr scopeObj, ref NetConfigType pOutDataType, IntPtr pResult, ref UIntPtr cbResult ); + + #endregion + internal NetConfigResult GetConfigValue( NetConfig eValue, NetConfigScope eScopeType, IntPtr scopeObj, ref NetConfigType pOutDataType, IntPtr pResult, ref UIntPtr cbResult ) { var returnValue = _GetConfigValue( Self, eValue, eScopeType, scopeObj, ref pOutDataType, pResult, ref cbResult ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetConfigValueInfo( IntPtr self, NetConfig eValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pOutName, ref NetConfigType pOutDataType, [In,Out] NetScope[] pOutScope, [In,Out] NetConfig[] pOutNextValue ); - private FGetConfigValueInfo _GetConfigValueInfo; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetConfigValueInfo( IntPtr self, NetConfig eValue, ref NetConfigType pOutDataType, [In,Out] NetConfigScope[] pOutScope ); #endregion - internal bool GetConfigValueInfo( NetConfig eValue, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pOutName, ref NetConfigType pOutDataType, [In,Out] NetScope[] pOutScope, [In,Out] NetConfig[] pOutNextValue ) + internal string GetConfigValueInfo( NetConfig eValue, ref NetConfigType pOutDataType, [In,Out] NetConfigScope[] pOutScope ) { - var returnValue = _GetConfigValueInfo( Self, eValue, pOutName, ref pOutDataType, pOutScope, pOutNextValue ); + var returnValue = _GetConfigValueInfo( Self, eValue, ref pOutDataType, pOutScope ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate NetConfig FGetFirstConfigValue( IntPtr self ); - private FGetFirstConfigValue _GetFirstConfigValue; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_IterateGenericEditableConfigValues", CallingConvention = Platform.CC)] + private static extern NetConfig _IterateGenericEditableConfigValues( IntPtr self, NetConfig eCurrent, [MarshalAs( UnmanagedType.U1 )] bool bEnumerateDevVars ); #endregion - internal NetConfig GetFirstConfigValue() + internal NetConfig IterateGenericEditableConfigValues( NetConfig eCurrent, [MarshalAs( UnmanagedType.U1 )] bool bEnumerateDevVars ) { - var returnValue = _GetFirstConfigValue( Self ); + var returnValue = _IterateGenericEditableConfigValues( Self, eCurrent, bEnumerateDevVars ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString", CallingConvention = Platform.CC)] + private static extern void _SteamNetworkingIPAddr_ToString( IntPtr self, ref NetAddress addr, IntPtr buf, uint cbBuf, [MarshalAs( UnmanagedType.U1 )] bool bWithPort ); + + #endregion + internal void SteamNetworkingIPAddr_ToString( ref NetAddress addr, out string buf, [MarshalAs( UnmanagedType.U1 )] bool bWithPort ) + { + using var membuf = Helpers.TakeMemory(); + _SteamNetworkingIPAddr_ToString( Self, ref addr, membuf, (1024 * 32), bWithPort ); + buf = Helpers.MemoryToString( membuf ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SteamNetworkingIPAddr_ParseString( IntPtr self, ref NetAddress pAddr, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszStr ); + + #endregion + internal bool SteamNetworkingIPAddr_ParseString( ref NetAddress pAddr, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszStr ) + { + var returnValue = _SteamNetworkingIPAddr_ParseString( Self, ref pAddr, pszStr ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType", CallingConvention = Platform.CC)] + private static extern SteamNetworkingFakeIPType _SteamNetworkingIPAddr_GetFakeIPType( IntPtr self, ref NetAddress addr ); + + #endregion + internal SteamNetworkingFakeIPType SteamNetworkingIPAddr_GetFakeIPType( ref NetAddress addr ) + { + var returnValue = _SteamNetworkingIPAddr_GetFakeIPType( Self, ref addr ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString", CallingConvention = Platform.CC)] + private static extern void _SteamNetworkingIdentity_ToString( IntPtr self, ref NetIdentity identity, IntPtr buf, uint cbBuf ); + + #endregion + internal void SteamNetworkingIdentity_ToString( ref NetIdentity identity, out string buf ) + { + using var membuf = Helpers.TakeMemory(); + _SteamNetworkingIdentity_ToString( Self, ref identity, membuf, (1024 * 32) ); + buf = Helpers.MemoryToString( membuf ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SteamNetworkingIdentity_ParseString( IntPtr self, ref NetIdentity pIdentity, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszStr ); + + #endregion + internal bool SteamNetworkingIdentity_ParseString( ref NetIdentity pIdentity, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszStr ) + { + var returnValue = _SteamNetworkingIdentity_ParseString( Self, ref pIdentity, pszStr ); return returnValue; } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs index 84e3f15..56bfb1e 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamParentalSettings.cs @@ -7,36 +7,23 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamParentalSettings : SteamInterface + internal unsafe class ISteamParentalSettings : SteamInterface { - public override string InterfaceName => "STEAMPARENTALSETTINGS_INTERFACE_VERSION001"; - public override void InitInternals() + internal ISteamParentalSettings( bool IsGameServer ) { - _BIsParentalLockEnabled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _BIsParentalLockLocked = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _BIsAppBlocked = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _BIsAppInBlockList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _BIsFeatureBlocked = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _BIsFeatureInBlockList = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _BIsParentalLockEnabled = null; - _BIsParentalLockLocked = null; - _BIsAppBlocked = null; - _BIsAppInBlockList = null; - _BIsFeatureBlocked = null; - _BIsFeatureInBlockList = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamParentalSettings_v001", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamParentalSettings_v001(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamParentalSettings_v001(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsParentalLockEnabled( IntPtr self ); - private FBIsParentalLockEnabled _BIsParentalLockEnabled; + private static extern bool _BIsParentalLockEnabled( IntPtr self ); #endregion internal bool BIsParentalLockEnabled() @@ -46,10 +33,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParentalSettings_BIsParentalLockLocked", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsParentalLockLocked( IntPtr self ); - private FBIsParentalLockLocked _BIsParentalLockLocked; + private static extern bool _BIsParentalLockLocked( IntPtr self ); #endregion internal bool BIsParentalLockLocked() @@ -59,10 +45,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParentalSettings_BIsAppBlocked", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsAppBlocked( IntPtr self, AppId nAppID ); - private FBIsAppBlocked _BIsAppBlocked; + private static extern bool _BIsAppBlocked( IntPtr self, AppId nAppID ); #endregion internal bool BIsAppBlocked( AppId nAppID ) @@ -72,10 +57,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParentalSettings_BIsAppInBlockList", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsAppInBlockList( IntPtr self, AppId nAppID ); - private FBIsAppInBlockList _BIsAppInBlockList; + private static extern bool _BIsAppInBlockList( IntPtr self, AppId nAppID ); #endregion internal bool BIsAppInBlockList( AppId nAppID ) @@ -85,10 +69,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParentalSettings_BIsFeatureBlocked", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsFeatureBlocked( IntPtr self, ParentalFeature eFeature ); - private FBIsFeatureBlocked _BIsFeatureBlocked; + private static extern bool _BIsFeatureBlocked( IntPtr self, ParentalFeature eFeature ); #endregion internal bool BIsFeatureBlocked( ParentalFeature eFeature ) @@ -98,10 +81,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsFeatureInBlockList( IntPtr self, ParentalFeature eFeature ); - private FBIsFeatureInBlockList _BIsFeatureInBlockList; + private static extern bool _BIsFeatureInBlockList( IntPtr self, ParentalFeature eFeature ); #endregion internal bool BIsFeatureInBlockList( ParentalFeature eFeature ) diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs index 58a5029..e9585ec 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamParties.cs @@ -7,47 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamParties : SteamInterface + internal unsafe class ISteamParties : SteamInterface { - public override string InterfaceName => "SteamParties002"; - public override void InitInternals() + internal ISteamParties( bool IsGameServer ) { - _GetNumActiveBeacons = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _GetBeaconByIndex = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetBeaconDetails = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _JoinParty = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _GetNumAvailableBeaconLocations = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _GetAvailableBeaconLocations = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _CreateBeacon = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _OnReservationCompleted = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _CancelReservation = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _ChangeNumOpenSlots = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _DestroyBeacon = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GetBeaconLocationData = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _GetNumActiveBeacons = null; - _GetBeaconByIndex = null; - _GetBeaconDetails = null; - _JoinParty = null; - _GetNumAvailableBeaconLocations = null; - _GetAvailableBeaconLocations = null; - _CreateBeacon = null; - _OnReservationCompleted = null; - _CancelReservation = null; - _ChangeNumOpenSlots = null; - _DestroyBeacon = null; - _GetBeaconLocationData = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamParties_v002", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamParties_v002(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamParties_v002(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetNumActiveBeacons( IntPtr self ); - private FGetNumActiveBeacons _GetNumActiveBeacons; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_GetNumActiveBeacons", CallingConvention = Platform.CC)] + private static extern uint _GetNumActiveBeacons( IntPtr self ); #endregion internal uint GetNumActiveBeacons() @@ -57,9 +32,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate PartyBeaconID_t FGetBeaconByIndex( IntPtr self, uint unIndex ); - private FGetBeaconByIndex _GetBeaconByIndex; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_GetBeaconByIndex", CallingConvention = Platform.CC)] + private static extern PartyBeaconID_t _GetBeaconByIndex( IntPtr self, uint unIndex ); #endregion internal PartyBeaconID_t GetBeaconByIndex( uint unIndex ) @@ -69,37 +43,34 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_GetBeaconDetails", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetBeaconDetails( IntPtr self, PartyBeaconID_t ulBeaconID, ref SteamId pSteamIDBeaconOwner, ref SteamPartyBeaconLocation_t pLocation, IntPtr pchMetadata, int cchMetadata ); - private FGetBeaconDetails _GetBeaconDetails; + private static extern bool _GetBeaconDetails( IntPtr self, PartyBeaconID_t ulBeaconID, ref SteamId pSteamIDBeaconOwner, ref SteamPartyBeaconLocation_t pLocation, IntPtr pchMetadata, int cchMetadata ); #endregion internal bool GetBeaconDetails( PartyBeaconID_t ulBeaconID, ref SteamId pSteamIDBeaconOwner, ref SteamPartyBeaconLocation_t pLocation, out string pchMetadata ) { - IntPtr mempchMetadata = Helpers.TakeMemory(); + using var mempchMetadata = Helpers.TakeMemory(); var returnValue = _GetBeaconDetails( Self, ulBeaconID, ref pSteamIDBeaconOwner, ref pLocation, mempchMetadata, (1024 * 32) ); pchMetadata = Helpers.MemoryToString( mempchMetadata ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FJoinParty( IntPtr self, PartyBeaconID_t ulBeaconID ); - private FJoinParty _JoinParty; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_JoinParty", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _JoinParty( IntPtr self, PartyBeaconID_t ulBeaconID ); #endregion - internal async Task JoinParty( PartyBeaconID_t ulBeaconID ) + internal CallResult JoinParty( PartyBeaconID_t ulBeaconID ) { var returnValue = _JoinParty( Self, ulBeaconID ); - return await JoinPartyCallback_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_GetNumAvailableBeaconLocations", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetNumAvailableBeaconLocations( IntPtr self, ref uint puNumLocations ); - private FGetNumAvailableBeaconLocations _GetNumAvailableBeaconLocations; + private static extern bool _GetNumAvailableBeaconLocations( IntPtr self, ref uint puNumLocations ); #endregion internal bool GetNumAvailableBeaconLocations( ref uint puNumLocations ) @@ -109,10 +80,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_GetAvailableBeaconLocations", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetAvailableBeaconLocations( IntPtr self, ref SteamPartyBeaconLocation_t pLocationList, uint uMaxNumLocations ); - private FGetAvailableBeaconLocations _GetAvailableBeaconLocations; + private static extern bool _GetAvailableBeaconLocations( IntPtr self, ref SteamPartyBeaconLocation_t pLocationList, uint uMaxNumLocations ); #endregion internal bool GetAvailableBeaconLocations( ref SteamPartyBeaconLocation_t pLocationList, uint uMaxNumLocations ) @@ -122,21 +92,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FCreateBeacon( IntPtr self, uint unOpenSlots, ref SteamPartyBeaconLocation_t pBeaconLocation, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMetadata ); - private FCreateBeacon _CreateBeacon; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_CreateBeacon", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _CreateBeacon( IntPtr self, uint unOpenSlots, ref SteamPartyBeaconLocation_t pBeaconLocation, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMetadata ); #endregion - internal async Task CreateBeacon( uint unOpenSlots, /* ref */ SteamPartyBeaconLocation_t pBeaconLocation, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMetadata ) + internal CallResult CreateBeacon( uint unOpenSlots, /* ref */ SteamPartyBeaconLocation_t pBeaconLocation, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchConnectString, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMetadata ) { var returnValue = _CreateBeacon( Self, unOpenSlots, ref pBeaconLocation, pchConnectString, pchMetadata ); - return await CreateBeaconCallback_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FOnReservationCompleted( IntPtr self, PartyBeaconID_t ulBeacon, SteamId steamIDUser ); - private FOnReservationCompleted _OnReservationCompleted; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_OnReservationCompleted", CallingConvention = Platform.CC)] + private static extern void _OnReservationCompleted( IntPtr self, PartyBeaconID_t ulBeacon, SteamId steamIDUser ); #endregion internal void OnReservationCompleted( PartyBeaconID_t ulBeacon, SteamId steamIDUser ) @@ -145,9 +113,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FCancelReservation( IntPtr self, PartyBeaconID_t ulBeacon, SteamId steamIDUser ); - private FCancelReservation _CancelReservation; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_CancelReservation", CallingConvention = Platform.CC)] + private static extern void _CancelReservation( IntPtr self, PartyBeaconID_t ulBeacon, SteamId steamIDUser ); #endregion internal void CancelReservation( PartyBeaconID_t ulBeacon, SteamId steamIDUser ) @@ -156,22 +123,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FChangeNumOpenSlots( IntPtr self, PartyBeaconID_t ulBeacon, uint unOpenSlots ); - private FChangeNumOpenSlots _ChangeNumOpenSlots; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_ChangeNumOpenSlots", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _ChangeNumOpenSlots( IntPtr self, PartyBeaconID_t ulBeacon, uint unOpenSlots ); #endregion - internal async Task ChangeNumOpenSlots( PartyBeaconID_t ulBeacon, uint unOpenSlots ) + internal CallResult ChangeNumOpenSlots( PartyBeaconID_t ulBeacon, uint unOpenSlots ) { var returnValue = _ChangeNumOpenSlots( Self, ulBeacon, unOpenSlots ); - return await ChangeNumOpenSlotsCallback_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_DestroyBeacon", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDestroyBeacon( IntPtr self, PartyBeaconID_t ulBeacon ); - private FDestroyBeacon _DestroyBeacon; + private static extern bool _DestroyBeacon( IntPtr self, PartyBeaconID_t ulBeacon ); #endregion internal bool DestroyBeacon( PartyBeaconID_t ulBeacon ) @@ -181,15 +146,14 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamParties_GetBeaconLocationData", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetBeaconLocationData( IntPtr self, SteamPartyBeaconLocation_t BeaconLocation, SteamPartyBeaconLocationData eData, IntPtr pchDataStringOut, int cchDataStringOut ); - private FGetBeaconLocationData _GetBeaconLocationData; + private static extern bool _GetBeaconLocationData( IntPtr self, SteamPartyBeaconLocation_t BeaconLocation, SteamPartyBeaconLocationData eData, IntPtr pchDataStringOut, int cchDataStringOut ); #endregion internal bool GetBeaconLocationData( SteamPartyBeaconLocation_t BeaconLocation, SteamPartyBeaconLocationData eData, out string pchDataStringOut ) { - IntPtr mempchDataStringOut = Helpers.TakeMemory(); + using var mempchDataStringOut = Helpers.TakeMemory(); var returnValue = _GetBeaconLocationData( Self, BeaconLocation, eData, mempchDataStringOut, (1024 * 32) ); pchDataStringOut = Helpers.MemoryToString( mempchDataStringOut ); return returnValue; diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamRemotePlay.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemotePlay.cs new file mode 100644 index 0000000..6ad4204 --- /dev/null +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemotePlay.cs @@ -0,0 +1,103 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + + +namespace Steamworks +{ + internal unsafe class ISteamRemotePlay : SteamInterface + { + + internal ISteamRemotePlay( bool IsGameServer ) + { + SetupInterface( IsGameServer ); + } + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamRemotePlay_v001", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamRemotePlay_v001(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamRemotePlay_v001(); + + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemotePlay_GetSessionCount", CallingConvention = Platform.CC)] + private static extern uint _GetSessionCount( IntPtr self ); + + #endregion + internal uint GetSessionCount() + { + var returnValue = _GetSessionCount( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemotePlay_GetSessionID", CallingConvention = Platform.CC)] + private static extern RemotePlaySessionID_t _GetSessionID( IntPtr self, int iSessionIndex ); + + #endregion + internal RemotePlaySessionID_t GetSessionID( int iSessionIndex ) + { + var returnValue = _GetSessionID( Self, iSessionIndex ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemotePlay_GetSessionSteamID", CallingConvention = Platform.CC)] + private static extern SteamId _GetSessionSteamID( IntPtr self, RemotePlaySessionID_t unSessionID ); + + #endregion + internal SteamId GetSessionSteamID( RemotePlaySessionID_t unSessionID ) + { + var returnValue = _GetSessionSteamID( Self, unSessionID ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemotePlay_GetSessionClientName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetSessionClientName( IntPtr self, RemotePlaySessionID_t unSessionID ); + + #endregion + internal string GetSessionClientName( RemotePlaySessionID_t unSessionID ) + { + var returnValue = _GetSessionClientName( Self, unSessionID ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor", CallingConvention = Platform.CC)] + private static extern SteamDeviceFormFactor _GetSessionClientFormFactor( IntPtr self, RemotePlaySessionID_t unSessionID ); + + #endregion + internal SteamDeviceFormFactor GetSessionClientFormFactor( RemotePlaySessionID_t unSessionID ) + { + var returnValue = _GetSessionClientFormFactor( Self, unSessionID ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemotePlay_BGetSessionClientResolution", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BGetSessionClientResolution( IntPtr self, RemotePlaySessionID_t unSessionID, ref int pnResolutionX, ref int pnResolutionY ); + + #endregion + internal bool BGetSessionClientResolution( RemotePlaySessionID_t unSessionID, ref int pnResolutionX, ref int pnResolutionY ) + { + var returnValue = _BGetSessionClientResolution( Self, unSessionID, ref pnResolutionX, ref pnResolutionY ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BSendRemotePlayTogetherInvite( IntPtr self, SteamId steamIDFriend ); + + #endregion + internal bool BSendRemotePlayTogetherInvite( SteamId steamIDFriend ) + { + var returnValue = _BSendRemotePlayTogetherInvite( Self, steamIDFriend ); + return returnValue; + } + + } +} diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs index 48e9030..c1a8721 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamRemoteStorage.cs @@ -7,108 +7,23 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamRemoteStorage : SteamInterface + internal unsafe class ISteamRemoteStorage : SteamInterface { - public override string InterfaceName => "STEAMREMOTESTORAGE_INTERFACE_VERSION014"; - public override void InitInternals() + internal ISteamRemoteStorage( bool IsGameServer ) { - _FileWrite = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _FileRead = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _FileWriteAsync = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _FileReadAsync = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _FileReadAsyncComplete = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _FileForget = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _FileDelete = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _FileShare = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _SetSyncPlatforms = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _FileWriteStreamOpen = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _FileWriteStreamWriteChunk = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _FileWriteStreamClose = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _FileWriteStreamCancel = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _FileExists = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _FilePersisted = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetFileSize = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _GetFileTimestamp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _GetSyncPlatforms = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetFileCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _GetFileNameAndSize = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _GetQuota = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _IsCloudEnabledForAccount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _IsCloudEnabledForApp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _SetCloudEnabledForApp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _UGCDownload = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _GetUGCDownloadProgress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _GetUGCDetails = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _UGCRead = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _GetCachedUGCCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - // PublishWorkshopFile is deprecated - // CreatePublishedFileUpdateRequest is deprecated - // UpdatePublishedFileFile is deprecated - // UpdatePublishedFilePreviewFile is deprecated - // UpdatePublishedFileTitle is deprecated - // UpdatePublishedFileDescription is deprecated - // UpdatePublishedFileVisibility is deprecated - // UpdatePublishedFileTags is deprecated - // CommitPublishedFileUpdate is deprecated - // GetPublishedFileDetails is deprecated - // DeletePublishedFile is deprecated - // EnumerateUserPublishedFiles is deprecated - // SubscribePublishedFile is deprecated - // EnumerateUserSubscribedFiles is deprecated - // UnsubscribePublishedFile is deprecated - // UpdatePublishedFileSetChangeDescription is deprecated - // GetPublishedItemVoteDetails is deprecated - // UpdateUserPublishedItemVote is deprecated - // GetUserPublishedItemVoteDetails is deprecated - // EnumerateUserSharedWorkshopFiles is deprecated - // PublishVideo is deprecated - // SetUserPublishedFileAction is deprecated - // EnumeratePublishedFilesByUserAction is deprecated - // EnumeratePublishedWorkshopFiles is deprecated - _UGCDownloadToLocation = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 424 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _FileWrite = null; - _FileRead = null; - _FileWriteAsync = null; - _FileReadAsync = null; - _FileReadAsyncComplete = null; - _FileForget = null; - _FileDelete = null; - _FileShare = null; - _SetSyncPlatforms = null; - _FileWriteStreamOpen = null; - _FileWriteStreamWriteChunk = null; - _FileWriteStreamClose = null; - _FileWriteStreamCancel = null; - _FileExists = null; - _FilePersisted = null; - _GetFileSize = null; - _GetFileTimestamp = null; - _GetSyncPlatforms = null; - _GetFileCount = null; - _GetFileNameAndSize = null; - _GetQuota = null; - _IsCloudEnabledForAccount = null; - _IsCloudEnabledForApp = null; - _SetCloudEnabledForApp = null; - _UGCDownload = null; - _GetUGCDownloadProgress = null; - _GetUGCDetails = null; - _UGCRead = null; - _GetCachedUGCCount = null; - _UGCDownloadToLocation = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamRemoteStorage_v016", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamRemoteStorage_v016(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamRemoteStorage_v016(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWrite", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileWrite( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, int cubData ); - private FFileWrite _FileWrite; + private static extern bool _FileWrite( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, int cubData ); #endregion internal bool FileWrite( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, int cubData ) @@ -118,9 +33,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FFileRead( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, int cubDataToRead ); - private FFileRead _FileRead; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileRead", CallingConvention = Platform.CC)] + private static extern int _FileRead( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, int cubDataToRead ); #endregion internal int FileRead( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, int cubDataToRead ) @@ -130,34 +44,31 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FFileWriteAsync( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, uint cubData ); - private FFileWriteAsync _FileWriteAsync; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteAsync", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _FileWriteAsync( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, uint cubData ); #endregion - internal async Task FileWriteAsync( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, uint cubData ) + internal CallResult FileWriteAsync( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, IntPtr pvData, uint cubData ) { var returnValue = _FileWriteAsync( Self, pchFile, pvData, cubData ); - return await RemoteStorageFileWriteAsyncComplete_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FFileReadAsync( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, uint nOffset, uint cubToRead ); - private FFileReadAsync _FileReadAsync; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsync", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _FileReadAsync( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, uint nOffset, uint cubToRead ); #endregion - internal async Task FileReadAsync( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, uint nOffset, uint cubToRead ) + internal CallResult FileReadAsync( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, uint nOffset, uint cubToRead ) { var returnValue = _FileReadAsync( Self, pchFile, nOffset, cubToRead ); - return await RemoteStorageFileReadAsyncComplete_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileReadAsyncComplete( IntPtr self, SteamAPICall_t hReadCall, IntPtr pvBuffer, uint cubToRead ); - private FFileReadAsyncComplete _FileReadAsyncComplete; + private static extern bool _FileReadAsyncComplete( IntPtr self, SteamAPICall_t hReadCall, IntPtr pvBuffer, uint cubToRead ); #endregion internal bool FileReadAsyncComplete( SteamAPICall_t hReadCall, IntPtr pvBuffer, uint cubToRead ) @@ -167,10 +78,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileForget", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileForget( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FFileForget _FileForget; + private static extern bool _FileForget( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal bool FileForget( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -180,10 +90,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileDelete", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileDelete( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FFileDelete _FileDelete; + private static extern bool _FileDelete( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal bool FileDelete( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -193,22 +102,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FFileShare( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FFileShare _FileShare; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileShare", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _FileShare( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion - internal async Task FileShare( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) + internal CallResult FileShare( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) { var returnValue = _FileShare( Self, pchFile ); - return await RemoteStorageFileShareResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetSyncPlatforms( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, RemoteStoragePlatform eRemoteStoragePlatform ); - private FSetSyncPlatforms _SetSyncPlatforms; + private static extern bool _SetSyncPlatforms( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, RemoteStoragePlatform eRemoteStoragePlatform ); #endregion internal bool SetSyncPlatforms( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile, RemoteStoragePlatform eRemoteStoragePlatform ) @@ -218,9 +125,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UGCFileWriteStreamHandle_t FFileWriteStreamOpen( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FFileWriteStreamOpen _FileWriteStreamOpen; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen", CallingConvention = Platform.CC)] + private static extern UGCFileWriteStreamHandle_t _FileWriteStreamOpen( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal UGCFileWriteStreamHandle_t FileWriteStreamOpen( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -230,10 +136,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileWriteStreamWriteChunk( IntPtr self, UGCFileWriteStreamHandle_t writeHandle, IntPtr pvData, int cubData ); - private FFileWriteStreamWriteChunk _FileWriteStreamWriteChunk; + private static extern bool _FileWriteStreamWriteChunk( IntPtr self, UGCFileWriteStreamHandle_t writeHandle, IntPtr pvData, int cubData ); #endregion internal bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, IntPtr pvData, int cubData ) @@ -243,10 +148,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileWriteStreamClose( IntPtr self, UGCFileWriteStreamHandle_t writeHandle ); - private FFileWriteStreamClose _FileWriteStreamClose; + private static extern bool _FileWriteStreamClose( IntPtr self, UGCFileWriteStreamHandle_t writeHandle ); #endregion internal bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) @@ -256,10 +160,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileWriteStreamCancel( IntPtr self, UGCFileWriteStreamHandle_t writeHandle ); - private FFileWriteStreamCancel _FileWriteStreamCancel; + private static extern bool _FileWriteStreamCancel( IntPtr self, UGCFileWriteStreamHandle_t writeHandle ); #endregion internal bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) @@ -269,10 +172,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileExists", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFileExists( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FFileExists _FileExists; + private static extern bool _FileExists( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal bool FileExists( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -282,10 +184,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FilePersisted", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FFilePersisted( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FFilePersisted _FilePersisted; + private static extern bool _FilePersisted( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal bool FilePersisted( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -295,9 +196,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFileSize( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FGetFileSize _GetFileSize; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileSize", CallingConvention = Platform.CC)] + private static extern int _GetFileSize( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal int GetFileSize( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -307,9 +207,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate long FGetFileTimestamp( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FGetFileTimestamp _GetFileTimestamp; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileTimestamp", CallingConvention = Platform.CC)] + private static extern long _GetFileTimestamp( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal long GetFileTimestamp( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -319,9 +218,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate RemoteStoragePlatform FGetSyncPlatforms( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); - private FGetSyncPlatforms _GetSyncPlatforms; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms", CallingConvention = Platform.CC)] + private static extern RemoteStoragePlatform _GetSyncPlatforms( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ); #endregion internal RemoteStoragePlatform GetSyncPlatforms( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFile ) @@ -331,9 +229,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetFileCount( IntPtr self ); - private FGetFileCount _GetFileCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileCount", CallingConvention = Platform.CC)] + private static extern int _GetFileCount( IntPtr self ); #endregion internal int GetFileCount() @@ -343,9 +240,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetFileNameAndSize( IntPtr self, int iFile, ref int pnFileSizeInBytes ); - private FGetFileNameAndSize _GetFileNameAndSize; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetFileNameAndSize( IntPtr self, int iFile, ref int pnFileSizeInBytes ); #endregion internal string GetFileNameAndSize( int iFile, ref int pnFileSizeInBytes ) @@ -355,10 +251,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetQuota", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQuota( IntPtr self, ref ulong pnTotalBytes, ref ulong puAvailableBytes ); - private FGetQuota _GetQuota; + private static extern bool _GetQuota( IntPtr self, ref ulong pnTotalBytes, ref ulong puAvailableBytes ); #endregion internal bool GetQuota( ref ulong pnTotalBytes, ref ulong puAvailableBytes ) @@ -368,10 +263,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsCloudEnabledForAccount( IntPtr self ); - private FIsCloudEnabledForAccount _IsCloudEnabledForAccount; + private static extern bool _IsCloudEnabledForAccount( IntPtr self ); #endregion internal bool IsCloudEnabledForAccount() @@ -381,10 +275,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsCloudEnabledForApp( IntPtr self ); - private FIsCloudEnabledForApp _IsCloudEnabledForApp; + private static extern bool _IsCloudEnabledForApp( IntPtr self ); #endregion internal bool IsCloudEnabledForApp() @@ -394,9 +287,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetCloudEnabledForApp( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bEnabled ); - private FSetCloudEnabledForApp _SetCloudEnabledForApp; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp", CallingConvention = Platform.CC)] + private static extern void _SetCloudEnabledForApp( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bEnabled ); #endregion internal void SetCloudEnabledForApp( [MarshalAs( UnmanagedType.U1 )] bool bEnabled ) @@ -405,22 +297,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FUGCDownload( IntPtr self, UGCHandle_t hContent, uint unPriority ); - private FUGCDownload _UGCDownload; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownload", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _UGCDownload( IntPtr self, UGCHandle_t hContent, uint unPriority ); #endregion - internal async Task UGCDownload( UGCHandle_t hContent, uint unPriority ) + internal CallResult UGCDownload( UGCHandle_t hContent, uint unPriority ) { var returnValue = _UGCDownload( Self, hContent, unPriority ); - return await RemoteStorageDownloadUGCResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUGCDownloadProgress( IntPtr self, UGCHandle_t hContent, ref int pnBytesDownloaded, ref int pnBytesExpected ); - private FGetUGCDownloadProgress _GetUGCDownloadProgress; + private static extern bool _GetUGCDownloadProgress( IntPtr self, UGCHandle_t hContent, ref int pnBytesDownloaded, ref int pnBytesExpected ); #endregion internal bool GetUGCDownloadProgress( UGCHandle_t hContent, ref int pnBytesDownloaded, ref int pnBytesExpected ) @@ -430,10 +320,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDetails", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUGCDetails( IntPtr self, UGCHandle_t hContent, ref AppId pnAppID, [In,Out] ref char[] ppchName, ref int pnFileSizeInBytes, ref SteamId pSteamIDOwner ); - private FGetUGCDetails _GetUGCDetails; + private static extern bool _GetUGCDetails( IntPtr self, UGCHandle_t hContent, ref AppId pnAppID, [In,Out] ref char[] ppchName, ref int pnFileSizeInBytes, ref SteamId pSteamIDOwner ); #endregion internal bool GetUGCDetails( UGCHandle_t hContent, ref AppId pnAppID, [In,Out] ref char[] ppchName, ref int pnFileSizeInBytes, ref SteamId pSteamIDOwner ) @@ -443,9 +332,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FUGCRead( IntPtr self, UGCHandle_t hContent, IntPtr pvData, int cubDataToRead, uint cOffset, UGCReadAction eAction ); - private FUGCRead _UGCRead; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCRead", CallingConvention = Platform.CC)] + private static extern int _UGCRead( IntPtr self, UGCHandle_t hContent, IntPtr pvData, int cubDataToRead, uint cOffset, UGCReadAction eAction ); #endregion internal int UGCRead( UGCHandle_t hContent, IntPtr pvData, int cubDataToRead, uint cOffset, UGCReadAction eAction ) @@ -455,9 +343,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetCachedUGCCount( IntPtr self ); - private FGetCachedUGCCount _GetCachedUGCCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount", CallingConvention = Platform.CC)] + private static extern int _GetCachedUGCCount( IntPtr self ); #endregion internal int GetCachedUGCCount() @@ -467,15 +354,71 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FUGCDownloadToLocation( IntPtr self, UGCHandle_t hContent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLocation, uint unPriority ); - private FUGCDownloadToLocation _UGCDownloadToLocation; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle", CallingConvention = Platform.CC)] + private static extern UGCHandle_t _GetCachedUGCHandle( IntPtr self, int iCachedContent ); #endregion - internal async Task UGCDownloadToLocation( UGCHandle_t hContent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLocation, uint unPriority ) + internal UGCHandle_t GetCachedUGCHandle( int iCachedContent ) + { + var returnValue = _GetCachedUGCHandle( Self, iCachedContent ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _UGCDownloadToLocation( IntPtr self, UGCHandle_t hContent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLocation, uint unPriority ); + + #endregion + internal CallResult UGCDownloadToLocation( UGCHandle_t hContent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLocation, uint unPriority ) { var returnValue = _UGCDownloadToLocation( Self, hContent, pchLocation, unPriority ); - return await RemoteStorageDownloadUGCResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetLocalFileChangeCount", CallingConvention = Platform.CC)] + private static extern int _GetLocalFileChangeCount( IntPtr self ); + + #endregion + internal int GetLocalFileChangeCount() + { + var returnValue = _GetLocalFileChangeCount( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetLocalFileChange", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetLocalFileChange( IntPtr self, int iFile, ref RemoteStorageLocalFileChange pEChangeType, ref RemoteStorageFilePathType pEFilePathType ); + + #endregion + internal string GetLocalFileChange( int iFile, ref RemoteStorageLocalFileChange pEChangeType, ref RemoteStorageFilePathType pEFilePathType ) + { + var returnValue = _GetLocalFileChange( Self, iFile, ref pEChangeType, ref pEFilePathType ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_BeginFileWriteBatch", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BeginFileWriteBatch( IntPtr self ); + + #endregion + internal bool BeginFileWriteBatch() + { + var returnValue = _BeginFileWriteBatch( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_EndFileWriteBatch", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _EndFileWriteBatch( IntPtr self ); + + #endregion + internal bool EndFileWriteBatch() + { + var returnValue = _EndFileWriteBatch( Self ); + return returnValue; } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs index 84e570c..ff9380a 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamScreenshots.cs @@ -7,41 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamScreenshots : SteamInterface + internal unsafe class ISteamScreenshots : SteamInterface { - public override string InterfaceName => "STEAMSCREENSHOTS_INTERFACE_VERSION003"; - public override void InitInternals() + internal ISteamScreenshots( bool IsGameServer ) { - _WriteScreenshot = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _AddScreenshotToLibrary = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _TriggerScreenshot = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _HookScreenshots = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _SetLocation = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _TagUser = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _TagPublishedFile = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _IsScreenshotsHooked = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _AddVRScreenshotToLibrary = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _WriteScreenshot = null; - _AddScreenshotToLibrary = null; - _TriggerScreenshot = null; - _HookScreenshots = null; - _SetLocation = null; - _TagUser = null; - _TagPublishedFile = null; - _IsScreenshotsHooked = null; - _AddVRScreenshotToLibrary = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamScreenshots_v003", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamScreenshots_v003(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamScreenshots_v003(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate ScreenshotHandle FWriteScreenshot( IntPtr self, IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight ); - private FWriteScreenshot _WriteScreenshot; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_WriteScreenshot", CallingConvention = Platform.CC)] + private static extern ScreenshotHandle _WriteScreenshot( IntPtr self, IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight ); #endregion internal ScreenshotHandle WriteScreenshot( IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight ) @@ -51,9 +32,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate ScreenshotHandle FAddScreenshotToLibrary( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFilename, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchThumbnailFilename, int nWidth, int nHeight ); - private FAddScreenshotToLibrary _AddScreenshotToLibrary; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary", CallingConvention = Platform.CC)] + private static extern ScreenshotHandle _AddScreenshotToLibrary( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFilename, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchThumbnailFilename, int nWidth, int nHeight ); #endregion internal ScreenshotHandle AddScreenshotToLibrary( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFilename, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchThumbnailFilename, int nWidth, int nHeight ) @@ -63,9 +43,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FTriggerScreenshot( IntPtr self ); - private FTriggerScreenshot _TriggerScreenshot; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_TriggerScreenshot", CallingConvention = Platform.CC)] + private static extern void _TriggerScreenshot( IntPtr self ); #endregion internal void TriggerScreenshot() @@ -74,9 +53,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FHookScreenshots( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bHook ); - private FHookScreenshots _HookScreenshots; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_HookScreenshots", CallingConvention = Platform.CC)] + private static extern void _HookScreenshots( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bHook ); #endregion internal void HookScreenshots( [MarshalAs( UnmanagedType.U1 )] bool bHook ) @@ -85,10 +63,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_SetLocation", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLocation( IntPtr self, ScreenshotHandle hScreenshot, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLocation ); - private FSetLocation _SetLocation; + private static extern bool _SetLocation( IntPtr self, ScreenshotHandle hScreenshot, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLocation ); #endregion internal bool SetLocation( ScreenshotHandle hScreenshot, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLocation ) @@ -98,10 +75,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_TagUser", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FTagUser( IntPtr self, ScreenshotHandle hScreenshot, SteamId steamID ); - private FTagUser _TagUser; + private static extern bool _TagUser( IntPtr self, ScreenshotHandle hScreenshot, SteamId steamID ); #endregion internal bool TagUser( ScreenshotHandle hScreenshot, SteamId steamID ) @@ -111,10 +87,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_TagPublishedFile", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FTagPublishedFile( IntPtr self, ScreenshotHandle hScreenshot, PublishedFileId unPublishedFileID ); - private FTagPublishedFile _TagPublishedFile; + private static extern bool _TagPublishedFile( IntPtr self, ScreenshotHandle hScreenshot, PublishedFileId unPublishedFileID ); #endregion internal bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId unPublishedFileID ) @@ -124,10 +99,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_IsScreenshotsHooked", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsScreenshotsHooked( IntPtr self ); - private FIsScreenshotsHooked _IsScreenshotsHooked; + private static extern bool _IsScreenshotsHooked( IntPtr self ); #endregion internal bool IsScreenshotsHooked() @@ -137,9 +111,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate ScreenshotHandle FAddVRScreenshotToLibrary( IntPtr self, VRScreenshotType eType, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFilename, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVRFilename ); - private FAddVRScreenshotToLibrary _AddVRScreenshotToLibrary; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary", CallingConvention = Platform.CC)] + private static extern ScreenshotHandle _AddVRScreenshotToLibrary( IntPtr self, VRScreenshotType eType, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFilename, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVRFilename ); #endregion internal ScreenshotHandle AddVRScreenshotToLibrary( VRScreenshotType eType, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchFilename, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVRFilename ) diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs index 941eb34..eb1ec1b 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUGC.cs @@ -7,181 +7,25 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamUGC : SteamInterface + internal unsafe class ISteamUGC : SteamInterface { - public override string InterfaceName => "STEAMUGC_INTERFACE_VERSION012"; - public override void InitInternals() + internal ISteamUGC( bool IsGameServer ) { - _CreateQueryUserUGCRequest = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _CreateQueryUGCDetailsRequest = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _SendQueryUGCRequest = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _GetQueryUGCResult = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetQueryUGCPreviewURL = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _GetQueryUGCMetadata = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _GetQueryUGCChildren = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _GetQueryUGCStatistic = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetQueryUGCNumAdditionalPreviews = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GetQueryUGCAdditionalPreview = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _GetQueryUGCNumKeyValueTags = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _GetQueryUGCKeyValueTag = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _ReleaseQueryUGCRequest = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _AddRequiredTag = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _AddExcludedTag = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _SetReturnOnlyIDs = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _SetReturnKeyValueTags = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _SetReturnLongDescription = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _SetReturnMetadata = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _SetReturnChildren = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _SetReturnAdditionalPreviews = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _SetReturnTotalOnly = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _SetReturnPlaytimeStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _SetLanguage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _SetAllowCachedResponse = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _SetCloudFileNameFilter = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _SetMatchAnyTag = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _SetSearchText = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - _SetRankedByTrendDays = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 240 ) ) ); - _AddRequiredKeyValueTag = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 248 ) ) ); - _RequestUGCDetails = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 256 ) ) ); - _CreateItem = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 264 ) ) ); - _StartItemUpdate = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 272 ) ) ); - _SetItemTitle = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 280 ) ) ); - _SetItemDescription = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 288 ) ) ); - _SetItemUpdateLanguage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 296 ) ) ); - _SetItemMetadata = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 304 ) ) ); - _SetItemVisibility = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 312 ) ) ); - _SetItemTags = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 320 ) ) ); - _SetItemContent = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 328 ) ) ); - _SetItemPreview = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 336 ) ) ); - _SetAllowLegacyUpload = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 344 ) ) ); - _RemoveItemKeyValueTags = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 352 ) ) ); - _AddItemKeyValueTag = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 360 ) ) ); - _AddItemPreviewFile = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 368 ) ) ); - _AddItemPreviewVideo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 376 ) ) ); - _UpdateItemPreviewFile = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 384 ) ) ); - _UpdateItemPreviewVideo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 392 ) ) ); - _RemoveItemPreview = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 400 ) ) ); - _SubmitItemUpdate = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 408 ) ) ); - _GetItemUpdateProgress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 416 ) ) ); - _SetUserItemVote = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 424 ) ) ); - _GetUserItemVote = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 432 ) ) ); - _AddItemToFavorites = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 440 ) ) ); - _RemoveItemFromFavorites = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 448 ) ) ); - _SubscribeItem = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 456 ) ) ); - _UnsubscribeItem = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 464 ) ) ); - _GetNumSubscribedItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 472 ) ) ); - _GetSubscribedItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 480 ) ) ); - _GetItemState = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 488 ) ) ); - _GetItemInstallInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 496 ) ) ); - _GetItemDownloadInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 504 ) ) ); - _DownloadItem = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 512 ) ) ); - _BInitWorkshopForGameServer = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 520 ) ) ); - _SuspendDownloads = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 528 ) ) ); - _StartPlaytimeTracking = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 536 ) ) ); - _StopPlaytimeTracking = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 544 ) ) ); - _StopPlaytimeTrackingForAllItems = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 552 ) ) ); - _AddDependency = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 560 ) ) ); - _RemoveDependency = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 568 ) ) ); - _AddAppDependency = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 576 ) ) ); - _RemoveAppDependency = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 584 ) ) ); - _GetAppDependencies = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 592 ) ) ); - _DeleteItem = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 600 ) ) ); - - #if PLATFORM_WIN - _CreateQueryAllUGCRequest1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _CreateQueryAllUGCRequest2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - #else - _CreateQueryAllUGCRequest1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _CreateQueryAllUGCRequest2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - #endif - } - internal override void Shutdown() - { - base.Shutdown(); - - _CreateQueryUserUGCRequest = null; - _CreateQueryAllUGCRequest1 = null; - _CreateQueryAllUGCRequest2 = null; - _CreateQueryUGCDetailsRequest = null; - _SendQueryUGCRequest = null; - _GetQueryUGCResult = null; - _GetQueryUGCPreviewURL = null; - _GetQueryUGCMetadata = null; - _GetQueryUGCChildren = null; - _GetQueryUGCStatistic = null; - _GetQueryUGCNumAdditionalPreviews = null; - _GetQueryUGCAdditionalPreview = null; - _GetQueryUGCNumKeyValueTags = null; - _GetQueryUGCKeyValueTag = null; - _ReleaseQueryUGCRequest = null; - _AddRequiredTag = null; - _AddExcludedTag = null; - _SetReturnOnlyIDs = null; - _SetReturnKeyValueTags = null; - _SetReturnLongDescription = null; - _SetReturnMetadata = null; - _SetReturnChildren = null; - _SetReturnAdditionalPreviews = null; - _SetReturnTotalOnly = null; - _SetReturnPlaytimeStats = null; - _SetLanguage = null; - _SetAllowCachedResponse = null; - _SetCloudFileNameFilter = null; - _SetMatchAnyTag = null; - _SetSearchText = null; - _SetRankedByTrendDays = null; - _AddRequiredKeyValueTag = null; - _RequestUGCDetails = null; - _CreateItem = null; - _StartItemUpdate = null; - _SetItemTitle = null; - _SetItemDescription = null; - _SetItemUpdateLanguage = null; - _SetItemMetadata = null; - _SetItemVisibility = null; - _SetItemTags = null; - _SetItemContent = null; - _SetItemPreview = null; - _SetAllowLegacyUpload = null; - _RemoveItemKeyValueTags = null; - _AddItemKeyValueTag = null; - _AddItemPreviewFile = null; - _AddItemPreviewVideo = null; - _UpdateItemPreviewFile = null; - _UpdateItemPreviewVideo = null; - _RemoveItemPreview = null; - _SubmitItemUpdate = null; - _GetItemUpdateProgress = null; - _SetUserItemVote = null; - _GetUserItemVote = null; - _AddItemToFavorites = null; - _RemoveItemFromFavorites = null; - _SubscribeItem = null; - _UnsubscribeItem = null; - _GetNumSubscribedItems = null; - _GetSubscribedItems = null; - _GetItemState = null; - _GetItemInstallInfo = null; - _GetItemDownloadInfo = null; - _DownloadItem = null; - _BInitWorkshopForGameServer = null; - _SuspendDownloads = null; - _StartPlaytimeTracking = null; - _StopPlaytimeTracking = null; - _StopPlaytimeTrackingForAllItems = null; - _AddDependency = null; - _RemoveDependency = null; - _AddAppDependency = null; - _RemoveAppDependency = null; - _GetAppDependencies = null; - _DeleteItem = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamUGC_v016", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamUGC_v016(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamUGC_v016(); + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerUGC_v016", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerUGC_v016(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerUGC_v016(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UGCQueryHandle_t FCreateQueryUserUGCRequest( IntPtr self, AccountID_t unAccountID, UserUGCList eListType, UgcType eMatchingUGCType, UserUGCListSortOrder eSortOrder, AppId nCreatorAppID, AppId nConsumerAppID, uint unPage ); - private FCreateQueryUserUGCRequest _CreateQueryUserUGCRequest; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest", CallingConvention = Platform.CC)] + private static extern UGCQueryHandle_t _CreateQueryUserUGCRequest( IntPtr self, AccountID_t unAccountID, UserUGCList eListType, UgcType eMatchingUGCType, UserUGCListSortOrder eSortOrder, AppId nCreatorAppID, AppId nConsumerAppID, uint unPage ); #endregion internal UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, UserUGCList eListType, UgcType eMatchingUGCType, UserUGCListSortOrder eSortOrder, AppId nCreatorAppID, AppId nConsumerAppID, uint unPage ) @@ -191,33 +35,30 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UGCQueryHandle_t FCreateQueryAllUGCRequest1( IntPtr self, UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, uint unPage ); - private FCreateQueryAllUGCRequest1 _CreateQueryAllUGCRequest1; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage", CallingConvention = Platform.CC)] + private static extern UGCQueryHandle_t _CreateQueryAllUGCRequest( IntPtr self, UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, uint unPage ); #endregion - internal UGCQueryHandle_t CreateQueryAllUGCRequest1( UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, uint unPage ) + internal UGCQueryHandle_t CreateQueryAllUGCRequest( UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, uint unPage ) { - var returnValue = _CreateQueryAllUGCRequest1( Self, eQueryType, eMatchingeMatchingUGCTypeFileType, nCreatorAppID, nConsumerAppID, unPage ); + var returnValue = _CreateQueryAllUGCRequest( Self, eQueryType, eMatchingeMatchingUGCTypeFileType, nCreatorAppID, nConsumerAppID, unPage ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UGCQueryHandle_t FCreateQueryAllUGCRequest2( IntPtr self, UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchCursor ); - private FCreateQueryAllUGCRequest2 _CreateQueryAllUGCRequest2; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor", CallingConvention = Platform.CC)] + private static extern UGCQueryHandle_t _CreateQueryAllUGCRequest( IntPtr self, UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchCursor ); #endregion - internal UGCQueryHandle_t CreateQueryAllUGCRequest2( UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchCursor ) + internal UGCQueryHandle_t CreateQueryAllUGCRequest( UGCQuery eQueryType, UgcType eMatchingeMatchingUGCTypeFileType, AppId nCreatorAppID, AppId nConsumerAppID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchCursor ) { - var returnValue = _CreateQueryAllUGCRequest2( Self, eQueryType, eMatchingeMatchingUGCTypeFileType, nCreatorAppID, nConsumerAppID, pchCursor ); + var returnValue = _CreateQueryAllUGCRequest( Self, eQueryType, eMatchingeMatchingUGCTypeFileType, nCreatorAppID, nConsumerAppID, pchCursor ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UGCQueryHandle_t FCreateQueryUGCDetailsRequest( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ); - private FCreateQueryUGCDetailsRequest _CreateQueryUGCDetailsRequest; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest", CallingConvention = Platform.CC)] + private static extern UGCQueryHandle_t _CreateQueryUGCDetailsRequest( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ); #endregion internal UGCQueryHandle_t CreateQueryUGCDetailsRequest( [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ) @@ -227,22 +68,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FSendQueryUGCRequest( IntPtr self, UGCQueryHandle_t handle ); - private FSendQueryUGCRequest _SendQueryUGCRequest; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SendQueryUGCRequest", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _SendQueryUGCRequest( IntPtr self, UGCQueryHandle_t handle ); #endregion - internal async Task SendQueryUGCRequest( UGCQueryHandle_t handle ) + internal CallResult SendQueryUGCRequest( UGCQueryHandle_t handle ) { var returnValue = _SendQueryUGCRequest( Self, handle ); - return await SteamUGCQueryCompleted_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCResult", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQueryUGCResult( IntPtr self, UGCQueryHandle_t handle, uint index, ref SteamUGCDetails_t pDetails ); - private FGetQueryUGCResult _GetQueryUGCResult; + private static extern bool _GetQueryUGCResult( IntPtr self, UGCQueryHandle_t handle, uint index, ref SteamUGCDetails_t pDetails ); #endregion internal bool GetQueryUGCResult( UGCQueryHandle_t handle, uint index, ref SteamUGCDetails_t pDetails ) @@ -252,40 +91,76 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumTags", CallingConvention = Platform.CC)] + private static extern uint _GetQueryUGCNumTags( IntPtr self, UGCQueryHandle_t handle, uint index ); + + #endregion + internal uint GetQueryUGCNumTags( UGCQueryHandle_t handle, uint index ) + { + var returnValue = _GetQueryUGCNumTags( Self, handle, index ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCTag", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQueryUGCPreviewURL( IntPtr self, UGCQueryHandle_t handle, uint index, IntPtr pchURL, uint cchURLSize ); - private FGetQueryUGCPreviewURL _GetQueryUGCPreviewURL; + private static extern bool _GetQueryUGCTag( IntPtr self, UGCQueryHandle_t handle, uint index, uint indexTag, IntPtr pchValue, uint cchValueSize ); + + #endregion + internal bool GetQueryUGCTag( UGCQueryHandle_t handle, uint index, uint indexTag, out string pchValue ) + { + using var mempchValue = Helpers.TakeMemory(); + var returnValue = _GetQueryUGCTag( Self, handle, index, indexTag, mempchValue, (1024 * 32) ); + pchValue = Helpers.MemoryToString( mempchValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetQueryUGCTagDisplayName( IntPtr self, UGCQueryHandle_t handle, uint index, uint indexTag, IntPtr pchValue, uint cchValueSize ); + + #endregion + internal bool GetQueryUGCTagDisplayName( UGCQueryHandle_t handle, uint index, uint indexTag, out string pchValue ) + { + using var mempchValue = Helpers.TakeMemory(); + var returnValue = _GetQueryUGCTagDisplayName( Self, handle, index, indexTag, mempchValue, (1024 * 32) ); + pchValue = Helpers.MemoryToString( mempchValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetQueryUGCPreviewURL( IntPtr self, UGCQueryHandle_t handle, uint index, IntPtr pchURL, uint cchURLSize ); #endregion internal bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint index, out string pchURL ) { - IntPtr mempchURL = Helpers.TakeMemory(); + using var mempchURL = Helpers.TakeMemory(); var returnValue = _GetQueryUGCPreviewURL( Self, handle, index, mempchURL, (1024 * 32) ); pchURL = Helpers.MemoryToString( mempchURL ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCMetadata", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQueryUGCMetadata( IntPtr self, UGCQueryHandle_t handle, uint index, IntPtr pchMetadata, uint cchMetadatasize ); - private FGetQueryUGCMetadata _GetQueryUGCMetadata; + private static extern bool _GetQueryUGCMetadata( IntPtr self, UGCQueryHandle_t handle, uint index, IntPtr pchMetadata, uint cchMetadatasize ); #endregion internal bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint index, out string pchMetadata ) { - IntPtr mempchMetadata = Helpers.TakeMemory(); + using var mempchMetadata = Helpers.TakeMemory(); var returnValue = _GetQueryUGCMetadata( Self, handle, index, mempchMetadata, (1024 * 32) ); pchMetadata = Helpers.MemoryToString( mempchMetadata ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCChildren", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQueryUGCChildren( IntPtr self, UGCQueryHandle_t handle, uint index, [In,Out] PublishedFileId[] pvecPublishedFileID, uint cMaxEntries ); - private FGetQueryUGCChildren _GetQueryUGCChildren; + private static extern bool _GetQueryUGCChildren( IntPtr self, UGCQueryHandle_t handle, uint index, [In,Out] PublishedFileId[] pvecPublishedFileID, uint cMaxEntries ); #endregion internal bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint index, [In,Out] PublishedFileId[] pvecPublishedFileID, uint cMaxEntries ) @@ -295,10 +170,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCStatistic", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQueryUGCStatistic( IntPtr self, UGCQueryHandle_t handle, uint index, ItemStatistic eStatType, ref ulong pStatValue ); - private FGetQueryUGCStatistic _GetQueryUGCStatistic; + private static extern bool _GetQueryUGCStatistic( IntPtr self, UGCQueryHandle_t handle, uint index, ItemStatistic eStatType, ref ulong pStatValue ); #endregion internal bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint index, ItemStatistic eStatType, ref ulong pStatValue ) @@ -308,9 +182,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetQueryUGCNumAdditionalPreviews( IntPtr self, UGCQueryHandle_t handle, uint index ); - private FGetQueryUGCNumAdditionalPreviews _GetQueryUGCNumAdditionalPreviews; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews", CallingConvention = Platform.CC)] + private static extern uint _GetQueryUGCNumAdditionalPreviews( IntPtr self, UGCQueryHandle_t handle, uint index ); #endregion internal uint GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint index ) @@ -320,16 +193,15 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQueryUGCAdditionalPreview( IntPtr self, UGCQueryHandle_t handle, uint index, uint previewIndex, IntPtr pchURLOrVideoID, uint cchURLSize, IntPtr pchOriginalFileName, uint cchOriginalFileNameSize, ref ItemPreviewType pPreviewType ); - private FGetQueryUGCAdditionalPreview _GetQueryUGCAdditionalPreview; + private static extern bool _GetQueryUGCAdditionalPreview( IntPtr self, UGCQueryHandle_t handle, uint index, uint previewIndex, IntPtr pchURLOrVideoID, uint cchURLSize, IntPtr pchOriginalFileName, uint cchOriginalFileNameSize, ref ItemPreviewType pPreviewType ); #endregion internal bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint index, uint previewIndex, out string pchURLOrVideoID, out string pchOriginalFileName, ref ItemPreviewType pPreviewType ) { - IntPtr mempchURLOrVideoID = Helpers.TakeMemory(); - IntPtr mempchOriginalFileName = Helpers.TakeMemory(); + using var mempchURLOrVideoID = Helpers.TakeMemory(); + using var mempchOriginalFileName = Helpers.TakeMemory(); var returnValue = _GetQueryUGCAdditionalPreview( Self, handle, index, previewIndex, mempchURLOrVideoID, (1024 * 32), mempchOriginalFileName, (1024 * 32), ref pPreviewType ); pchURLOrVideoID = Helpers.MemoryToString( mempchURLOrVideoID ); pchOriginalFileName = Helpers.MemoryToString( mempchOriginalFileName ); @@ -337,9 +209,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetQueryUGCNumKeyValueTags( IntPtr self, UGCQueryHandle_t handle, uint index ); - private FGetQueryUGCNumKeyValueTags _GetQueryUGCNumKeyValueTags; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags", CallingConvention = Platform.CC)] + private static extern uint _GetQueryUGCNumKeyValueTags( IntPtr self, UGCQueryHandle_t handle, uint index ); #endregion internal uint GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint index ) @@ -349,16 +220,15 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetQueryUGCKeyValueTag( IntPtr self, UGCQueryHandle_t handle, uint index, uint keyValueTagIndex, IntPtr pchKey, uint cchKeySize, IntPtr pchValue, uint cchValueSize ); - private FGetQueryUGCKeyValueTag _GetQueryUGCKeyValueTag; + private static extern bool _GetQueryUGCKeyValueTag( IntPtr self, UGCQueryHandle_t handle, uint index, uint keyValueTagIndex, IntPtr pchKey, uint cchKeySize, IntPtr pchValue, uint cchValueSize ); #endregion internal bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint index, uint keyValueTagIndex, out string pchKey, out string pchValue ) { - IntPtr mempchKey = Helpers.TakeMemory(); - IntPtr mempchValue = Helpers.TakeMemory(); + using var mempchKey = Helpers.TakeMemory(); + using var mempchValue = Helpers.TakeMemory(); var returnValue = _GetQueryUGCKeyValueTag( Self, handle, index, keyValueTagIndex, mempchKey, (1024 * 32), mempchValue, (1024 * 32) ); pchKey = Helpers.MemoryToString( mempchKey ); pchValue = Helpers.MemoryToString( mempchValue ); @@ -366,10 +236,23 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FReleaseQueryUGCRequest( IntPtr self, UGCQueryHandle_t handle ); - private FReleaseQueryUGCRequest _ReleaseQueryUGCRequest; + private static extern bool _GetQueryUGCKeyValueTag( IntPtr self, UGCQueryHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, IntPtr pchValue, uint cchValueSize ); + + #endregion + internal bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, out string pchValue ) + { + using var mempchValue = Helpers.TakeMemory(); + var returnValue = _GetQueryUGCKeyValueTag( Self, handle, index, pchKey, mempchValue, (1024 * 32) ); + pchValue = Helpers.MemoryToString( mempchValue ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ReleaseQueryUGCRequest( IntPtr self, UGCQueryHandle_t handle ); #endregion internal bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) @@ -379,10 +262,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddRequiredTag", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddRequiredTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pTagName ); - private FAddRequiredTag _AddRequiredTag; + private static extern bool _AddRequiredTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pTagName ); #endregion internal bool AddRequiredTag( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pTagName ) @@ -392,10 +274,21 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddRequiredTagGroup", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddExcludedTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pTagName ); - private FAddExcludedTag _AddExcludedTag; + private static extern bool _AddRequiredTagGroup( IntPtr self, UGCQueryHandle_t handle, ref SteamParamStringArray_t pTagGroups ); + + #endregion + internal bool AddRequiredTagGroup( UGCQueryHandle_t handle, ref SteamParamStringArray_t pTagGroups ) + { + var returnValue = _AddRequiredTagGroup( Self, handle, ref pTagGroups ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddExcludedTag", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _AddExcludedTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pTagName ); #endregion internal bool AddExcludedTag( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pTagName ) @@ -405,10 +298,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnOnlyIDs", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnOnlyIDs( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnOnlyIDs ); - private FSetReturnOnlyIDs _SetReturnOnlyIDs; + private static extern bool _SetReturnOnlyIDs( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnOnlyIDs ); #endregion internal bool SetReturnOnlyIDs( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnOnlyIDs ) @@ -418,10 +310,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnKeyValueTags", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnKeyValueTags( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnKeyValueTags ); - private FSetReturnKeyValueTags _SetReturnKeyValueTags; + private static extern bool _SetReturnKeyValueTags( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnKeyValueTags ); #endregion internal bool SetReturnKeyValueTags( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnKeyValueTags ) @@ -431,10 +322,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnLongDescription", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnLongDescription( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnLongDescription ); - private FSetReturnLongDescription _SetReturnLongDescription; + private static extern bool _SetReturnLongDescription( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnLongDescription ); #endregion internal bool SetReturnLongDescription( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnLongDescription ) @@ -444,10 +334,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnMetadata", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnMetadata( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnMetadata ); - private FSetReturnMetadata _SetReturnMetadata; + private static extern bool _SetReturnMetadata( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnMetadata ); #endregion internal bool SetReturnMetadata( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnMetadata ) @@ -457,10 +346,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnChildren", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnChildren( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnChildren ); - private FSetReturnChildren _SetReturnChildren; + private static extern bool _SetReturnChildren( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnChildren ); #endregion internal bool SetReturnChildren( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnChildren ) @@ -470,10 +358,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnAdditionalPreviews( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnAdditionalPreviews ); - private FSetReturnAdditionalPreviews _SetReturnAdditionalPreviews; + private static extern bool _SetReturnAdditionalPreviews( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnAdditionalPreviews ); #endregion internal bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnAdditionalPreviews ) @@ -483,10 +370,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnTotalOnly", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnTotalOnly( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnTotalOnly ); - private FSetReturnTotalOnly _SetReturnTotalOnly; + private static extern bool _SetReturnTotalOnly( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnTotalOnly ); #endregion internal bool SetReturnTotalOnly( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bReturnTotalOnly ) @@ -496,10 +382,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetReturnPlaytimeStats", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetReturnPlaytimeStats( IntPtr self, UGCQueryHandle_t handle, uint unDays ); - private FSetReturnPlaytimeStats _SetReturnPlaytimeStats; + private static extern bool _SetReturnPlaytimeStats( IntPtr self, UGCQueryHandle_t handle, uint unDays ); #endregion internal bool SetReturnPlaytimeStats( UGCQueryHandle_t handle, uint unDays ) @@ -509,10 +394,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetLanguage", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetLanguage( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLanguage ); - private FSetLanguage _SetLanguage; + private static extern bool _SetLanguage( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLanguage ); #endregion internal bool SetLanguage( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLanguage ) @@ -522,10 +406,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetAllowCachedResponse", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetAllowCachedResponse( IntPtr self, UGCQueryHandle_t handle, uint unMaxAgeSeconds ); - private FSetAllowCachedResponse _SetAllowCachedResponse; + private static extern bool _SetAllowCachedResponse( IntPtr self, UGCQueryHandle_t handle, uint unMaxAgeSeconds ); #endregion internal bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint unMaxAgeSeconds ) @@ -535,10 +418,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetCloudFileNameFilter", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetCloudFileNameFilter( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pMatchCloudFileName ); - private FSetCloudFileNameFilter _SetCloudFileNameFilter; + private static extern bool _SetCloudFileNameFilter( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pMatchCloudFileName ); #endregion internal bool SetCloudFileNameFilter( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pMatchCloudFileName ) @@ -548,10 +430,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetMatchAnyTag", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetMatchAnyTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bMatchAnyTag ); - private FSetMatchAnyTag _SetMatchAnyTag; + private static extern bool _SetMatchAnyTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bMatchAnyTag ); #endregion internal bool SetMatchAnyTag( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bMatchAnyTag ) @@ -561,10 +442,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetSearchText", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetSearchText( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pSearchText ); - private FSetSearchText _SetSearchText; + private static extern bool _SetSearchText( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pSearchText ); #endregion internal bool SetSearchText( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pSearchText ) @@ -574,10 +454,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetRankedByTrendDays", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetRankedByTrendDays( IntPtr self, UGCQueryHandle_t handle, uint unDays ); - private FSetRankedByTrendDays _SetRankedByTrendDays; + private static extern bool _SetRankedByTrendDays( IntPtr self, UGCQueryHandle_t handle, uint unDays ); #endregion internal bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint unDays ) @@ -587,10 +466,33 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetTimeCreatedDateRange", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddRequiredKeyValueTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pValue ); - private FAddRequiredKeyValueTag _AddRequiredKeyValueTag; + private static extern bool _SetTimeCreatedDateRange( IntPtr self, UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); + + #endregion + internal bool SetTimeCreatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) + { + var returnValue = _SetTimeCreatedDateRange( Self, handle, rtStart, rtEnd ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetTimeUpdatedDateRange", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _SetTimeUpdatedDateRange( IntPtr self, UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); + + #endregion + internal bool SetTimeUpdatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) + { + var returnValue = _SetTimeUpdatedDateRange( Self, handle, rtStart, rtEnd ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddRequiredKeyValueTag", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _AddRequiredKeyValueTag( IntPtr self, UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pValue ); #endregion internal bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pValue ) @@ -600,33 +502,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestUGCDetails( IntPtr self, PublishedFileId nPublishedFileID, uint unMaxAgeSeconds ); - private FRequestUGCDetails _RequestUGCDetails; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_CreateItem", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _CreateItem( IntPtr self, AppId nConsumerAppId, WorkshopFileType eFileType ); #endregion - internal async Task RequestUGCDetails( PublishedFileId nPublishedFileID, uint unMaxAgeSeconds ) - { - var returnValue = _RequestUGCDetails( Self, nPublishedFileID, unMaxAgeSeconds ); - return await SteamUGCRequestUGCDetailsResult_t.GetResultAsync( returnValue ); - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FCreateItem( IntPtr self, AppId nConsumerAppId, WorkshopFileType eFileType ); - private FCreateItem _CreateItem; - - #endregion - internal async Task CreateItem( AppId nConsumerAppId, WorkshopFileType eFileType ) + internal CallResult CreateItem( AppId nConsumerAppId, WorkshopFileType eFileType ) { var returnValue = _CreateItem( Self, nConsumerAppId, eFileType ); - return await CreateItemResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UGCUpdateHandle_t FStartItemUpdate( IntPtr self, AppId nConsumerAppId, PublishedFileId nPublishedFileID ); - private FStartItemUpdate _StartItemUpdate; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_StartItemUpdate", CallingConvention = Platform.CC)] + private static extern UGCUpdateHandle_t _StartItemUpdate( IntPtr self, AppId nConsumerAppId, PublishedFileId nPublishedFileID ); #endregion internal UGCUpdateHandle_t StartItemUpdate( AppId nConsumerAppId, PublishedFileId nPublishedFileID ) @@ -636,10 +524,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemTitle", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemTitle( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchTitle ); - private FSetItemTitle _SetItemTitle; + private static extern bool _SetItemTitle( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchTitle ); #endregion internal bool SetItemTitle( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchTitle ) @@ -649,10 +536,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemDescription", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemDescription( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDescription ); - private FSetItemDescription _SetItemDescription; + private static extern bool _SetItemDescription( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDescription ); #endregion internal bool SetItemDescription( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDescription ) @@ -662,10 +548,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemUpdateLanguage", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemUpdateLanguage( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLanguage ); - private FSetItemUpdateLanguage _SetItemUpdateLanguage; + private static extern bool _SetItemUpdateLanguage( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLanguage ); #endregion internal bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLanguage ) @@ -675,10 +560,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemMetadata", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemMetadata( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMetaData ); - private FSetItemMetadata _SetItemMetadata; + private static extern bool _SetItemMetadata( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMetaData ); #endregion internal bool SetItemMetadata( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchMetaData ) @@ -688,10 +572,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemVisibility", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemVisibility( IntPtr self, UGCUpdateHandle_t handle, RemoteStoragePublishedFileVisibility eVisibility ); - private FSetItemVisibility _SetItemVisibility; + private static extern bool _SetItemVisibility( IntPtr self, UGCUpdateHandle_t handle, RemoteStoragePublishedFileVisibility eVisibility ); #endregion internal bool SetItemVisibility( UGCUpdateHandle_t handle, RemoteStoragePublishedFileVisibility eVisibility ) @@ -701,10 +584,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemTags", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemTags( IntPtr self, UGCUpdateHandle_t updateHandle, ref SteamParamStringArray_t pTags ); - private FSetItemTags _SetItemTags; + private static extern bool _SetItemTags( IntPtr self, UGCUpdateHandle_t updateHandle, ref SteamParamStringArray_t pTags ); #endregion internal bool SetItemTags( UGCUpdateHandle_t updateHandle, ref SteamParamStringArray_t pTags ) @@ -714,10 +596,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemContent", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemContent( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszContentFolder ); - private FSetItemContent _SetItemContent; + private static extern bool _SetItemContent( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszContentFolder ); #endregion internal bool SetItemContent( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszContentFolder ) @@ -727,10 +608,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetItemPreview", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetItemPreview( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile ); - private FSetItemPreview _SetItemPreview; + private static extern bool _SetItemPreview( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile ); #endregion internal bool SetItemPreview( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile ) @@ -740,10 +620,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetAllowLegacyUpload", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetAllowLegacyUpload( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bAllowLegacyUpload ); - private FSetAllowLegacyUpload _SetAllowLegacyUpload; + private static extern bool _SetAllowLegacyUpload( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bAllowLegacyUpload ); #endregion internal bool SetAllowLegacyUpload( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.U1 )] bool bAllowLegacyUpload ) @@ -753,10 +632,21 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRemoveItemKeyValueTags( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); - private FRemoveItemKeyValueTags _RemoveItemKeyValueTags; + private static extern bool _RemoveAllItemKeyValueTags( IntPtr self, UGCUpdateHandle_t handle ); + + #endregion + internal bool RemoveAllItemKeyValueTags( UGCUpdateHandle_t handle ) + { + var returnValue = _RemoveAllItemKeyValueTags( Self, handle ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_RemoveItemKeyValueTags", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _RemoveItemKeyValueTags( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); #endregion internal bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ) @@ -766,10 +656,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddItemKeyValueTag", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddItemKeyValueTag( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); - private FAddItemKeyValueTag _AddItemKeyValueTag; + private static extern bool _AddItemKeyValueTag( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ); #endregion internal bool AddItemKeyValueTag( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchValue ) @@ -779,10 +668,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewFile", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddItemPreviewFile( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile, ItemPreviewType type ); - private FAddItemPreviewFile _AddItemPreviewFile; + private static extern bool _AddItemPreviewFile( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile, ItemPreviewType type ); #endregion internal bool AddItemPreviewFile( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile, ItemPreviewType type ) @@ -792,10 +680,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewVideo", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FAddItemPreviewVideo( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszVideoID ); - private FAddItemPreviewVideo _AddItemPreviewVideo; + private static extern bool _AddItemPreviewVideo( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszVideoID ); #endregion internal bool AddItemPreviewVideo( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszVideoID ) @@ -805,10 +692,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewFile", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FUpdateItemPreviewFile( IntPtr self, UGCUpdateHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile ); - private FUpdateItemPreviewFile _UpdateItemPreviewFile; + private static extern bool _UpdateItemPreviewFile( IntPtr self, UGCUpdateHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile ); #endregion internal bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszPreviewFile ) @@ -818,10 +704,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewVideo", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FUpdateItemPreviewVideo( IntPtr self, UGCUpdateHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszVideoID ); - private FUpdateItemPreviewVideo _UpdateItemPreviewVideo; + private static extern bool _UpdateItemPreviewVideo( IntPtr self, UGCUpdateHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszVideoID ); #endregion internal bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint index, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszVideoID ) @@ -831,10 +716,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_RemoveItemPreview", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRemoveItemPreview( IntPtr self, UGCUpdateHandle_t handle, uint index ); - private FRemoveItemPreview _RemoveItemPreview; + private static extern bool _RemoveItemPreview( IntPtr self, UGCUpdateHandle_t handle, uint index ); #endregion internal bool RemoveItemPreview( UGCUpdateHandle_t handle, uint index ) @@ -844,21 +728,19 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FSubmitItemUpdate( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchChangeNote ); - private FSubmitItemUpdate _SubmitItemUpdate; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _SubmitItemUpdate( IntPtr self, UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchChangeNote ); #endregion - internal async Task SubmitItemUpdate( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchChangeNote ) + internal CallResult SubmitItemUpdate( UGCUpdateHandle_t handle, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchChangeNote ) { var returnValue = _SubmitItemUpdate( Self, handle, pchChangeNote ); - return await SubmitItemUpdateResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate ItemUpdateStatus FGetItemUpdateProgress( IntPtr self, UGCUpdateHandle_t handle, ref ulong punBytesProcessed, ref ulong punBytesTotal ); - private FGetItemUpdateProgress _GetItemUpdateProgress; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetItemUpdateProgress", CallingConvention = Platform.CC)] + private static extern ItemUpdateStatus _GetItemUpdateProgress( IntPtr self, UGCUpdateHandle_t handle, ref ulong punBytesProcessed, ref ulong punBytesTotal ); #endregion internal ItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, ref ulong punBytesProcessed, ref ulong punBytesTotal ) @@ -868,81 +750,74 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FSetUserItemVote( IntPtr self, PublishedFileId nPublishedFileID, [MarshalAs( UnmanagedType.U1 )] bool bVoteUp ); - private FSetUserItemVote _SetUserItemVote; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetUserItemVote", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _SetUserItemVote( IntPtr self, PublishedFileId nPublishedFileID, [MarshalAs( UnmanagedType.U1 )] bool bVoteUp ); #endregion - internal async Task SetUserItemVote( PublishedFileId nPublishedFileID, [MarshalAs( UnmanagedType.U1 )] bool bVoteUp ) + internal CallResult SetUserItemVote( PublishedFileId nPublishedFileID, [MarshalAs( UnmanagedType.U1 )] bool bVoteUp ) { var returnValue = _SetUserItemVote( Self, nPublishedFileID, bVoteUp ); - return await SetUserItemVoteResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FGetUserItemVote( IntPtr self, PublishedFileId nPublishedFileID ); - private FGetUserItemVote _GetUserItemVote; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetUserItemVote", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetUserItemVote( IntPtr self, PublishedFileId nPublishedFileID ); #endregion - internal async Task GetUserItemVote( PublishedFileId nPublishedFileID ) + internal CallResult GetUserItemVote( PublishedFileId nPublishedFileID ) { var returnValue = _GetUserItemVote( Self, nPublishedFileID ); - return await GetUserItemVoteResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FAddItemToFavorites( IntPtr self, AppId nAppId, PublishedFileId nPublishedFileID ); - private FAddItemToFavorites _AddItemToFavorites; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddItemToFavorites", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _AddItemToFavorites( IntPtr self, AppId nAppId, PublishedFileId nPublishedFileID ); #endregion - internal async Task AddItemToFavorites( AppId nAppId, PublishedFileId nPublishedFileID ) + internal CallResult AddItemToFavorites( AppId nAppId, PublishedFileId nPublishedFileID ) { var returnValue = _AddItemToFavorites( Self, nAppId, nPublishedFileID ); - return await UserFavoriteItemsListChanged_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRemoveItemFromFavorites( IntPtr self, AppId nAppId, PublishedFileId nPublishedFileID ); - private FRemoveItemFromFavorites _RemoveItemFromFavorites; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_RemoveItemFromFavorites", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RemoveItemFromFavorites( IntPtr self, AppId nAppId, PublishedFileId nPublishedFileID ); #endregion - internal async Task RemoveItemFromFavorites( AppId nAppId, PublishedFileId nPublishedFileID ) + internal CallResult RemoveItemFromFavorites( AppId nAppId, PublishedFileId nPublishedFileID ) { var returnValue = _RemoveItemFromFavorites( Self, nAppId, nPublishedFileID ); - return await UserFavoriteItemsListChanged_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FSubscribeItem( IntPtr self, PublishedFileId nPublishedFileID ); - private FSubscribeItem _SubscribeItem; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SubscribeItem", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _SubscribeItem( IntPtr self, PublishedFileId nPublishedFileID ); #endregion - internal async Task SubscribeItem( PublishedFileId nPublishedFileID ) + internal CallResult SubscribeItem( PublishedFileId nPublishedFileID ) { var returnValue = _SubscribeItem( Self, nPublishedFileID ); - return await RemoteStorageSubscribePublishedFileResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FUnsubscribeItem( IntPtr self, PublishedFileId nPublishedFileID ); - private FUnsubscribeItem _UnsubscribeItem; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_UnsubscribeItem", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _UnsubscribeItem( IntPtr self, PublishedFileId nPublishedFileID ); #endregion - internal async Task UnsubscribeItem( PublishedFileId nPublishedFileID ) + internal CallResult UnsubscribeItem( PublishedFileId nPublishedFileID ) { var returnValue = _UnsubscribeItem( Self, nPublishedFileID ); - return await RemoteStorageUnsubscribePublishedFileResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetNumSubscribedItems( IntPtr self ); - private FGetNumSubscribedItems _GetNumSubscribedItems; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetNumSubscribedItems", CallingConvention = Platform.CC)] + private static extern uint _GetNumSubscribedItems( IntPtr self ); #endregion internal uint GetNumSubscribedItems() @@ -952,9 +827,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetSubscribedItems( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint cMaxEntries ); - private FGetSubscribedItems _GetSubscribedItems; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetSubscribedItems", CallingConvention = Platform.CC)] + private static extern uint _GetSubscribedItems( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint cMaxEntries ); #endregion internal uint GetSubscribedItems( [In,Out] PublishedFileId[] pvecPublishedFileID, uint cMaxEntries ) @@ -964,9 +838,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetItemState( IntPtr self, PublishedFileId nPublishedFileID ); - private FGetItemState _GetItemState; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetItemState", CallingConvention = Platform.CC)] + private static extern uint _GetItemState( IntPtr self, PublishedFileId nPublishedFileID ); #endregion internal uint GetItemState( PublishedFileId nPublishedFileID ) @@ -976,25 +849,23 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetItemInstallInfo", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetItemInstallInfo( IntPtr self, PublishedFileId nPublishedFileID, ref ulong punSizeOnDisk, IntPtr pchFolder, uint cchFolderSize, ref uint punTimeStamp ); - private FGetItemInstallInfo _GetItemInstallInfo; + private static extern bool _GetItemInstallInfo( IntPtr self, PublishedFileId nPublishedFileID, ref ulong punSizeOnDisk, IntPtr pchFolder, uint cchFolderSize, ref uint punTimeStamp ); #endregion internal bool GetItemInstallInfo( PublishedFileId nPublishedFileID, ref ulong punSizeOnDisk, out string pchFolder, ref uint punTimeStamp ) { - IntPtr mempchFolder = Helpers.TakeMemory(); + using var mempchFolder = Helpers.TakeMemory(); var returnValue = _GetItemInstallInfo( Self, nPublishedFileID, ref punSizeOnDisk, mempchFolder, (1024 * 32), ref punTimeStamp ); pchFolder = Helpers.MemoryToString( mempchFolder ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetItemDownloadInfo", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetItemDownloadInfo( IntPtr self, PublishedFileId nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal ); - private FGetItemDownloadInfo _GetItemDownloadInfo; + private static extern bool _GetItemDownloadInfo( IntPtr self, PublishedFileId nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal ); #endregion internal bool GetItemDownloadInfo( PublishedFileId nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal ) @@ -1004,10 +875,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_DownloadItem", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FDownloadItem( IntPtr self, PublishedFileId nPublishedFileID, [MarshalAs( UnmanagedType.U1 )] bool bHighPriority ); - private FDownloadItem _DownloadItem; + private static extern bool _DownloadItem( IntPtr self, PublishedFileId nPublishedFileID, [MarshalAs( UnmanagedType.U1 )] bool bHighPriority ); #endregion internal bool DownloadItem( PublishedFileId nPublishedFileID, [MarshalAs( UnmanagedType.U1 )] bool bHighPriority ) @@ -1017,10 +887,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_BInitWorkshopForGameServer", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBInitWorkshopForGameServer( IntPtr self, DepotId_t unWorkshopDepotID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszFolder ); - private FBInitWorkshopForGameServer _BInitWorkshopForGameServer; + private static extern bool _BInitWorkshopForGameServer( IntPtr self, DepotId_t unWorkshopDepotID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszFolder ); #endregion internal bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszFolder ) @@ -1030,9 +899,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSuspendDownloads( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bSuspend ); - private FSuspendDownloads _SuspendDownloads; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_SuspendDownloads", CallingConvention = Platform.CC)] + private static extern void _SuspendDownloads( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bSuspend ); #endregion internal void SuspendDownloads( [MarshalAs( UnmanagedType.U1 )] bool bSuspend ) @@ -1041,111 +909,125 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FStartPlaytimeTracking( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ); - private FStartPlaytimeTracking _StartPlaytimeTracking; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_StartPlaytimeTracking", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _StartPlaytimeTracking( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ); #endregion - internal async Task StartPlaytimeTracking( [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ) + internal CallResult StartPlaytimeTracking( [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ) { var returnValue = _StartPlaytimeTracking( Self, pvecPublishedFileID, unNumPublishedFileIDs ); - return await StartPlaytimeTrackingResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FStopPlaytimeTracking( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ); - private FStopPlaytimeTracking _StopPlaytimeTracking; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTracking", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _StopPlaytimeTracking( IntPtr self, [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ); #endregion - internal async Task StopPlaytimeTracking( [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ) + internal CallResult StopPlaytimeTracking( [In,Out] PublishedFileId[] pvecPublishedFileID, uint unNumPublishedFileIDs ) { var returnValue = _StopPlaytimeTracking( Self, pvecPublishedFileID, unNumPublishedFileIDs ); - return await StopPlaytimeTrackingResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FStopPlaytimeTrackingForAllItems( IntPtr self ); - private FStopPlaytimeTrackingForAllItems _StopPlaytimeTrackingForAllItems; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _StopPlaytimeTrackingForAllItems( IntPtr self ); #endregion - internal async Task StopPlaytimeTrackingForAllItems() + internal CallResult StopPlaytimeTrackingForAllItems() { var returnValue = _StopPlaytimeTrackingForAllItems( Self ); - return await StopPlaytimeTrackingResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FAddDependency( IntPtr self, PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ); - private FAddDependency _AddDependency; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddDependency", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _AddDependency( IntPtr self, PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ); #endregion - internal async Task AddDependency( PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ) + internal CallResult AddDependency( PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ) { var returnValue = _AddDependency( Self, nParentPublishedFileID, nChildPublishedFileID ); - return await AddUGCDependencyResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRemoveDependency( IntPtr self, PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ); - private FRemoveDependency _RemoveDependency; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_RemoveDependency", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RemoveDependency( IntPtr self, PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ); #endregion - internal async Task RemoveDependency( PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ) + internal CallResult RemoveDependency( PublishedFileId nParentPublishedFileID, PublishedFileId nChildPublishedFileID ) { var returnValue = _RemoveDependency( Self, nParentPublishedFileID, nChildPublishedFileID ); - return await RemoveUGCDependencyResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FAddAppDependency( IntPtr self, PublishedFileId nPublishedFileID, AppId nAppID ); - private FAddAppDependency _AddAppDependency; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddAppDependency", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _AddAppDependency( IntPtr self, PublishedFileId nPublishedFileID, AppId nAppID ); #endregion - internal async Task AddAppDependency( PublishedFileId nPublishedFileID, AppId nAppID ) + internal CallResult AddAppDependency( PublishedFileId nPublishedFileID, AppId nAppID ) { var returnValue = _AddAppDependency( Self, nPublishedFileID, nAppID ); - return await AddAppDependencyResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRemoveAppDependency( IntPtr self, PublishedFileId nPublishedFileID, AppId nAppID ); - private FRemoveAppDependency _RemoveAppDependency; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_RemoveAppDependency", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RemoveAppDependency( IntPtr self, PublishedFileId nPublishedFileID, AppId nAppID ); #endregion - internal async Task RemoveAppDependency( PublishedFileId nPublishedFileID, AppId nAppID ) + internal CallResult RemoveAppDependency( PublishedFileId nPublishedFileID, AppId nAppID ) { var returnValue = _RemoveAppDependency( Self, nPublishedFileID, nAppID ); - return await RemoveAppDependencyResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FGetAppDependencies( IntPtr self, PublishedFileId nPublishedFileID ); - private FGetAppDependencies _GetAppDependencies; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetAppDependencies", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetAppDependencies( IntPtr self, PublishedFileId nPublishedFileID ); #endregion - internal async Task GetAppDependencies( PublishedFileId nPublishedFileID ) + internal CallResult GetAppDependencies( PublishedFileId nPublishedFileID ) { var returnValue = _GetAppDependencies( Self, nPublishedFileID ); - return await GetAppDependenciesResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FDeleteItem( IntPtr self, PublishedFileId nPublishedFileID ); - private FDeleteItem _DeleteItem; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_DeleteItem", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _DeleteItem( IntPtr self, PublishedFileId nPublishedFileID ); #endregion - internal async Task DeleteItem( PublishedFileId nPublishedFileID ) + internal CallResult DeleteItem( PublishedFileId nPublishedFileID ) { var returnValue = _DeleteItem( Self, nPublishedFileID ); - return await DeleteItemResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_ShowWorkshopEULA", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ShowWorkshopEULA( IntPtr self ); + + #endregion + internal bool ShowWorkshopEULA() + { + var returnValue = _ShowWorkshopEULA( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetWorkshopEULAStatus", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetWorkshopEULAStatus( IntPtr self ); + + #endregion + internal CallResult GetWorkshopEULAStatus() + { + var returnValue = _GetWorkshopEULAStatus( Self ); + return new CallResult( returnValue, IsServer ); } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs index b44bd13..9a54dab 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUser.cs @@ -7,83 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamUser : SteamInterface + internal unsafe class ISteamUser : SteamInterface { - public override string InterfaceName => "SteamUser020"; - public override void InitInternals() + internal ISteamUser( bool IsGameServer ) { - _GetHSteamUser = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _BLoggedOn = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetSteamID = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _InitiateGameConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _TerminateGameConnection = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _TrackAppUsageEvent = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetUserDataFolder = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _StartVoiceRecording = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _StopVoiceRecording = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _GetAvailableVoice = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _GetVoice = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _DecompressVoice = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _GetVoiceOptimalSampleRate = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _GetAuthSessionTicket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _BeginAuthSession = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _EndAuthSession = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _CancelAuthTicket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _UserHasLicenseForApp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _BIsBehindNAT = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _AdvertiseGame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _RequestEncryptedAppTicket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _GetEncryptedAppTicket = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _GetGameBadgeLevel = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _GetPlayerSteamLevel = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _RequestStoreAuthURL = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _BIsPhoneVerified = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _BIsTwoFactorEnabled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _BIsPhoneIdentifying = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _BIsPhoneRequiringVerification = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _GetMarketEligibility = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _GetHSteamUser = null; - _BLoggedOn = null; - _GetSteamID = null; - _InitiateGameConnection = null; - _TerminateGameConnection = null; - _TrackAppUsageEvent = null; - _GetUserDataFolder = null; - _StartVoiceRecording = null; - _StopVoiceRecording = null; - _GetAvailableVoice = null; - _GetVoice = null; - _DecompressVoice = null; - _GetVoiceOptimalSampleRate = null; - _GetAuthSessionTicket = null; - _BeginAuthSession = null; - _EndAuthSession = null; - _CancelAuthTicket = null; - _UserHasLicenseForApp = null; - _BIsBehindNAT = null; - _AdvertiseGame = null; - _RequestEncryptedAppTicket = null; - _GetEncryptedAppTicket = null; - _GetGameBadgeLevel = null; - _GetPlayerSteamLevel = null; - _RequestStoreAuthURL = null; - _BIsPhoneVerified = null; - _BIsTwoFactorEnabled = null; - _BIsPhoneIdentifying = null; - _BIsPhoneRequiringVerification = null; - _GetMarketEligibility = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamUser_v021", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamUser_v021(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamUser_v021(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HSteamUser FGetHSteamUser( IntPtr self ); - private FGetHSteamUser _GetHSteamUser; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetHSteamUser", CallingConvention = Platform.CC)] + private static extern HSteamUser _GetHSteamUser( IntPtr self ); #endregion internal HSteamUser GetHSteamUser() @@ -93,10 +32,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BLoggedOn", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBLoggedOn( IntPtr self ); - private FBLoggedOn _BLoggedOn; + private static extern bool _BLoggedOn( IntPtr self ); #endregion internal bool BLoggedOn() @@ -106,54 +44,40 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - #if PLATFORM_WIN - private delegate void FGetSteamID( IntPtr self, ref SteamId retVal ); - #else - private delegate SteamId FGetSteamID( IntPtr self ); - #endif - private FGetSteamID _GetSteamID; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetSteamID", CallingConvention = Platform.CC)] + private static extern SteamId _GetSteamID( IntPtr self ); #endregion internal SteamId GetSteamID() { - #if PLATFORM_WIN - var retVal = default( SteamId ); - _GetSteamID( Self, ref retVal ); - return retVal; - #else var returnValue = _GetSteamID( Self ); return returnValue; - #endif } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FInitiateGameConnection( IntPtr self, IntPtr pAuthBlob, int cbMaxAuthBlob, SteamId steamIDGameServer, uint unIPServer, ushort usPortServer, [MarshalAs( UnmanagedType.U1 )] bool bSecure ); - private FInitiateGameConnection _InitiateGameConnection; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection_DEPRECATED", CallingConvention = Platform.CC)] + private static extern int _InitiateGameConnection_DEPRECATED( IntPtr self, IntPtr pAuthBlob, int cbMaxAuthBlob, SteamId steamIDGameServer, uint unIPServer, ushort usPortServer, [MarshalAs( UnmanagedType.U1 )] bool bSecure ); #endregion - internal int InitiateGameConnection( IntPtr pAuthBlob, int cbMaxAuthBlob, SteamId steamIDGameServer, uint unIPServer, ushort usPortServer, [MarshalAs( UnmanagedType.U1 )] bool bSecure ) + internal int InitiateGameConnection_DEPRECATED( IntPtr pAuthBlob, int cbMaxAuthBlob, SteamId steamIDGameServer, uint unIPServer, ushort usPortServer, [MarshalAs( UnmanagedType.U1 )] bool bSecure ) { - var returnValue = _InitiateGameConnection( Self, pAuthBlob, cbMaxAuthBlob, steamIDGameServer, unIPServer, usPortServer, bSecure ); + var returnValue = _InitiateGameConnection_DEPRECATED( Self, pAuthBlob, cbMaxAuthBlob, steamIDGameServer, unIPServer, usPortServer, bSecure ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FTerminateGameConnection( IntPtr self, uint unIPServer, ushort usPortServer ); - private FTerminateGameConnection _TerminateGameConnection; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection_DEPRECATED", CallingConvention = Platform.CC)] + private static extern void _TerminateGameConnection_DEPRECATED( IntPtr self, uint unIPServer, ushort usPortServer ); #endregion - internal void TerminateGameConnection( uint unIPServer, ushort usPortServer ) + internal void TerminateGameConnection_DEPRECATED( uint unIPServer, ushort usPortServer ) { - _TerminateGameConnection( Self, unIPServer, usPortServer ); + _TerminateGameConnection_DEPRECATED( Self, unIPServer, usPortServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FTrackAppUsageEvent( IntPtr self, GameId gameID, int eAppUsageEvent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchExtraInfo ); - private FTrackAppUsageEvent _TrackAppUsageEvent; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_TrackAppUsageEvent", CallingConvention = Platform.CC)] + private static extern void _TrackAppUsageEvent( IntPtr self, GameId gameID, int eAppUsageEvent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchExtraInfo ); #endregion internal void TrackAppUsageEvent( GameId gameID, int eAppUsageEvent, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchExtraInfo ) @@ -162,24 +86,22 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetUserDataFolder", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserDataFolder( IntPtr self, IntPtr pchBuffer, int cubBuffer ); - private FGetUserDataFolder _GetUserDataFolder; + private static extern bool _GetUserDataFolder( IntPtr self, IntPtr pchBuffer, int cubBuffer ); #endregion internal bool GetUserDataFolder( out string pchBuffer ) { - IntPtr mempchBuffer = Helpers.TakeMemory(); + using var mempchBuffer = Helpers.TakeMemory(); var returnValue = _GetUserDataFolder( Self, mempchBuffer, (1024 * 32) ); pchBuffer = Helpers.MemoryToString( mempchBuffer ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FStartVoiceRecording( IntPtr self ); - private FStartVoiceRecording _StartVoiceRecording; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_StartVoiceRecording", CallingConvention = Platform.CC)] + private static extern void _StartVoiceRecording( IntPtr self ); #endregion internal void StartVoiceRecording() @@ -188,9 +110,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FStopVoiceRecording( IntPtr self ); - private FStopVoiceRecording _StopVoiceRecording; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_StopVoiceRecording", CallingConvention = Platform.CC)] + private static extern void _StopVoiceRecording( IntPtr self ); #endregion internal void StopVoiceRecording() @@ -199,9 +120,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate VoiceResult FGetAvailableVoice( IntPtr self, ref uint pcbCompressed, ref uint pcbUncompressed_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated ); - private FGetAvailableVoice _GetAvailableVoice; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetAvailableVoice", CallingConvention = Platform.CC)] + private static extern VoiceResult _GetAvailableVoice( IntPtr self, ref uint pcbCompressed, ref uint pcbUncompressed_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated ); #endregion internal VoiceResult GetAvailableVoice( ref uint pcbCompressed, ref uint pcbUncompressed_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated ) @@ -211,9 +131,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate VoiceResult FGetVoice( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, [MarshalAs( UnmanagedType.U1 )] bool bWantUncompressed_Deprecated, IntPtr pUncompressedDestBuffer_Deprecated, uint cbUncompressedDestBufferSize_Deprecated, ref uint nUncompressBytesWritten_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated ); - private FGetVoice _GetVoice; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetVoice", CallingConvention = Platform.CC)] + private static extern VoiceResult _GetVoice( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, [MarshalAs( UnmanagedType.U1 )] bool bWantUncompressed_Deprecated, IntPtr pUncompressedDestBuffer_Deprecated, uint cbUncompressedDestBufferSize_Deprecated, ref uint nUncompressBytesWritten_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated ); #endregion internal VoiceResult GetVoice( [MarshalAs( UnmanagedType.U1 )] bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, [MarshalAs( UnmanagedType.U1 )] bool bWantUncompressed_Deprecated, IntPtr pUncompressedDestBuffer_Deprecated, uint cbUncompressedDestBufferSize_Deprecated, ref uint nUncompressBytesWritten_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated ) @@ -223,9 +142,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate VoiceResult FDecompressVoice( IntPtr self, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate ); - private FDecompressVoice _DecompressVoice; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_DecompressVoice", CallingConvention = Platform.CC)] + private static extern VoiceResult _DecompressVoice( IntPtr self, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate ); #endregion internal VoiceResult DecompressVoice( IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate ) @@ -235,9 +153,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetVoiceOptimalSampleRate( IntPtr self ); - private FGetVoiceOptimalSampleRate _GetVoiceOptimalSampleRate; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate", CallingConvention = Platform.CC)] + private static extern uint _GetVoiceOptimalSampleRate( IntPtr self ); #endregion internal uint GetVoiceOptimalSampleRate() @@ -247,9 +164,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate HAuthTicket FGetAuthSessionTicket( IntPtr self, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ); - private FGetAuthSessionTicket _GetAuthSessionTicket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetAuthSessionTicket", CallingConvention = Platform.CC)] + private static extern HAuthTicket _GetAuthSessionTicket( IntPtr self, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ); #endregion internal HAuthTicket GetAuthSessionTicket( IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ) @@ -259,9 +175,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate BeginAuthResult FBeginAuthSession( IntPtr self, IntPtr pAuthTicket, int cbAuthTicket, SteamId steamID ); - private FBeginAuthSession _BeginAuthSession; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BeginAuthSession", CallingConvention = Platform.CC)] + private static extern BeginAuthResult _BeginAuthSession( IntPtr self, IntPtr pAuthTicket, int cbAuthTicket, SteamId steamID ); #endregion internal BeginAuthResult BeginAuthSession( IntPtr pAuthTicket, int cbAuthTicket, SteamId steamID ) @@ -271,9 +186,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FEndAuthSession( IntPtr self, SteamId steamID ); - private FEndAuthSession _EndAuthSession; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_EndAuthSession", CallingConvention = Platform.CC)] + private static extern void _EndAuthSession( IntPtr self, SteamId steamID ); #endregion internal void EndAuthSession( SteamId steamID ) @@ -282,9 +196,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FCancelAuthTicket( IntPtr self, HAuthTicket hAuthTicket ); - private FCancelAuthTicket _CancelAuthTicket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_CancelAuthTicket", CallingConvention = Platform.CC)] + private static extern void _CancelAuthTicket( IntPtr self, HAuthTicket hAuthTicket ); #endregion internal void CancelAuthTicket( HAuthTicket hAuthTicket ) @@ -293,9 +206,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate UserHasLicenseForAppResult FUserHasLicenseForApp( IntPtr self, SteamId steamID, AppId appID ); - private FUserHasLicenseForApp _UserHasLicenseForApp; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_UserHasLicenseForApp", CallingConvention = Platform.CC)] + private static extern UserHasLicenseForAppResult _UserHasLicenseForApp( IntPtr self, SteamId steamID, AppId appID ); #endregion internal UserHasLicenseForAppResult UserHasLicenseForApp( SteamId steamID, AppId appID ) @@ -305,10 +217,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BIsBehindNAT", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsBehindNAT( IntPtr self ); - private FBIsBehindNAT _BIsBehindNAT; + private static extern bool _BIsBehindNAT( IntPtr self ); #endregion internal bool BIsBehindNAT() @@ -318,9 +229,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FAdvertiseGame( IntPtr self, SteamId steamIDGameServer, uint unIPServer, ushort usPortServer ); - private FAdvertiseGame _AdvertiseGame; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_AdvertiseGame", CallingConvention = Platform.CC)] + private static extern void _AdvertiseGame( IntPtr self, SteamId steamIDGameServer, uint unIPServer, ushort usPortServer ); #endregion internal void AdvertiseGame( SteamId steamIDGameServer, uint unIPServer, ushort usPortServer ) @@ -329,22 +239,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestEncryptedAppTicket( IntPtr self, IntPtr pDataToInclude, int cbDataToInclude ); - private FRequestEncryptedAppTicket _RequestEncryptedAppTicket; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_RequestEncryptedAppTicket", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestEncryptedAppTicket( IntPtr self, IntPtr pDataToInclude, int cbDataToInclude ); #endregion - internal async Task RequestEncryptedAppTicket( IntPtr pDataToInclude, int cbDataToInclude ) + internal CallResult RequestEncryptedAppTicket( IntPtr pDataToInclude, int cbDataToInclude ) { var returnValue = _RequestEncryptedAppTicket( Self, pDataToInclude, cbDataToInclude ); - return await EncryptedAppTicketResponse_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetEncryptedAppTicket", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetEncryptedAppTicket( IntPtr self, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ); - private FGetEncryptedAppTicket _GetEncryptedAppTicket; + private static extern bool _GetEncryptedAppTicket( IntPtr self, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ); #endregion internal bool GetEncryptedAppTicket( IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket ) @@ -354,9 +262,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetGameBadgeLevel( IntPtr self, int nSeries, [MarshalAs( UnmanagedType.U1 )] bool bFoil ); - private FGetGameBadgeLevel _GetGameBadgeLevel; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetGameBadgeLevel", CallingConvention = Platform.CC)] + private static extern int _GetGameBadgeLevel( IntPtr self, int nSeries, [MarshalAs( UnmanagedType.U1 )] bool bFoil ); #endregion internal int GetGameBadgeLevel( int nSeries, [MarshalAs( UnmanagedType.U1 )] bool bFoil ) @@ -366,9 +273,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetPlayerSteamLevel( IntPtr self ); - private FGetPlayerSteamLevel _GetPlayerSteamLevel; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetPlayerSteamLevel", CallingConvention = Platform.CC)] + private static extern int _GetPlayerSteamLevel( IntPtr self ); #endregion internal int GetPlayerSteamLevel() @@ -378,22 +284,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestStoreAuthURL( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchRedirectURL ); - private FRequestStoreAuthURL _RequestStoreAuthURL; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_RequestStoreAuthURL", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestStoreAuthURL( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchRedirectURL ); #endregion - internal async Task RequestStoreAuthURL( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchRedirectURL ) + internal CallResult RequestStoreAuthURL( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchRedirectURL ) { var returnValue = _RequestStoreAuthURL( Self, pchRedirectURL ); - return await StoreAuthURLResponse_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BIsPhoneVerified", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsPhoneVerified( IntPtr self ); - private FBIsPhoneVerified _BIsPhoneVerified; + private static extern bool _BIsPhoneVerified( IntPtr self ); #endregion internal bool BIsPhoneVerified() @@ -403,10 +307,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BIsTwoFactorEnabled", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsTwoFactorEnabled( IntPtr self ); - private FBIsTwoFactorEnabled _BIsTwoFactorEnabled; + private static extern bool _BIsTwoFactorEnabled( IntPtr self ); #endregion internal bool BIsTwoFactorEnabled() @@ -416,10 +319,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BIsPhoneIdentifying", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsPhoneIdentifying( IntPtr self ); - private FBIsPhoneIdentifying _BIsPhoneIdentifying; + private static extern bool _BIsPhoneIdentifying( IntPtr self ); #endregion internal bool BIsPhoneIdentifying() @@ -429,10 +331,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BIsPhoneRequiringVerification", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBIsPhoneRequiringVerification( IntPtr self ); - private FBIsPhoneRequiringVerification _BIsPhoneRequiringVerification; + private static extern bool _BIsPhoneRequiringVerification( IntPtr self ); #endregion internal bool BIsPhoneRequiringVerification() @@ -442,15 +343,37 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FGetMarketEligibility( IntPtr self ); - private FGetMarketEligibility _GetMarketEligibility; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetMarketEligibility", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetMarketEligibility( IntPtr self ); #endregion - internal async Task GetMarketEligibility() + internal CallResult GetMarketEligibility() { var returnValue = _GetMarketEligibility( Self ); - return await MarketEligibilityResponse_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_GetDurationControl", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetDurationControl( IntPtr self ); + + #endregion + internal CallResult GetDurationControl() + { + var returnValue = _GetDurationControl( Self ); + return new CallResult( returnValue, IsServer ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUser_BSetDurationControlOnlineState", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _BSetDurationControlOnlineState( IntPtr self, DurationControlOnlineState eNewState ); + + #endregion + internal bool BSetDurationControlOnlineState( DurationControlOnlineState eNewState ) + { + var returnValue = _BSetDurationControlOnlineState( Self, eNewState ); + return returnValue; } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs index 4376970..ab98ca6 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUserStats.cs @@ -7,124 +7,23 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamUserStats : SteamInterface + internal unsafe class ISteamUserStats : SteamInterface { - public override string InterfaceName => "STEAMUSERSTATS_INTERFACE_VERSION011"; - public override void InitInternals() + internal ISteamUserStats( bool IsGameServer ) { - _RequestCurrentStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _UpdateAvgRateStat = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetAchievement = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _SetAchievement = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _ClearAchievement = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _GetAchievementAndUnlockTime = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _StoreStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _GetAchievementIcon = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _GetAchievementDisplayAttribute = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _IndicateAchievementProgress = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _GetNumAchievements = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetAchievementName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _RequestUserStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _GetUserAchievement = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _GetUserAchievementAndUnlockTime = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _ResetAllStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _FindOrCreateLeaderboard = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _FindLeaderboard = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _GetLeaderboardName = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _GetLeaderboardEntryCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _GetLeaderboardSortMethod = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _GetLeaderboardDisplayType = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _DownloadLeaderboardEntries = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _DownloadLeaderboardEntriesForUsers = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - _GetDownloadedLeaderboardEntry = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 240 ) ) ); - _UploadLeaderboardScore = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 248 ) ) ); - _AttachLeaderboardUGC = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 256 ) ) ); - _GetNumberOfCurrentPlayers = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 264 ) ) ); - _RequestGlobalAchievementPercentages = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 272 ) ) ); - _GetMostAchievedAchievementInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 280 ) ) ); - _GetNextMostAchievedAchievementInfo = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 288 ) ) ); - _GetAchievementAchievedPercent = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 296 ) ) ); - _RequestGlobalStats = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 304 ) ) ); - - #if PLATFORM_WIN - _GetStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _GetStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _SetStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _SetStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _GetUserStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _GetUserStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetGlobalStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 320 ) ) ); - _GetGlobalStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 312 ) ) ); - _GetGlobalStatHistory1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 336 ) ) ); - _GetGlobalStatHistory2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 328 ) ) ); - #else - _GetStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _SetStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _SetStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _GetUserStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _GetUserStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _GetGlobalStat1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 312 ) ) ); - _GetGlobalStat2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 320 ) ) ); - _GetGlobalStatHistory1 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 328 ) ) ); - _GetGlobalStatHistory2 = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 336 ) ) ); - #endif - } - internal override void Shutdown() - { - base.Shutdown(); - - _RequestCurrentStats = null; - _GetStat1 = null; - _GetStat2 = null; - _SetStat1 = null; - _SetStat2 = null; - _UpdateAvgRateStat = null; - _GetAchievement = null; - _SetAchievement = null; - _ClearAchievement = null; - _GetAchievementAndUnlockTime = null; - _StoreStats = null; - _GetAchievementIcon = null; - _GetAchievementDisplayAttribute = null; - _IndicateAchievementProgress = null; - _GetNumAchievements = null; - _GetAchievementName = null; - _RequestUserStats = null; - _GetUserStat1 = null; - _GetUserStat2 = null; - _GetUserAchievement = null; - _GetUserAchievementAndUnlockTime = null; - _ResetAllStats = null; - _FindOrCreateLeaderboard = null; - _FindLeaderboard = null; - _GetLeaderboardName = null; - _GetLeaderboardEntryCount = null; - _GetLeaderboardSortMethod = null; - _GetLeaderboardDisplayType = null; - _DownloadLeaderboardEntries = null; - _DownloadLeaderboardEntriesForUsers = null; - _GetDownloadedLeaderboardEntry = null; - _UploadLeaderboardScore = null; - _AttachLeaderboardUGC = null; - _GetNumberOfCurrentPlayers = null; - _RequestGlobalAchievementPercentages = null; - _GetMostAchievedAchievementInfo = null; - _GetNextMostAchievedAchievementInfo = null; - _GetAchievementAchievedPercent = null; - _RequestGlobalStats = null; - _GetGlobalStat1 = null; - _GetGlobalStat2 = null; - _GetGlobalStatHistory1 = null; - _GetGlobalStatHistory2 = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamUserStats_v012", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamUserStats_v012(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamUserStats_v012(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_RequestCurrentStats", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FRequestCurrentStats( IntPtr self ); - private FRequestCurrentStats _RequestCurrentStats; + private static extern bool _RequestCurrentStats( IntPtr self ); #endregion internal bool RequestCurrentStats() @@ -134,62 +33,57 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetStatInt32", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetStat1( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ); - private FGetStat1 _GetStat1; + private static extern bool _GetStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ); #endregion - internal bool GetStat1( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ) + internal bool GetStat( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ) { - var returnValue = _GetStat1( Self, pchName, ref pData ); + var returnValue = _GetStat( Self, pchName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetStatFloat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetStat2( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ); - private FGetStat2 _GetStat2; + private static extern bool _GetStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ); #endregion - internal bool GetStat2( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ) + internal bool GetStat( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ) { - var returnValue = _GetStat2( Self, pchName, ref pData ); + var returnValue = _GetStat( Self, pchName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_SetStatInt32", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetStat1( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ); - private FSetStat1 _SetStat1; + private static extern bool _SetStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ); #endregion - internal bool SetStat1( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ) + internal bool SetStat( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, int nData ) { - var returnValue = _SetStat1( Self, pchName, nData ); + var returnValue = _SetStat( Self, pchName, nData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_SetStatFloat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetStat2( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ); - private FSetStat2 _SetStat2; + private static extern bool _SetStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ); #endregion - internal bool SetStat2( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ) + internal bool SetStat( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float fData ) { - var returnValue = _SetStat2( Self, pchName, fData ); + var returnValue = _SetStat( Self, pchName, fData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_UpdateAvgRateStat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FUpdateAvgRateStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float flCountThisSession, double dSessionLength ); - private FUpdateAvgRateStat _UpdateAvgRateStat; + private static extern bool _UpdateAvgRateStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float flCountThisSession, double dSessionLength ); #endregion internal bool UpdateAvgRateStat( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, float flCountThisSession, double dSessionLength ) @@ -199,10 +93,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievement", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetAchievement( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); - private FGetAchievement _GetAchievement; + private static extern bool _GetAchievement( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); #endregion internal bool GetAchievement( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ) @@ -212,10 +105,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_SetAchievement", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FSetAchievement( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); - private FSetAchievement _SetAchievement; + private static extern bool _SetAchievement( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); #endregion internal bool SetAchievement( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ) @@ -225,10 +117,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_ClearAchievement", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FClearAchievement( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); - private FClearAchievement _ClearAchievement; + private static extern bool _ClearAchievement( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); #endregion internal bool ClearAchievement( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ) @@ -238,10 +129,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetAchievementAndUnlockTime( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved, ref uint punUnlockTime ); - private FGetAchievementAndUnlockTime _GetAchievementAndUnlockTime; + private static extern bool _GetAchievementAndUnlockTime( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved, ref uint punUnlockTime ); #endregion internal bool GetAchievementAndUnlockTime( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved, ref uint punUnlockTime ) @@ -251,10 +141,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_StoreStats", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FStoreStats( IntPtr self ); - private FStoreStats _StoreStats; + private static extern bool _StoreStats( IntPtr self ); #endregion internal bool StoreStats() @@ -264,9 +153,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetAchievementIcon( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); - private FGetAchievementIcon _GetAchievementIcon; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementIcon", CallingConvention = Platform.CC)] + private static extern int _GetAchievementIcon( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ); #endregion internal int GetAchievementIcon( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName ) @@ -276,9 +164,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetAchievementDisplayAttribute( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); - private FGetAchievementDisplayAttribute _GetAchievementDisplayAttribute; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetAchievementDisplayAttribute( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ); #endregion internal string GetAchievementDisplayAttribute( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchKey ) @@ -288,10 +175,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_IndicateAchievementProgress", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIndicateAchievementProgress( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, uint nCurProgress, uint nMaxProgress ); - private FIndicateAchievementProgress _IndicateAchievementProgress; + private static extern bool _IndicateAchievementProgress( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, uint nCurProgress, uint nMaxProgress ); #endregion internal bool IndicateAchievementProgress( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, uint nCurProgress, uint nMaxProgress ) @@ -301,9 +187,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetNumAchievements( IntPtr self ); - private FGetNumAchievements _GetNumAchievements; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetNumAchievements", CallingConvention = Platform.CC)] + private static extern uint _GetNumAchievements( IntPtr self ); #endregion internal uint GetNumAchievements() @@ -313,9 +198,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetAchievementName( IntPtr self, uint iAchievement ); - private FGetAchievementName _GetAchievementName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetAchievementName( IntPtr self, uint iAchievement ); #endregion internal string GetAchievementName( uint iAchievement ) @@ -325,48 +209,44 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestUserStats( IntPtr self, SteamId steamIDUser ); - private FRequestUserStats _RequestUserStats; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_RequestUserStats", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestUserStats( IntPtr self, SteamId steamIDUser ); #endregion - internal async Task RequestUserStats( SteamId steamIDUser ) + internal CallResult RequestUserStats( SteamId steamIDUser ) { var returnValue = _RequestUserStats( Self, steamIDUser ); - return await UserStatsReceived_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetUserStatInt32", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserStat1( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ); - private FGetUserStat1 _GetUserStat1; + private static extern bool _GetUserStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ); #endregion - internal bool GetUserStat1( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ) + internal bool GetUserStat( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pData ) { - var returnValue = _GetUserStat1( Self, steamIDUser, pchName, ref pData ); + var returnValue = _GetUserStat( Self, steamIDUser, pchName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetUserStatFloat", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserStat2( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ); - private FGetUserStat2 _GetUserStat2; + private static extern bool _GetUserStat( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ); #endregion - internal bool GetUserStat2( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ) + internal bool GetUserStat( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pData ) { - var returnValue = _GetUserStat2( Self, steamIDUser, pchName, ref pData ); + var returnValue = _GetUserStat( Self, steamIDUser, pchName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievement", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); - private FGetUserAchievement _GetUserAchievement; + private static extern bool _GetUserAchievement( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); #endregion internal bool GetUserAchievement( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ) @@ -376,10 +256,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetUserAchievementAndUnlockTime( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved, ref uint punUnlockTime ); - private FGetUserAchievementAndUnlockTime _GetUserAchievementAndUnlockTime; + private static extern bool _GetUserAchievementAndUnlockTime( IntPtr self, SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved, ref uint punUnlockTime ); #endregion internal bool GetUserAchievementAndUnlockTime( SteamId steamIDUser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved, ref uint punUnlockTime ) @@ -389,10 +268,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_ResetAllStats", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FResetAllStats( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bAchievementsToo ); - private FResetAllStats _ResetAllStats; + private static extern bool _ResetAllStats( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bAchievementsToo ); #endregion internal bool ResetAllStats( [MarshalAs( UnmanagedType.U1 )] bool bAchievementsToo ) @@ -402,33 +280,30 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FFindOrCreateLeaderboard( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType ); - private FFindOrCreateLeaderboard _FindOrCreateLeaderboard; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _FindOrCreateLeaderboard( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType ); #endregion - internal async Task FindOrCreateLeaderboard( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType ) + internal CallResult FindOrCreateLeaderboard( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName, LeaderboardSort eLeaderboardSortMethod, LeaderboardDisplay eLeaderboardDisplayType ) { var returnValue = _FindOrCreateLeaderboard( Self, pchLeaderboardName, eLeaderboardSortMethod, eLeaderboardDisplayType ); - return await LeaderboardFindResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FFindLeaderboard( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName ); - private FFindLeaderboard _FindLeaderboard; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_FindLeaderboard", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _FindLeaderboard( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName ); #endregion - internal async Task FindLeaderboard( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName ) + internal CallResult FindLeaderboard( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchLeaderboardName ) { var returnValue = _FindLeaderboard( Self, pchLeaderboardName ); - return await LeaderboardFindResult_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetLeaderboardName( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); - private FGetLeaderboardName _GetLeaderboardName; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardName", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetLeaderboardName( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); #endregion internal string GetLeaderboardName( SteamLeaderboard_t hSteamLeaderboard ) @@ -438,9 +313,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetLeaderboardEntryCount( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); - private FGetLeaderboardEntryCount _GetLeaderboardEntryCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount", CallingConvention = Platform.CC)] + private static extern int _GetLeaderboardEntryCount( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); #endregion internal int GetLeaderboardEntryCount( SteamLeaderboard_t hSteamLeaderboard ) @@ -450,9 +324,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate LeaderboardSort FGetLeaderboardSortMethod( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); - private FGetLeaderboardSortMethod _GetLeaderboardSortMethod; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod", CallingConvention = Platform.CC)] + private static extern LeaderboardSort _GetLeaderboardSortMethod( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); #endregion internal LeaderboardSort GetLeaderboardSortMethod( SteamLeaderboard_t hSteamLeaderboard ) @@ -462,9 +335,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate LeaderboardDisplay FGetLeaderboardDisplayType( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); - private FGetLeaderboardDisplayType _GetLeaderboardDisplayType; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType", CallingConvention = Platform.CC)] + private static extern LeaderboardDisplay _GetLeaderboardDisplayType( IntPtr self, SteamLeaderboard_t hSteamLeaderboard ); #endregion internal LeaderboardDisplay GetLeaderboardDisplayType( SteamLeaderboard_t hSteamLeaderboard ) @@ -474,34 +346,31 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FDownloadLeaderboardEntries( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, LeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ); - private FDownloadLeaderboardEntries _DownloadLeaderboardEntries; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _DownloadLeaderboardEntries( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, LeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ); #endregion - internal async Task DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, LeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) + internal CallResult DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, LeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) { var returnValue = _DownloadLeaderboardEntries( Self, hSteamLeaderboard, eLeaderboardDataRequest, nRangeStart, nRangeEnd ); - return await LeaderboardScoresDownloaded_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FDownloadLeaderboardEntriesForUsers( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, [In,Out] SteamId[] prgUsers, int cUsers ); - private FDownloadLeaderboardEntriesForUsers _DownloadLeaderboardEntriesForUsers; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _DownloadLeaderboardEntriesForUsers( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, [In,Out] SteamId[] prgUsers, int cUsers ); #endregion - internal async Task DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, [In,Out] SteamId[] prgUsers, int cUsers ) + internal CallResult DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, [In,Out] SteamId[] prgUsers, int cUsers ) { var returnValue = _DownloadLeaderboardEntriesForUsers( Self, hSteamLeaderboard, prgUsers, cUsers ); - return await LeaderboardScoresDownloaded_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetDownloadedLeaderboardEntry( IntPtr self, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, [In,Out] int[] pDetails, int cDetailsMax ); - private FGetDownloadedLeaderboardEntry _GetDownloadedLeaderboardEntry; + private static extern bool _GetDownloadedLeaderboardEntry( IntPtr self, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, [In,Out] int[] pDetails, int cDetailsMax ); #endregion internal bool GetDownloadedLeaderboardEntry( SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, [In,Out] int[] pDetails, int cDetailsMax ) @@ -511,86 +380,79 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FUploadLeaderboardScore( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, LeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int nScore, [In,Out] int[] pScoreDetails, int cScoreDetailsCount ); - private FUploadLeaderboardScore _UploadLeaderboardScore; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_UploadLeaderboardScore", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _UploadLeaderboardScore( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, LeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int nScore, [In,Out] int[] pScoreDetails, int cScoreDetailsCount ); #endregion - internal async Task UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, LeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int nScore, [In,Out] int[] pScoreDetails, int cScoreDetailsCount ) + internal CallResult UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, LeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int nScore, [In,Out] int[] pScoreDetails, int cScoreDetailsCount ) { var returnValue = _UploadLeaderboardScore( Self, hSteamLeaderboard, eLeaderboardUploadScoreMethod, nScore, pScoreDetails, cScoreDetailsCount ); - return await LeaderboardScoreUploaded_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FAttachLeaderboardUGC( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ); - private FAttachLeaderboardUGC _AttachLeaderboardUGC; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_AttachLeaderboardUGC", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _AttachLeaderboardUGC( IntPtr self, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ); #endregion - internal async Task AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) + internal CallResult AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) { var returnValue = _AttachLeaderboardUGC( Self, hSteamLeaderboard, hUGC ); - return await LeaderboardUGCSet_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FGetNumberOfCurrentPlayers( IntPtr self ); - private FGetNumberOfCurrentPlayers _GetNumberOfCurrentPlayers; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _GetNumberOfCurrentPlayers( IntPtr self ); #endregion - internal async Task GetNumberOfCurrentPlayers() + internal CallResult GetNumberOfCurrentPlayers() { var returnValue = _GetNumberOfCurrentPlayers( Self ); - return await NumberOfCurrentPlayers_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestGlobalAchievementPercentages( IntPtr self ); - private FRequestGlobalAchievementPercentages _RequestGlobalAchievementPercentages; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestGlobalAchievementPercentages( IntPtr self ); #endregion - internal async Task RequestGlobalAchievementPercentages() + internal CallResult RequestGlobalAchievementPercentages() { var returnValue = _RequestGlobalAchievementPercentages( Self ); - return await GlobalAchievementPercentagesReady_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetMostAchievedAchievementInfo( IntPtr self, IntPtr pchName, uint unNameBufLen, ref float pflPercent, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); - private FGetMostAchievedAchievementInfo _GetMostAchievedAchievementInfo; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo", CallingConvention = Platform.CC)] + private static extern int _GetMostAchievedAchievementInfo( IntPtr self, IntPtr pchName, uint unNameBufLen, ref float pflPercent, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); #endregion internal int GetMostAchievedAchievementInfo( out string pchName, ref float pflPercent, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ) { - IntPtr mempchName = Helpers.TakeMemory(); + using var mempchName = Helpers.TakeMemory(); var returnValue = _GetMostAchievedAchievementInfo( Self, mempchName, (1024 * 32), ref pflPercent, ref pbAchieved ); pchName = Helpers.MemoryToString( mempchName ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetNextMostAchievedAchievementInfo( IntPtr self, int iIteratorPrevious, IntPtr pchName, uint unNameBufLen, ref float pflPercent, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); - private FGetNextMostAchievedAchievementInfo _GetNextMostAchievedAchievementInfo; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo", CallingConvention = Platform.CC)] + private static extern int _GetNextMostAchievedAchievementInfo( IntPtr self, int iIteratorPrevious, IntPtr pchName, uint unNameBufLen, ref float pflPercent, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ); #endregion internal int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, out string pchName, ref float pflPercent, [MarshalAs( UnmanagedType.U1 )] ref bool pbAchieved ) { - IntPtr mempchName = Helpers.TakeMemory(); + using var mempchName = Helpers.TakeMemory(); var returnValue = _GetNextMostAchievedAchievementInfo( Self, iIteratorPrevious, mempchName, (1024 * 32), ref pflPercent, ref pbAchieved ); pchName = Helpers.MemoryToString( mempchName ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetAchievementAchievedPercent( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pflPercent ); - private FGetAchievementAchievedPercent _GetAchievementAchievedPercent; + private static extern bool _GetAchievementAchievedPercent( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pflPercent ); #endregion internal bool GetAchievementAchievedPercent( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pflPercent ) @@ -600,64 +462,83 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FRequestGlobalStats( IntPtr self, int nHistoryDays ); - private FRequestGlobalStats _RequestGlobalStats; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalStats", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _RequestGlobalStats( IntPtr self, int nHistoryDays ); #endregion - internal async Task RequestGlobalStats( int nHistoryDays ) + internal CallResult RequestGlobalStats( int nHistoryDays ) { var returnValue = _RequestGlobalStats( Self, nHistoryDays ); - return await GlobalStatsReceived_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatInt64", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetGlobalStat1( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref long pData ); - private FGetGlobalStat1 _GetGlobalStat1; + private static extern bool _GetGlobalStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref long pData ); #endregion - internal bool GetGlobalStat1( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref long pData ) + internal bool GetGlobalStat( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref long pData ) { - var returnValue = _GetGlobalStat1( Self, pchStatName, ref pData ); + var returnValue = _GetGlobalStat( Self, pchStatName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatDouble", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetGlobalStat2( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref double pData ); - private FGetGlobalStat2 _GetGlobalStat2; + private static extern bool _GetGlobalStat( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref double pData ); #endregion - internal bool GetGlobalStat2( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref double pData ) + internal bool GetGlobalStat( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, ref double pData ) { - var returnValue = _GetGlobalStat2( Self, pchStatName, ref pData ); + var returnValue = _GetGlobalStat( Self, pchStatName, ref pData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetGlobalStatHistory1( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] long[] pData, uint cubData ); - private FGetGlobalStatHistory1 _GetGlobalStatHistory1; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64", CallingConvention = Platform.CC)] + private static extern int _GetGlobalStatHistory( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] long[] pData, uint cubData ); #endregion - internal int GetGlobalStatHistory1( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] long[] pData, uint cubData ) + internal int GetGlobalStatHistory( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] long[] pData, uint cubData ) { - var returnValue = _GetGlobalStatHistory1( Self, pchStatName, pData, cubData ); + var returnValue = _GetGlobalStatHistory( Self, pchStatName, pData, cubData ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate int FGetGlobalStatHistory2( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] double[] pData, uint cubData ); - private FGetGlobalStatHistory2 _GetGlobalStatHistory2; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble", CallingConvention = Platform.CC)] + private static extern int _GetGlobalStatHistory( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] double[] pData, uint cubData ); #endregion - internal int GetGlobalStatHistory2( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] double[] pData, uint cubData ) + internal int GetGlobalStatHistory( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchStatName, [In,Out] double[] pData, uint cubData ) { - var returnValue = _GetGlobalStatHistory2( Self, pchStatName, pData, cubData ); + var returnValue = _GetGlobalStatHistory( Self, pchStatName, pData, cubData ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetAchievementProgressLimits( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pnMinProgress, ref int pnMaxProgress ); + + #endregion + internal bool GetAchievementProgressLimits( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref int pnMinProgress, ref int pnMaxProgress ) + { + var returnValue = _GetAchievementProgressLimits( Self, pchName, ref pnMinProgress, ref pnMaxProgress ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _GetAchievementProgressLimits( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pfMinProgress, ref float pfMaxProgress ); + + #endregion + internal bool GetAchievementProgressLimits( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchName, ref float pfMinProgress, ref float pfMaxProgress ) + { + var returnValue = _GetAchievementProgressLimits( Self, pchName, ref pfMinProgress, ref pfMaxProgress ); return returnValue; } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs index bfe1161..f0a4cf5 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamUtils.cs @@ -7,83 +7,25 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamUtils : SteamInterface + internal unsafe class ISteamUtils : SteamInterface { - public override string InterfaceName => "SteamUtils009"; - public override void InitInternals() + internal ISteamUtils( bool IsGameServer ) { - _GetSecondsSinceAppActive = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _GetSecondsSinceComputerActive = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetConnectedUniverse = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _GetServerRealTime = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - _GetIPCountry = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 32 ) ) ); - _GetImageSize = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 40 ) ) ); - _GetImageRGBA = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 48 ) ) ); - _GetCSERIPPort = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 56 ) ) ); - _GetCurrentBatteryPower = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 64 ) ) ); - _GetAppID = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 72 ) ) ); - _SetOverlayNotificationPosition = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 80 ) ) ); - _IsAPICallCompleted = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 88 ) ) ); - _GetAPICallFailureReason = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 96 ) ) ); - _GetAPICallResult = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 104 ) ) ); - _RunFrame = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 112 ) ) ); - _GetIPCCallCount = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 120 ) ) ); - _SetWarningMessageHook = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 128 ) ) ); - _IsOverlayEnabled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 136 ) ) ); - _BOverlayNeedsPresent = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 144 ) ) ); - _CheckFileSignature = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 152 ) ) ); - _ShowGamepadTextInput = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 160 ) ) ); - _GetEnteredGamepadTextLength = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 168 ) ) ); - _GetEnteredGamepadTextInput = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 176 ) ) ); - _GetSteamUILanguage = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 184 ) ) ); - _IsSteamRunningInVR = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 192 ) ) ); - _SetOverlayNotificationInset = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 200 ) ) ); - _IsSteamInBigPictureMode = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 208 ) ) ); - _StartVRDashboard = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 216 ) ) ); - _IsVRHeadsetStreamingEnabled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 224 ) ) ); - _SetVRHeadsetStreamingEnabled = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 232 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _GetSecondsSinceAppActive = null; - _GetSecondsSinceComputerActive = null; - _GetConnectedUniverse = null; - _GetServerRealTime = null; - _GetIPCountry = null; - _GetImageSize = null; - _GetImageRGBA = null; - _GetCSERIPPort = null; - _GetCurrentBatteryPower = null; - _GetAppID = null; - _SetOverlayNotificationPosition = null; - _IsAPICallCompleted = null; - _GetAPICallFailureReason = null; - _GetAPICallResult = null; - _RunFrame = null; - _GetIPCCallCount = null; - _SetWarningMessageHook = null; - _IsOverlayEnabled = null; - _BOverlayNeedsPresent = null; - _CheckFileSignature = null; - _ShowGamepadTextInput = null; - _GetEnteredGamepadTextLength = null; - _GetEnteredGamepadTextInput = null; - _GetSteamUILanguage = null; - _IsSteamRunningInVR = null; - _SetOverlayNotificationInset = null; - _IsSteamInBigPictureMode = null; - _StartVRDashboard = null; - _IsVRHeadsetStreamingEnabled = null; - _SetVRHeadsetStreamingEnabled = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamUtils_v010", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamUtils_v010(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamUtils_v010(); + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamGameServerUtils_v010", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamGameServerUtils_v010(); + public override IntPtr GetServerInterfacePointer() => SteamAPI_SteamGameServerUtils_v010(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetSecondsSinceAppActive( IntPtr self ); - private FGetSecondsSinceAppActive _GetSecondsSinceAppActive; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceAppActive", CallingConvention = Platform.CC)] + private static extern uint _GetSecondsSinceAppActive( IntPtr self ); #endregion internal uint GetSecondsSinceAppActive() @@ -93,9 +35,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetSecondsSinceComputerActive( IntPtr self ); - private FGetSecondsSinceComputerActive _GetSecondsSinceComputerActive; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive", CallingConvention = Platform.CC)] + private static extern uint _GetSecondsSinceComputerActive( IntPtr self ); #endregion internal uint GetSecondsSinceComputerActive() @@ -105,9 +46,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Universe FGetConnectedUniverse( IntPtr self ); - private FGetConnectedUniverse _GetConnectedUniverse; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetConnectedUniverse", CallingConvention = Platform.CC)] + private static extern Universe _GetConnectedUniverse( IntPtr self ); #endregion internal Universe GetConnectedUniverse() @@ -117,9 +57,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetServerRealTime( IntPtr self ); - private FGetServerRealTime _GetServerRealTime; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetServerRealTime", CallingConvention = Platform.CC)] + private static extern uint _GetServerRealTime( IntPtr self ); #endregion internal uint GetServerRealTime() @@ -129,9 +68,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetIPCountry( IntPtr self ); - private FGetIPCountry _GetIPCountry; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetIPCountry", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetIPCountry( IntPtr self ); #endregion internal string GetIPCountry() @@ -141,10 +79,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetImageSize", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetImageSize( IntPtr self, int iImage, ref uint pnWidth, ref uint pnHeight ); - private FGetImageSize _GetImageSize; + private static extern bool _GetImageSize( IntPtr self, int iImage, ref uint pnWidth, ref uint pnHeight ); #endregion internal bool GetImageSize( int iImage, ref uint pnWidth, ref uint pnHeight ) @@ -154,10 +91,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetImageRGBA", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetImageRGBA( IntPtr self, int iImage, [In,Out] byte[] pubDest, int nDestBufferSize ); - private FGetImageRGBA _GetImageRGBA; + private static extern bool _GetImageRGBA( IntPtr self, int iImage, [In,Out] byte[] pubDest, int nDestBufferSize ); #endregion internal bool GetImageRGBA( int iImage, [In,Out] byte[] pubDest, int nDestBufferSize ) @@ -167,22 +103,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetCSERIPPort( IntPtr self, ref uint unIP, ref ushort usPort ); - private FGetCSERIPPort _GetCSERIPPort; - - #endregion - internal bool GetCSERIPPort( ref uint unIP, ref ushort usPort ) - { - var returnValue = _GetCSERIPPort( Self, ref unIP, ref usPort ); - return returnValue; - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate byte FGetCurrentBatteryPower( IntPtr self ); - private FGetCurrentBatteryPower _GetCurrentBatteryPower; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetCurrentBatteryPower", CallingConvention = Platform.CC)] + private static extern byte _GetCurrentBatteryPower( IntPtr self ); #endregion internal byte GetCurrentBatteryPower() @@ -192,9 +114,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetAppID( IntPtr self ); - private FGetAppID _GetAppID; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetAppID", CallingConvention = Platform.CC)] + private static extern uint _GetAppID( IntPtr self ); #endregion internal uint GetAppID() @@ -204,9 +125,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetOverlayNotificationPosition( IntPtr self, NotificationPosition eNotificationPosition ); - private FSetOverlayNotificationPosition _SetOverlayNotificationPosition; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationPosition", CallingConvention = Platform.CC)] + private static extern void _SetOverlayNotificationPosition( IntPtr self, NotificationPosition eNotificationPosition ); #endregion internal void SetOverlayNotificationPosition( NotificationPosition eNotificationPosition ) @@ -215,10 +135,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsAPICallCompleted", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsAPICallCompleted( IntPtr self, SteamAPICall_t hSteamAPICall, [MarshalAs( UnmanagedType.U1 )] ref bool pbFailed ); - private FIsAPICallCompleted _IsAPICallCompleted; + private static extern bool _IsAPICallCompleted( IntPtr self, SteamAPICall_t hSteamAPICall, [MarshalAs( UnmanagedType.U1 )] ref bool pbFailed ); #endregion internal bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall, [MarshalAs( UnmanagedType.U1 )] ref bool pbFailed ) @@ -228,9 +147,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICallFailure FGetAPICallFailureReason( IntPtr self, SteamAPICall_t hSteamAPICall ); - private FGetAPICallFailureReason _GetAPICallFailureReason; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetAPICallFailureReason", CallingConvention = Platform.CC)] + private static extern SteamAPICallFailure _GetAPICallFailureReason( IntPtr self, SteamAPICall_t hSteamAPICall ); #endregion internal SteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall ) @@ -240,10 +158,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetAPICallResult", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetAPICallResult( IntPtr self, SteamAPICall_t hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, [MarshalAs( UnmanagedType.U1 )] ref bool pbFailed ); - private FGetAPICallResult _GetAPICallResult; + private static extern bool _GetAPICallResult( IntPtr self, SteamAPICall_t hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, [MarshalAs( UnmanagedType.U1 )] ref bool pbFailed ); #endregion internal bool GetAPICallResult( SteamAPICall_t hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, [MarshalAs( UnmanagedType.U1 )] ref bool pbFailed ) @@ -253,20 +170,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FRunFrame( IntPtr self ); - private FRunFrame _RunFrame; - - #endregion - internal void RunFrame() - { - _RunFrame( Self ); - } - - #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetIPCCallCount( IntPtr self ); - private FGetIPCCallCount _GetIPCCallCount; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetIPCCallCount", CallingConvention = Platform.CC)] + private static extern uint _GetIPCCallCount( IntPtr self ); #endregion internal uint GetIPCCallCount() @@ -276,9 +181,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetWarningMessageHook( IntPtr self, IntPtr pFunction ); - private FSetWarningMessageHook _SetWarningMessageHook; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_SetWarningMessageHook", CallingConvention = Platform.CC)] + private static extern void _SetWarningMessageHook( IntPtr self, IntPtr pFunction ); #endregion internal void SetWarningMessageHook( IntPtr pFunction ) @@ -287,10 +191,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsOverlayEnabled", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsOverlayEnabled( IntPtr self ); - private FIsOverlayEnabled _IsOverlayEnabled; + private static extern bool _IsOverlayEnabled( IntPtr self ); #endregion internal bool IsOverlayEnabled() @@ -300,10 +203,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_BOverlayNeedsPresent", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FBOverlayNeedsPresent( IntPtr self ); - private FBOverlayNeedsPresent _BOverlayNeedsPresent; + private static extern bool _BOverlayNeedsPresent( IntPtr self ); #endregion internal bool BOverlayNeedsPresent() @@ -313,22 +215,20 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate SteamAPICall_t FCheckFileSignature( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string szFileName ); - private FCheckFileSignature _CheckFileSignature; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_CheckFileSignature", CallingConvention = Platform.CC)] + private static extern SteamAPICall_t _CheckFileSignature( IntPtr self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string szFileName ); #endregion - internal async Task CheckFileSignature( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string szFileName ) + internal CallResult CheckFileSignature( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string szFileName ) { var returnValue = _CheckFileSignature( Self, szFileName ); - return await CheckFileSignature_t.GetResultAsync( returnValue ); + return new CallResult( returnValue, IsServer ); } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_ShowGamepadTextInput", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FShowGamepadTextInput( IntPtr self, GamepadTextInputMode eInputMode, GamepadTextInputLineMode eLineInputMode, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDescription, uint unCharMax, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchExistingText ); - private FShowGamepadTextInput _ShowGamepadTextInput; + private static extern bool _ShowGamepadTextInput( IntPtr self, GamepadTextInputMode eInputMode, GamepadTextInputLineMode eLineInputMode, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDescription, uint unCharMax, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchExistingText ); #endregion internal bool ShowGamepadTextInput( GamepadTextInputMode eInputMode, GamepadTextInputLineMode eLineInputMode, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchDescription, uint unCharMax, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchExistingText ) @@ -338,9 +238,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate uint FGetEnteredGamepadTextLength( IntPtr self ); - private FGetEnteredGamepadTextLength _GetEnteredGamepadTextLength; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength", CallingConvention = Platform.CC)] + private static extern uint _GetEnteredGamepadTextLength( IntPtr self ); #endregion internal uint GetEnteredGamepadTextLength() @@ -350,24 +249,22 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetEnteredGamepadTextInput( IntPtr self, IntPtr pchText, uint cchText ); - private FGetEnteredGamepadTextInput _GetEnteredGamepadTextInput; + private static extern bool _GetEnteredGamepadTextInput( IntPtr self, IntPtr pchText, uint cchText ); #endregion internal bool GetEnteredGamepadTextInput( out string pchText ) { - IntPtr mempchText = Helpers.TakeMemory(); + using var mempchText = Helpers.TakeMemory(); var returnValue = _GetEnteredGamepadTextInput( Self, mempchText, (1024 * 32) ); pchText = Helpers.MemoryToString( mempchText ); return returnValue; } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate Utf8StringPointer FGetSteamUILanguage( IntPtr self ); - private FGetSteamUILanguage _GetSteamUILanguage; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetSteamUILanguage", CallingConvention = Platform.CC)] + private static extern Utf8StringPointer _GetSteamUILanguage( IntPtr self ); #endregion internal string GetSteamUILanguage() @@ -377,10 +274,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningInVR", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsSteamRunningInVR( IntPtr self ); - private FIsSteamRunningInVR _IsSteamRunningInVR; + private static extern bool _IsSteamRunningInVR( IntPtr self ); #endregion internal bool IsSteamRunningInVR() @@ -390,9 +286,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetOverlayNotificationInset( IntPtr self, int nHorizontalInset, int nVerticalInset ); - private FSetOverlayNotificationInset _SetOverlayNotificationInset; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationInset", CallingConvention = Platform.CC)] + private static extern void _SetOverlayNotificationInset( IntPtr self, int nHorizontalInset, int nVerticalInset ); #endregion internal void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) @@ -401,10 +296,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsSteamInBigPictureMode", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsSteamInBigPictureMode( IntPtr self ); - private FIsSteamInBigPictureMode _IsSteamInBigPictureMode; + private static extern bool _IsSteamInBigPictureMode( IntPtr self ); #endregion internal bool IsSteamInBigPictureMode() @@ -414,9 +308,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FStartVRDashboard( IntPtr self ); - private FStartVRDashboard _StartVRDashboard; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard", CallingConvention = Platform.CC)] + private static extern void _StartVRDashboard( IntPtr self ); #endregion internal void StartVRDashboard() @@ -425,10 +318,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsVRHeadsetStreamingEnabled( IntPtr self ); - private FIsVRHeadsetStreamingEnabled _IsVRHeadsetStreamingEnabled; + private static extern bool _IsVRHeadsetStreamingEnabled( IntPtr self ); #endregion internal bool IsVRHeadsetStreamingEnabled() @@ -438,9 +330,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FSetVRHeadsetStreamingEnabled( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bEnabled ); - private FSetVRHeadsetStreamingEnabled _SetVRHeadsetStreamingEnabled; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled", CallingConvention = Platform.CC)] + private static extern void _SetVRHeadsetStreamingEnabled( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bEnabled ); #endregion internal void SetVRHeadsetStreamingEnabled( [MarshalAs( UnmanagedType.U1 )] bool bEnabled ) @@ -448,5 +339,99 @@ namespace Steamworks _SetVRHeadsetStreamingEnabled( Self, bEnabled ); } + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsSteamChinaLauncher", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _IsSteamChinaLauncher( IntPtr self ); + + #endregion + internal bool IsSteamChinaLauncher() + { + var returnValue = _IsSteamChinaLauncher( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_InitFilterText", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _InitFilterText( IntPtr self, uint unFilterOptions ); + + #endregion + internal bool InitFilterText( uint unFilterOptions ) + { + var returnValue = _InitFilterText( Self, unFilterOptions ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_FilterText", CallingConvention = Platform.CC)] + private static extern int _FilterText( IntPtr self, TextFilteringContext eContext, SteamId sourceSteamID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchInputMessage, IntPtr pchOutFilteredText, uint nByteSizeOutFilteredText ); + + #endregion + internal int FilterText( TextFilteringContext eContext, SteamId sourceSteamID, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchInputMessage, out string pchOutFilteredText ) + { + using var mempchOutFilteredText = Helpers.TakeMemory(); + var returnValue = _FilterText( Self, eContext, sourceSteamID, pchInputMessage, mempchOutFilteredText, (1024 * 32) ); + pchOutFilteredText = Helpers.MemoryToString( mempchOutFilteredText ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetIPv6ConnectivityState", CallingConvention = Platform.CC)] + private static extern SteamIPv6ConnectivityState _GetIPv6ConnectivityState( IntPtr self, SteamIPv6ConnectivityProtocol eProtocol ); + + #endregion + internal SteamIPv6ConnectivityState GetIPv6ConnectivityState( SteamIPv6ConnectivityProtocol eProtocol ) + { + var returnValue = _GetIPv6ConnectivityState( Self, eProtocol ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _IsSteamRunningOnSteamDeck( IntPtr self ); + + #endregion + internal bool IsSteamRunningOnSteamDeck() + { + var returnValue = _IsSteamRunningOnSteamDeck( Self ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_ShowFloatingGamepadTextInput", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _ShowFloatingGamepadTextInput( IntPtr self, TextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight ); + + #endregion + internal bool ShowFloatingGamepadTextInput( TextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight ) + { + var returnValue = _ShowFloatingGamepadTextInput( Self, eKeyboardMode, nTextFieldXPosition, nTextFieldYPosition, nTextFieldWidth, nTextFieldHeight ); + return returnValue; + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_SetGameLauncherMode", CallingConvention = Platform.CC)] + private static extern void _SetGameLauncherMode( IntPtr self, [MarshalAs( UnmanagedType.U1 )] bool bLauncherMode ); + + #endregion + internal void SetGameLauncherMode( [MarshalAs( UnmanagedType.U1 )] bool bLauncherMode ) + { + _SetGameLauncherMode( Self, bLauncherMode ); + } + + #region FunctionMeta + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput", CallingConvention = Platform.CC)] + [return: MarshalAs( UnmanagedType.I1 )] + private static extern bool _DismissFloatingGamepadTextInput( IntPtr self ); + + #endregion + internal bool DismissFloatingGamepadTextInput() + { + var returnValue = _DismissFloatingGamepadTextInput( Self ); + return returnValue; + } + } } diff --git a/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs b/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs index 9c45cd7..bd4d029 100644 --- a/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs +++ b/Facepunch.Steamworks/Generated/Interfaces/ISteamVideo.cs @@ -7,31 +7,22 @@ using Steamworks.Data; namespace Steamworks { - internal class ISteamVideo : SteamInterface + internal unsafe class ISteamVideo : SteamInterface { - public override string InterfaceName => "STEAMVIDEO_INTERFACE_V002"; - public override void InitInternals() + internal ISteamVideo( bool IsGameServer ) { - _GetVideoURL = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 0 ) ) ); - _IsBroadcasting = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 8 ) ) ); - _GetOPFSettings = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 16 ) ) ); - _GetOPFStringForApp = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( 24 ) ) ); - } - internal override void Shutdown() - { - base.Shutdown(); - - _GetVideoURL = null; - _IsBroadcasting = null; - _GetOPFSettings = null; - _GetOPFStringForApp = null; + SetupInterface( IsGameServer ); } + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamVideo_v002", CallingConvention = Platform.CC)] + internal static extern IntPtr SteamAPI_SteamVideo_v002(); + public override IntPtr GetUserInterfacePointer() => SteamAPI_SteamVideo_v002(); + + #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FGetVideoURL( IntPtr self, AppId unVideoAppID ); - private FGetVideoURL _GetVideoURL; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL", CallingConvention = Platform.CC)] + private static extern void _GetVideoURL( IntPtr self, AppId unVideoAppID ); #endregion internal void GetVideoURL( AppId unVideoAppID ) @@ -40,10 +31,9 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamVideo_IsBroadcasting", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FIsBroadcasting( IntPtr self, ref int pnNumViewers ); - private FIsBroadcasting _IsBroadcasting; + private static extern bool _IsBroadcasting( IntPtr self, ref int pnNumViewers ); #endregion internal bool IsBroadcasting( ref int pnNumViewers ) @@ -53,9 +43,8 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] - private delegate void FGetOPFSettings( IntPtr self, AppId unVideoAppID ); - private FGetOPFSettings _GetOPFSettings; + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamVideo_GetOPFSettings", CallingConvention = Platform.CC)] + private static extern void _GetOPFSettings( IntPtr self, AppId unVideoAppID ); #endregion internal void GetOPFSettings( AppId unVideoAppID ) @@ -64,15 +53,14 @@ namespace Steamworks } #region FunctionMeta - [UnmanagedFunctionPointer( Platform.MemberConvention )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_ISteamVideo_GetOPFStringForApp", CallingConvention = Platform.CC)] [return: MarshalAs( UnmanagedType.I1 )] - private delegate bool FGetOPFStringForApp( IntPtr self, AppId unVideoAppID, IntPtr pchBuffer, ref int pnBufferSize ); - private FGetOPFStringForApp _GetOPFStringForApp; + private static extern bool _GetOPFStringForApp( IntPtr self, AppId unVideoAppID, IntPtr pchBuffer, ref int pnBufferSize ); #endregion internal bool GetOPFStringForApp( AppId unVideoAppID, out string pchBuffer, ref int pnBufferSize ) { - IntPtr mempchBuffer = Helpers.TakeMemory(); + using var mempchBuffer = Helpers.TakeMemory(); var returnValue = _GetOPFStringForApp( Self, unVideoAppID, mempchBuffer, ref pnBufferSize ); pchBuffer = Helpers.MemoryToString( mempchBuffer ); return returnValue; diff --git a/Facepunch.Steamworks/Generated/SteamApi.cs b/Facepunch.Steamworks/Generated/SteamApi.cs deleted file mode 100644 index e65a2bd..0000000 --- a/Facepunch.Steamworks/Generated/SteamApi.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -using Steamworks.Data; - - -namespace Steamworks -{ - internal static class SteamAPI - { - internal static class Native - { - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_Init", CallingConvention = CallingConvention.Cdecl )] - [return: MarshalAs( UnmanagedType.I1 )] - public static extern bool SteamAPI_Init(); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_RunCallbacks", CallingConvention = CallingConvention.Cdecl )] - public static extern void SteamAPI_RunCallbacks(); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_RegisterCallback", CallingConvention = CallingConvention.Cdecl )] - public static extern void SteamAPI_RegisterCallback( IntPtr pCallback, int callback ); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_UnregisterCallback", CallingConvention = CallingConvention.Cdecl )] - public static extern void SteamAPI_UnregisterCallback( IntPtr pCallback ); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_RegisterCallResult", CallingConvention = CallingConvention.Cdecl )] - public static extern void SteamAPI_RegisterCallResult( IntPtr pCallback, SteamAPICall_t callback ); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_UnregisterCallResult", CallingConvention = CallingConvention.Cdecl )] - public static extern void SteamAPI_UnregisterCallResult( IntPtr pCallback, SteamAPICall_t callback ); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_Shutdown", CallingConvention = CallingConvention.Cdecl )] - public static extern void SteamAPI_Shutdown(); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_GetHSteamUser", CallingConvention = CallingConvention.Cdecl )] - public static extern HSteamUser SteamAPI_GetHSteamUser(); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_GetHSteamPipe", CallingConvention = CallingConvention.Cdecl )] - public static extern HSteamPipe SteamAPI_GetHSteamPipe(); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_RestartAppIfNecessary", CallingConvention = CallingConvention.Cdecl )] - [return: MarshalAs( UnmanagedType.I1 )] - public static extern bool SteamAPI_RestartAppIfNecessary( uint unOwnAppID ); - - } - static internal bool Init() - { - return Native.SteamAPI_Init(); - } - - static internal void RunCallbacks() - { - Native.SteamAPI_RunCallbacks(); - } - - static internal void RegisterCallback( IntPtr pCallback, int callback ) - { - Native.SteamAPI_RegisterCallback( pCallback, callback ); - } - - static internal void UnregisterCallback( IntPtr pCallback ) - { - Native.SteamAPI_UnregisterCallback( pCallback ); - } - - static internal void RegisterCallResult( IntPtr pCallback, SteamAPICall_t callback ) - { - Native.SteamAPI_RegisterCallResult( pCallback, callback ); - } - - static internal void UnregisterCallResult( IntPtr pCallback, SteamAPICall_t callback ) - { - Native.SteamAPI_UnregisterCallResult( pCallback, callback ); - } - - static internal void Shutdown() - { - Native.SteamAPI_Shutdown(); - } - - static internal HSteamUser GetHSteamUser() - { - return Native.SteamAPI_GetHSteamUser(); - } - - static internal HSteamPipe GetHSteamPipe() - { - return Native.SteamAPI_GetHSteamPipe(); - } - - static internal bool RestartAppIfNecessary( uint unOwnAppID ) - { - return Native.SteamAPI_RestartAppIfNecessary( unOwnAppID ); - } - - } -} diff --git a/Facepunch.Steamworks/Generated/SteamCallbacks.cs b/Facepunch.Steamworks/Generated/SteamCallbacks.cs new file mode 100644 index 0000000..2642d41 --- /dev/null +++ b/Facepunch.Steamworks/Generated/SteamCallbacks.cs @@ -0,0 +1,3039 @@ +using System; +using System.Runtime.InteropServices; +using System.Linq; +using Steamworks.Data; +using System.Threading.Tasks; + +namespace Steamworks.Data +{ + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamServersConnected_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamServersConnected_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamServersConnected; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamServerConnectFailure_t : ICallbackData + { + internal Result Result; // m_eResult EResult + [MarshalAs(UnmanagedType.I1)] + internal bool StillRetrying; // m_bStillRetrying bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamServerConnectFailure_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamServerConnectFailure; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamServersDisconnected_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamServersDisconnected_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamServersDisconnected; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct ClientGameServerDeny_t : ICallbackData + { + internal uint AppID; // m_uAppID uint32 + internal uint GameServerIP; // m_unGameServerIP uint32 + internal ushort GameServerPort; // m_usGameServerPort uint16 + internal ushort Secure; // m_bSecure uint16 + internal uint Reason; // m_uReason uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ClientGameServerDeny_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ClientGameServerDeny; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct IPCFailure_t : ICallbackData + { + internal byte FailureType; // m_eFailureType uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(IPCFailure_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.IPCFailure; + #endregion + internal enum EFailureType : int + { + FlushedCallbackQueue = 0, + PipeFail = 1, + } + + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LicensesUpdated_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LicensesUpdated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LicensesUpdated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct ValidateAuthTicketResponse_t : ICallbackData + { + internal ulong SteamID; // m_SteamID CSteamID + internal AuthResponse AuthSessionResponse; // m_eAuthSessionResponse EAuthSessionResponse + internal ulong OwnerSteamID; // m_OwnerSteamID CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ValidateAuthTicketResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ValidateAuthTicketResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MicroTxnAuthorizationResponse_t : ICallbackData + { + internal uint AppID; // m_unAppID uint32 + internal ulong OrderID; // m_ulOrderID uint64 + internal byte Authorized; // m_bAuthorized uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MicroTxnAuthorizationResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MicroTxnAuthorizationResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct EncryptedAppTicketResponse_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(EncryptedAppTicketResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.EncryptedAppTicketResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GetAuthSessionTicketResponse_t : ICallbackData + { + internal uint AuthTicket; // m_hAuthTicket HAuthTicket + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetAuthSessionTicketResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GetAuthSessionTicketResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GameWebCallback_t : ICallbackData + { + internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_szURL + internal byte[] URL; // m_szURL char [256] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameWebCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameWebCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct StoreAuthURLResponse_t : ICallbackData + { + internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)] // byte[] m_szURL + internal byte[] URL; // m_szURL char [512] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(StoreAuthURLResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.StoreAuthURLResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MarketEligibilityResponse_t : ICallbackData + { + [MarshalAs(UnmanagedType.I1)] + internal bool Allowed; // m_bAllowed bool + internal MarketNotAllowedReasonFlags NotAllowedReason; // m_eNotAllowedReason EMarketNotAllowedReasonFlags + internal uint TAllowedAtTime; // m_rtAllowedAtTime RTime32 + internal int CdaySteamGuardRequiredDays; // m_cdaySteamGuardRequiredDays int + internal int CdayNewDeviceCooldown; // m_cdayNewDeviceCooldown int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MarketEligibilityResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MarketEligibilityResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct DurationControl_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal AppId Appid; // m_appid AppId_t + [MarshalAs(UnmanagedType.I1)] + internal bool Applicable; // m_bApplicable bool + internal int CsecsLast5h; // m_csecsLast5h int32 + internal DurationControlProgress Progress; // m_progress EDurationControlProgress + internal DurationControlNotification Otification; // m_notification EDurationControlNotification + internal int CsecsToday; // m_csecsToday int32 + internal int CsecsRemaining; // m_csecsRemaining int32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DurationControl_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.DurationControl; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct PersonaStateChange_t : ICallbackData + { + internal ulong SteamID; // m_ulSteamID uint64 + internal int ChangeFlags; // m_nChangeFlags int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(PersonaStateChange_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.PersonaStateChange; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GameOverlayActivated_t : ICallbackData + { + internal byte Active; // m_bActive uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameOverlayActivated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameOverlayActivated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GameServerChangeRequested_t : ICallbackData + { + internal string ServerUTF8() => System.Text.Encoding.UTF8.GetString( Server, 0, System.Array.IndexOf( Server, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] // byte[] m_rgchServer + internal byte[] Server; // m_rgchServer char [64] + internal string PasswordUTF8() => System.Text.Encoding.UTF8.GetString( Password, 0, System.Array.IndexOf( Password, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] // byte[] m_rgchPassword + internal byte[] Password; // m_rgchPassword char [64] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameServerChangeRequested_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameServerChangeRequested; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GameLobbyJoinRequested_t : ICallbackData + { + internal ulong SteamIDLobby; // m_steamIDLobby CSteamID + internal ulong SteamIDFriend; // m_steamIDFriend CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameLobbyJoinRequested_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameLobbyJoinRequested; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct AvatarImageLoaded_t : ICallbackData + { + internal ulong SteamID; // m_steamID CSteamID + internal int Image; // m_iImage int + internal int Wide; // m_iWide int + internal int Tall; // m_iTall int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AvatarImageLoaded_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.AvatarImageLoaded; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct ClanOfficerListResponse_t : ICallbackData + { + internal ulong SteamIDClan; // m_steamIDClan CSteamID + internal int COfficers; // m_cOfficers int + internal byte Success; // m_bSuccess uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ClanOfficerListResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ClanOfficerListResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct FriendRichPresenceUpdate_t : ICallbackData + { + internal ulong SteamIDFriend; // m_steamIDFriend CSteamID + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendRichPresenceUpdate_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FriendRichPresenceUpdate; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GameRichPresenceJoinRequested_t : ICallbackData + { + internal ulong SteamIDFriend; // m_steamIDFriend CSteamID + internal string ConnectUTF8() => System.Text.Encoding.UTF8.GetString( Connect, 0, System.Array.IndexOf( Connect, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchConnect + internal byte[] Connect; // m_rgchConnect char [256] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameRichPresenceJoinRequested_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameRichPresenceJoinRequested; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GameConnectedClanChatMsg_t : ICallbackData + { + internal ulong SteamIDClanChat; // m_steamIDClanChat CSteamID + internal ulong SteamIDUser; // m_steamIDUser CSteamID + internal int MessageID; // m_iMessageID int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedClanChatMsg_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameConnectedClanChatMsg; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GameConnectedChatJoin_t : ICallbackData + { + internal ulong SteamIDClanChat; // m_steamIDClanChat CSteamID + internal ulong SteamIDUser; // m_steamIDUser CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedChatJoin_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameConnectedChatJoin; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GameConnectedChatLeave_t : ICallbackData + { + internal ulong SteamIDClanChat; // m_steamIDClanChat CSteamID + internal ulong SteamIDUser; // m_steamIDUser CSteamID + [MarshalAs(UnmanagedType.I1)] + internal bool Kicked; // m_bKicked bool + [MarshalAs(UnmanagedType.I1)] + internal bool Dropped; // m_bDropped bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedChatLeave_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameConnectedChatLeave; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct DownloadClanActivityCountsResult_t : ICallbackData + { + [MarshalAs(UnmanagedType.I1)] + internal bool Success; // m_bSuccess bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DownloadClanActivityCountsResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.DownloadClanActivityCountsResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct JoinClanChatRoomCompletionResult_t : ICallbackData + { + internal ulong SteamIDClanChat; // m_steamIDClanChat CSteamID + internal RoomEnter ChatRoomEnterResponse; // m_eChatRoomEnterResponse EChatRoomEnterResponse + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(JoinClanChatRoomCompletionResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.JoinClanChatRoomCompletionResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GameConnectedFriendChatMsg_t : ICallbackData + { + internal ulong SteamIDUser; // m_steamIDUser CSteamID + internal int MessageID; // m_iMessageID int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedFriendChatMsg_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GameConnectedFriendChatMsg; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct FriendsGetFollowerCount_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong SteamID; // m_steamID CSteamID + internal int Count; // m_nCount int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendsGetFollowerCount_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FriendsGetFollowerCount; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct FriendsIsFollowing_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong SteamID; // m_steamID CSteamID + [MarshalAs(UnmanagedType.I1)] + internal bool IsFollowing; // m_bIsFollowing bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendsIsFollowing_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FriendsIsFollowing; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct FriendsEnumerateFollowingList_t : ICallbackData + { + internal Result Result; // m_eResult EResult + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + internal ulong[] GSteamID; // m_rgSteamID CSteamID [50] + internal int ResultsReturned; // m_nResultsReturned int32 + internal int TotalResultCount; // m_nTotalResultCount int32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendsEnumerateFollowingList_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FriendsEnumerateFollowingList; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SetPersonaNameResponse_t : ICallbackData + { + [MarshalAs(UnmanagedType.I1)] + internal bool Success; // m_bSuccess bool + [MarshalAs(UnmanagedType.I1)] + internal bool LocalSuccess; // m_bLocalSuccess bool + internal Result Result; // m_result EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SetPersonaNameResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SetPersonaNameResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct UnreadChatMessagesChanged_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UnreadChatMessagesChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UnreadChatMessagesChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct OverlayBrowserProtocolNavigation_t : ICallbackData + { + internal string RgchURIUTF8() => System.Text.Encoding.UTF8.GetString( RgchURI, 0, System.Array.IndexOf( RgchURI, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] // byte[] rgchURI + internal byte[] RgchURI; // rgchURI char [1024] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(OverlayBrowserProtocolNavigation_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.OverlayBrowserProtocolNavigation; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct EquippedProfileItemsChanged_t : ICallbackData + { + internal ulong SteamID; // m_steamID CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(EquippedProfileItemsChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.EquippedProfileItemsChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct EquippedProfileItems_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong SteamID; // m_steamID CSteamID + [MarshalAs(UnmanagedType.I1)] + internal bool HasAnimatedAvatar; // m_bHasAnimatedAvatar bool + [MarshalAs(UnmanagedType.I1)] + internal bool HasAvatarFrame; // m_bHasAvatarFrame bool + [MarshalAs(UnmanagedType.I1)] + internal bool HasProfileModifier; // m_bHasProfileModifier bool + [MarshalAs(UnmanagedType.I1)] + internal bool HasProfileBackground; // m_bHasProfileBackground bool + [MarshalAs(UnmanagedType.I1)] + internal bool HasMiniProfileBackground; // m_bHasMiniProfileBackground bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(EquippedProfileItems_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.EquippedProfileItems; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct IPCountry_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(IPCountry_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.IPCountry; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LowBatteryPower_t : ICallbackData + { + internal byte MinutesBatteryLeft; // m_nMinutesBatteryLeft uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LowBatteryPower_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LowBatteryPower; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamAPICallCompleted_t : ICallbackData + { + internal ulong AsyncCall; // m_hAsyncCall SteamAPICall_t + internal int Callback; // m_iCallback int + internal uint ParamCount; // m_cubParam uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamAPICallCompleted_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamAPICallCompleted; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamShutdown_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamShutdown_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamShutdown; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct CheckFileSignature_t : ICallbackData + { + internal CheckFileSignature CheckFileSignature; // m_eCheckFileSignature ECheckFileSignature + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(CheckFileSignature_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.CheckFileSignature; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GamepadTextInputDismissed_t : ICallbackData + { + [MarshalAs(UnmanagedType.I1)] + internal bool Submitted; // m_bSubmitted bool + internal uint SubmittedText; // m_unSubmittedText uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GamepadTextInputDismissed_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GamepadTextInputDismissed; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct AppResumingFromSuspend_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AppResumingFromSuspend_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.AppResumingFromSuspend; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct FloatingGamepadTextInputDismissed_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FloatingGamepadTextInputDismissed_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FloatingGamepadTextInputDismissed; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct FavoritesListChanged_t : ICallbackData + { + internal uint IP; // m_nIP uint32 + internal uint QueryPort; // m_nQueryPort uint32 + internal uint ConnPort; // m_nConnPort uint32 + internal uint AppID; // m_nAppID uint32 + internal uint Flags; // m_nFlags uint32 + [MarshalAs(UnmanagedType.I1)] + internal bool Add; // m_bAdd bool + internal uint AccountId; // m_unAccountId AccountID_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FavoritesListChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FavoritesListChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyInvite_t : ICallbackData + { + internal ulong SteamIDUser; // m_ulSteamIDUser uint64 + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + internal ulong GameID; // m_ulGameID uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyInvite_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyInvite; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyEnter_t : ICallbackData + { + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + internal uint GfChatPermissions; // m_rgfChatPermissions uint32 + [MarshalAs(UnmanagedType.I1)] + internal bool Locked; // m_bLocked bool + internal uint EChatRoomEnterResponse; // m_EChatRoomEnterResponse uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyEnter_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyEnter; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyDataUpdate_t : ICallbackData + { + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + internal ulong SteamIDMember; // m_ulSteamIDMember uint64 + internal byte Success; // m_bSuccess uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyDataUpdate_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyDataUpdate; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyChatUpdate_t : ICallbackData + { + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + internal ulong SteamIDUserChanged; // m_ulSteamIDUserChanged uint64 + internal ulong SteamIDMakingChange; // m_ulSteamIDMakingChange uint64 + internal uint GfChatMemberStateChange; // m_rgfChatMemberStateChange uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyChatUpdate_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyChatUpdate; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyChatMsg_t : ICallbackData + { + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + internal ulong SteamIDUser; // m_ulSteamIDUser uint64 + internal byte ChatEntryType; // m_eChatEntryType uint8 + internal uint ChatID; // m_iChatID uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyChatMsg_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyChatMsg; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyGameCreated_t : ICallbackData + { + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + internal ulong SteamIDGameServer; // m_ulSteamIDGameServer uint64 + internal uint IP; // m_unIP uint32 + internal ushort Port; // m_usPort uint16 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyGameCreated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyGameCreated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyMatchList_t : ICallbackData + { + internal uint LobbiesMatching; // m_nLobbiesMatching uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyMatchList_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyMatchList; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyKicked_t : ICallbackData + { + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + internal ulong SteamIDAdmin; // m_ulSteamIDAdmin uint64 + internal byte KickedDueToDisconnect; // m_bKickedDueToDisconnect uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyKicked_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyKicked; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LobbyCreated_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyCreated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LobbyCreated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct PSNGameBootInviteResult_t : ICallbackData + { + [MarshalAs(UnmanagedType.I1)] + internal bool GameBootInviteExists; // m_bGameBootInviteExists bool + internal ulong SteamIDLobby; // m_steamIDLobby CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(PSNGameBootInviteResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.PSNGameBootInviteResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct FavoritesListAccountsUpdated_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FavoritesListAccountsUpdated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FavoritesListAccountsUpdated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct SearchForGameProgressCallback_t : ICallbackData + { + internal ulong LSearchID; // m_ullSearchID uint64 + internal Result Result; // m_eResult EResult + internal ulong LobbyID; // m_lobbyID CSteamID + internal ulong SteamIDEndedSearch; // m_steamIDEndedSearch CSteamID + internal int SecondsRemainingEstimate; // m_nSecondsRemainingEstimate int32 + internal int CPlayersSearching; // m_cPlayersSearching int32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SearchForGameProgressCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SearchForGameProgressCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct SearchForGameResultCallback_t : ICallbackData + { + internal ulong LSearchID; // m_ullSearchID uint64 + internal Result Result; // m_eResult EResult + internal int CountPlayersInGame; // m_nCountPlayersInGame int32 + internal int CountAcceptedGame; // m_nCountAcceptedGame int32 + internal ulong SteamIDHost; // m_steamIDHost CSteamID + [MarshalAs(UnmanagedType.I1)] + internal bool FinalCallback; // m_bFinalCallback bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SearchForGameResultCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SearchForGameResultCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RequestPlayersForGameProgressCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong LSearchID; // m_ullSearchID uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RequestPlayersForGameProgressCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RequestPlayersForGameProgressCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct RequestPlayersForGameResultCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong LSearchID; // m_ullSearchID uint64 + internal ulong SteamIDPlayerFound; // m_SteamIDPlayerFound CSteamID + internal ulong SteamIDLobby; // m_SteamIDLobby CSteamID + internal RequestPlayersForGameResultCallback_t.PlayerAcceptState_t PlayerAcceptState; // m_ePlayerAcceptState RequestPlayersForGameResultCallback_t::PlayerAcceptState_t + internal int PlayerIndex; // m_nPlayerIndex int32 + internal int TotalPlayersFound; // m_nTotalPlayersFound int32 + internal int TotalPlayersAcceptedGame; // m_nTotalPlayersAcceptedGame int32 + internal int SuggestedTeamIndex; // m_nSuggestedTeamIndex int32 + internal ulong LUniqueGameID; // m_ullUniqueGameID uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RequestPlayersForGameResultCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RequestPlayersForGameResultCallback; + #endregion + internal enum PlayerAcceptState_t : int + { + Unknown = 0, + PlayerAccepted = 1, + PlayerDeclined = 2, + } + + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RequestPlayersForGameFinalResultCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong LSearchID; // m_ullSearchID uint64 + internal ulong LUniqueGameID; // m_ullUniqueGameID uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RequestPlayersForGameFinalResultCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RequestPlayersForGameFinalResultCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct SubmitPlayerResultResultCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong UllUniqueGameID; // ullUniqueGameID uint64 + internal ulong SteamIDPlayer; // steamIDPlayer CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SubmitPlayerResultResultCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SubmitPlayerResultResultCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct EndGameResultCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong UllUniqueGameID; // ullUniqueGameID uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(EndGameResultCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.EndGameResultCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct JoinPartyCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong BeaconID; // m_ulBeaconID PartyBeaconID_t + internal ulong SteamIDBeaconOwner; // m_SteamIDBeaconOwner CSteamID + internal string ConnectStringUTF8() => System.Text.Encoding.UTF8.GetString( ConnectString, 0, System.Array.IndexOf( ConnectString, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchConnectString + internal byte[] ConnectString; // m_rgchConnectString char [256] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(JoinPartyCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.JoinPartyCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct CreateBeaconCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong BeaconID; // m_ulBeaconID PartyBeaconID_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(CreateBeaconCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.CreateBeaconCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct ReservationNotificationCallback_t : ICallbackData + { + internal ulong BeaconID; // m_ulBeaconID PartyBeaconID_t + internal ulong SteamIDJoiner; // m_steamIDJoiner CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ReservationNotificationCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ReservationNotificationCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct ChangeNumOpenSlotsCallback_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ChangeNumOpenSlotsCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ChangeNumOpenSlotsCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct AvailableBeaconLocationsUpdated_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AvailableBeaconLocationsUpdated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.AvailableBeaconLocationsUpdated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct ActiveBeaconsUpdated_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ActiveBeaconsUpdated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ActiveBeaconsUpdated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageFileShareResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong File; // m_hFile UGCHandle_t + internal string FilenameUTF8() => System.Text.Encoding.UTF8.GetString( Filename, 0, System.Array.IndexOf( Filename, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] // byte[] m_rgchFilename + internal byte[] Filename; // m_rgchFilename char [260] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageFileShareResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageFileShareResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStoragePublishFileResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + [MarshalAs(UnmanagedType.I1)] + internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishFileResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStoragePublishFileResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageDeletePublishedFileResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageDeletePublishedFileResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageDeletePublishedFileResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageEnumerateUserPublishedFilesResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal int ResultsReturned; // m_nResultsReturned int32 + internal int TotalResultCount; // m_nTotalResultCount int32 + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateUserPublishedFilesResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageEnumerateUserPublishedFilesResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageSubscribePublishedFileResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageSubscribePublishedFileResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageSubscribePublishedFileResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageEnumerateUserSubscribedFilesResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal int ResultsReturned; // m_nResultsReturned int32 + internal int TotalResultCount; // m_nTotalResultCount int32 + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + internal uint[] GRTimeSubscribed; // m_rgRTimeSubscribed uint32 [50] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateUserSubscribedFilesResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageEnumerateUserSubscribedFilesResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageUnsubscribePublishedFileResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUnsubscribePublishedFileResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageUnsubscribePublishedFileResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageUpdatePublishedFileResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + [MarshalAs(UnmanagedType.I1)] + internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUpdatePublishedFileResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageUpdatePublishedFileResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageDownloadUGCResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong File; // m_hFile UGCHandle_t + internal AppId AppID; // m_nAppID AppId_t + internal int SizeInBytes; // m_nSizeInBytes int32 + internal string PchFileNameUTF8() => System.Text.Encoding.UTF8.GetString( PchFileName, 0, System.Array.IndexOf( PchFileName, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] // byte[] m_pchFileName + internal byte[] PchFileName; // m_pchFileName char [260] + internal ulong SteamIDOwner; // m_ulSteamIDOwner uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageDownloadUGCResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageDownloadUGCResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageGetPublishedFileDetailsResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal AppId CreatorAppID; // m_nCreatorAppID AppId_t + internal AppId ConsumerAppID; // m_nConsumerAppID AppId_t + internal string TitleUTF8() => System.Text.Encoding.UTF8.GetString( Title, 0, System.Array.IndexOf( Title, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 129)] // byte[] m_rgchTitle + internal byte[] Title; // m_rgchTitle char [129] + internal string DescriptionUTF8() => System.Text.Encoding.UTF8.GetString( Description, 0, System.Array.IndexOf( Description, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8000)] // byte[] m_rgchDescription + internal byte[] Description; // m_rgchDescription char [8000] + internal ulong File; // m_hFile UGCHandle_t + internal ulong PreviewFile; // m_hPreviewFile UGCHandle_t + internal ulong SteamIDOwner; // m_ulSteamIDOwner uint64 + internal uint TimeCreated; // m_rtimeCreated uint32 + internal uint TimeUpdated; // m_rtimeUpdated uint32 + internal RemoteStoragePublishedFileVisibility Visibility; // m_eVisibility ERemoteStoragePublishedFileVisibility + [MarshalAs(UnmanagedType.I1)] + internal bool Banned; // m_bBanned bool + internal string TagsUTF8() => System.Text.Encoding.UTF8.GetString( Tags, 0, System.Array.IndexOf( Tags, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1025)] // byte[] m_rgchTags + internal byte[] Tags; // m_rgchTags char [1025] + [MarshalAs(UnmanagedType.I1)] + internal bool TagsTruncated; // m_bTagsTruncated bool + internal string PchFileNameUTF8() => System.Text.Encoding.UTF8.GetString( PchFileName, 0, System.Array.IndexOf( PchFileName, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] // byte[] m_pchFileName + internal byte[] PchFileName; // m_pchFileName char [260] + internal int FileSize; // m_nFileSize int32 + internal int PreviewFileSize; // m_nPreviewFileSize int32 + internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchURL + internal byte[] URL; // m_rgchURL char [256] + internal WorkshopFileType FileType; // m_eFileType EWorkshopFileType + [MarshalAs(UnmanagedType.I1)] + internal bool AcceptedForUse; // m_bAcceptedForUse bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageGetPublishedFileDetailsResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageGetPublishedFileDetailsResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageEnumerateWorkshopFilesResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal int ResultsReturned; // m_nResultsReturned int32 + internal int TotalResultCount; // m_nTotalResultCount int32 + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.R4)] + internal float[] GScore; // m_rgScore float [50] + internal AppId AppId; // m_nAppId AppId_t + internal uint StartIndex; // m_unStartIndex uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateWorkshopFilesResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageEnumerateWorkshopFilesResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageGetPublishedItemVoteDetailsResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_unPublishedFileId PublishedFileId_t + internal int VotesFor; // m_nVotesFor int32 + internal int VotesAgainst; // m_nVotesAgainst int32 + internal int Reports; // m_nReports int32 + internal float FScore; // m_fScore float + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageGetPublishedItemVoteDetailsResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageGetPublishedItemVoteDetailsResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStoragePublishedFileSubscribed_t : ICallbackData + { + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileSubscribed_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStoragePublishedFileSubscribed; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStoragePublishedFileUnsubscribed_t : ICallbackData + { + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileUnsubscribed_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStoragePublishedFileUnsubscribed; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStoragePublishedFileDeleted_t : ICallbackData + { + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileDeleted_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStoragePublishedFileDeleted; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageUpdateUserPublishedItemVoteResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUpdateUserPublishedItemVoteResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageUpdateUserPublishedItemVoteResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageUserVoteDetails_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal WorkshopVote Vote; // m_eVote EWorkshopVote + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUserVoteDetails_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageUserVoteDetails; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal int ResultsReturned; // m_nResultsReturned int32 + internal int TotalResultCount; // m_nTotalResultCount int32 + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateUserSharedWorkshopFilesResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageEnumerateUserSharedWorkshopFilesResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageSetUserPublishedFileActionResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal WorkshopFileAction Action; // m_eAction EWorkshopFileAction + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageSetUserPublishedFileActionResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageSetUserPublishedFileActionResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal WorkshopFileAction Action; // m_eAction EWorkshopFileAction + internal int ResultsReturned; // m_nResultsReturned int32 + internal int TotalResultCount; // m_nTotalResultCount int32 + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + internal uint[] GRTimeUpdated; // m_rgRTimeUpdated uint32 [50] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumeratePublishedFilesByUserActionResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageEnumeratePublishedFilesByUserActionResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStoragePublishFileProgress_t : ICallbackData + { + internal double DPercentFile; // m_dPercentFile double + [MarshalAs(UnmanagedType.I1)] + internal bool Preview; // m_bPreview bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishFileProgress_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStoragePublishFileProgress; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStoragePublishedFileUpdated_t : ICallbackData + { + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal AppId AppID; // m_nAppID AppId_t + internal ulong Unused; // m_ulUnused uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileUpdated_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStoragePublishedFileUpdated; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageFileWriteAsyncComplete_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageFileWriteAsyncComplete_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageFileWriteAsyncComplete; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageFileReadAsyncComplete_t : ICallbackData + { + internal ulong FileReadAsync; // m_hFileReadAsync SteamAPICall_t + internal Result Result; // m_eResult EResult + internal uint Offset; // m_nOffset uint32 + internal uint Read; // m_cubRead uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageFileReadAsyncComplete_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageFileReadAsyncComplete; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoteStorageLocalFileChange_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageLocalFileChange_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoteStorageLocalFileChange; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct UserStatsReceived_t : ICallbackData + { + internal ulong GameID; // m_nGameID uint64 + internal Result Result; // m_eResult EResult + internal ulong SteamIDUser; // m_steamIDUser CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserStatsReceived_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UserStatsReceived; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct UserStatsStored_t : ICallbackData + { + internal ulong GameID; // m_nGameID uint64 + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserStatsStored_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UserStatsStored; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct UserAchievementStored_t : ICallbackData + { + internal ulong GameID; // m_nGameID uint64 + [MarshalAs(UnmanagedType.I1)] + internal bool GroupAchievement; // m_bGroupAchievement bool + internal string AchievementNameUTF8() => System.Text.Encoding.UTF8.GetString( AchievementName, 0, System.Array.IndexOf( AchievementName, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_rgchAchievementName + internal byte[] AchievementName; // m_rgchAchievementName char [128] + internal uint CurProgress; // m_nCurProgress uint32 + internal uint MaxProgress; // m_nMaxProgress uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserAchievementStored_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UserAchievementStored; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LeaderboardFindResult_t : ICallbackData + { + internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t + internal byte LeaderboardFound; // m_bLeaderboardFound uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardFindResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LeaderboardFindResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LeaderboardScoresDownloaded_t : ICallbackData + { + internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t + internal ulong SteamLeaderboardEntries; // m_hSteamLeaderboardEntries SteamLeaderboardEntries_t + internal int CEntryCount; // m_cEntryCount int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardScoresDownloaded_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LeaderboardScoresDownloaded; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LeaderboardScoreUploaded_t : ICallbackData + { + internal byte Success; // m_bSuccess uint8 + internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t + internal int Score; // m_nScore int32 + internal byte ScoreChanged; // m_bScoreChanged uint8 + internal int GlobalRankNew; // m_nGlobalRankNew int + internal int GlobalRankPrevious; // m_nGlobalRankPrevious int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardScoreUploaded_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LeaderboardScoreUploaded; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct NumberOfCurrentPlayers_t : ICallbackData + { + internal byte Success; // m_bSuccess uint8 + internal int CPlayers; // m_cPlayers int32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(NumberOfCurrentPlayers_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.NumberOfCurrentPlayers; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct UserStatsUnloaded_t : ICallbackData + { + internal ulong SteamIDUser; // m_steamIDUser CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserStatsUnloaded_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UserStatsUnloaded; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct UserAchievementIconFetched_t : ICallbackData + { + internal GameId GameID; // m_nGameID CGameID + internal string AchievementNameUTF8() => System.Text.Encoding.UTF8.GetString( AchievementName, 0, System.Array.IndexOf( AchievementName, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_rgchAchievementName + internal byte[] AchievementName; // m_rgchAchievementName char [128] + [MarshalAs(UnmanagedType.I1)] + internal bool Achieved; // m_bAchieved bool + internal int IconHandle; // m_nIconHandle int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserAchievementIconFetched_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UserAchievementIconFetched; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GlobalAchievementPercentagesReady_t : ICallbackData + { + internal ulong GameID; // m_nGameID uint64 + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GlobalAchievementPercentagesReady_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GlobalAchievementPercentagesReady; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct LeaderboardUGCSet_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardUGCSet_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.LeaderboardUGCSet; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GlobalStatsReceived_t : ICallbackData + { + internal ulong GameID; // m_nGameID uint64 + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GlobalStatsReceived_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GlobalStatsReceived; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct DlcInstalled_t : ICallbackData + { + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DlcInstalled_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.DlcInstalled; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RegisterActivationCodeResponse_t : ICallbackData + { + internal RegisterActivationCodeResult Result; // m_eResult ERegisterActivationCodeResult + internal uint PackageRegistered; // m_unPackageRegistered uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RegisterActivationCodeResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RegisterActivationCodeResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct NewUrlLaunchParameters_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(NewUrlLaunchParameters_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.NewUrlLaunchParameters; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct AppProofOfPurchaseKeyResponse_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal uint AppID; // m_nAppID uint32 + internal uint CchKeyLength; // m_cchKeyLength uint32 + internal string KeyUTF8() => System.Text.Encoding.UTF8.GetString( Key, 0, System.Array.IndexOf( Key, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 240)] // byte[] m_rgchKey + internal byte[] Key; // m_rgchKey char [240] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AppProofOfPurchaseKeyResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.AppProofOfPurchaseKeyResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct FileDetailsResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong FileSize; // m_ulFileSize uint64 + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] // m_FileSHA + internal byte[] FileSHA; // m_FileSHA uint8 [20] + internal uint Flags; // m_unFlags uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FileDetailsResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.FileDetailsResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct TimedTrialStatus_t : ICallbackData + { + internal AppId AppID; // m_unAppID AppId_t + [MarshalAs(UnmanagedType.I1)] + internal bool IsOffline; // m_bIsOffline bool + internal uint SecondsAllowed; // m_unSecondsAllowed uint32 + internal uint SecondsPlayed; // m_unSecondsPlayed uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(TimedTrialStatus_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.TimedTrialStatus; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct P2PSessionRequest_t : ICallbackData + { + internal ulong SteamIDRemote; // m_steamIDRemote CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(P2PSessionRequest_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.P2PSessionRequest; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct P2PSessionConnectFail_t : ICallbackData + { + internal ulong SteamIDRemote; // m_steamIDRemote CSteamID + internal byte P2PSessionError; // m_eP2PSessionError uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(P2PSessionConnectFail_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.P2PSessionConnectFail; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct ScreenshotReady_t : ICallbackData + { + internal uint Local; // m_hLocal ScreenshotHandle + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ScreenshotReady_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ScreenshotReady; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct ScreenshotRequested_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ScreenshotRequested_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ScreenshotRequested; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct PlaybackStatusHasChanged_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(PlaybackStatusHasChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.PlaybackStatusHasChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct VolumeHasChanged_t : ICallbackData + { + internal float NewVolume; // m_flNewVolume float + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(VolumeHasChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.VolumeHasChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerRemoteWillActivate_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerRemoteWillActivate_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerRemoteWillActivate; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerRemoteWillDeactivate_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerRemoteWillDeactivate_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerRemoteWillDeactivate; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerRemoteToFront_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerRemoteToFront_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerRemoteToFront; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWillQuit_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWillQuit_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWillQuit; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsPlay_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsPlay_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsPlay; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsPause_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsPause_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsPause; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsPlayPrevious_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsPlayPrevious_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsPlayPrevious; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsPlayNext_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsPlayNext_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsPlayNext; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsShuffled_t : ICallbackData + { + [MarshalAs(UnmanagedType.I1)] + internal bool Shuffled; // m_bShuffled bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsShuffled_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsShuffled; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsLooped_t : ICallbackData + { + [MarshalAs(UnmanagedType.I1)] + internal bool Looped; // m_bLooped bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsLooped_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsLooped; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsVolume_t : ICallbackData + { + internal float NewVolume; // m_flNewVolume float + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsVolume_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsVolume; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerSelectsQueueEntry_t : ICallbackData + { + internal int NID; // nID int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerSelectsQueueEntry_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerSelectsQueueEntry; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerSelectsPlaylistEntry_t : ICallbackData + { + internal int NID; // nID int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerSelectsPlaylistEntry_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerSelectsPlaylistEntry; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct MusicPlayerWantsPlayingRepeatStatus_t : ICallbackData + { + internal int PlayingRepeatStatus; // m_nPlayingRepeatStatus int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsPlayingRepeatStatus_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.MusicPlayerWantsPlayingRepeatStatus; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTTPRequestCompleted_t : ICallbackData + { + internal uint Request; // m_hRequest HTTPRequestHandle + internal ulong ContextValue; // m_ulContextValue uint64 + [MarshalAs(UnmanagedType.I1)] + internal bool RequestSuccessful; // m_bRequestSuccessful bool + internal HTTPStatusCode StatusCode; // m_eStatusCode EHTTPStatusCode + internal uint BodySize; // m_unBodySize uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTTPRequestCompleted_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTTPRequestCompleted; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTTPRequestHeadersReceived_t : ICallbackData + { + internal uint Request; // m_hRequest HTTPRequestHandle + internal ulong ContextValue; // m_ulContextValue uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTTPRequestHeadersReceived_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTTPRequestHeadersReceived; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTTPRequestDataReceived_t : ICallbackData + { + internal uint Request; // m_hRequest HTTPRequestHandle + internal ulong ContextValue; // m_ulContextValue uint64 + internal uint COffset; // m_cOffset uint32 + internal uint CBytesReceived; // m_cBytesReceived uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTTPRequestDataReceived_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTTPRequestDataReceived; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamInputDeviceConnected_t : ICallbackData + { + internal ulong ConnectedDeviceHandle; // m_ulConnectedDeviceHandle InputHandle_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInputDeviceConnected_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInputDeviceConnected; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamInputDeviceDisconnected_t : ICallbackData + { + internal ulong DisconnectedDeviceHandle; // m_ulDisconnectedDeviceHandle InputHandle_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInputDeviceDisconnected_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInputDeviceDisconnected; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct SteamInputConfigurationLoaded_t : ICallbackData + { + internal AppId AppID; // m_unAppID AppId_t + internal ulong DeviceHandle; // m_ulDeviceHandle InputHandle_t + internal ulong MappingCreator; // m_ulMappingCreator CSteamID + internal uint MajorRevision; // m_unMajorRevision uint32 + internal uint MinorRevision; // m_unMinorRevision uint32 + [MarshalAs(UnmanagedType.I1)] + internal bool UsesSteamInputAPI; // m_bUsesSteamInputAPI bool + [MarshalAs(UnmanagedType.I1)] + internal bool UsesGamepadAPI; // m_bUsesGamepadAPI bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInputConfigurationLoaded_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInputConfigurationLoaded; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamUGCQueryCompleted_t : ICallbackData + { + internal ulong Handle; // m_handle UGCQueryHandle_t + internal Result Result; // m_eResult EResult + internal uint NumResultsReturned; // m_unNumResultsReturned uint32 + internal uint TotalMatchingResults; // m_unTotalMatchingResults uint32 + [MarshalAs(UnmanagedType.I1)] + internal bool CachedData; // m_bCachedData bool + internal string NextCursorUTF8() => System.Text.Encoding.UTF8.GetString( NextCursor, 0, System.Array.IndexOf( NextCursor, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchNextCursor + internal byte[] NextCursor; // m_rgchNextCursor char [256] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamUGCQueryCompleted_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamUGCQueryCompleted; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamUGCRequestUGCDetailsResult_t : ICallbackData + { + internal SteamUGCDetails_t Details; // m_details SteamUGCDetails_t + [MarshalAs(UnmanagedType.I1)] + internal bool CachedData; // m_bCachedData bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamUGCRequestUGCDetailsResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamUGCRequestUGCDetailsResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct CreateItemResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + [MarshalAs(UnmanagedType.I1)] + internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(CreateItemResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.CreateItemResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SubmitItemUpdateResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + [MarshalAs(UnmanagedType.I1)] + internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement bool + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SubmitItemUpdateResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SubmitItemUpdateResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct ItemInstalled_t : ICallbackData + { + internal AppId AppID; // m_unAppID AppId_t + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ItemInstalled_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ItemInstalled; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct DownloadItemResult_t : ICallbackData + { + internal AppId AppID; // m_unAppID AppId_t + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DownloadItemResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.DownloadItemResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct UserFavoriteItemsListChanged_t : ICallbackData + { + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal Result Result; // m_eResult EResult + [MarshalAs(UnmanagedType.I1)] + internal bool WasAddRequest; // m_bWasAddRequest bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserFavoriteItemsListChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UserFavoriteItemsListChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SetUserItemVoteResult_t : ICallbackData + { + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal Result Result; // m_eResult EResult + [MarshalAs(UnmanagedType.I1)] + internal bool VoteUp; // m_bVoteUp bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SetUserItemVoteResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SetUserItemVoteResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GetUserItemVoteResult_t : ICallbackData + { + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal Result Result; // m_eResult EResult + [MarshalAs(UnmanagedType.I1)] + internal bool VotedUp; // m_bVotedUp bool + [MarshalAs(UnmanagedType.I1)] + internal bool VotedDown; // m_bVotedDown bool + [MarshalAs(UnmanagedType.I1)] + internal bool VoteSkipped; // m_bVoteSkipped bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetUserItemVoteResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GetUserItemVoteResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct StartPlaytimeTrackingResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(StartPlaytimeTrackingResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.StartPlaytimeTrackingResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct StopPlaytimeTrackingResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(StopPlaytimeTrackingResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.StopPlaytimeTrackingResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct AddUGCDependencyResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal PublishedFileId ChildPublishedFileId; // m_nChildPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AddUGCDependencyResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.AddUGCDependencyResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoveUGCDependencyResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal PublishedFileId ChildPublishedFileId; // m_nChildPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoveUGCDependencyResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoveUGCDependencyResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct AddAppDependencyResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AddAppDependencyResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.AddAppDependencyResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct RemoveAppDependencyResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoveAppDependencyResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.RemoveAppDependencyResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GetAppDependenciesResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.U4)] + internal AppId[] GAppIDs; // m_rgAppIDs AppId_t [32] + internal uint NumAppDependencies; // m_nNumAppDependencies uint32 + internal uint TotalNumAppDependencies; // m_nTotalNumAppDependencies uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetAppDependenciesResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GetAppDependenciesResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct DeleteItemResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DeleteItemResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.DeleteItemResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct UserSubscribedItemsListChanged_t : ICallbackData + { + internal AppId AppID; // m_nAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserSubscribedItemsListChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.UserSubscribedItemsListChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct WorkshopEULAStatus_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal AppId AppID; // m_nAppID AppId_t + internal uint Version; // m_unVersion uint32 + internal uint TAction; // m_rtAction RTime32 + [MarshalAs(UnmanagedType.I1)] + internal bool Accepted; // m_bAccepted bool + [MarshalAs(UnmanagedType.I1)] + internal bool NeedsAction; // m_bNeedsAction bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(WorkshopEULAStatus_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.WorkshopEULAStatus; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamAppInstalled_t : ICallbackData + { + internal AppId AppID; // m_nAppID AppId_t + internal int InstallFolderIndex; // m_iInstallFolderIndex int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamAppInstalled_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamAppInstalled; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamAppUninstalled_t : ICallbackData + { + internal AppId AppID; // m_nAppID AppId_t + internal int InstallFolderIndex; // m_iInstallFolderIndex int + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamAppUninstalled_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamAppUninstalled; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_BrowserReady_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_BrowserReady_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_BrowserReady; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_NeedsPaint_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PBGRA; // pBGRA const char * + internal uint UnWide; // unWide uint32 + internal uint UnTall; // unTall uint32 + internal uint UnUpdateX; // unUpdateX uint32 + internal uint UnUpdateY; // unUpdateY uint32 + internal uint UnUpdateWide; // unUpdateWide uint32 + internal uint UnUpdateTall; // unUpdateTall uint32 + internal uint UnScrollX; // unScrollX uint32 + internal uint UnScrollY; // unScrollY uint32 + internal float FlPageScale; // flPageScale float + internal uint UnPageSerial; // unPageSerial uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_NeedsPaint_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_NeedsPaint; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_StartRequest_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchURL; // pchURL const char * + internal string PchTarget; // pchTarget const char * + internal string PchPostData; // pchPostData const char * + [MarshalAs(UnmanagedType.I1)] + internal bool BIsRedirect; // bIsRedirect bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_StartRequest_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_StartRequest; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_CloseBrowser_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_CloseBrowser_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_CloseBrowser; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_URLChanged_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchURL; // pchURL const char * + internal string PchPostData; // pchPostData const char * + [MarshalAs(UnmanagedType.I1)] + internal bool BIsRedirect; // bIsRedirect bool + internal string PchPageTitle; // pchPageTitle const char * + [MarshalAs(UnmanagedType.I1)] + internal bool BNewNavigation; // bNewNavigation bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_URLChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_URLChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_FinishedRequest_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchURL; // pchURL const char * + internal string PchPageTitle; // pchPageTitle const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_FinishedRequest_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_FinishedRequest; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_OpenLinkInNewTab_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchURL; // pchURL const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_OpenLinkInNewTab_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_OpenLinkInNewTab; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_ChangedTitle_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchTitle; // pchTitle const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_ChangedTitle_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_ChangedTitle; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_SearchResults_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal uint UnResults; // unResults uint32 + internal uint UnCurrentMatch; // unCurrentMatch uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_SearchResults_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_SearchResults; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_CanGoBackAndForward_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + [MarshalAs(UnmanagedType.I1)] + internal bool BCanGoBack; // bCanGoBack bool + [MarshalAs(UnmanagedType.I1)] + internal bool BCanGoForward; // bCanGoForward bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_CanGoBackAndForward_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_CanGoBackAndForward; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_HorizontalScroll_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal uint UnScrollMax; // unScrollMax uint32 + internal uint UnScrollCurrent; // unScrollCurrent uint32 + internal float FlPageScale; // flPageScale float + [MarshalAs(UnmanagedType.I1)] + internal bool BVisible; // bVisible bool + internal uint UnPageSize; // unPageSize uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_HorizontalScroll_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_HorizontalScroll; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_VerticalScroll_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal uint UnScrollMax; // unScrollMax uint32 + internal uint UnScrollCurrent; // unScrollCurrent uint32 + internal float FlPageScale; // flPageScale float + [MarshalAs(UnmanagedType.I1)] + internal bool BVisible; // bVisible bool + internal uint UnPageSize; // unPageSize uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_VerticalScroll_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_VerticalScroll; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_LinkAtPosition_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal uint X; // x uint32 + internal uint Y; // y uint32 + internal string PchURL; // pchURL const char * + [MarshalAs(UnmanagedType.I1)] + internal bool BInput; // bInput bool + [MarshalAs(UnmanagedType.I1)] + internal bool BLiveLink; // bLiveLink bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_LinkAtPosition_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_LinkAtPosition; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_JSAlert_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchMessage; // pchMessage const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_JSAlert_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_JSAlert; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_JSConfirm_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchMessage; // pchMessage const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_JSConfirm_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_JSConfirm; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_FileOpenDialog_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchTitle; // pchTitle const char * + internal string PchInitialFile; // pchInitialFile const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_FileOpenDialog_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_FileOpenDialog; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_NewWindow_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchURL; // pchURL const char * + internal uint UnX; // unX uint32 + internal uint UnY; // unY uint32 + internal uint UnWide; // unWide uint32 + internal uint UnTall; // unTall uint32 + internal uint UnNewWindow_BrowserHandle_IGNORE; // unNewWindow_BrowserHandle_IGNORE HHTMLBrowser + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_NewWindow_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_NewWindow; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_SetCursor_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal uint EMouseCursor; // eMouseCursor uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_SetCursor_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_SetCursor; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_StatusText_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchMsg; // pchMsg const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_StatusText_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_StatusText; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_ShowToolTip_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchMsg; // pchMsg const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_ShowToolTip_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_ShowToolTip; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_UpdateToolTip_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal string PchMsg; // pchMsg const char * + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_UpdateToolTip_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_UpdateToolTip; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_HideToolTip_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_HideToolTip_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_HideToolTip; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct HTML_BrowserRestarted_t : ICallbackData + { + internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser + internal uint UnOldBrowserHandle; // unOldBrowserHandle HHTMLBrowser + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_BrowserRestarted_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.HTML_BrowserRestarted; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamInventoryResultReady_t : ICallbackData + { + internal int Handle; // m_handle SteamInventoryResult_t + internal Result Result; // m_result EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryResultReady_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInventoryResultReady; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamInventoryFullUpdate_t : ICallbackData + { + internal int Handle; // m_handle SteamInventoryResult_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryFullUpdate_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInventoryFullUpdate; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamInventoryDefinitionUpdate_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryDefinitionUpdate_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInventoryDefinitionUpdate; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct SteamInventoryEligiblePromoItemDefIDs_t : ICallbackData + { + internal Result Result; // m_result EResult + internal ulong SteamID; // m_steamID CSteamID + internal int UmEligiblePromoItemDefs; // m_numEligiblePromoItemDefs int + [MarshalAs(UnmanagedType.I1)] + internal bool CachedData; // m_bCachedData bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryEligiblePromoItemDefIDs_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInventoryEligiblePromoItemDefIDs; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamInventoryStartPurchaseResult_t : ICallbackData + { + internal Result Result; // m_result EResult + internal ulong OrderID; // m_ulOrderID uint64 + internal ulong TransID; // m_ulTransID uint64 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryStartPurchaseResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInventoryStartPurchaseResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamInventoryRequestPricesResult_t : ICallbackData + { + internal Result Result; // m_result EResult + internal string CurrencyUTF8() => System.Text.Encoding.UTF8.GetString( Currency, 0, System.Array.IndexOf( Currency, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] // byte[] m_rgchCurrency + internal byte[] Currency; // m_rgchCurrency char [4] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryRequestPricesResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamInventoryRequestPricesResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GetVideoURLResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal AppId VideoAppID; // m_unVideoAppID AppId_t + internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchURL + internal byte[] URL; // m_rgchURL char [256] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetVideoURLResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GetVideoURLResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GetOPFSettingsResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal AppId VideoAppID; // m_unVideoAppID AppId_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetOPFSettingsResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GetOPFSettingsResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamParentalSettingsChanged_t : ICallbackData + { + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamParentalSettingsChanged_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamParentalSettingsChanged; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamRemotePlaySessionConnected_t : ICallbackData + { + internal uint SessionID; // m_unSessionID RemotePlaySessionID_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamRemotePlaySessionConnected_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamRemotePlaySessionConnected; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamRemotePlaySessionDisconnected_t : ICallbackData + { + internal uint SessionID; // m_unSessionID RemotePlaySessionID_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamRemotePlaySessionDisconnected_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamRemotePlaySessionDisconnected; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamNetworkingMessagesSessionRequest_t : ICallbackData + { + internal NetIdentity DentityRemote; // m_identityRemote SteamNetworkingIdentity + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamNetworkingMessagesSessionRequest_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamNetworkingMessagesSessionRequest; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamNetworkingMessagesSessionFailed_t : ICallbackData + { + internal ConnectionInfo Nfo; // m_info SteamNetConnectionInfo_t + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamNetworkingMessagesSessionFailed_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamNetworkingMessagesSessionFailed; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamNetConnectionStatusChangedCallback_t : ICallbackData + { + internal Connection Conn; // m_hConn HSteamNetConnection + internal ConnectionInfo Nfo; // m_info SteamNetConnectionInfo_t + internal ConnectionState OldState; // m_eOldState ESteamNetworkingConnectionState + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamNetConnectionStatusChangedCallback_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamNetConnectionStatusChangedCallback; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamNetAuthenticationStatus_t : ICallbackData + { + internal SteamNetworkingAvailability Avail; // m_eAvail ESteamNetworkingAvailability + internal string DebugMsgUTF8() => System.Text.Encoding.UTF8.GetString( DebugMsg, 0, System.Array.IndexOf( DebugMsg, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_debugMsg + internal byte[] DebugMsg; // m_debugMsg char [256] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamNetAuthenticationStatus_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamNetAuthenticationStatus; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamRelayNetworkStatus_t : ICallbackData + { + internal SteamNetworkingAvailability Avail; // m_eAvail ESteamNetworkingAvailability + internal int PingMeasurementInProgress; // m_bPingMeasurementInProgress int + internal SteamNetworkingAvailability AvailNetworkConfig; // m_eAvailNetworkConfig ESteamNetworkingAvailability + internal SteamNetworkingAvailability AvailAnyRelay; // m_eAvailAnyRelay ESteamNetworkingAvailability + internal string DebugMsgUTF8() => System.Text.Encoding.UTF8.GetString( DebugMsg, 0, System.Array.IndexOf( DebugMsg, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_debugMsg + internal byte[] DebugMsg; // m_debugMsg char [256] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamRelayNetworkStatus_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamRelayNetworkStatus; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GSClientApprove_t : ICallbackData + { + internal ulong SteamID; // m_SteamID CSteamID + internal ulong OwnerSteamID; // m_OwnerSteamID CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientApprove_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSClientApprove; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GSClientDeny_t : ICallbackData + { + internal ulong SteamID; // m_SteamID CSteamID + internal DenyReason DenyReason; // m_eDenyReason EDenyReason + internal string OptionalTextUTF8() => System.Text.Encoding.UTF8.GetString( OptionalText, 0, System.Array.IndexOf( OptionalText, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_rgchOptionalText + internal byte[] OptionalText; // m_rgchOptionalText char [128] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientDeny_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSClientDeny; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GSClientKick_t : ICallbackData + { + internal ulong SteamID; // m_SteamID CSteamID + internal DenyReason DenyReason; // m_eDenyReason EDenyReason + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientKick_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSClientKick; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GSClientAchievementStatus_t : ICallbackData + { + internal ulong SteamID; // m_SteamID uint64 + internal string PchAchievementUTF8() => System.Text.Encoding.UTF8.GetString( PchAchievement, 0, System.Array.IndexOf( PchAchievement, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_pchAchievement + internal byte[] PchAchievement; // m_pchAchievement char [128] + [MarshalAs(UnmanagedType.I1)] + internal bool Unlocked; // m_bUnlocked bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientAchievementStatus_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSClientAchievementStatus; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GSPolicyResponse_t : ICallbackData + { + internal byte Secure; // m_bSecure uint8 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSPolicyResponse_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSPolicyResponse; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GSGameplayStats_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal int Rank; // m_nRank int32 + internal uint TotalConnects; // m_unTotalConnects uint32 + internal uint TotalMinutesPlayed; // m_unTotalMinutesPlayed uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSGameplayStats_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSGameplayStats; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GSClientGroupStatus_t : ICallbackData + { + internal ulong SteamIDUser; // m_SteamIDUser CSteamID + internal ulong SteamIDGroup; // m_SteamIDGroup CSteamID + [MarshalAs(UnmanagedType.I1)] + internal bool Member; // m_bMember bool + [MarshalAs(UnmanagedType.I1)] + internal bool Officer; // m_bOfficer bool + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientGroupStatus_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSClientGroupStatus; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GSReputation_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal uint ReputationScore; // m_unReputationScore uint32 + [MarshalAs(UnmanagedType.I1)] + internal bool Banned; // m_bBanned bool + internal uint BannedIP; // m_unBannedIP uint32 + internal ushort BannedPort; // m_usBannedPort uint16 + internal ulong BannedGameID; // m_ulBannedGameID uint64 + internal uint BanExpires; // m_unBanExpires uint32 + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSReputation_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSReputation; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct AssociateWithClanResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AssociateWithClanResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.AssociateWithClanResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct ComputeNewPlayerCompatibilityResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal int CPlayersThatDontLikeCandidate; // m_cPlayersThatDontLikeCandidate int + internal int CPlayersThatCandidateDoesntLike; // m_cPlayersThatCandidateDoesntLike int + internal int CClanPlayersThatDontLikeCandidate; // m_cClanPlayersThatDontLikeCandidate int + internal ulong SteamIDCandidate; // m_SteamIDCandidate CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ComputeNewPlayerCompatibilityResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.ComputeNewPlayerCompatibilityResult; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GSStatsReceived_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong SteamIDUser; // m_steamIDUser CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSStatsReceived_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSStatsReceived; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] + internal struct GSStatsStored_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal ulong SteamIDUser; // m_steamIDUser CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSStatsStored_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSStatsStored; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct GSStatsUnloaded_t : ICallbackData + { + internal ulong SteamIDUser; // m_steamIDUser CSteamID + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSStatsUnloaded_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.GSStatsUnloaded; + #endregion + } + + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + internal struct SteamNetworkingFakeIPResult_t : ICallbackData + { + internal Result Result; // m_eResult EResult + internal NetIdentity Dentity; // m_identity SteamNetworkingIdentity + internal uint IP; // m_unIP uint32 + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.U2)] + internal ushort[] Ports; // m_unPorts uint16 [8] + + #region SteamCallback + public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamNetworkingFakeIPResult_t) ); + public int DataSize => _datasize; + public CallbackType CallbackType => CallbackType.SteamNetworkingFakeIPResult; + #endregion + } + +} diff --git a/Facepunch.Steamworks/Generated/SteamConstants.cs b/Facepunch.Steamworks/Generated/SteamConstants.cs index 35c3b45..fcdd12f 100644 --- a/Facepunch.Steamworks/Generated/SteamConstants.cs +++ b/Facepunch.Steamworks/Generated/SteamConstants.cs @@ -6,95 +6,97 @@ using System.Threading.Tasks; namespace Steamworks.Data { - internal static class CallbackIdentifiers - { - public const int SteamUser = 100; - public const int SteamGameServer = 200; - public const int SteamFriends = 300; - public const int SteamBilling = 400; - public const int SteamMatchmaking = 500; - public const int SteamContentServer = 600; - public const int SteamUtils = 700; - public const int ClientFriends = 800; - public const int ClientUser = 900; - public const int SteamApps = 1000; - public const int SteamUserStats = 1100; - public const int SteamNetworking = 1200; - public const int SteamNetworkingSockets = 1220; - public const int SteamNetworkingMessages = 1250; - public const int ClientRemoteStorage = 1300; - public const int ClientDepotBuilder = 1400; - public const int SteamGameServerItems = 1500; - public const int ClientUtils = 1600; - public const int SteamGameCoordinator = 1700; - public const int SteamGameServerStats = 1800; - public const int Steam2Async = 1900; - public const int SteamGameStats = 2000; - public const int ClientHTTP = 2100; - public const int ClientScreenshots = 2200; - public const int SteamScreenshots = 2300; - public const int ClientAudio = 2400; - public const int ClientUnifiedMessages = 2500; - public const int SteamStreamLauncher = 2600; - public const int ClientController = 2700; - public const int SteamController = 2800; - public const int ClientParentalSettings = 2900; - public const int ClientDeviceAuth = 3000; - public const int ClientNetworkDeviceManager = 3100; - public const int ClientMusic = 3200; - public const int ClientRemoteClientManager = 3300; - public const int ClientUGC = 3400; - public const int SteamStreamClient = 3500; - public const int ClientProductBuilder = 3600; - public const int ClientShortcuts = 3700; - public const int ClientRemoteControlManager = 3800; - public const int SteamAppList = 3900; - public const int SteamMusic = 4000; - public const int SteamMusicRemote = 4100; - public const int ClientVR = 4200; - public const int ClientGameNotification = 4300; - public const int SteamGameNotification = 4400; - public const int SteamHTMLSurface = 4500; - public const int ClientVideo = 4600; - public const int ClientInventory = 4700; - public const int ClientBluetoothManager = 4800; - public const int ClientSharedConnection = 4900; - public const int SteamParentalSettings = 5000; - public const int ClientShader = 5100; - public const int SteamGameSearch = 5200; - public const int SteamParties = 5300; - public const int ClientParties = 5400; - } internal static class Defines { - internal const string STEAMAPPLIST_INTERFACE_VERSION = "STEAMAPPLIST_INTERFACE_VERSION001"; - internal const string STEAMAPPS_INTERFACE_VERSION = "STEAMAPPS_INTERFACE_VERSION008"; - internal const string STEAMAPPTICKET_INTERFACE_VERSION = "STEAMAPPTICKET_INTERFACE_VERSION001"; - internal const string STEAMCONTROLLER_INTERFACE_VERSION = "SteamController007"; - internal const string STEAMFRIENDS_INTERFACE_VERSION = "SteamFriends017"; - internal const string STEAMGAMECOORDINATOR_INTERFACE_VERSION = "SteamGameCoordinator001"; - internal const string STEAMGAMESERVER_INTERFACE_VERSION = "SteamGameServer012"; - internal const string STEAMGAMESERVERSTATS_INTERFACE_VERSION = "SteamGameServerStats001"; - internal const string STEAMHTMLSURFACE_INTERFACE_VERSION = "STEAMHTMLSURFACE_INTERFACE_VERSION_005"; - internal const string STEAMHTTP_INTERFACE_VERSION = "STEAMHTTP_INTERFACE_VERSION003"; - internal const string STEAMINPUT_INTERFACE_VERSION = "SteamInput001"; - internal const string STEAMINVENTORY_INTERFACE_VERSION = "STEAMINVENTORY_INTERFACE_V003"; - internal const string STEAMMATCHMAKING_INTERFACE_VERSION = "SteamMatchMaking009"; - internal const string STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION = "SteamMatchMakingServers002"; - internal const string STEAMGAMESEARCH_INTERFACE_VERSION = "SteamMatchGameSearch001"; - internal const string STEAMPARTIES_INTERFACE_VERSION = "SteamParties002"; - internal const string STEAMMUSIC_INTERFACE_VERSION = "STEAMMUSIC_INTERFACE_VERSION001"; - internal const string STEAMMUSICREMOTE_INTERFACE_VERSION = "STEAMMUSICREMOTE_INTERFACE_VERSION001"; - internal const string STEAMNETWORKING_INTERFACE_VERSION = "SteamNetworking005"; - internal const string STEAMNETWORKINGSOCKETS_INTERFACE_VERSION = "SteamNetworkingSockets002"; - internal const string STEAMNETWORKINGUTILS_INTERFACE_VERSION = "SteamNetworkingUtils001"; - internal const string STEAMPARENTALSETTINGS_INTERFACE_VERSION = "STEAMPARENTALSETTINGS_INTERFACE_VERSION001"; - internal const string STEAMREMOTESTORAGE_INTERFACE_VERSION = "STEAMREMOTESTORAGE_INTERFACE_VERSION014"; - internal const string STEAMSCREENSHOTS_INTERFACE_VERSION = "STEAMSCREENSHOTS_INTERFACE_VERSION003"; - internal const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION012"; - internal const string STEAMUSER_INTERFACE_VERSION = "SteamUser020"; - internal const string STEAMUSERSTATS_INTERFACE_VERSION = "STEAMUSERSTATS_INTERFACE_VERSION011"; - internal const string STEAMUTILS_INTERFACE_VERSION = "SteamUtils009"; - internal const string STEAMVIDEO_INTERFACE_VERSION = "STEAMVIDEO_INTERFACE_V002"; + internal static readonly AppId k_uAppIdInvalid = 0x0; + internal static readonly DepotId_t k_uDepotIdInvalid = 0x0; + internal static readonly SteamAPICall_t k_uAPICallInvalid = 0x0; + internal static readonly PartyBeaconID_t k_ulPartyBeaconIdInvalid = 0; + internal static readonly HAuthTicket k_HAuthTicketInvalid = 0; + internal static readonly uint k_unSteamAccountIDMask = 0xFFFFFFFF; + internal static readonly uint k_unSteamAccountInstanceMask = 0x000FFFFF; + internal static readonly uint k_unSteamUserDefaultInstance = 1; + internal static readonly int k_cchGameExtraInfoMax = 64; + internal static readonly int k_cchMaxFriendsGroupName = 64; + internal static readonly int k_cFriendsGroupLimit = 100; + internal static readonly FriendsGroupID_t k_FriendsGroupID_Invalid = - 1; + internal static readonly int k_cEnumerateFollowersMax = 50; + internal static readonly uint k_cubChatMetadataMax = 8192; + internal static readonly int k_cbMaxGameServerGameDir = 32; + internal static readonly int k_cbMaxGameServerMapName = 32; + internal static readonly int k_cbMaxGameServerGameDescription = 64; + internal static readonly int k_cbMaxGameServerName = 64; + internal static readonly int k_cbMaxGameServerTags = 128; + internal static readonly int k_cbMaxGameServerGameData = 2048; + internal static readonly int HSERVERQUERY_INVALID = -1; + internal static readonly uint k_unFavoriteFlagNone = 0x00; + internal static readonly uint k_unFavoriteFlagFavorite = 0x01; + internal static readonly uint k_unFavoriteFlagHistory = 0x02; + internal static readonly uint k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; + internal static readonly PublishedFileId k_PublishedFileIdInvalid = 0; + internal static readonly UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffff; + internal static readonly PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffff; + internal static readonly UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffff; + internal static readonly uint k_cchPublishedDocumentTitleMax = 128 + 1; + internal static readonly uint k_cchPublishedDocumentDescriptionMax = 8000; + internal static readonly uint k_cchPublishedDocumentChangeDescriptionMax = 8000; + internal static readonly uint k_unEnumeratePublishedFilesMaxResults = 50; + internal static readonly uint k_cchTagListMax = 1024 + 1; + internal static readonly uint k_cchFilenameMax = 260; + internal static readonly uint k_cchPublishedFileURLMax = 256; + internal static readonly int k_cubAppProofOfPurchaseKeyMax = 240; + internal static readonly uint k_nScreenshotMaxTaggedUsers = 32; + internal static readonly uint k_nScreenshotMaxTaggedPublishedFiles = 32; + internal static readonly int k_cubUFSTagTypeMax = 255; + internal static readonly int k_cubUFSTagValueMax = 255; + internal static readonly int k_ScreenshotThumbWidth = 200; + internal static readonly UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffff; + internal static readonly UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffff; + internal static readonly uint kNumUGCResultsPerPage = 50; + internal static readonly uint k_cchDeveloperMetadataMax = 5000; + internal static readonly uint INVALID_HTMLBROWSER = 0; + internal static readonly InventoryItemId k_SteamItemInstanceIDInvalid = ~default(ulong); + internal static readonly SteamInventoryResult_t k_SteamInventoryResultInvalid = - 1; + internal static readonly SteamInventoryUpdateHandle_t k_SteamInventoryUpdateHandleInvalid = 0xffffffffffffffff; + internal static readonly Connection k_HSteamNetConnection_Invalid = 0; + internal static readonly Socket k_HSteamListenSocket_Invalid = 0; + internal static readonly HSteamNetPollGroup k_HSteamNetPollGroup_Invalid = 0; + internal static readonly int k_cchMaxSteamNetworkingErrMsg = 1024; + internal static readonly int k_cchSteamNetworkingMaxConnectionCloseReason = 128; + internal static readonly int k_cchSteamNetworkingMaxConnectionDescription = 128; + internal static readonly int k_cchSteamNetworkingMaxConnectionAppName = 32; + internal static readonly int k_nSteamNetworkConnectionInfoFlags_Unauthenticated = 1; + internal static readonly int k_nSteamNetworkConnectionInfoFlags_Unencrypted = 2; + internal static readonly int k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers = 4; + internal static readonly int k_nSteamNetworkConnectionInfoFlags_Fast = 8; + internal static readonly int k_nSteamNetworkConnectionInfoFlags_Relayed = 16; + internal static readonly int k_nSteamNetworkConnectionInfoFlags_DualWifi = 32; + internal static readonly int k_cbMaxSteamNetworkingSocketsMessageSizeSend = 512 * 1024; + internal static readonly int k_nSteamNetworkingSend_Unreliable = 0; + internal static readonly int k_nSteamNetworkingSend_NoNagle = 1; + internal static readonly int k_nSteamNetworkingSend_UnreliableNoNagle = k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoNagle; + internal static readonly int k_nSteamNetworkingSend_NoDelay = 4; + internal static readonly int k_nSteamNetworkingSend_UnreliableNoDelay = k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoDelay | k_nSteamNetworkingSend_NoNagle; + internal static readonly int k_nSteamNetworkingSend_Reliable = 8; + internal static readonly int k_nSteamNetworkingSend_ReliableNoNagle = k_nSteamNetworkingSend_Reliable | k_nSteamNetworkingSend_NoNagle; + internal static readonly int k_nSteamNetworkingSend_UseCurrentThread = 16; + internal static readonly int k_nSteamNetworkingSend_AutoRestartBrokenSession = 32; + internal static readonly int k_cchMaxSteamNetworkingPingLocationString = 1024; + internal static readonly int k_nSteamNetworkingPing_Failed = - 1; + internal static readonly int k_nSteamNetworkingPing_Unknown = - 2; + internal static readonly int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Default = - 1; + internal static readonly int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Disable = 0; + internal static readonly int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Relay = 1; + internal static readonly int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Private = 2; + internal static readonly int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public = 4; + internal static readonly int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All = 0x7fffffff; + internal static readonly SteamNetworkingPOPID k_SteamDatagramPOPID_dev = ( ( uint ) 'd' << 16 ) | ( ( uint ) 'e' << 8 ) | ( uint ) 'v'; + internal static readonly ushort STEAMGAMESERVER_QUERY_PORT_SHARED = 0xffff; + internal static readonly ushort MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE = STEAMGAMESERVER_QUERY_PORT_SHARED; + internal static readonly uint k_cbSteamDatagramMaxSerializedTicket = 512; + internal static readonly uint k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData = 2048; + internal static readonly uint k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized = 4096; + internal static readonly int k_cbSteamNetworkingSocketsFakeUDPPortRecommendedMTU = 1200; + internal static readonly int k_cbSteamNetworkingSocketsFakeUDPPortMaxMessageSize = 4096; } } diff --git a/Facepunch.Steamworks/Generated/SteamEnums.cs b/Facepunch.Steamworks/Generated/SteamEnums.cs index 2076b6b..f7264c8 100644 --- a/Facepunch.Steamworks/Generated/SteamEnums.cs +++ b/Facepunch.Steamworks/Generated/SteamEnums.cs @@ -6,6 +6,15 @@ using System.Threading.Tasks; namespace Steamworks { + // + // ESteamIPType + // + internal enum SteamIPType : int + { + Type4 = 0, + Type6 = 1, + } + // // EUniverse // @@ -24,6 +33,7 @@ namespace Steamworks // public enum Result : int { + None = 0, OK = 1, Fail = 2, NoConnection = 3, @@ -136,6 +146,20 @@ namespace Steamworks AccountNotFriends = 111, LimitedUserAccount = 112, CantRemoveItem = 113, + AccountDeleted = 114, + ExistingUserCancelledLicense = 115, + CommunityCooldown = 116, + NoLauncherSpecified = 117, + MustAgreeToSSA = 118, + LauncherMigrated = 119, + SteamRealmMismatch = 120, + InvalidSignature = 121, + ParseFailure = 122, + NoVerifiedPhone = 123, + InsufficientBattery = 124, + ChargerRequired = 125, + CachedCredentialInvalid = 126, + K_EResultPhoneNumberIsVOIP = 127, } // @@ -237,85 +261,6 @@ namespace Steamworks Max = 11, } - // - // EAppReleaseState - // - internal enum AppReleaseState : int - { - Unknown = 0, - Unavailable = 1, - Prerelease = 2, - PreloadOnly = 3, - Released = 4, - } - - // - // EAppOwnershipFlags - // - internal enum AppOwnershipFlags : int - { - None = 0, - OwnsLicense = 1, - FreeLicense = 2, - RegionRestricted = 4, - LowViolence = 8, - InvalidPlatform = 16, - SharedLicense = 32, - FreeWeekend = 64, - RetailLicense = 128, - LicenseLocked = 256, - LicensePending = 512, - LicenseExpired = 1024, - LicensePermanent = 2048, - LicenseRecurring = 4096, - LicenseCanceled = 8192, - AutoGrant = 16384, - PendingGift = 32768, - RentalNotActivated = 65536, - Rental = 131072, - SiteLicense = 262144, - } - - // - // EAppType - // - internal enum AppType : int - { - Invalid = 0, - Game = 1, - Application = 2, - Tool = 4, - Demo = 8, - Media_DEPRECATED = 16, - DLC = 32, - Guide = 64, - Driver = 128, - Config = 256, - Hardware = 512, - Franchise = 1024, - Video = 2048, - Plugin = 4096, - Music = 8192, - Series = 16384, - Comic = 32768, - Shortcut = 1073741824, - DepotOnly = -2147483648, - } - - // - // ESteamUserStatType - // - internal enum SteamUserStatType : int - { - INVALID = 0, - INT = 1, - FLOAT = 2, - AVGRATE = 3, - ACHIEVEMENTS = 4, - GROUPACHIEVEMENTS = 5, - MAX = 6, - } - // // EChatEntryType // @@ -365,19 +310,6 @@ namespace Steamworks InstanceFlagMMSLobby = 131072, } - // - // EMarketingMessageFlags - // - internal enum MarketingMessageFlags : int - { - None = 0, - HighPriority = 1, - PlatformWindows = 2, - PlatformMac = 4, - PlatformLinux = 8, - PlatformRestrictions = 14, - } - // // ENotificationPosition // @@ -420,64 +352,6 @@ namespace Steamworks AudioInitFailed = 23, } - // - // ELaunchOptionType - // - internal enum LaunchOptionType : int - { - None = 0, - Default = 1, - SafeMode = 2, - Multiplayer = 3, - Config = 4, - OpenVR = 5, - Server = 6, - Editor = 7, - Manual = 8, - Benchmark = 9, - Option1 = 10, - Option2 = 11, - Option3 = 12, - OculusVR = 13, - OpenVROverlay = 14, - OSVR = 15, - Dialog = 1000, - } - - // - // EVRHMDType - // - internal enum VRHMDType : int - { - None = -1, - Unknown = 0, - HTC_Dev = 1, - HTC_VivePre = 2, - HTC_Vive = 3, - HTC_VivePro = 4, - HTC_Unknown = 20, - Oculus_DK1 = 21, - Oculus_DK2 = 22, - Oculus_Rift = 23, - Oculus_Unknown = 40, - Acer_Unknown = 50, - Acer_WindowsMR = 51, - Dell_Unknown = 60, - Dell_Visor = 61, - Lenovo_Unknown = 70, - Lenovo_Explorer = 71, - HP_Unknown = 80, - HP_WindowsMR = 81, - Samsung_Unknown = 90, - Samsung_Odyssey = 91, - Unannounced_Unknown = 100, - Unannounced_WindowsMR = 101, - vridge = 110, - Huawei_Unknown = 120, - Huawei_VR2 = 121, - Huawei_Unannounced = 129, - } - // // EMarketNotAllowedReasonFlags // @@ -503,14 +377,42 @@ namespace Steamworks } // - // CGameID::EGameIDType + // EDurationControlProgress // - internal enum GameIDType : int + public enum DurationControlProgress : int { - App = 0, - GameMod = 1, - Shortcut = 2, - P2P = 3, + Progress_Full = 0, + Progress_Half = 1, + Progress_None = 2, + ExitSoon_3h = 3, + ExitSoon_5h = 4, + ExitSoon_Night = 5, + } + + // + // EDurationControlNotification + // + internal enum DurationControlNotification : int + { + None = 0, + DurationControlNotification1Hour = 1, + DurationControlNotification3Hours = 2, + HalfProgress = 3, + NoProgress = 4, + ExitSoon_3h = 5, + ExitSoon_5h = 6, + ExitSoon_Night = 7, + } + + // + // EDurationControlOnlineState + // + internal enum DurationControlOnlineState : int + { + Invalid = 0, + Offline = 1, + Online = 2, + OnlineHighPri = 3, } // @@ -542,12 +444,23 @@ namespace Steamworks } // - // IPCFailure_t::EFailureType + // ESteamIPv6ConnectivityProtocol // - internal enum FailureType : int + internal enum SteamIPv6ConnectivityProtocol : int { - FlushedCallbackQueue = 0, - PipeFail = 1, + Invalid = 0, + HTTP = 1, + UDP = 2, + } + + // + // ESteamIPv6ConnectivityState + // + internal enum SteamIPv6ConnectivityState : int + { + Unknown = 0, + Good = 1, + Bad = 2, } // @@ -585,7 +498,7 @@ namespace Steamworks // // EFriendFlags // - public enum FriendFlags : int + internal enum FriendFlags : int { None = 0, Blocked = 1, @@ -619,7 +532,7 @@ namespace Steamworks // // EOverlayToStoreFlag // - internal enum OverlayToStoreFlag : int + public enum OverlayToStoreFlag : int { None = 0, AddToCart = 1, @@ -635,6 +548,37 @@ namespace Steamworks Modal = 1, } + // + // ECommunityProfileItemType + // + internal enum CommunityProfileItemType : int + { + AnimatedAvatar = 0, + AvatarFrame = 1, + ProfileModifier = 2, + ProfileBackground = 3, + MiniProfileBackground = 4, + } + + // + // ECommunityProfileItemProperty + // + internal enum CommunityProfileItemProperty : int + { + ImageSmall = 0, + ImageLarge = 1, + InternalName = 2, + Title = 3, + Description = 4, + AppID = 5, + TypeID = 6, + Class = 7, + MovieWebM = 8, + MovieMP4 = 9, + MovieWebMSmall = 10, + MovieMP4Small = 11, + } + // // EPersonaChange // @@ -687,6 +631,28 @@ namespace Steamworks MultipleLines = 1, } + // + // EFloatingGamepadTextInputMode + // + public enum TextInputMode : int + { + SingleLine = 0, + MultipleLines = 1, + Email = 2, + Numeric = 3, + } + + // + // ETextFilteringContext + // + public enum TextFilteringContext : int + { + Unknown = 0, + GameContent = 1, + Chat = 2, + Name = 3, + } + // // ECheckFileSignature // @@ -718,6 +684,7 @@ namespace Steamworks FriendsOnly = 1, Public = 2, Invisible = 3, + PrivateUnique = 4, } // @@ -778,16 +745,6 @@ namespace Steamworks IconURLLarge = 4, } - // - // RequestPlayersForGameResultCallback_t::PlayerAcceptState_t - // - internal enum PlayerAcceptState_t : int - { - Unknown = 0, - PlayerAccepted = 1, - PlayerDeclined = 2, - } - // // ERemoteStoragePlatform // @@ -798,8 +755,9 @@ namespace Steamworks OSX = 2, PS3 = 4, Linux = 8, - Reserved2 = 16, + Switch = 16, Android = 32, + IOS = 64, All = -1, } @@ -811,6 +769,7 @@ namespace Steamworks Public = 0, FriendsOnly = 1, Private = 2, + Unlisted = 3, } // @@ -891,6 +850,26 @@ namespace Steamworks lose = 2, } + // + // ERemoteStorageLocalFileChange + // + internal enum RemoteStorageLocalFileChange : int + { + Invalid = 0, + FileUpdated = 1, + FileDeleted = 2, + } + + // + // ERemoteStorageFilePathType + // + internal enum RemoteStorageFilePathType : int + { + Invalid = 0, + Absolute = 1, + APIFilename = 2, + } + // // ELeaderboardDataRequest // @@ -936,10 +915,10 @@ namespace Steamworks public enum P2PSessionError : int { None = 0, - NotRunningApp = 1, NoRightsToApp = 2, - DestinationNotLoggedIn = 3, Timeout = 4, + NotRunningApp_DELETED = 1, + DestinationNotLoggedIn_DELETED = 3, Max = 5, } @@ -957,31 +936,9 @@ namespace Steamworks // // ESNetSocketState // - internal enum SNetSocketState : int - { - Invalid = 0, - Connected = 1, - Initiated = 10, - LocalCandidatesFound = 11, - ReceivedRemoteCandidates = 12, - ChallengeHandshake = 15, - Disconnecting = 21, - LocalDisconnect = 22, - TimeoutDuringConnect = 23, - RemoteEndDisconnected = 24, - ConnectionBroken = 25, - } - // // ESNetSocketConnectionType // - internal enum SNetSocketConnectionType : int - { - NotConnected = 0, - UDP = 1, - UDPRelay = 2, - } - // // EVRScreenshotType // @@ -1027,74 +984,50 @@ namespace Steamworks internal enum HTTPStatusCode : int { Invalid = 0, - HTTPStatusCode100Continue = 100, - HTTPStatusCode101SwitchingProtocols = 101, - HTTPStatusCode200OK = 200, - HTTPStatusCode201Created = 201, - HTTPStatusCode202Accepted = 202, - HTTPStatusCode203NonAuthoritative = 203, - HTTPStatusCode204NoContent = 204, - HTTPStatusCode205ResetContent = 205, - HTTPStatusCode206PartialContent = 206, - HTTPStatusCode300MultipleChoices = 300, - HTTPStatusCode301MovedPermanently = 301, - HTTPStatusCode302Found = 302, - HTTPStatusCode303SeeOther = 303, - HTTPStatusCode304NotModified = 304, - HTTPStatusCode305UseProxy = 305, - HTTPStatusCode307TemporaryRedirect = 307, - HTTPStatusCode400BadRequest = 400, - HTTPStatusCode401Unauthorized = 401, - HTTPStatusCode402PaymentRequired = 402, - HTTPStatusCode403Forbidden = 403, - HTTPStatusCode404NotFound = 404, - HTTPStatusCode405MethodNotAllowed = 405, - HTTPStatusCode406NotAcceptable = 406, - HTTPStatusCode407ProxyAuthRequired = 407, - HTTPStatusCode408RequestTimeout = 408, - HTTPStatusCode409Conflict = 409, - HTTPStatusCode410Gone = 410, - HTTPStatusCode411LengthRequired = 411, - HTTPStatusCode412PreconditionFailed = 412, - HTTPStatusCode413RequestEntityTooLarge = 413, - HTTPStatusCode414RequestURITooLong = 414, - HTTPStatusCode415UnsupportedMediaType = 415, - HTTPStatusCode416RequestedRangeNotSatisfiable = 416, - HTTPStatusCode417ExpectationFailed = 417, - HTTPStatusCode4xxUnknown = 418, - HTTPStatusCode429TooManyRequests = 429, - HTTPStatusCode500InternalServerError = 500, - HTTPStatusCode501NotImplemented = 501, - HTTPStatusCode502BadGateway = 502, - HTTPStatusCode503ServiceUnavailable = 503, - HTTPStatusCode504GatewayTimeout = 504, - HTTPStatusCode505HTTPVersionNotSupported = 505, - HTTPStatusCode5xxUnknown = 599, - } - - // - // EInputSource - // - internal enum InputSource : int - { - None = 0, - LeftTrackpad = 1, - RightTrackpad = 2, - Joystick = 3, - ABXY = 4, - Switch = 5, - LeftTrigger = 6, - RightTrigger = 7, - LeftBumper = 8, - RightBumper = 9, - Gyro = 10, - CenterTrackpad = 11, - RightJoystick = 12, - DPad = 13, - Key = 14, - Mouse = 15, - LeftGyro = 16, - Count = 17, + Code100Continue = 100, + Code101SwitchingProtocols = 101, + Code200OK = 200, + Code201Created = 201, + Code202Accepted = 202, + Code203NonAuthoritative = 203, + Code204NoContent = 204, + Code205ResetContent = 205, + Code206PartialContent = 206, + Code300MultipleChoices = 300, + Code301MovedPermanently = 301, + Code302Found = 302, + Code303SeeOther = 303, + Code304NotModified = 304, + Code305UseProxy = 305, + Code307TemporaryRedirect = 307, + Code400BadRequest = 400, + Code401Unauthorized = 401, + Code402PaymentRequired = 402, + Code403Forbidden = 403, + Code404NotFound = 404, + Code405MethodNotAllowed = 405, + Code406NotAcceptable = 406, + Code407ProxyAuthRequired = 407, + Code408RequestTimeout = 408, + Code409Conflict = 409, + Code410Gone = 410, + Code411LengthRequired = 411, + Code412PreconditionFailed = 412, + Code413RequestEntityTooLarge = 413, + Code414RequestURITooLong = 414, + Code415UnsupportedMediaType = 415, + Code416RequestedRangeNotSatisfiable = 416, + Code417ExpectationFailed = 417, + Code4xxUnknown = 418, + Code429TooManyRequests = 429, + Code444ConnectionClosed = 444, + Code500InternalServerError = 500, + Code501NotImplemented = 501, + Code502BadGateway = 502, + Code503ServiceUnavailable = 503, + Code504GatewayTimeout = 504, + Code505HTTPVersionNotSupported = 505, + Code5xxUnknown = 599, } // @@ -1229,7 +1162,7 @@ namespace Steamworks PS4_Gyro_Pitch = 100, PS4_Gyro_Yaw = 101, PS4_Gyro_Roll = 102, - PS4_Reserved0 = 103, + PS4_DPad_Move = 103, PS4_Reserved1 = 104, PS4_Reserved2 = 105, PS4_Reserved3 = 106, @@ -1268,12 +1201,12 @@ namespace Steamworks XBoxOne_DPad_South = 139, XBoxOne_DPad_West = 140, XBoxOne_DPad_East = 141, - XBoxOne_Reserved0 = 142, - XBoxOne_Reserved1 = 143, - XBoxOne_Reserved2 = 144, - XBoxOne_Reserved3 = 145, - XBoxOne_Reserved4 = 146, - XBoxOne_Reserved5 = 147, + XBoxOne_DPad_Move = 142, + XBoxOne_LeftGrip_Lower = 143, + XBoxOne_LeftGrip_Upper = 144, + XBoxOne_RightGrip_Lower = 145, + XBoxOne_RightGrip_Upper = 146, + XBoxOne_Share = 147, XBoxOne_Reserved6 = 148, XBoxOne_Reserved7 = 149, XBoxOne_Reserved8 = 150, @@ -1307,7 +1240,7 @@ namespace Steamworks XBox360_DPad_South = 178, XBox360_DPad_West = 179, XBox360_DPad_East = 180, - XBox360_Reserved0 = 181, + XBox360_DPad_Move = 181, XBox360_Reserved1 = 182, XBox360_Reserved2 = 183, XBox360_Reserved3 = 184, @@ -1351,7 +1284,7 @@ namespace Steamworks Switch_ProGyro_Pitch = 222, Switch_ProGyro_Yaw = 223, Switch_ProGyro_Roll = 224, - Switch_Reserved0 = 225, + Switch_DPad_Move = 225, Switch_Reserved1 = 226, Switch_Reserved2 = 227, Switch_Reserved3 = 228, @@ -1384,7 +1317,155 @@ namespace Steamworks Switch_Reserved18 = 255, Switch_Reserved19 = 256, Switch_Reserved20 = 257, - Count = 258, + PS5_X = 258, + PS5_Circle = 259, + PS5_Triangle = 260, + PS5_Square = 261, + PS5_LeftBumper = 262, + PS5_RightBumper = 263, + PS5_Option = 264, + PS5_Create = 265, + PS5_Mute = 266, + PS5_LeftPad_Touch = 267, + PS5_LeftPad_Swipe = 268, + PS5_LeftPad_Click = 269, + PS5_LeftPad_DPadNorth = 270, + PS5_LeftPad_DPadSouth = 271, + PS5_LeftPad_DPadWest = 272, + PS5_LeftPad_DPadEast = 273, + PS5_RightPad_Touch = 274, + PS5_RightPad_Swipe = 275, + PS5_RightPad_Click = 276, + PS5_RightPad_DPadNorth = 277, + PS5_RightPad_DPadSouth = 278, + PS5_RightPad_DPadWest = 279, + PS5_RightPad_DPadEast = 280, + PS5_CenterPad_Touch = 281, + PS5_CenterPad_Swipe = 282, + PS5_CenterPad_Click = 283, + PS5_CenterPad_DPadNorth = 284, + PS5_CenterPad_DPadSouth = 285, + PS5_CenterPad_DPadWest = 286, + PS5_CenterPad_DPadEast = 287, + PS5_LeftTrigger_Pull = 288, + PS5_LeftTrigger_Click = 289, + PS5_RightTrigger_Pull = 290, + PS5_RightTrigger_Click = 291, + PS5_LeftStick_Move = 292, + PS5_LeftStick_Click = 293, + PS5_LeftStick_DPadNorth = 294, + PS5_LeftStick_DPadSouth = 295, + PS5_LeftStick_DPadWest = 296, + PS5_LeftStick_DPadEast = 297, + PS5_RightStick_Move = 298, + PS5_RightStick_Click = 299, + PS5_RightStick_DPadNorth = 300, + PS5_RightStick_DPadSouth = 301, + PS5_RightStick_DPadWest = 302, + PS5_RightStick_DPadEast = 303, + PS5_DPad_North = 304, + PS5_DPad_South = 305, + PS5_DPad_West = 306, + PS5_DPad_East = 307, + PS5_Gyro_Move = 308, + PS5_Gyro_Pitch = 309, + PS5_Gyro_Yaw = 310, + PS5_Gyro_Roll = 311, + PS5_DPad_Move = 312, + PS5_Reserved1 = 313, + PS5_Reserved2 = 314, + PS5_Reserved3 = 315, + PS5_Reserved4 = 316, + PS5_Reserved5 = 317, + PS5_Reserved6 = 318, + PS5_Reserved7 = 319, + PS5_Reserved8 = 320, + PS5_Reserved9 = 321, + PS5_Reserved10 = 322, + PS5_Reserved11 = 323, + PS5_Reserved12 = 324, + PS5_Reserved13 = 325, + PS5_Reserved14 = 326, + PS5_Reserved15 = 327, + PS5_Reserved16 = 328, + PS5_Reserved17 = 329, + PS5_Reserved18 = 330, + PS5_Reserved19 = 331, + PS5_Reserved20 = 332, + SteamDeck_A = 333, + SteamDeck_B = 334, + SteamDeck_X = 335, + SteamDeck_Y = 336, + SteamDeck_L1 = 337, + SteamDeck_R1 = 338, + SteamDeck_Menu = 339, + SteamDeck_View = 340, + SteamDeck_LeftPad_Touch = 341, + SteamDeck_LeftPad_Swipe = 342, + SteamDeck_LeftPad_Click = 343, + SteamDeck_LeftPad_DPadNorth = 344, + SteamDeck_LeftPad_DPadSouth = 345, + SteamDeck_LeftPad_DPadWest = 346, + SteamDeck_LeftPad_DPadEast = 347, + SteamDeck_RightPad_Touch = 348, + SteamDeck_RightPad_Swipe = 349, + SteamDeck_RightPad_Click = 350, + SteamDeck_RightPad_DPadNorth = 351, + SteamDeck_RightPad_DPadSouth = 352, + SteamDeck_RightPad_DPadWest = 353, + SteamDeck_RightPad_DPadEast = 354, + SteamDeck_L2_SoftPull = 355, + SteamDeck_L2 = 356, + SteamDeck_R2_SoftPull = 357, + SteamDeck_R2 = 358, + SteamDeck_LeftStick_Move = 359, + SteamDeck_L3 = 360, + SteamDeck_LeftStick_DPadNorth = 361, + SteamDeck_LeftStick_DPadSouth = 362, + SteamDeck_LeftStick_DPadWest = 363, + SteamDeck_LeftStick_DPadEast = 364, + SteamDeck_LeftStick_Touch = 365, + SteamDeck_RightStick_Move = 366, + SteamDeck_R3 = 367, + SteamDeck_RightStick_DPadNorth = 368, + SteamDeck_RightStick_DPadSouth = 369, + SteamDeck_RightStick_DPadWest = 370, + SteamDeck_RightStick_DPadEast = 371, + SteamDeck_RightStick_Touch = 372, + SteamDeck_L4 = 373, + SteamDeck_R4 = 374, + SteamDeck_L5 = 375, + SteamDeck_R5 = 376, + SteamDeck_DPad_Move = 377, + SteamDeck_DPad_North = 378, + SteamDeck_DPad_South = 379, + SteamDeck_DPad_West = 380, + SteamDeck_DPad_East = 381, + SteamDeck_Gyro_Move = 382, + SteamDeck_Gyro_Pitch = 383, + SteamDeck_Gyro_Yaw = 384, + SteamDeck_Gyro_Roll = 385, + SteamDeck_Reserved1 = 386, + SteamDeck_Reserved2 = 387, + SteamDeck_Reserved3 = 388, + SteamDeck_Reserved4 = 389, + SteamDeck_Reserved5 = 390, + SteamDeck_Reserved6 = 391, + SteamDeck_Reserved7 = 392, + SteamDeck_Reserved8 = 393, + SteamDeck_Reserved9 = 394, + SteamDeck_Reserved10 = 395, + SteamDeck_Reserved11 = 396, + SteamDeck_Reserved12 = 397, + SteamDeck_Reserved13 = 398, + SteamDeck_Reserved14 = 399, + SteamDeck_Reserved15 = 400, + SteamDeck_Reserved16 = 401, + SteamDeck_Reserved17 = 402, + SteamDeck_Reserved18 = 403, + SteamDeck_Reserved19 = 404, + SteamDeck_Reserved20 = 405, + Count = 406, MaximumPossibleValue = 32767, } @@ -1433,6 +1514,26 @@ namespace Steamworks Right = 1, } + // + // EControllerHapticLocation + // + internal enum ControllerHapticLocation : int + { + Left = 1, + Right = 2, + Both = 3, + } + + // + // EControllerHapticType + // + internal enum ControllerHapticType : int + { + Off = 0, + Tick = 1, + Click = 2, + } + // // ESteamInputType // @@ -1451,10 +1552,24 @@ namespace Steamworks SwitchProController = 10, MobileTouch = 11, PS3Controller = 12, - Count = 13, + PS5Controller = 13, + SteamDeckController = 14, + Count = 15, MaximumPossibleValue = 255, } + // + // ESteamInputConfigurationEnableType + // + internal enum SteamInputConfigurationEnableType : int + { + None = 0, + Playstation = 1, + Xbox = 2, + Generic = 4, + Switch = 8, + } + // // ESteamInputLEDFlag // @@ -1465,52 +1580,35 @@ namespace Steamworks } // - // EControllerSource + // ESteamInputGlyphSize // - internal enum ControllerSource : int + public enum GlyphSize : int { - None = 0, - LeftTrackpad = 1, - RightTrackpad = 2, - Joystick = 3, - ABXY = 4, - Switch = 5, - LeftTrigger = 6, - RightTrigger = 7, - LeftBumper = 8, - RightBumper = 9, - Gyro = 10, - CenterTrackpad = 11, - RightJoystick = 12, - DPad = 13, - Key = 14, - Mouse = 15, - LeftGyro = 16, - Count = 17, + Small = 0, + Medium = 1, + Large = 2, + Count = 3, } // - // EControllerSourceMode + // ESteamInputGlyphStyle // - internal enum ControllerSourceMode : int + internal enum SteamInputGlyphStyle : int { - None = 0, - Dpad = 1, - Buttons = 2, - FourButtons = 3, - AbsoluteMouse = 4, - RelativeMouse = 5, - JoystickMove = 6, - JoystickMouse = 7, - JoystickCamera = 8, - ScrollWheel = 9, - Trigger = 10, - TouchMenu = 11, - MouseJoystick = 12, - MouseRegion = 13, - RadialMenu = 14, - SingleButton = 15, - Switches = 16, + Knockout = 0, + Light = 1, + Dark = 2, + NeutralColorABXY = 16, + SolidABXY = 32, + } + + // + // ESteamInputActionEventType + // + internal enum SteamInputActionEventType : int + { + DigitalAction = 0, + AnalogAction = 1, } // @@ -1759,7 +1857,144 @@ namespace Steamworks Switch_LeftGrip_Upper = 238, Switch_RightGrip_Lower = 239, Switch_RightGrip_Upper = 240, - Count = 241, + PS4_DPad_Move = 241, + XBoxOne_DPad_Move = 242, + XBox360_DPad_Move = 243, + Switch_DPad_Move = 244, + PS5_X = 245, + PS5_Circle = 246, + PS5_Triangle = 247, + PS5_Square = 248, + PS5_LeftBumper = 249, + PS5_RightBumper = 250, + PS5_Option = 251, + PS5_Create = 252, + PS5_Mute = 253, + PS5_LeftPad_Touch = 254, + PS5_LeftPad_Swipe = 255, + PS5_LeftPad_Click = 256, + PS5_LeftPad_DPadNorth = 257, + PS5_LeftPad_DPadSouth = 258, + PS5_LeftPad_DPadWest = 259, + PS5_LeftPad_DPadEast = 260, + PS5_RightPad_Touch = 261, + PS5_RightPad_Swipe = 262, + PS5_RightPad_Click = 263, + PS5_RightPad_DPadNorth = 264, + PS5_RightPad_DPadSouth = 265, + PS5_RightPad_DPadWest = 266, + PS5_RightPad_DPadEast = 267, + PS5_CenterPad_Touch = 268, + PS5_CenterPad_Swipe = 269, + PS5_CenterPad_Click = 270, + PS5_CenterPad_DPadNorth = 271, + PS5_CenterPad_DPadSouth = 272, + PS5_CenterPad_DPadWest = 273, + PS5_CenterPad_DPadEast = 274, + PS5_LeftTrigger_Pull = 275, + PS5_LeftTrigger_Click = 276, + PS5_RightTrigger_Pull = 277, + PS5_RightTrigger_Click = 278, + PS5_LeftStick_Move = 279, + PS5_LeftStick_Click = 280, + PS5_LeftStick_DPadNorth = 281, + PS5_LeftStick_DPadSouth = 282, + PS5_LeftStick_DPadWest = 283, + PS5_LeftStick_DPadEast = 284, + PS5_RightStick_Move = 285, + PS5_RightStick_Click = 286, + PS5_RightStick_DPadNorth = 287, + PS5_RightStick_DPadSouth = 288, + PS5_RightStick_DPadWest = 289, + PS5_RightStick_DPadEast = 290, + PS5_DPad_Move = 291, + PS5_DPad_North = 292, + PS5_DPad_South = 293, + PS5_DPad_West = 294, + PS5_DPad_East = 295, + PS5_Gyro_Move = 296, + PS5_Gyro_Pitch = 297, + PS5_Gyro_Yaw = 298, + PS5_Gyro_Roll = 299, + XBoxOne_LeftGrip_Lower = 300, + XBoxOne_LeftGrip_Upper = 301, + XBoxOne_RightGrip_Lower = 302, + XBoxOne_RightGrip_Upper = 303, + XBoxOne_Share = 304, + SteamDeck_A = 305, + SteamDeck_B = 306, + SteamDeck_X = 307, + SteamDeck_Y = 308, + SteamDeck_L1 = 309, + SteamDeck_R1 = 310, + SteamDeck_Menu = 311, + SteamDeck_View = 312, + SteamDeck_LeftPad_Touch = 313, + SteamDeck_LeftPad_Swipe = 314, + SteamDeck_LeftPad_Click = 315, + SteamDeck_LeftPad_DPadNorth = 316, + SteamDeck_LeftPad_DPadSouth = 317, + SteamDeck_LeftPad_DPadWest = 318, + SteamDeck_LeftPad_DPadEast = 319, + SteamDeck_RightPad_Touch = 320, + SteamDeck_RightPad_Swipe = 321, + SteamDeck_RightPad_Click = 322, + SteamDeck_RightPad_DPadNorth = 323, + SteamDeck_RightPad_DPadSouth = 324, + SteamDeck_RightPad_DPadWest = 325, + SteamDeck_RightPad_DPadEast = 326, + SteamDeck_L2_SoftPull = 327, + SteamDeck_L2 = 328, + SteamDeck_R2_SoftPull = 329, + SteamDeck_R2 = 330, + SteamDeck_LeftStick_Move = 331, + SteamDeck_L3 = 332, + SteamDeck_LeftStick_DPadNorth = 333, + SteamDeck_LeftStick_DPadSouth = 334, + SteamDeck_LeftStick_DPadWest = 335, + SteamDeck_LeftStick_DPadEast = 336, + SteamDeck_LeftStick_Touch = 337, + SteamDeck_RightStick_Move = 338, + SteamDeck_R3 = 339, + SteamDeck_RightStick_DPadNorth = 340, + SteamDeck_RightStick_DPadSouth = 341, + SteamDeck_RightStick_DPadWest = 342, + SteamDeck_RightStick_DPadEast = 343, + SteamDeck_RightStick_Touch = 344, + SteamDeck_L4 = 345, + SteamDeck_R4 = 346, + SteamDeck_L5 = 347, + SteamDeck_R5 = 348, + SteamDeck_DPad_Move = 349, + SteamDeck_DPad_North = 350, + SteamDeck_DPad_South = 351, + SteamDeck_DPad_West = 352, + SteamDeck_DPad_East = 353, + SteamDeck_Gyro_Move = 354, + SteamDeck_Gyro_Pitch = 355, + SteamDeck_Gyro_Yaw = 356, + SteamDeck_Gyro_Roll = 357, + SteamDeck_Reserved1 = 358, + SteamDeck_Reserved2 = 359, + SteamDeck_Reserved3 = 360, + SteamDeck_Reserved4 = 361, + SteamDeck_Reserved5 = 362, + SteamDeck_Reserved6 = 363, + SteamDeck_Reserved7 = 364, + SteamDeck_Reserved8 = 365, + SteamDeck_Reserved9 = 366, + SteamDeck_Reserved10 = 367, + SteamDeck_Reserved11 = 368, + SteamDeck_Reserved12 = 369, + SteamDeck_Reserved13 = 370, + SteamDeck_Reserved14 = 371, + SteamDeck_Reserved15 = 372, + SteamDeck_Reserved16 = 373, + SteamDeck_Reserved17 = 374, + SteamDeck_Reserved18 = 375, + SteamDeck_Reserved19 = 376, + SteamDeck_Reserved20 = 377, + Count = 378, MaximumPossibleValue = 32767, } @@ -1847,6 +2082,7 @@ namespace Steamworks RankedByLifetimeAveragePlaytime = 16, RankedByPlaytimeSessionsTrend = 17, RankedByLifetimePlaytimeSessions = 18, + RankedByLastUpdatedDate = 19, } // @@ -1899,7 +2135,7 @@ namespace Steamworks // // EItemPreviewType // - internal enum ItemPreviewType : int + public enum ItemPreviewType : int { Image = 0, YouTubeVideo = 1, @@ -1909,76 +2145,6 @@ namespace Steamworks ReservedMax = 255, } - // - // ISteamHTMLSurface::EHTMLMouseButton - // - internal enum HTMLMouseButton : int - { - Left = 0, - Right = 1, - Middle = 2, - } - - // - // ISteamHTMLSurface::EMouseCursor - // - internal enum MouseCursor : int - { - user = 0, - none = 1, - arrow = 2, - ibeam = 3, - hourglass = 4, - waitarrow = 5, - crosshair = 6, - up = 7, - sizenw = 8, - sizese = 9, - sizene = 10, - sizesw = 11, - sizew = 12, - sizee = 13, - sizen = 14, - sizes = 15, - sizewe = 16, - sizens = 17, - sizeall = 18, - no = 19, - hand = 20, - blank = 21, - middle_pan = 22, - north_pan = 23, - north_east_pan = 24, - east_pan = 25, - south_east_pan = 26, - south_pan = 27, - south_west_pan = 28, - west_pan = 29, - north_west_pan = 30, - alias = 31, - cell = 32, - colresize = 33, - copycur = 34, - verticaltext = 35, - rowresize = 36, - zoomin = 37, - zoomout = 38, - help = 39, - custom = 40, - last = 41, - } - - // - // ISteamHTMLSurface::EHTMLKeyModifiers - // - internal enum HTMLKeyModifiers : int - { - None = 0, - AltDown = 1, - CtrlDown = 2, - ShiftDown = 4, - } - // // ESteamItemFlags // @@ -2007,7 +2173,250 @@ namespace Steamworks ParentalSetup = 10, Library = 11, Test = 12, - Max = 13, + SiteLicense = 13, + Max = 14, + } + + // + // ESteamDeviceFormFactor + // + public enum SteamDeviceFormFactor : int + { + Unknown = 0, + Phone = 1, + Tablet = 2, + Computer = 3, + TV = 4, + } + + // + // ESteamNetworkingAvailability + // + public enum SteamNetworkingAvailability : int + { + CannotTry = -102, + Failed = -101, + Previously = -100, + Retrying = -10, + NeverTried = 1, + Waiting = 2, + Attempting = 3, + Current = 100, + Unknown = 0, + Force32bit = 2147483647, + } + + // + // ESteamNetworkingIdentityType + // + internal enum NetIdentityType : int + { + Invalid = 0, + SteamID = 16, + XboxPairwiseID = 17, + SonyPSN = 18, + GoogleStadia = 19, + IPAddress = 1, + GenericString = 2, + GenericBytes = 3, + UnknownType = 4, + Force32bit = 2147483647, + } + + // + // ESteamNetworkingFakeIPType + // + internal enum SteamNetworkingFakeIPType : int + { + Invalid = 0, + NotFake = 1, + GlobalIPv4 = 2, + LocalIPv4 = 3, + } + + // + // ESteamNetworkingConnectionState + // + public enum ConnectionState : int + { + None = 0, + Connecting = 1, + FindingRoute = 2, + Connected = 3, + ClosedByPeer = 4, + ProblemDetectedLocally = 5, + FinWait = -1, + Linger = -2, + Dead = -3, + } + + // + // ESteamNetConnectionEnd + // + public enum NetConnectionEnd : int + { + Invalid = 0, + App_Min = 1000, + App_Generic = 1000, + App_Max = 1999, + AppException_Min = 2000, + AppException_Generic = 2000, + AppException_Max = 2999, + Local_Min = 3000, + Local_OfflineMode = 3001, + Local_ManyRelayConnectivity = 3002, + Local_HostedServerPrimaryRelay = 3003, + Local_NetworkConfig = 3004, + Local_Rights = 3005, + Local_P2P_ICE_NoPublicAddresses = 3006, + Local_Max = 3999, + Remote_Min = 4000, + Remote_Timeout = 4001, + Remote_BadCrypt = 4002, + Remote_BadCert = 4003, + Remote_BadProtocolVersion = 4006, + Remote_P2P_ICE_NoPublicAddresses = 4007, + Remote_Max = 4999, + Misc_Min = 5000, + Misc_Generic = 5001, + Misc_InternalError = 5002, + Misc_Timeout = 5003, + Misc_SteamConnectivity = 5005, + Misc_NoRelaySessionsToClient = 5006, + Misc_P2P_Rendezvous = 5008, + Misc_P2P_NAT_Firewall = 5009, + Misc_PeerSentNoConnection = 5010, + Misc_Max = 5999, + } + + // + // ESteamNetworkingConfigScope + // + internal enum NetConfigScope : int + { + Global = 1, + SocketsInterface = 2, + ListenSocket = 3, + Connection = 4, + } + + // + // ESteamNetworkingConfigDataType + // + internal enum NetConfigType : int + { + Int32 = 1, + Int64 = 2, + Float = 3, + String = 4, + Ptr = 5, + } + + // + // ESteamNetworkingConfigValue + // + internal enum NetConfig : int + { + Invalid = 0, + TimeoutInitial = 24, + TimeoutConnected = 25, + SendBufferSize = 9, + ConnectionUserData = 40, + SendRateMin = 10, + SendRateMax = 11, + NagleTime = 12, + IP_AllowWithoutAuth = 23, + MTU_PacketSize = 32, + MTU_DataSize = 33, + Unencrypted = 34, + SymmetricConnect = 37, + LocalVirtualPort = 38, + DualWifi_Enable = 39, + EnableDiagnosticsUI = 46, + FakePacketLoss_Send = 2, + FakePacketLoss_Recv = 3, + FakePacketLag_Send = 4, + FakePacketLag_Recv = 5, + FakePacketReorder_Send = 6, + FakePacketReorder_Recv = 7, + FakePacketReorder_Time = 8, + FakePacketDup_Send = 26, + FakePacketDup_Recv = 27, + FakePacketDup_TimeMax = 28, + PacketTraceMaxBytes = 41, + FakeRateLimit_Send_Rate = 42, + FakeRateLimit_Send_Burst = 43, + FakeRateLimit_Recv_Rate = 44, + FakeRateLimit_Recv_Burst = 45, + Callback_ConnectionStatusChanged = 201, + Callback_AuthStatusChanged = 202, + Callback_RelayNetworkStatusChanged = 203, + Callback_MessagesSessionRequest = 204, + Callback_MessagesSessionFailed = 205, + Callback_CreateConnectionSignaling = 206, + Callback_FakeIPResult = 207, + P2P_STUN_ServerList = 103, + P2P_Transport_ICE_Enable = 104, + P2P_Transport_ICE_Penalty = 105, + P2P_Transport_SDR_Penalty = 106, + P2P_TURN_ServerList = 107, + P2P_TURN_UserList = 108, + P2P_TURN_PassList = 109, + P2P_Transport_ICE_Implementation = 110, + SDRClient_ConsecutitivePingTimeoutsFailInitial = 19, + SDRClient_ConsecutitivePingTimeoutsFail = 20, + SDRClient_MinPingsBeforePingAccurate = 21, + SDRClient_SingleSocket = 22, + SDRClient_ForceRelayCluster = 29, + SDRClient_DebugTicketAddress = 30, + SDRClient_ForceProxyAddr = 31, + SDRClient_FakeClusterPing = 36, + LogLevel_AckRTT = 13, + LogLevel_PacketDecode = 14, + LogLevel_Message = 15, + LogLevel_PacketGaps = 16, + LogLevel_P2PRendezvous = 17, + LogLevel_SDRRelayPings = 18, + DELETED_EnumerateDevVars = 35, + } + + // + // ESteamNetworkingGetConfigValueResult + // + internal enum NetConfigResult : int + { + BadValue = -1, + BadScopeObj = -2, + BufferTooSmall = -3, + OK = 1, + OKInherited = 2, + } + + // + // ESteamNetworkingSocketsDebugOutputType + // + public enum NetDebugOutput : int + { + None = 0, + Bug = 1, + Error = 2, + Important = 3, + Warning = 4, + Msg = 5, + Verbose = 6, + Debug = 7, + Everything = 8, + } + + // + // EServerMode + // + internal enum ServerMode : int + { + Invalid = 0, + NoAuthentication = 1, + Authentication = 2, + AuthenticationAndSecure = 3, } } diff --git a/Facepunch.Steamworks/Generated/SteamInternal.cs b/Facepunch.Steamworks/Generated/SteamInternal.cs deleted file mode 100644 index f9c15f0..0000000 --- a/Facepunch.Steamworks/Generated/SteamInternal.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -using Steamworks.Data; - - -namespace Steamworks -{ - internal static class SteamInternal - { - internal static class Native - { - [DllImport( Platform.LibraryName, EntryPoint = "SteamInternal_GameServer_Init", CallingConvention = CallingConvention.Cdecl )] - [return: MarshalAs( UnmanagedType.I1 )] - public static extern bool SteamInternal_GameServer_Init( uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, int eServerMode, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersionString ); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamInternal_FindOrCreateUserInterface", CallingConvention = CallingConvention.Cdecl )] - public static extern IntPtr SteamInternal_FindOrCreateUserInterface( int steamuser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string versionname ); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamInternal_FindOrCreateGameServerInterface", CallingConvention = CallingConvention.Cdecl )] - public static extern IntPtr SteamInternal_FindOrCreateGameServerInterface( int steamuser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string versionname ); - - [DllImport( Platform.LibraryName, EntryPoint = "SteamInternal_CreateInterface", CallingConvention = CallingConvention.Cdecl )] - public static extern IntPtr SteamInternal_CreateInterface( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string version ); - - } - static internal bool GameServer_Init( uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, int eServerMode, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pchVersionString ) - { - return Native.SteamInternal_GameServer_Init( unIP, usPort, usGamePort, usQueryPort, eServerMode, pchVersionString ); - } - - static internal IntPtr FindOrCreateUserInterface( int steamuser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string versionname ) - { - return Native.SteamInternal_FindOrCreateUserInterface( steamuser, versionname ); - } - - static internal IntPtr FindOrCreateGameServerInterface( int steamuser, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string versionname ) - { - return Native.SteamInternal_FindOrCreateGameServerInterface( steamuser, versionname ); - } - - static internal IntPtr CreateInterface( [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string version ) - { - return Native.SteamInternal_CreateInterface( version ); - } - - } -} diff --git a/Facepunch.Steamworks/Generated/SteamStructFunctions.cs b/Facepunch.Steamworks/Generated/SteamStructFunctions.cs new file mode 100644 index 0000000..0ce8301 --- /dev/null +++ b/Facepunch.Steamworks/Generated/SteamStructFunctions.cs @@ -0,0 +1,259 @@ +using System; +using System.Runtime.InteropServices; +using System.Linq; +using Steamworks.Data; +using System.Threading.Tasks; + +namespace Steamworks.Data +{ + internal partial struct gameserveritem_t + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_gameserveritem_t_Construct", CallingConvention = Platform.CC)] + internal static extern void InternalConstruct( ref gameserveritem_t self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_gameserveritem_t_GetName", CallingConvention = Platform.CC)] + internal static extern Utf8StringPointer InternalGetName( ref gameserveritem_t self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_gameserveritem_t_SetName", CallingConvention = Platform.CC)] + internal static extern void InternalSetName( ref gameserveritem_t self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pName ); + + } + + internal partial struct MatchMakingKeyValuePair + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_MatchMakingKeyValuePair_t_Construct", CallingConvention = Platform.CC)] + internal static extern void InternalConstruct( ref MatchMakingKeyValuePair self ); + + } + + internal partial struct servernetadr_t + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_Construct", CallingConvention = Platform.CC)] + internal static extern void InternalConstruct( ref servernetadr_t self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_Init", CallingConvention = Platform.CC)] + internal static extern void InternalInit( ref servernetadr_t self, uint ip, ushort usQueryPort, ushort usConnectionPort ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_GetQueryPort", CallingConvention = Platform.CC)] + internal static extern ushort InternalGetQueryPort( ref servernetadr_t self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_SetQueryPort", CallingConvention = Platform.CC)] + internal static extern void InternalSetQueryPort( ref servernetadr_t self, ushort usPort ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_GetConnectionPort", CallingConvention = Platform.CC)] + internal static extern ushort InternalGetConnectionPort( ref servernetadr_t self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_SetConnectionPort", CallingConvention = Platform.CC)] + internal static extern void InternalSetConnectionPort( ref servernetadr_t self, ushort usPort ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_GetIP", CallingConvention = Platform.CC)] + internal static extern uint InternalGetIP( ref servernetadr_t self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_SetIP", CallingConvention = Platform.CC)] + internal static extern void InternalSetIP( ref servernetadr_t self, uint unIP ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_GetConnectionAddressString", CallingConvention = Platform.CC)] + internal static extern Utf8StringPointer InternalGetConnectionAddressString( ref servernetadr_t self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_GetQueryAddressString", CallingConvention = Platform.CC)] + internal static extern Utf8StringPointer InternalGetQueryAddressString( ref servernetadr_t self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_IsLessThan", CallingConvention = Platform.CC)] + internal static extern bool InternalIsLessThan( ref servernetadr_t self, ref servernetadr_t netadr ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_servernetadr_t_Assign", CallingConvention = Platform.CC)] + internal static extern void InternalAssign( ref servernetadr_t self, ref servernetadr_t that ); + + } + + internal partial struct SteamDatagramHostedAddress + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamDatagramHostedAddress_Clear", CallingConvention = Platform.CC)] + internal static extern void InternalClear( ref SteamDatagramHostedAddress self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamDatagramHostedAddress_GetPopID", CallingConvention = Platform.CC)] + internal static extern SteamNetworkingPOPID InternalGetPopID( ref SteamDatagramHostedAddress self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamDatagramHostedAddress_SetDevAddress", CallingConvention = Platform.CC)] + internal static extern void InternalSetDevAddress( ref SteamDatagramHostedAddress self, uint nIP, ushort nPort, SteamNetworkingPOPID popid ); + + } + + internal partial struct SteamIPAddress + { + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamIPAddress_t_IsSet", CallingConvention = Platform.CC)] + internal static extern bool InternalIsSet( ref SteamIPAddress self ); + + } + + internal partial struct NetKeyValue + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingConfigValue_t_SetInt32", CallingConvention = Platform.CC)] + internal static extern void InternalSetInt32( ref NetKeyValue self, NetConfig eVal, int data ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingConfigValue_t_SetInt64", CallingConvention = Platform.CC)] + internal static extern void InternalSetInt64( ref NetKeyValue self, NetConfig eVal, long data ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingConfigValue_t_SetFloat", CallingConvention = Platform.CC)] + internal static extern void InternalSetFloat( ref NetKeyValue self, NetConfig eVal, float data ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingConfigValue_t_SetPtr", CallingConvention = Platform.CC)] + internal static extern void InternalSetPtr( ref NetKeyValue self, NetConfig eVal, IntPtr data ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingConfigValue_t_SetString", CallingConvention = Platform.CC)] + internal static extern void InternalSetString( ref NetKeyValue self, NetConfig eVal, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string data ); + + } + + public partial struct NetIdentity + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_Clear", CallingConvention = Platform.CC)] + internal static extern void InternalClear( ref NetIdentity self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsInvalid", CallingConvention = Platform.CC)] + internal static extern bool InternalIsInvalid( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetSteamID", CallingConvention = Platform.CC)] + internal static extern void InternalSetSteamID( ref NetIdentity self, SteamId steamID ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetSteamID", CallingConvention = Platform.CC)] + internal static extern SteamId InternalGetSteamID( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetSteamID64", CallingConvention = Platform.CC)] + internal static extern void InternalSetSteamID64( ref NetIdentity self, ulong steamID ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetSteamID64", CallingConvention = Platform.CC)] + internal static extern ulong InternalGetSteamID64( ref NetIdentity self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetXboxPairwiseID", CallingConvention = Platform.CC)] + internal static extern bool InternalSetXboxPairwiseID( ref NetIdentity self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszString ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetXboxPairwiseID", CallingConvention = Platform.CC)] + internal static extern Utf8StringPointer InternalGetXboxPairwiseID( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetPSNID", CallingConvention = Platform.CC)] + internal static extern void InternalSetPSNID( ref NetIdentity self, ulong id ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetPSNID", CallingConvention = Platform.CC)] + internal static extern ulong InternalGetPSNID( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetStadiaID", CallingConvention = Platform.CC)] + internal static extern void InternalSetStadiaID( ref NetIdentity self, ulong id ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetStadiaID", CallingConvention = Platform.CC)] + internal static extern ulong InternalGetStadiaID( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetIPAddr", CallingConvention = Platform.CC)] + internal static extern void InternalSetIPAddr( ref NetIdentity self, ref NetAddress addr ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetIPAddr", CallingConvention = Platform.CC)] + internal static extern IntPtr InternalGetIPAddr( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetIPv4Addr", CallingConvention = Platform.CC)] + internal static extern void InternalSetIPv4Addr( ref NetIdentity self, uint nIPv4, ushort nPort ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetIPv4", CallingConvention = Platform.CC)] + internal static extern uint InternalGetIPv4( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetFakeIPType", CallingConvention = Platform.CC)] + internal static extern SteamNetworkingFakeIPType InternalGetFakeIPType( ref NetIdentity self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsFakeIP", CallingConvention = Platform.CC)] + internal static extern bool InternalIsFakeIP( ref NetIdentity self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetLocalHost", CallingConvention = Platform.CC)] + internal static extern void InternalSetLocalHost( ref NetIdentity self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsLocalHost", CallingConvention = Platform.CC)] + internal static extern bool InternalIsLocalHost( ref NetIdentity self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetGenericString", CallingConvention = Platform.CC)] + internal static extern bool InternalSetGenericString( ref NetIdentity self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszString ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetGenericString", CallingConvention = Platform.CC)] + internal static extern Utf8StringPointer InternalGetGenericString( ref NetIdentity self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetGenericBytes", CallingConvention = Platform.CC)] + internal static extern bool InternalSetGenericBytes( ref NetIdentity self, IntPtr data, uint cbLen ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetGenericBytes", CallingConvention = Platform.CC)] + internal static extern byte InternalGetGenericBytes( ref NetIdentity self, ref int cbLen ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsEqualTo", CallingConvention = Platform.CC)] + internal static extern bool InternalIsEqualTo( ref NetIdentity self, ref NetIdentity x ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_ToString", CallingConvention = Platform.CC)] + internal static extern void InternalToString( ref NetIdentity self, IntPtr buf, uint cbBuf ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_ParseString", CallingConvention = Platform.CC)] + internal static extern bool InternalParseString( ref NetIdentity self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszStr ); + + } + + public partial struct NetAddress + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_Clear", CallingConvention = Platform.CC)] + internal static extern void InternalClear( ref NetAddress self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros", CallingConvention = Platform.CC)] + internal static extern bool InternalIsIPv6AllZeros( ref NetAddress self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_SetIPv6", CallingConvention = Platform.CC)] + internal static extern void InternalSetIPv6( ref NetAddress self, ref byte ipv6, ushort nPort ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_SetIPv4", CallingConvention = Platform.CC)] + internal static extern void InternalSetIPv4( ref NetAddress self, uint nIP, ushort nPort ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsIPv4", CallingConvention = Platform.CC)] + internal static extern bool InternalIsIPv4( ref NetAddress self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_GetIPv4", CallingConvention = Platform.CC)] + internal static extern uint InternalGetIPv4( ref NetAddress self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost", CallingConvention = Platform.CC)] + internal static extern void InternalSetIPv6LocalHost( ref NetAddress self, ushort nPort ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsLocalHost", CallingConvention = Platform.CC)] + internal static extern bool InternalIsLocalHost( ref NetAddress self ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_ToString", CallingConvention = Platform.CC)] + internal static extern void InternalToString( ref NetAddress self, IntPtr buf, uint cbBuf, [MarshalAs( UnmanagedType.U1 )] bool bWithPort ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_ParseString", CallingConvention = Platform.CC)] + internal static extern bool InternalParseString( ref NetAddress self, [MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] string pszStr ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", CallingConvention = Platform.CC)] + internal static extern bool InternalIsEqualTo( ref NetAddress self, ref NetAddress x ); + + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_GetFakeIPType", CallingConvention = Platform.CC)] + internal static extern SteamNetworkingFakeIPType InternalGetFakeIPType( ref NetAddress self ); + + [return: MarshalAs( UnmanagedType.I1 )] + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsFakeIP", CallingConvention = Platform.CC)] + internal static extern bool InternalIsFakeIP( ref NetAddress self ); + + } + + internal partial struct NetMsg + { + [DllImport( Platform.LibraryName, EntryPoint = "SteamAPI_SteamNetworkingMessage_t_Release", CallingConvention = Platform.CC)] + internal static unsafe extern void InternalRelease( NetMsg* self ); + + } + +} diff --git a/Facepunch.Steamworks/Generated/SteamStructs.cs b/Facepunch.Steamworks/Generated/SteamStructs.cs index 66839d8..c6f03b4 100644 --- a/Facepunch.Steamworks/Generated/SteamStructs.cs +++ b/Facepunch.Steamworks/Generated/SteamStructs.cs @@ -6,1857 +6,35 @@ using System.Threading.Tasks; namespace Steamworks.Data { - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct CallbackMsg_t - { - internal int SteamUser; // m_hSteamUser HSteamUser - internal int Callback; // m_iCallback int - internal IntPtr ParamPtr; // m_pubParam uint8 * - internal int ParamCount; // m_cubParam int - - #region Marshalling - internal static CallbackMsg_t Fill( IntPtr p ) => ((CallbackMsg_t)(CallbackMsg_t) Marshal.PtrToStructure( p, typeof(CallbackMsg_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamServerConnectFailure_t - { - internal Result Result; // m_eResult enum EResult - [MarshalAs(UnmanagedType.I1)] - internal bool StillRetrying; // m_bStillRetrying _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamServerConnectFailure_t) ); - internal static SteamServerConnectFailure_t Fill( IntPtr p ) => ((SteamServerConnectFailure_t)(SteamServerConnectFailure_t) Marshal.PtrToStructure( p, typeof(SteamServerConnectFailure_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamServersDisconnected_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamServersDisconnected_t) ); - internal static SteamServersDisconnected_t Fill( IntPtr p ) => ((SteamServersDisconnected_t)(SteamServersDisconnected_t) Marshal.PtrToStructure( p, typeof(SteamServersDisconnected_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct ClientGameServerDeny_t - { - internal uint AppID; // m_uAppID uint32 - internal uint GameServerIP; // m_unGameServerIP uint32 - internal ushort GameServerPort; // m_usGameServerPort uint16 - internal ushort Secure; // m_bSecure uint16 - internal uint Reason; // m_uReason uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ClientGameServerDeny_t) ); - internal static ClientGameServerDeny_t Fill( IntPtr p ) => ((ClientGameServerDeny_t)(ClientGameServerDeny_t) Marshal.PtrToStructure( p, typeof(ClientGameServerDeny_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 13, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 13, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 13, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct ValidateAuthTicketResponse_t - { - internal ulong SteamID; // m_SteamID class CSteamID - internal AuthResponse AuthSessionResponse; // m_eAuthSessionResponse enum EAuthSessionResponse - internal ulong OwnerSteamID; // m_OwnerSteamID class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ValidateAuthTicketResponse_t) ); - internal static ValidateAuthTicketResponse_t Fill( IntPtr p ) => ((ValidateAuthTicketResponse_t)(ValidateAuthTicketResponse_t) Marshal.PtrToStructure( p, typeof(ValidateAuthTicketResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 43, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 43, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 43, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MicroTxnAuthorizationResponse_t - { - internal uint AppID; // m_unAppID uint32 - internal ulong OrderID; // m_ulOrderID uint64 - internal byte Authorized; // m_bAuthorized uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MicroTxnAuthorizationResponse_t) ); - internal static MicroTxnAuthorizationResponse_t Fill( IntPtr p ) => ((MicroTxnAuthorizationResponse_t)(MicroTxnAuthorizationResponse_t) Marshal.PtrToStructure( p, typeof(MicroTxnAuthorizationResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 52, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 52, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 52, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct EncryptedAppTicketResponse_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(EncryptedAppTicketResponse_t) ); - internal static EncryptedAppTicketResponse_t Fill( IntPtr p ) => ((EncryptedAppTicketResponse_t)(EncryptedAppTicketResponse_t) Marshal.PtrToStructure( p, typeof(EncryptedAppTicketResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 54, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 54, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 54, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GetAuthSessionTicketResponse_t - { - internal uint AuthTicket; // m_hAuthTicket HAuthTicket - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetAuthSessionTicketResponse_t) ); - internal static GetAuthSessionTicketResponse_t Fill( IntPtr p ) => ((GetAuthSessionTicketResponse_t)(GetAuthSessionTicketResponse_t) Marshal.PtrToStructure( p, typeof(GetAuthSessionTicketResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 63, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 63, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 63, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GameWebCallback_t - { - internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_szURL - internal byte[] URL; // m_szURL char [256] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameWebCallback_t) ); - internal static GameWebCallback_t Fill( IntPtr p ) => ((GameWebCallback_t)(GameWebCallback_t) Marshal.PtrToStructure( p, typeof(GameWebCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 64, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 64, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 64, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct StoreAuthURLResponse_t - { - internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)] // byte[] m_szURL - internal byte[] URL; // m_szURL char [512] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(StoreAuthURLResponse_t) ); - internal static StoreAuthURLResponse_t Fill( IntPtr p ) => ((StoreAuthURLResponse_t)(StoreAuthURLResponse_t) Marshal.PtrToStructure( p, typeof(StoreAuthURLResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 65, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 65, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 65, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MarketEligibilityResponse_t - { - [MarshalAs(UnmanagedType.I1)] - internal bool Allowed; // m_bAllowed _Bool - internal MarketNotAllowedReasonFlags NotAllowedReason; // m_eNotAllowedReason enum EMarketNotAllowedReasonFlags - internal uint TAllowedAtTime; // m_rtAllowedAtTime RTime32 - internal int CdaySteamGuardRequiredDays; // m_cdaySteamGuardRequiredDays int - internal int CdayNewDeviceCooldown; // m_cdayNewDeviceCooldown int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MarketEligibilityResponse_t) ); - internal static MarketEligibilityResponse_t Fill( IntPtr p ) => ((MarketEligibilityResponse_t)(MarketEligibilityResponse_t) Marshal.PtrToStructure( p, typeof(MarketEligibilityResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 66, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 66, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 66, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] internal struct FriendGameInfo_t { - internal GameId GameID; // m_gameID class CGameID + internal GameId GameID; // m_gameID CGameID internal uint GameIP; // m_unGameIP uint32 internal ushort GamePort; // m_usGamePort uint16 internal ushort QueryPort; // m_usQueryPort uint16 - internal ulong SteamIDLobby; // m_steamIDLobby class CSteamID + internal ulong SteamIDLobby; // m_steamIDLobby CSteamID - #region Marshalling - internal static FriendGameInfo_t Fill( IntPtr p ) => ((FriendGameInfo_t)(FriendGameInfo_t) Marshal.PtrToStructure( p, typeof(FriendGameInfo_t) ) ); - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct FriendSessionStateInfo_t - { - internal uint IOnlineSessionInstances; // m_uiOnlineSessionInstances uint32 - internal byte IPublishedToFriendsSessionInstance; // m_uiPublishedToFriendsSessionInstance uint8 - - #region Marshalling - internal static FriendSessionStateInfo_t Fill( IntPtr p ) => ((FriendSessionStateInfo_t)(FriendSessionStateInfo_t) Marshal.PtrToStructure( p, typeof(FriendSessionStateInfo_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct FriendStateChange_t - { - internal ulong SteamID; // m_ulSteamID uint64 - internal int ChangeFlags; // m_nChangeFlags int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendStateChange_t) ); - internal static FriendStateChange_t Fill( IntPtr p ) => ((FriendStateChange_t)(FriendStateChange_t) Marshal.PtrToStructure( p, typeof(FriendStateChange_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GameOverlayActivated_t - { - internal byte Active; // m_bActive uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameOverlayActivated_t) ); - internal static GameOverlayActivated_t Fill( IntPtr p ) => ((GameOverlayActivated_t)(GameOverlayActivated_t) Marshal.PtrToStructure( p, typeof(GameOverlayActivated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 31, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 31, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 31, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GameServerChangeRequested_t - { - internal string ServerUTF8() => System.Text.Encoding.UTF8.GetString( Server, 0, System.Array.IndexOf( Server, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] // byte[] m_rgchServer - internal byte[] Server; // m_rgchServer char [64] - internal string PasswordUTF8() => System.Text.Encoding.UTF8.GetString( Password, 0, System.Array.IndexOf( Password, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] // byte[] m_rgchPassword - internal byte[] Password; // m_rgchPassword char [64] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameServerChangeRequested_t) ); - internal static GameServerChangeRequested_t Fill( IntPtr p ) => ((GameServerChangeRequested_t)(GameServerChangeRequested_t) Marshal.PtrToStructure( p, typeof(GameServerChangeRequested_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 32, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 32, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 32, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GameLobbyJoinRequested_t - { - internal ulong SteamIDLobby; // m_steamIDLobby class CSteamID - internal ulong SteamIDFriend; // m_steamIDFriend class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameLobbyJoinRequested_t) ); - internal static GameLobbyJoinRequested_t Fill( IntPtr p ) => ((GameLobbyJoinRequested_t)(GameLobbyJoinRequested_t) Marshal.PtrToStructure( p, typeof(GameLobbyJoinRequested_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 33, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 33, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 33, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct AvatarImageLoaded_t - { - internal ulong SteamID; // m_steamID class CSteamID - internal int Image; // m_iImage int - internal int Wide; // m_iWide int - internal int Tall; // m_iTall int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AvatarImageLoaded_t) ); - internal static AvatarImageLoaded_t Fill( IntPtr p ) => ((AvatarImageLoaded_t)(AvatarImageLoaded_t) Marshal.PtrToStructure( p, typeof(AvatarImageLoaded_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 34, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 34, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 34, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct ClanOfficerListResponse_t - { - internal ulong SteamIDClan; // m_steamIDClan class CSteamID - internal int COfficers; // m_cOfficers int - internal byte Success; // m_bSuccess uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ClanOfficerListResponse_t) ); - internal static ClanOfficerListResponse_t Fill( IntPtr p ) => ((ClanOfficerListResponse_t)(ClanOfficerListResponse_t) Marshal.PtrToStructure( p, typeof(ClanOfficerListResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 35, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 35, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 35, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct FriendRichPresenceUpdate_t - { - internal ulong SteamIDFriend; // m_steamIDFriend class CSteamID - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendRichPresenceUpdate_t) ); - internal static FriendRichPresenceUpdate_t Fill( IntPtr p ) => ((FriendRichPresenceUpdate_t)(FriendRichPresenceUpdate_t) Marshal.PtrToStructure( p, typeof(FriendRichPresenceUpdate_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 36, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 36, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 36, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GameRichPresenceJoinRequested_t - { - internal ulong SteamIDFriend; // m_steamIDFriend class CSteamID - internal string ConnectUTF8() => System.Text.Encoding.UTF8.GetString( Connect, 0, System.Array.IndexOf( Connect, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchConnect - internal byte[] Connect; // m_rgchConnect char [256] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameRichPresenceJoinRequested_t) ); - internal static GameRichPresenceJoinRequested_t Fill( IntPtr p ) => ((GameRichPresenceJoinRequested_t)(GameRichPresenceJoinRequested_t) Marshal.PtrToStructure( p, typeof(GameRichPresenceJoinRequested_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 37, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 37, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 37, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GameConnectedClanChatMsg_t - { - internal ulong SteamIDClanChat; // m_steamIDClanChat class CSteamID - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - internal int MessageID; // m_iMessageID int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedClanChatMsg_t) ); - internal static GameConnectedClanChatMsg_t Fill( IntPtr p ) => ((GameConnectedClanChatMsg_t)(GameConnectedClanChatMsg_t) Marshal.PtrToStructure( p, typeof(GameConnectedClanChatMsg_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 38, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 38, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 38, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GameConnectedChatJoin_t - { - internal ulong SteamIDClanChat; // m_steamIDClanChat class CSteamID - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedChatJoin_t) ); - internal static GameConnectedChatJoin_t Fill( IntPtr p ) => ((GameConnectedChatJoin_t)(GameConnectedChatJoin_t) Marshal.PtrToStructure( p, typeof(GameConnectedChatJoin_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 39, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 39, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 39, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GameConnectedChatLeave_t - { - internal ulong SteamIDClanChat; // m_steamIDClanChat class CSteamID - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - [MarshalAs(UnmanagedType.I1)] - internal bool Kicked; // m_bKicked _Bool - [MarshalAs(UnmanagedType.I1)] - internal bool Dropped; // m_bDropped _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedChatLeave_t) ); - internal static GameConnectedChatLeave_t Fill( IntPtr p ) => ((GameConnectedChatLeave_t)(GameConnectedChatLeave_t) Marshal.PtrToStructure( p, typeof(GameConnectedChatLeave_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 40, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 40, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 40, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct DownloadClanActivityCountsResult_t - { - [MarshalAs(UnmanagedType.I1)] - internal bool Success; // m_bSuccess _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DownloadClanActivityCountsResult_t) ); - internal static DownloadClanActivityCountsResult_t Fill( IntPtr p ) => ((DownloadClanActivityCountsResult_t)(DownloadClanActivityCountsResult_t) Marshal.PtrToStructure( p, typeof(DownloadClanActivityCountsResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 41, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 41, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 41, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct JoinClanChatRoomCompletionResult_t - { - internal ulong SteamIDClanChat; // m_steamIDClanChat class CSteamID - internal RoomEnter ChatRoomEnterResponse; // m_eChatRoomEnterResponse enum EChatRoomEnterResponse - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(JoinClanChatRoomCompletionResult_t) ); - internal static JoinClanChatRoomCompletionResult_t Fill( IntPtr p ) => ((JoinClanChatRoomCompletionResult_t)(JoinClanChatRoomCompletionResult_t) Marshal.PtrToStructure( p, typeof(JoinClanChatRoomCompletionResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 42, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 42, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 42, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GameConnectedFriendChatMsg_t - { - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - internal int MessageID; // m_iMessageID int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GameConnectedFriendChatMsg_t) ); - internal static GameConnectedFriendChatMsg_t Fill( IntPtr p ) => ((GameConnectedFriendChatMsg_t)(GameConnectedFriendChatMsg_t) Marshal.PtrToStructure( p, typeof(GameConnectedFriendChatMsg_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 43, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 43, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 43, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct FriendsGetFollowerCount_t - { - internal Result Result; // m_eResult enum EResult - internal ulong SteamID; // m_steamID class CSteamID - internal int Count; // m_nCount int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendsGetFollowerCount_t) ); - internal static FriendsGetFollowerCount_t Fill( IntPtr p ) => ((FriendsGetFollowerCount_t)(FriendsGetFollowerCount_t) Marshal.PtrToStructure( p, typeof(FriendsGetFollowerCount_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 44, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 44, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 44, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct FriendsIsFollowing_t - { - internal Result Result; // m_eResult enum EResult - internal ulong SteamID; // m_steamID class CSteamID - [MarshalAs(UnmanagedType.I1)] - internal bool IsFollowing; // m_bIsFollowing _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendsIsFollowing_t) ); - internal static FriendsIsFollowing_t Fill( IntPtr p ) => ((FriendsIsFollowing_t)(FriendsIsFollowing_t) Marshal.PtrToStructure( p, typeof(FriendsIsFollowing_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 45, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 45, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 45, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct FriendsEnumerateFollowingList_t - { - internal Result Result; // m_eResult enum EResult - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - internal ulong[] GSteamID; // m_rgSteamID class CSteamID [50] - internal int ResultsReturned; // m_nResultsReturned int32 - internal int TotalResultCount; // m_nTotalResultCount int32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FriendsEnumerateFollowingList_t) ); - internal static FriendsEnumerateFollowingList_t Fill( IntPtr p ) => ((FriendsEnumerateFollowingList_t)(FriendsEnumerateFollowingList_t) Marshal.PtrToStructure( p, typeof(FriendsEnumerateFollowingList_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 46, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 46, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 46, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SetPersonaNameResponse_t - { - [MarshalAs(UnmanagedType.I1)] - internal bool Success; // m_bSuccess _Bool - [MarshalAs(UnmanagedType.I1)] - internal bool LocalSuccess; // m_bLocalSuccess _Bool - internal Result Result; // m_result enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SetPersonaNameResponse_t) ); - internal static SetPersonaNameResponse_t Fill( IntPtr p ) => ((SetPersonaNameResponse_t)(SetPersonaNameResponse_t) Marshal.PtrToStructure( p, typeof(SetPersonaNameResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamFriends + 47, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamFriends + 47, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamFriends + 47, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LowBatteryPower_t - { - internal byte MinutesBatteryLeft; // m_nMinutesBatteryLeft uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LowBatteryPower_t) ); - internal static LowBatteryPower_t Fill( IntPtr p ) => ((LowBatteryPower_t)(LowBatteryPower_t) Marshal.PtrToStructure( p, typeof(LowBatteryPower_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUtils + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUtils + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUtils + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamAPICallCompleted_t - { - internal ulong AsyncCall; // m_hAsyncCall SteamAPICall_t - internal int Callback; // m_iCallback int - internal uint ParamCount; // m_cubParam uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamAPICallCompleted_t) ); - internal static SteamAPICallCompleted_t Fill( IntPtr p ) => ((SteamAPICallCompleted_t)(SteamAPICallCompleted_t) Marshal.PtrToStructure( p, typeof(SteamAPICallCompleted_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUtils + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUtils + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUtils + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct CheckFileSignature_t - { - internal CheckFileSignature CheckFileSignature; // m_eCheckFileSignature enum ECheckFileSignature - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(CheckFileSignature_t) ); - internal static CheckFileSignature_t Fill( IntPtr p ) => ((CheckFileSignature_t)(CheckFileSignature_t) Marshal.PtrToStructure( p, typeof(CheckFileSignature_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUtils + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUtils + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUtils + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GamepadTextInputDismissed_t - { - [MarshalAs(UnmanagedType.I1)] - internal bool Submitted; // m_bSubmitted _Bool - internal uint SubmittedText; // m_unSubmittedText uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GamepadTextInputDismissed_t) ); - internal static GamepadTextInputDismissed_t Fill( IntPtr p ) => ((GamepadTextInputDismissed_t)(GamepadTextInputDismissed_t) Marshal.PtrToStructure( p, typeof(GamepadTextInputDismissed_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUtils + 14, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUtils + 14, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUtils + 14, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct servernetadr_t + internal partial struct servernetadr_t { internal ushort ConnectionPort; // m_usConnectionPort uint16 internal ushort QueryPort; // m_usQueryPort uint16 internal uint IP; // m_unIP uint32 - #region Marshalling - internal static servernetadr_t Fill( IntPtr p ) => ((servernetadr_t)(servernetadr_t) Marshal.PtrToStructure( p, typeof(servernetadr_t) ) ); - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct gameserveritem_t + internal partial struct gameserveritem_t { - internal servernetadr_t NetAdr; // m_NetAdr class servernetadr_t + internal servernetadr_t NetAdr; // m_NetAdr servernetadr_t internal int Ping; // m_nPing int [MarshalAs(UnmanagedType.I1)] - internal bool HadSuccessfulResponse; // m_bHadSuccessfulResponse _Bool + internal bool HadSuccessfulResponse; // m_bHadSuccessfulResponse bool [MarshalAs(UnmanagedType.I1)] - internal bool DoNotRefresh; // m_bDoNotRefresh _Bool + internal bool DoNotRefresh; // m_bDoNotRefresh bool internal string GameDirUTF8() => System.Text.Encoding.UTF8.GetString( GameDir, 0, System.Array.IndexOf( GameDir, 0 ) ); [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] // byte[] m_szGameDir internal byte[] GameDir; // m_szGameDir char [32] @@ -1871,9 +49,9 @@ namespace Steamworks.Data internal int MaxPlayers; // m_nMaxPlayers int internal int BotPlayers; // m_nBotPlayers int [MarshalAs(UnmanagedType.I1)] - internal bool Password; // m_bPassword _Bool + internal bool Password; // m_bPassword bool [MarshalAs(UnmanagedType.I1)] - internal bool Secure; // m_bSecure _Bool + internal bool Secure; // m_bSecure bool internal uint TimeLastPlayed; // m_ulTimeLastPlayed uint32 internal int ServerVersion; // m_nServerVersion int internal string ServerNameUTF8() => System.Text.Encoding.UTF8.GetString( ServerName, 0, System.Array.IndexOf( ServerName, 0 ) ); @@ -1882,1326 +60,16 @@ namespace Steamworks.Data internal string GameTagsUTF8() => System.Text.Encoding.UTF8.GetString( GameTags, 0, System.Array.IndexOf( GameTags, 0 ) ); [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_szGameTags internal byte[] GameTags; // m_szGameTags char [128] - internal ulong SteamID; // m_steamID class CSteamID + internal ulong SteamID; // m_steamID CSteamID - #region Marshalling - internal static gameserveritem_t Fill( IntPtr p ) => ((gameserveritem_t)(gameserveritem_t) Marshal.PtrToStructure( p, typeof(gameserveritem_t) ) ); - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] internal struct SteamPartyBeaconLocation_t { - internal SteamPartyBeaconLocationType Type; // m_eType enum ESteamPartyBeaconLocationType + internal SteamPartyBeaconLocationType Type; // m_eType ESteamPartyBeaconLocationType internal ulong LocationID; // m_ulLocationID uint64 - #region Marshalling - internal static SteamPartyBeaconLocation_t Fill( IntPtr p ) => ((SteamPartyBeaconLocation_t)(SteamPartyBeaconLocation_t) Marshal.PtrToStructure( p, typeof(SteamPartyBeaconLocation_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct FavoritesListChanged_t - { - internal uint IP; // m_nIP uint32 - internal uint QueryPort; // m_nQueryPort uint32 - internal uint ConnPort; // m_nConnPort uint32 - internal uint AppID; // m_nAppID uint32 - internal uint Flags; // m_nFlags uint32 - [MarshalAs(UnmanagedType.I1)] - internal bool Add; // m_bAdd _Bool - internal uint AccountId; // m_unAccountId AccountID_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FavoritesListChanged_t) ); - internal static FavoritesListChanged_t Fill( IntPtr p ) => ((FavoritesListChanged_t)(FavoritesListChanged_t) Marshal.PtrToStructure( p, typeof(FavoritesListChanged_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyInvite_t - { - internal ulong SteamIDUser; // m_ulSteamIDUser uint64 - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - internal ulong GameID; // m_ulGameID uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyInvite_t) ); - internal static LobbyInvite_t Fill( IntPtr p ) => ((LobbyInvite_t)(LobbyInvite_t) Marshal.PtrToStructure( p, typeof(LobbyInvite_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyEnter_t - { - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - internal uint GfChatPermissions; // m_rgfChatPermissions uint32 - [MarshalAs(UnmanagedType.I1)] - internal bool Locked; // m_bLocked _Bool - internal uint EChatRoomEnterResponse; // m_EChatRoomEnterResponse uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyEnter_t) ); - internal static LobbyEnter_t Fill( IntPtr p ) => ((LobbyEnter_t)(LobbyEnter_t) Marshal.PtrToStructure( p, typeof(LobbyEnter_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyDataUpdate_t - { - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - internal ulong SteamIDMember; // m_ulSteamIDMember uint64 - internal byte Success; // m_bSuccess uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyDataUpdate_t) ); - internal static LobbyDataUpdate_t Fill( IntPtr p ) => ((LobbyDataUpdate_t)(LobbyDataUpdate_t) Marshal.PtrToStructure( p, typeof(LobbyDataUpdate_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyChatUpdate_t - { - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - internal ulong SteamIDUserChanged; // m_ulSteamIDUserChanged uint64 - internal ulong SteamIDMakingChange; // m_ulSteamIDMakingChange uint64 - internal uint GfChatMemberStateChange; // m_rgfChatMemberStateChange uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyChatUpdate_t) ); - internal static LobbyChatUpdate_t Fill( IntPtr p ) => ((LobbyChatUpdate_t)(LobbyChatUpdate_t) Marshal.PtrToStructure( p, typeof(LobbyChatUpdate_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 6, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 6, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 6, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyChatMsg_t - { - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - internal ulong SteamIDUser; // m_ulSteamIDUser uint64 - internal byte ChatEntryType; // m_eChatEntryType uint8 - internal uint ChatID; // m_iChatID uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyChatMsg_t) ); - internal static LobbyChatMsg_t Fill( IntPtr p ) => ((LobbyChatMsg_t)(LobbyChatMsg_t) Marshal.PtrToStructure( p, typeof(LobbyChatMsg_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 7, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 7, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 7, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyGameCreated_t - { - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - internal ulong SteamIDGameServer; // m_ulSteamIDGameServer uint64 - internal uint IP; // m_unIP uint32 - internal ushort Port; // m_usPort uint16 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyGameCreated_t) ); - internal static LobbyGameCreated_t Fill( IntPtr p ) => ((LobbyGameCreated_t)(LobbyGameCreated_t) Marshal.PtrToStructure( p, typeof(LobbyGameCreated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 9, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 9, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 9, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyMatchList_t - { - internal uint LobbiesMatching; // m_nLobbiesMatching uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyMatchList_t) ); - internal static LobbyMatchList_t Fill( IntPtr p ) => ((LobbyMatchList_t)(LobbyMatchList_t) Marshal.PtrToStructure( p, typeof(LobbyMatchList_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 10, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 10, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 10, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyKicked_t - { - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - internal ulong SteamIDAdmin; // m_ulSteamIDAdmin uint64 - internal byte KickedDueToDisconnect; // m_bKickedDueToDisconnect uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyKicked_t) ); - internal static LobbyKicked_t Fill( IntPtr p ) => ((LobbyKicked_t)(LobbyKicked_t) Marshal.PtrToStructure( p, typeof(LobbyKicked_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LobbyCreated_t - { - internal Result Result; // m_eResult enum EResult - internal ulong SteamIDLobby; // m_ulSteamIDLobby uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LobbyCreated_t) ); - internal static LobbyCreated_t Fill( IntPtr p ) => ((LobbyCreated_t)(LobbyCreated_t) Marshal.PtrToStructure( p, typeof(LobbyCreated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 13, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 13, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 13, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct PSNGameBootInviteResult_t - { - [MarshalAs(UnmanagedType.I1)] - internal bool GameBootInviteExists; // m_bGameBootInviteExists _Bool - internal ulong SteamIDLobby; // m_steamIDLobby class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(PSNGameBootInviteResult_t) ); - internal static PSNGameBootInviteResult_t Fill( IntPtr p ) => ((PSNGameBootInviteResult_t)(PSNGameBootInviteResult_t) Marshal.PtrToStructure( p, typeof(PSNGameBootInviteResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 15, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 15, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 15, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct FavoritesListAccountsUpdated_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FavoritesListAccountsUpdated_t) ); - internal static FavoritesListAccountsUpdated_t Fill( IntPtr p ) => ((FavoritesListAccountsUpdated_t)(FavoritesListAccountsUpdated_t) Marshal.PtrToStructure( p, typeof(FavoritesListAccountsUpdated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMatchmaking + 16, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMatchmaking + 16, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMatchmaking + 16, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct SearchForGameProgressCallback_t - { - internal ulong LSearchID; // m_ullSearchID uint64 - internal Result Result; // m_eResult enum EResult - internal ulong LobbyID; // m_lobbyID class CSteamID - internal ulong SteamIDEndedSearch; // m_steamIDEndedSearch class CSteamID - internal int SecondsRemainingEstimate; // m_nSecondsRemainingEstimate int32 - internal int CPlayersSearching; // m_cPlayersSearching int32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SearchForGameProgressCallback_t) ); - internal static SearchForGameProgressCallback_t Fill( IntPtr p ) => ((SearchForGameProgressCallback_t)(SearchForGameProgressCallback_t) Marshal.PtrToStructure( p, typeof(SearchForGameProgressCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameSearch + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameSearch + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameSearch + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct SearchForGameResultCallback_t - { - internal ulong LSearchID; // m_ullSearchID uint64 - internal Result Result; // m_eResult enum EResult - internal int CountPlayersInGame; // m_nCountPlayersInGame int32 - internal int CountAcceptedGame; // m_nCountAcceptedGame int32 - internal ulong SteamIDHost; // m_steamIDHost class CSteamID - [MarshalAs(UnmanagedType.I1)] - internal bool FinalCallback; // m_bFinalCallback _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SearchForGameResultCallback_t) ); - internal static SearchForGameResultCallback_t Fill( IntPtr p ) => ((SearchForGameResultCallback_t)(SearchForGameResultCallback_t) Marshal.PtrToStructure( p, typeof(SearchForGameResultCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameSearch + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameSearch + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameSearch + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RequestPlayersForGameProgressCallback_t - { - internal Result Result; // m_eResult enum EResult - internal ulong LSearchID; // m_ullSearchID uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RequestPlayersForGameProgressCallback_t) ); - internal static RequestPlayersForGameProgressCallback_t Fill( IntPtr p ) => ((RequestPlayersForGameProgressCallback_t)(RequestPlayersForGameProgressCallback_t) Marshal.PtrToStructure( p, typeof(RequestPlayersForGameProgressCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameSearch + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameSearch + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameSearch + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct RequestPlayersForGameResultCallback_t - { - internal Result Result; // m_eResult enum EResult - internal ulong LSearchID; // m_ullSearchID uint64 - internal ulong SteamIDPlayerFound; // m_SteamIDPlayerFound class CSteamID - internal ulong SteamIDLobby; // m_SteamIDLobby class CSteamID - internal PlayerAcceptState_t PlayerAcceptState; // m_ePlayerAcceptState PlayerAcceptState_t - internal int PlayerIndex; // m_nPlayerIndex int32 - internal int TotalPlayersFound; // m_nTotalPlayersFound int32 - internal int TotalPlayersAcceptedGame; // m_nTotalPlayersAcceptedGame int32 - internal int SuggestedTeamIndex; // m_nSuggestedTeamIndex int32 - internal ulong LUniqueGameID; // m_ullUniqueGameID uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RequestPlayersForGameResultCallback_t) ); - internal static RequestPlayersForGameResultCallback_t Fill( IntPtr p ) => ((RequestPlayersForGameResultCallback_t)(RequestPlayersForGameResultCallback_t) Marshal.PtrToStructure( p, typeof(RequestPlayersForGameResultCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameSearch + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameSearch + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameSearch + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RequestPlayersForGameFinalResultCallback_t - { - internal Result Result; // m_eResult enum EResult - internal ulong LSearchID; // m_ullSearchID uint64 - internal ulong LUniqueGameID; // m_ullUniqueGameID uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RequestPlayersForGameFinalResultCallback_t) ); - internal static RequestPlayersForGameFinalResultCallback_t Fill( IntPtr p ) => ((RequestPlayersForGameFinalResultCallback_t)(RequestPlayersForGameFinalResultCallback_t) Marshal.PtrToStructure( p, typeof(RequestPlayersForGameFinalResultCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameSearch + 13, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameSearch + 13, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameSearch + 13, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct SubmitPlayerResultResultCallback_t - { - internal Result Result; // m_eResult enum EResult - internal ulong UllUniqueGameID; // ullUniqueGameID uint64 - internal ulong SteamIDPlayer; // steamIDPlayer class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SubmitPlayerResultResultCallback_t) ); - internal static SubmitPlayerResultResultCallback_t Fill( IntPtr p ) => ((SubmitPlayerResultResultCallback_t)(SubmitPlayerResultResultCallback_t) Marshal.PtrToStructure( p, typeof(SubmitPlayerResultResultCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameSearch + 14, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameSearch + 14, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameSearch + 14, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct EndGameResultCallback_t - { - internal Result Result; // m_eResult enum EResult - internal ulong UllUniqueGameID; // ullUniqueGameID uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(EndGameResultCallback_t) ); - internal static EndGameResultCallback_t Fill( IntPtr p ) => ((EndGameResultCallback_t)(EndGameResultCallback_t) Marshal.PtrToStructure( p, typeof(EndGameResultCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameSearch + 15, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameSearch + 15, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameSearch + 15, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct JoinPartyCallback_t - { - internal Result Result; // m_eResult enum EResult - internal ulong BeaconID; // m_ulBeaconID PartyBeaconID_t - internal ulong SteamIDBeaconOwner; // m_SteamIDBeaconOwner class CSteamID - internal string ConnectStringUTF8() => System.Text.Encoding.UTF8.GetString( ConnectString, 0, System.Array.IndexOf( ConnectString, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchConnectString - internal byte[] ConnectString; // m_rgchConnectString char [256] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(JoinPartyCallback_t) ); - internal static JoinPartyCallback_t Fill( IntPtr p ) => ((JoinPartyCallback_t)(JoinPartyCallback_t) Marshal.PtrToStructure( p, typeof(JoinPartyCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamParties + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamParties + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamParties + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct CreateBeaconCallback_t - { - internal Result Result; // m_eResult enum EResult - internal ulong BeaconID; // m_ulBeaconID PartyBeaconID_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(CreateBeaconCallback_t) ); - internal static CreateBeaconCallback_t Fill( IntPtr p ) => ((CreateBeaconCallback_t)(CreateBeaconCallback_t) Marshal.PtrToStructure( p, typeof(CreateBeaconCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamParties + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamParties + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamParties + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct ReservationNotificationCallback_t - { - internal ulong BeaconID; // m_ulBeaconID PartyBeaconID_t - internal ulong SteamIDJoiner; // m_steamIDJoiner class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ReservationNotificationCallback_t) ); - internal static ReservationNotificationCallback_t Fill( IntPtr p ) => ((ReservationNotificationCallback_t)(ReservationNotificationCallback_t) Marshal.PtrToStructure( p, typeof(ReservationNotificationCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamParties + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamParties + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamParties + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct ChangeNumOpenSlotsCallback_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ChangeNumOpenSlotsCallback_t) ); - internal static ChangeNumOpenSlotsCallback_t Fill( IntPtr p ) => ((ChangeNumOpenSlotsCallback_t)(ChangeNumOpenSlotsCallback_t) Marshal.PtrToStructure( p, typeof(ChangeNumOpenSlotsCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamParties + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamParties + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamParties + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] @@ -3210,2607 +78,17 @@ namespace Steamworks.Data internal IntPtr Strings; // m_ppStrings const char ** internal int NumStrings; // m_nNumStrings int32 - #region Marshalling - internal static SteamParamStringArray_t Fill( IntPtr p ) => ((SteamParamStringArray_t)(SteamParamStringArray_t) Marshal.PtrToStructure( p, typeof(SteamParamStringArray_t) ) ); - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageAppSyncedClient_t - { - internal AppId AppID; // m_nAppID AppId_t - internal Result Result; // m_eResult enum EResult - internal int NumDownloads; // m_unNumDownloads int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageAppSyncedClient_t) ); - internal static RemoteStorageAppSyncedClient_t Fill( IntPtr p ) => ((RemoteStorageAppSyncedClient_t)(RemoteStorageAppSyncedClient_t) Marshal.PtrToStructure( p, typeof(RemoteStorageAppSyncedClient_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageAppSyncedServer_t - { - internal AppId AppID; // m_nAppID AppId_t - internal Result Result; // m_eResult enum EResult - internal int NumUploads; // m_unNumUploads int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageAppSyncedServer_t) ); - internal static RemoteStorageAppSyncedServer_t Fill( IntPtr p ) => ((RemoteStorageAppSyncedServer_t)(RemoteStorageAppSyncedServer_t) Marshal.PtrToStructure( p, typeof(RemoteStorageAppSyncedServer_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageAppSyncProgress_t - { - internal string CurrentFileUTF8() => System.Text.Encoding.UTF8.GetString( CurrentFile, 0, System.Array.IndexOf( CurrentFile, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] // byte[] m_rgchCurrentFile - internal byte[] CurrentFile; // m_rgchCurrentFile char [260] - internal AppId AppID; // m_nAppID AppId_t - internal uint BytesTransferredThisChunk; // m_uBytesTransferredThisChunk uint32 - internal double DAppPercentComplete; // m_dAppPercentComplete double - [MarshalAs(UnmanagedType.I1)] - internal bool Uploading; // m_bUploading _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageAppSyncProgress_t) ); - internal static RemoteStorageAppSyncProgress_t Fill( IntPtr p ) => ((RemoteStorageAppSyncProgress_t)(RemoteStorageAppSyncProgress_t) Marshal.PtrToStructure( p, typeof(RemoteStorageAppSyncProgress_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageAppSyncStatusCheck_t - { - internal AppId AppID; // m_nAppID AppId_t - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageAppSyncStatusCheck_t) ); - internal static RemoteStorageAppSyncStatusCheck_t Fill( IntPtr p ) => ((RemoteStorageAppSyncStatusCheck_t)(RemoteStorageAppSyncStatusCheck_t) Marshal.PtrToStructure( p, typeof(RemoteStorageAppSyncStatusCheck_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageFileShareResult_t - { - internal Result Result; // m_eResult enum EResult - internal ulong File; // m_hFile UGCHandle_t - internal string FilenameUTF8() => System.Text.Encoding.UTF8.GetString( Filename, 0, System.Array.IndexOf( Filename, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] // byte[] m_rgchFilename - internal byte[] Filename; // m_rgchFilename char [260] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageFileShareResult_t) ); - internal static RemoteStorageFileShareResult_t Fill( IntPtr p ) => ((RemoteStorageFileShareResult_t)(RemoteStorageFileShareResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageFileShareResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 7, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 7, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 7, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStoragePublishFileResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - [MarshalAs(UnmanagedType.I1)] - internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishFileResult_t) ); - internal static RemoteStoragePublishFileResult_t Fill( IntPtr p ) => ((RemoteStoragePublishFileResult_t)(RemoteStoragePublishFileResult_t) Marshal.PtrToStructure( p, typeof(RemoteStoragePublishFileResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 9, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 9, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 9, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageDeletePublishedFileResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageDeletePublishedFileResult_t) ); - internal static RemoteStorageDeletePublishedFileResult_t Fill( IntPtr p ) => ((RemoteStorageDeletePublishedFileResult_t)(RemoteStorageDeletePublishedFileResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageDeletePublishedFileResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageEnumerateUserPublishedFilesResult_t - { - internal Result Result; // m_eResult enum EResult - internal int ResultsReturned; // m_nResultsReturned int32 - internal int TotalResultCount; // m_nTotalResultCount int32 - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateUserPublishedFilesResult_t) ); - internal static RemoteStorageEnumerateUserPublishedFilesResult_t Fill( IntPtr p ) => ((RemoteStorageEnumerateUserPublishedFilesResult_t)(RemoteStorageEnumerateUserPublishedFilesResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageEnumerateUserPublishedFilesResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageSubscribePublishedFileResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageSubscribePublishedFileResult_t) ); - internal static RemoteStorageSubscribePublishedFileResult_t Fill( IntPtr p ) => ((RemoteStorageSubscribePublishedFileResult_t)(RemoteStorageSubscribePublishedFileResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageSubscribePublishedFileResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 13, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 13, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 13, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageEnumerateUserSubscribedFilesResult_t - { - internal Result Result; // m_eResult enum EResult - internal int ResultsReturned; // m_nResultsReturned int32 - internal int TotalResultCount; // m_nTotalResultCount int32 - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] - internal uint[] GRTimeSubscribed; // m_rgRTimeSubscribed uint32 [50] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateUserSubscribedFilesResult_t) ); - internal static RemoteStorageEnumerateUserSubscribedFilesResult_t Fill( IntPtr p ) => ((RemoteStorageEnumerateUserSubscribedFilesResult_t)(RemoteStorageEnumerateUserSubscribedFilesResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageEnumerateUserSubscribedFilesResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 14, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 14, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 14, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageUnsubscribePublishedFileResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUnsubscribePublishedFileResult_t) ); - internal static RemoteStorageUnsubscribePublishedFileResult_t Fill( IntPtr p ) => ((RemoteStorageUnsubscribePublishedFileResult_t)(RemoteStorageUnsubscribePublishedFileResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageUnsubscribePublishedFileResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 15, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 15, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 15, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageUpdatePublishedFileResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - [MarshalAs(UnmanagedType.I1)] - internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUpdatePublishedFileResult_t) ); - internal static RemoteStorageUpdatePublishedFileResult_t Fill( IntPtr p ) => ((RemoteStorageUpdatePublishedFileResult_t)(RemoteStorageUpdatePublishedFileResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageUpdatePublishedFileResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 16, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 16, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 16, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageDownloadUGCResult_t - { - internal Result Result; // m_eResult enum EResult - internal ulong File; // m_hFile UGCHandle_t - internal AppId AppID; // m_nAppID AppId_t - internal int SizeInBytes; // m_nSizeInBytes int32 - internal string PchFileNameUTF8() => System.Text.Encoding.UTF8.GetString( PchFileName, 0, System.Array.IndexOf( PchFileName, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] // byte[] m_pchFileName - internal byte[] PchFileName; // m_pchFileName char [260] - internal ulong SteamIDOwner; // m_ulSteamIDOwner uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageDownloadUGCResult_t) ); - internal static RemoteStorageDownloadUGCResult_t Fill( IntPtr p ) => ((RemoteStorageDownloadUGCResult_t)(RemoteStorageDownloadUGCResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageDownloadUGCResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 17, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 17, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 17, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageGetPublishedFileDetailsResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal AppId CreatorAppID; // m_nCreatorAppID AppId_t - internal AppId ConsumerAppID; // m_nConsumerAppID AppId_t - internal string TitleUTF8() => System.Text.Encoding.UTF8.GetString( Title, 0, System.Array.IndexOf( Title, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 129)] // byte[] m_rgchTitle - internal byte[] Title; // m_rgchTitle char [129] - internal string DescriptionUTF8() => System.Text.Encoding.UTF8.GetString( Description, 0, System.Array.IndexOf( Description, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8000)] // byte[] m_rgchDescription - internal byte[] Description; // m_rgchDescription char [8000] - internal ulong File; // m_hFile UGCHandle_t - internal ulong PreviewFile; // m_hPreviewFile UGCHandle_t - internal ulong SteamIDOwner; // m_ulSteamIDOwner uint64 - internal uint TimeCreated; // m_rtimeCreated uint32 - internal uint TimeUpdated; // m_rtimeUpdated uint32 - internal RemoteStoragePublishedFileVisibility Visibility; // m_eVisibility enum ERemoteStoragePublishedFileVisibility - [MarshalAs(UnmanagedType.I1)] - internal bool Banned; // m_bBanned _Bool - internal string TagsUTF8() => System.Text.Encoding.UTF8.GetString( Tags, 0, System.Array.IndexOf( Tags, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1025)] // byte[] m_rgchTags - internal byte[] Tags; // m_rgchTags char [1025] - [MarshalAs(UnmanagedType.I1)] - internal bool TagsTruncated; // m_bTagsTruncated _Bool - internal string PchFileNameUTF8() => System.Text.Encoding.UTF8.GetString( PchFileName, 0, System.Array.IndexOf( PchFileName, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] // byte[] m_pchFileName - internal byte[] PchFileName; // m_pchFileName char [260] - internal int FileSize; // m_nFileSize int32 - internal int PreviewFileSize; // m_nPreviewFileSize int32 - internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchURL - internal byte[] URL; // m_rgchURL char [256] - internal WorkshopFileType FileType; // m_eFileType enum EWorkshopFileType - [MarshalAs(UnmanagedType.I1)] - internal bool AcceptedForUse; // m_bAcceptedForUse _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageGetPublishedFileDetailsResult_t) ); - internal static RemoteStorageGetPublishedFileDetailsResult_t Fill( IntPtr p ) => ((RemoteStorageGetPublishedFileDetailsResult_t)(RemoteStorageGetPublishedFileDetailsResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageGetPublishedFileDetailsResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 18, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 18, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 18, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageEnumerateWorkshopFilesResult_t - { - internal Result Result; // m_eResult enum EResult - internal int ResultsReturned; // m_nResultsReturned int32 - internal int TotalResultCount; // m_nTotalResultCount int32 - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.R4)] - internal float[] GScore; // m_rgScore float [50] - internal AppId AppId; // m_nAppId AppId_t - internal uint StartIndex; // m_unStartIndex uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateWorkshopFilesResult_t) ); - internal static RemoteStorageEnumerateWorkshopFilesResult_t Fill( IntPtr p ) => ((RemoteStorageEnumerateWorkshopFilesResult_t)(RemoteStorageEnumerateWorkshopFilesResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageEnumerateWorkshopFilesResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 19, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 19, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 19, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageGetPublishedItemVoteDetailsResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_unPublishedFileId PublishedFileId_t - internal int VotesFor; // m_nVotesFor int32 - internal int VotesAgainst; // m_nVotesAgainst int32 - internal int Reports; // m_nReports int32 - internal float FScore; // m_fScore float - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageGetPublishedItemVoteDetailsResult_t) ); - internal static RemoteStorageGetPublishedItemVoteDetailsResult_t Fill( IntPtr p ) => ((RemoteStorageGetPublishedItemVoteDetailsResult_t)(RemoteStorageGetPublishedItemVoteDetailsResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageGetPublishedItemVoteDetailsResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 20, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 20, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 20, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStoragePublishedFileSubscribed_t - { - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileSubscribed_t) ); - internal static RemoteStoragePublishedFileSubscribed_t Fill( IntPtr p ) => ((RemoteStoragePublishedFileSubscribed_t)(RemoteStoragePublishedFileSubscribed_t) Marshal.PtrToStructure( p, typeof(RemoteStoragePublishedFileSubscribed_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 21, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 21, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 21, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStoragePublishedFileUnsubscribed_t - { - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileUnsubscribed_t) ); - internal static RemoteStoragePublishedFileUnsubscribed_t Fill( IntPtr p ) => ((RemoteStoragePublishedFileUnsubscribed_t)(RemoteStoragePublishedFileUnsubscribed_t) Marshal.PtrToStructure( p, typeof(RemoteStoragePublishedFileUnsubscribed_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 22, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 22, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 22, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStoragePublishedFileDeleted_t - { - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileDeleted_t) ); - internal static RemoteStoragePublishedFileDeleted_t Fill( IntPtr p ) => ((RemoteStoragePublishedFileDeleted_t)(RemoteStoragePublishedFileDeleted_t) Marshal.PtrToStructure( p, typeof(RemoteStoragePublishedFileDeleted_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 23, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 23, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 23, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageUpdateUserPublishedItemVoteResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUpdateUserPublishedItemVoteResult_t) ); - internal static RemoteStorageUpdateUserPublishedItemVoteResult_t Fill( IntPtr p ) => ((RemoteStorageUpdateUserPublishedItemVoteResult_t)(RemoteStorageUpdateUserPublishedItemVoteResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageUpdateUserPublishedItemVoteResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 24, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 24, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 24, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageUserVoteDetails_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal WorkshopVote Vote; // m_eVote enum EWorkshopVote - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageUserVoteDetails_t) ); - internal static RemoteStorageUserVoteDetails_t Fill( IntPtr p ) => ((RemoteStorageUserVoteDetails_t)(RemoteStorageUserVoteDetails_t) Marshal.PtrToStructure( p, typeof(RemoteStorageUserVoteDetails_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 25, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 25, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 25, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t - { - internal Result Result; // m_eResult enum EResult - internal int ResultsReturned; // m_nResultsReturned int32 - internal int TotalResultCount; // m_nTotalResultCount int32 - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumerateUserSharedWorkshopFilesResult_t) ); - internal static RemoteStorageEnumerateUserSharedWorkshopFilesResult_t Fill( IntPtr p ) => ((RemoteStorageEnumerateUserSharedWorkshopFilesResult_t)(RemoteStorageEnumerateUserSharedWorkshopFilesResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageEnumerateUserSharedWorkshopFilesResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 26, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 26, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 26, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageSetUserPublishedFileActionResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal WorkshopFileAction Action; // m_eAction enum EWorkshopFileAction - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageSetUserPublishedFileActionResult_t) ); - internal static RemoteStorageSetUserPublishedFileActionResult_t Fill( IntPtr p ) => ((RemoteStorageSetUserPublishedFileActionResult_t)(RemoteStorageSetUserPublishedFileActionResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageSetUserPublishedFileActionResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 27, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 27, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 27, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t - { - internal Result Result; // m_eResult enum EResult - internal WorkshopFileAction Action; // m_eAction enum EWorkshopFileAction - internal int ResultsReturned; // m_nResultsReturned int32 - internal int TotalResultCount; // m_nTotalResultCount int32 - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - internal PublishedFileId[] GPublishedFileId; // m_rgPublishedFileId PublishedFileId_t [50] - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] - internal uint[] GRTimeUpdated; // m_rgRTimeUpdated uint32 [50] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageEnumeratePublishedFilesByUserActionResult_t) ); - internal static RemoteStorageEnumeratePublishedFilesByUserActionResult_t Fill( IntPtr p ) => ((RemoteStorageEnumeratePublishedFilesByUserActionResult_t)(RemoteStorageEnumeratePublishedFilesByUserActionResult_t) Marshal.PtrToStructure( p, typeof(RemoteStorageEnumeratePublishedFilesByUserActionResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 28, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 28, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 28, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStoragePublishFileProgress_t - { - internal double DPercentFile; // m_dPercentFile double - [MarshalAs(UnmanagedType.I1)] - internal bool Preview; // m_bPreview _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishFileProgress_t) ); - internal static RemoteStoragePublishFileProgress_t Fill( IntPtr p ) => ((RemoteStoragePublishFileProgress_t)(RemoteStoragePublishFileProgress_t) Marshal.PtrToStructure( p, typeof(RemoteStoragePublishFileProgress_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 29, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 29, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 29, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStoragePublishedFileUpdated_t - { - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal AppId AppID; // m_nAppID AppId_t - internal ulong Unused; // m_ulUnused uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStoragePublishedFileUpdated_t) ); - internal static RemoteStoragePublishedFileUpdated_t Fill( IntPtr p ) => ((RemoteStoragePublishedFileUpdated_t)(RemoteStoragePublishedFileUpdated_t) Marshal.PtrToStructure( p, typeof(RemoteStoragePublishedFileUpdated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 30, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 30, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 30, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageFileWriteAsyncComplete_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageFileWriteAsyncComplete_t) ); - internal static RemoteStorageFileWriteAsyncComplete_t Fill( IntPtr p ) => ((RemoteStorageFileWriteAsyncComplete_t)(RemoteStorageFileWriteAsyncComplete_t) Marshal.PtrToStructure( p, typeof(RemoteStorageFileWriteAsyncComplete_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 31, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 31, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 31, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoteStorageFileReadAsyncComplete_t - { - internal ulong FileReadAsync; // m_hFileReadAsync SteamAPICall_t - internal Result Result; // m_eResult enum EResult - internal uint Offset; // m_nOffset uint32 - internal uint Read; // m_cubRead uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoteStorageFileReadAsyncComplete_t) ); - internal static RemoteStorageFileReadAsyncComplete_t Fill( IntPtr p ) => ((RemoteStorageFileReadAsyncComplete_t)(RemoteStorageFileReadAsyncComplete_t) Marshal.PtrToStructure( p, typeof(RemoteStorageFileReadAsyncComplete_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientRemoteStorage + 32, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientRemoteStorage + 32, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientRemoteStorage + 32, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] internal struct LeaderboardEntry_t { - internal ulong SteamIDUser; // m_steamIDUser class CSteamID + internal ulong SteamIDUser; // m_steamIDUser CSteamID internal int GlobalRank; // m_nGlobalRank int32 internal int Score; // m_nScore int32 internal int CDetails; // m_cDetails int32 internal ulong UGC; // m_hUGC UGCHandle_t - #region Marshalling - internal static LeaderboardEntry_t Fill( IntPtr p ) => ((LeaderboardEntry_t)(LeaderboardEntry_t) Marshal.PtrToStructure( p, typeof(LeaderboardEntry_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct UserStatsReceived_t - { - internal ulong GameID; // m_nGameID uint64 - internal Result Result; // m_eResult enum EResult - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserStatsReceived_t) ); - internal static UserStatsReceived_t Fill( IntPtr p ) => ((UserStatsReceived_t)(UserStatsReceived_t) Marshal.PtrToStructure( p, typeof(UserStatsReceived_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct UserStatsStored_t - { - internal ulong GameID; // m_nGameID uint64 - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserStatsStored_t) ); - internal static UserStatsStored_t Fill( IntPtr p ) => ((UserStatsStored_t)(UserStatsStored_t) Marshal.PtrToStructure( p, typeof(UserStatsStored_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct UserAchievementStored_t - { - internal ulong GameID; // m_nGameID uint64 - [MarshalAs(UnmanagedType.I1)] - internal bool GroupAchievement; // m_bGroupAchievement _Bool - internal string AchievementNameUTF8() => System.Text.Encoding.UTF8.GetString( AchievementName, 0, System.Array.IndexOf( AchievementName, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_rgchAchievementName - internal byte[] AchievementName; // m_rgchAchievementName char [128] - internal uint CurProgress; // m_nCurProgress uint32 - internal uint MaxProgress; // m_nMaxProgress uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserAchievementStored_t) ); - internal static UserAchievementStored_t Fill( IntPtr p ) => ((UserAchievementStored_t)(UserAchievementStored_t) Marshal.PtrToStructure( p, typeof(UserAchievementStored_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LeaderboardFindResult_t - { - internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t - internal byte LeaderboardFound; // m_bLeaderboardFound uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardFindResult_t) ); - internal static LeaderboardFindResult_t Fill( IntPtr p ) => ((LeaderboardFindResult_t)(LeaderboardFindResult_t) Marshal.PtrToStructure( p, typeof(LeaderboardFindResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LeaderboardScoresDownloaded_t - { - internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t - internal ulong SteamLeaderboardEntries; // m_hSteamLeaderboardEntries SteamLeaderboardEntries_t - internal int CEntryCount; // m_cEntryCount int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardScoresDownloaded_t) ); - internal static LeaderboardScoresDownloaded_t Fill( IntPtr p ) => ((LeaderboardScoresDownloaded_t)(LeaderboardScoresDownloaded_t) Marshal.PtrToStructure( p, typeof(LeaderboardScoresDownloaded_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LeaderboardScoreUploaded_t - { - internal byte Success; // m_bSuccess uint8 - internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t - internal int Score; // m_nScore int32 - internal byte ScoreChanged; // m_bScoreChanged uint8 - internal int GlobalRankNew; // m_nGlobalRankNew int - internal int GlobalRankPrevious; // m_nGlobalRankPrevious int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardScoreUploaded_t) ); - internal static LeaderboardScoreUploaded_t Fill( IntPtr p ) => ((LeaderboardScoreUploaded_t)(LeaderboardScoreUploaded_t) Marshal.PtrToStructure( p, typeof(LeaderboardScoreUploaded_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 6, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 6, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 6, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct NumberOfCurrentPlayers_t - { - internal byte Success; // m_bSuccess uint8 - internal int CPlayers; // m_cPlayers int32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(NumberOfCurrentPlayers_t) ); - internal static NumberOfCurrentPlayers_t Fill( IntPtr p ) => ((NumberOfCurrentPlayers_t)(NumberOfCurrentPlayers_t) Marshal.PtrToStructure( p, typeof(NumberOfCurrentPlayers_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 7, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 7, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 7, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct UserStatsUnloaded_t - { - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserStatsUnloaded_t) ); - internal static UserStatsUnloaded_t Fill( IntPtr p ) => ((UserStatsUnloaded_t)(UserStatsUnloaded_t) Marshal.PtrToStructure( p, typeof(UserStatsUnloaded_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 8, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 8, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 8, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct UserAchievementIconFetched_t - { - internal GameId GameID; // m_nGameID class CGameID - internal string AchievementNameUTF8() => System.Text.Encoding.UTF8.GetString( AchievementName, 0, System.Array.IndexOf( AchievementName, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_rgchAchievementName - internal byte[] AchievementName; // m_rgchAchievementName char [128] - [MarshalAs(UnmanagedType.I1)] - internal bool Achieved; // m_bAchieved _Bool - internal int IconHandle; // m_nIconHandle int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserAchievementIconFetched_t) ); - internal static UserAchievementIconFetched_t Fill( IntPtr p ) => ((UserAchievementIconFetched_t)(UserAchievementIconFetched_t) Marshal.PtrToStructure( p, typeof(UserAchievementIconFetched_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 9, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 9, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 9, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GlobalAchievementPercentagesReady_t - { - internal ulong GameID; // m_nGameID uint64 - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GlobalAchievementPercentagesReady_t) ); - internal static GlobalAchievementPercentagesReady_t Fill( IntPtr p ) => ((GlobalAchievementPercentagesReady_t)(GlobalAchievementPercentagesReady_t) Marshal.PtrToStructure( p, typeof(GlobalAchievementPercentagesReady_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 10, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 10, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 10, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LeaderboardUGCSet_t - { - internal Result Result; // m_eResult enum EResult - internal ulong SteamLeaderboard; // m_hSteamLeaderboard SteamLeaderboard_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LeaderboardUGCSet_t) ); - internal static LeaderboardUGCSet_t Fill( IntPtr p ) => ((LeaderboardUGCSet_t)(LeaderboardUGCSet_t) Marshal.PtrToStructure( p, typeof(LeaderboardUGCSet_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct PS3TrophiesInstalled_t - { - internal ulong GameID; // m_nGameID uint64 - internal Result Result; // m_eResult enum EResult - internal ulong RequiredDiskSpace; // m_ulRequiredDiskSpace uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(PS3TrophiesInstalled_t) ); - internal static PS3TrophiesInstalled_t Fill( IntPtr p ) => ((PS3TrophiesInstalled_t)(PS3TrophiesInstalled_t) Marshal.PtrToStructure( p, typeof(PS3TrophiesInstalled_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GlobalStatsReceived_t - { - internal ulong GameID; // m_nGameID uint64 - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GlobalStatsReceived_t) ); - internal static GlobalStatsReceived_t Fill( IntPtr p ) => ((GlobalStatsReceived_t)(GlobalStatsReceived_t) Marshal.PtrToStructure( p, typeof(GlobalStatsReceived_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct DlcInstalled_t - { - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DlcInstalled_t) ); - internal static DlcInstalled_t Fill( IntPtr p ) => ((DlcInstalled_t)(DlcInstalled_t) Marshal.PtrToStructure( p, typeof(DlcInstalled_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamApps + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamApps + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamApps + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RegisterActivationCodeResponse_t - { - internal RegisterActivationCodeResult Result; // m_eResult enum ERegisterActivationCodeResult - internal uint PackageRegistered; // m_unPackageRegistered uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RegisterActivationCodeResponse_t) ); - internal static RegisterActivationCodeResponse_t Fill( IntPtr p ) => ((RegisterActivationCodeResponse_t)(RegisterActivationCodeResponse_t) Marshal.PtrToStructure( p, typeof(RegisterActivationCodeResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamApps + 8, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamApps + 8, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamApps + 8, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct AppProofOfPurchaseKeyResponse_t - { - internal Result Result; // m_eResult enum EResult - internal uint AppID; // m_nAppID uint32 - internal uint CchKeyLength; // m_cchKeyLength uint32 - internal string KeyUTF8() => System.Text.Encoding.UTF8.GetString( Key, 0, System.Array.IndexOf( Key, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 240)] // byte[] m_rgchKey - internal byte[] Key; // m_rgchKey char [240] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AppProofOfPurchaseKeyResponse_t) ); - internal static AppProofOfPurchaseKeyResponse_t Fill( IntPtr p ) => ((AppProofOfPurchaseKeyResponse_t)(AppProofOfPurchaseKeyResponse_t) Marshal.PtrToStructure( p, typeof(AppProofOfPurchaseKeyResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamApps + 21, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamApps + 21, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamApps + 21, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct FileDetailsResult_t - { - internal Result Result; // m_eResult enum EResult - internal ulong FileSize; // m_ulFileSize uint64 - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] // m_FileSHA - internal byte[] FileSHA; // m_FileSHA uint8 [20] - internal uint Flags; // m_unFlags uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(FileDetailsResult_t) ); - internal static FileDetailsResult_t Fill( IntPtr p ) => ((FileDetailsResult_t)(FileDetailsResult_t) Marshal.PtrToStructure( p, typeof(FileDetailsResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamApps + 23, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamApps + 23, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamApps + 23, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] @@ -5825,789 +103,23 @@ namespace Steamworks.Data internal uint RemoteIP; // m_nRemoteIP uint32 internal ushort RemotePort; // m_nRemotePort uint16 - #region Marshalling - internal static P2PSessionState_t Fill( IntPtr p ) => ((P2PSessionState_t)(P2PSessionState_t) Marshal.PtrToStructure( p, typeof(P2PSessionState_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct P2PSessionRequest_t - { - internal ulong SteamIDRemote; // m_steamIDRemote class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(P2PSessionRequest_t) ); - internal static P2PSessionRequest_t Fill( IntPtr p ) => ((P2PSessionRequest_t)(P2PSessionRequest_t) Marshal.PtrToStructure( p, typeof(P2PSessionRequest_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamNetworking + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamNetworking + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamNetworking + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct P2PSessionConnectFail_t - { - internal ulong SteamIDRemote; // m_steamIDRemote class CSteamID - internal byte P2PSessionError; // m_eP2PSessionError uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(P2PSessionConnectFail_t) ); - internal static P2PSessionConnectFail_t Fill( IntPtr p ) => ((P2PSessionConnectFail_t)(P2PSessionConnectFail_t) Marshal.PtrToStructure( p, typeof(P2PSessionConnectFail_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamNetworking + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamNetworking + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamNetworking + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct SocketStatusCallback_t - { - internal uint Socket; // m_hSocket SNetSocket_t - internal uint ListenSocket; // m_hListenSocket SNetListenSocket_t - internal ulong SteamIDRemote; // m_steamIDRemote class CSteamID - internal int SNetSocketState; // m_eSNetSocketState int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SocketStatusCallback_t) ); - internal static SocketStatusCallback_t Fill( IntPtr p ) => ((SocketStatusCallback_t)(SocketStatusCallback_t) Marshal.PtrToStructure( p, typeof(SocketStatusCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamNetworking + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamNetworking + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamNetworking + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct ScreenshotReady_t + internal struct SteamInputActionEvent_t { - internal uint Local; // m_hLocal ScreenshotHandle - internal Result Result; // m_eResult enum EResult + internal ulong ControllerHandle; // controllerHandle InputHandle_t + internal SteamInputActionEventType EEventType; // eEventType ESteamInputActionEventType + // internal SteamInputActionEvent_t.AnalogAction_t AnalogAction; // analogAction SteamInputActionEvent_t::AnalogAction_t - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ScreenshotReady_t) ); - internal static ScreenshotReady_t Fill( IntPtr p ) => ((ScreenshotReady_t)(ScreenshotReady_t) Marshal.PtrToStructure( p, typeof(ScreenshotReady_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamScreenshots + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamScreenshots + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamScreenshots + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct VolumeHasChanged_t - { - internal float NewVolume; // m_flNewVolume float - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(VolumeHasChanged_t) ); - internal static VolumeHasChanged_t Fill( IntPtr p ) => ((VolumeHasChanged_t)(VolumeHasChanged_t) Marshal.PtrToStructure( p, typeof(VolumeHasChanged_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusic + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusic + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusic + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MusicPlayerWantsShuffled_t - { - [MarshalAs(UnmanagedType.I1)] - internal bool Shuffled; // m_bShuffled _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsShuffled_t) ); - internal static MusicPlayerWantsShuffled_t Fill( IntPtr p ) => ((MusicPlayerWantsShuffled_t)(MusicPlayerWantsShuffled_t) Marshal.PtrToStructure( p, typeof(MusicPlayerWantsShuffled_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusicRemote + 9, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusicRemote + 9, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusicRemote + 9, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MusicPlayerWantsLooped_t - { - [MarshalAs(UnmanagedType.I1)] - internal bool Looped; // m_bLooped _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsLooped_t) ); - internal static MusicPlayerWantsLooped_t Fill( IntPtr p ) => ((MusicPlayerWantsLooped_t)(MusicPlayerWantsLooped_t) Marshal.PtrToStructure( p, typeof(MusicPlayerWantsLooped_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusicRemote + 10, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusicRemote + 10, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusicRemote + 10, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MusicPlayerWantsVolume_t - { - internal float NewVolume; // m_flNewVolume float - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsVolume_t) ); - internal static MusicPlayerWantsVolume_t Fill( IntPtr p ) => ((MusicPlayerWantsVolume_t)(MusicPlayerWantsVolume_t) Marshal.PtrToStructure( p, typeof(MusicPlayerWantsVolume_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusic + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusic + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusic + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MusicPlayerSelectsQueueEntry_t - { - internal int NID; // nID int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerSelectsQueueEntry_t) ); - internal static MusicPlayerSelectsQueueEntry_t Fill( IntPtr p ) => ((MusicPlayerSelectsQueueEntry_t)(MusicPlayerSelectsQueueEntry_t) Marshal.PtrToStructure( p, typeof(MusicPlayerSelectsQueueEntry_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusic + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusic + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusic + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MusicPlayerSelectsPlaylistEntry_t - { - internal int NID; // nID int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerSelectsPlaylistEntry_t) ); - internal static MusicPlayerSelectsPlaylistEntry_t Fill( IntPtr p ) => ((MusicPlayerSelectsPlaylistEntry_t)(MusicPlayerSelectsPlaylistEntry_t) Marshal.PtrToStructure( p, typeof(MusicPlayerSelectsPlaylistEntry_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusic + 13, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusic + 13, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusic + 13, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct MusicPlayerWantsPlayingRepeatStatus_t - { - internal int PlayingRepeatStatus; // m_nPlayingRepeatStatus int - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(MusicPlayerWantsPlayingRepeatStatus_t) ); - internal static MusicPlayerWantsPlayingRepeatStatus_t Fill( IntPtr p ) => ((MusicPlayerWantsPlayingRepeatStatus_t)(MusicPlayerWantsPlayingRepeatStatus_t) Marshal.PtrToStructure( p, typeof(MusicPlayerWantsPlayingRepeatStatus_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusicRemote + 14, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusicRemote + 14, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusicRemote + 14, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTTPRequestCompleted_t - { - internal uint Request; // m_hRequest HTTPRequestHandle - internal ulong ContextValue; // m_ulContextValue uint64 - [MarshalAs(UnmanagedType.I1)] - internal bool RequestSuccessful; // m_bRequestSuccessful _Bool - internal HTTPStatusCode StatusCode; // m_eStatusCode enum EHTTPStatusCode - internal uint BodySize; // m_unBodySize uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTTPRequestCompleted_t) ); - internal static HTTPRequestCompleted_t Fill( IntPtr p ) => ((HTTPRequestCompleted_t)(HTTPRequestCompleted_t) Marshal.PtrToStructure( p, typeof(HTTPRequestCompleted_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientHTTP + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientHTTP + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientHTTP + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTTPRequestHeadersReceived_t - { - internal uint Request; // m_hRequest HTTPRequestHandle - internal ulong ContextValue; // m_ulContextValue uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTTPRequestHeadersReceived_t) ); - internal static HTTPRequestHeadersReceived_t Fill( IntPtr p ) => ((HTTPRequestHeadersReceived_t)(HTTPRequestHeadersReceived_t) Marshal.PtrToStructure( p, typeof(HTTPRequestHeadersReceived_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientHTTP + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientHTTP + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientHTTP + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTTPRequestDataReceived_t - { - internal uint Request; // m_hRequest HTTPRequestHandle - internal ulong ContextValue; // m_ulContextValue uint64 - internal uint COffset; // m_cOffset uint32 - internal uint CBytesReceived; // m_cBytesReceived uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTTPRequestDataReceived_t) ); - internal static HTTPRequestDataReceived_t Fill( IntPtr p ) => ((HTTPRequestDataReceived_t)(HTTPRequestDataReceived_t) Marshal.PtrToStructure( p, typeof(HTTPRequestDataReceived_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientHTTP + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientHTTP + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientHTTP + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] internal struct SteamUGCDetails_t { internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal Result Result; // m_eResult enum EResult - internal WorkshopFileType FileType; // m_eFileType enum EWorkshopFileType + internal Result Result; // m_eResult EResult + internal WorkshopFileType FileType; // m_eFileType EWorkshopFileType internal AppId CreatorAppID; // m_nCreatorAppID AppId_t internal AppId ConsumerAppID; // m_nConsumerAppID AppId_t internal string TitleUTF8() => System.Text.Encoding.UTF8.GetString( Title, 0, System.Array.IndexOf( Title, 0 ) ); @@ -6620,13 +132,13 @@ namespace Steamworks.Data internal uint TimeCreated; // m_rtimeCreated uint32 internal uint TimeUpdated; // m_rtimeUpdated uint32 internal uint TimeAddedToUserList; // m_rtimeAddedToUserList uint32 - internal RemoteStoragePublishedFileVisibility Visibility; // m_eVisibility enum ERemoteStoragePublishedFileVisibility + internal RemoteStoragePublishedFileVisibility Visibility; // m_eVisibility ERemoteStoragePublishedFileVisibility [MarshalAs(UnmanagedType.I1)] - internal bool Banned; // m_bBanned _Bool + internal bool Banned; // m_bBanned bool [MarshalAs(UnmanagedType.I1)] - internal bool AcceptedForUse; // m_bAcceptedForUse _Bool + internal bool AcceptedForUse; // m_bAcceptedForUse bool [MarshalAs(UnmanagedType.I1)] - internal bool TagsTruncated; // m_bTagsTruncated _Bool + internal bool TagsTruncated; // m_bTagsTruncated bool internal string TagsUTF8() => System.Text.Encoding.UTF8.GetString( Tags, 0, System.Array.IndexOf( Tags, 0 ) ); [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1025)] // byte[] m_rgchTags internal byte[] Tags; // m_rgchTags char [1025] @@ -6645,2203 +157,6 @@ namespace Steamworks.Data internal float Score; // m_flScore float internal uint NumChildren; // m_unNumChildren uint32 - #region Marshalling - internal static SteamUGCDetails_t Fill( IntPtr p ) => ((SteamUGCDetails_t)(SteamUGCDetails_t) Marshal.PtrToStructure( p, typeof(SteamUGCDetails_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamUGCQueryCompleted_t - { - internal ulong Handle; // m_handle UGCQueryHandle_t - internal Result Result; // m_eResult enum EResult - internal uint NumResultsReturned; // m_unNumResultsReturned uint32 - internal uint TotalMatchingResults; // m_unTotalMatchingResults uint32 - [MarshalAs(UnmanagedType.I1)] - internal bool CachedData; // m_bCachedData _Bool - internal string NextCursorUTF8() => System.Text.Encoding.UTF8.GetString( NextCursor, 0, System.Array.IndexOf( NextCursor, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchNextCursor - internal byte[] NextCursor; // m_rgchNextCursor char [256] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamUGCQueryCompleted_t) ); - internal static SteamUGCQueryCompleted_t Fill( IntPtr p ) => ((SteamUGCQueryCompleted_t)(SteamUGCQueryCompleted_t) Marshal.PtrToStructure( p, typeof(SteamUGCQueryCompleted_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamUGCRequestUGCDetailsResult_t - { - internal SteamUGCDetails_t Details; // m_details struct SteamUGCDetails_t - [MarshalAs(UnmanagedType.I1)] - internal bool CachedData; // m_bCachedData _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamUGCRequestUGCDetailsResult_t) ); - internal static SteamUGCRequestUGCDetailsResult_t Fill( IntPtr p ) => ((SteamUGCRequestUGCDetailsResult_t)(SteamUGCRequestUGCDetailsResult_t) Marshal.PtrToStructure( p, typeof(SteamUGCRequestUGCDetailsResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct CreateItemResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - [MarshalAs(UnmanagedType.I1)] - internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(CreateItemResult_t) ); - internal static CreateItemResult_t Fill( IntPtr p ) => ((CreateItemResult_t)(CreateItemResult_t) Marshal.PtrToStructure( p, typeof(CreateItemResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SubmitItemUpdateResult_t - { - internal Result Result; // m_eResult enum EResult - [MarshalAs(UnmanagedType.I1)] - internal bool UserNeedsToAcceptWorkshopLegalAgreement; // m_bUserNeedsToAcceptWorkshopLegalAgreement _Bool - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SubmitItemUpdateResult_t) ); - internal static SubmitItemUpdateResult_t Fill( IntPtr p ) => ((SubmitItemUpdateResult_t)(SubmitItemUpdateResult_t) Marshal.PtrToStructure( p, typeof(SubmitItemUpdateResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct DownloadItemResult_t - { - internal AppId AppID; // m_unAppID AppId_t - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DownloadItemResult_t) ); - internal static DownloadItemResult_t Fill( IntPtr p ) => ((DownloadItemResult_t)(DownloadItemResult_t) Marshal.PtrToStructure( p, typeof(DownloadItemResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 6, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 6, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 6, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct UserFavoriteItemsListChanged_t - { - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal Result Result; // m_eResult enum EResult - [MarshalAs(UnmanagedType.I1)] - internal bool WasAddRequest; // m_bWasAddRequest _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(UserFavoriteItemsListChanged_t) ); - internal static UserFavoriteItemsListChanged_t Fill( IntPtr p ) => ((UserFavoriteItemsListChanged_t)(UserFavoriteItemsListChanged_t) Marshal.PtrToStructure( p, typeof(UserFavoriteItemsListChanged_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 7, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 7, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 7, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SetUserItemVoteResult_t - { - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal Result Result; // m_eResult enum EResult - [MarshalAs(UnmanagedType.I1)] - internal bool VoteUp; // m_bVoteUp _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SetUserItemVoteResult_t) ); - internal static SetUserItemVoteResult_t Fill( IntPtr p ) => ((SetUserItemVoteResult_t)(SetUserItemVoteResult_t) Marshal.PtrToStructure( p, typeof(SetUserItemVoteResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 8, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 8, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 8, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GetUserItemVoteResult_t - { - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal Result Result; // m_eResult enum EResult - [MarshalAs(UnmanagedType.I1)] - internal bool VotedUp; // m_bVotedUp _Bool - [MarshalAs(UnmanagedType.I1)] - internal bool VotedDown; // m_bVotedDown _Bool - [MarshalAs(UnmanagedType.I1)] - internal bool VoteSkipped; // m_bVoteSkipped _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetUserItemVoteResult_t) ); - internal static GetUserItemVoteResult_t Fill( IntPtr p ) => ((GetUserItemVoteResult_t)(GetUserItemVoteResult_t) Marshal.PtrToStructure( p, typeof(GetUserItemVoteResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 9, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 9, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 9, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct StartPlaytimeTrackingResult_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(StartPlaytimeTrackingResult_t) ); - internal static StartPlaytimeTrackingResult_t Fill( IntPtr p ) => ((StartPlaytimeTrackingResult_t)(StartPlaytimeTrackingResult_t) Marshal.PtrToStructure( p, typeof(StartPlaytimeTrackingResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 10, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 10, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 10, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct StopPlaytimeTrackingResult_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(StopPlaytimeTrackingResult_t) ); - internal static StopPlaytimeTrackingResult_t Fill( IntPtr p ) => ((StopPlaytimeTrackingResult_t)(StopPlaytimeTrackingResult_t) Marshal.PtrToStructure( p, typeof(StopPlaytimeTrackingResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct AddUGCDependencyResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal PublishedFileId ChildPublishedFileId; // m_nChildPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AddUGCDependencyResult_t) ); - internal static AddUGCDependencyResult_t Fill( IntPtr p ) => ((AddUGCDependencyResult_t)(AddUGCDependencyResult_t) Marshal.PtrToStructure( p, typeof(AddUGCDependencyResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoveUGCDependencyResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal PublishedFileId ChildPublishedFileId; // m_nChildPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoveUGCDependencyResult_t) ); - internal static RemoveUGCDependencyResult_t Fill( IntPtr p ) => ((RemoveUGCDependencyResult_t)(RemoveUGCDependencyResult_t) Marshal.PtrToStructure( p, typeof(RemoveUGCDependencyResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 13, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 13, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 13, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct AddAppDependencyResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AddAppDependencyResult_t) ); - internal static AddAppDependencyResult_t Fill( IntPtr p ) => ((AddAppDependencyResult_t)(AddAppDependencyResult_t) Marshal.PtrToStructure( p, typeof(AddAppDependencyResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 14, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 14, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 14, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct RemoveAppDependencyResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(RemoveAppDependencyResult_t) ); - internal static RemoveAppDependencyResult_t Fill( IntPtr p ) => ((RemoveAppDependencyResult_t)(RemoveAppDependencyResult_t) Marshal.PtrToStructure( p, typeof(RemoveAppDependencyResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 15, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 15, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 15, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GetAppDependenciesResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.U4)] - internal AppId[] GAppIDs; // m_rgAppIDs AppId_t [32] - internal uint NumAppDependencies; // m_nNumAppDependencies uint32 - internal uint TotalNumAppDependencies; // m_nTotalNumAppDependencies uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetAppDependenciesResult_t) ); - internal static GetAppDependenciesResult_t Fill( IntPtr p ) => ((GetAppDependenciesResult_t)(GetAppDependenciesResult_t) Marshal.PtrToStructure( p, typeof(GetAppDependenciesResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 16, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 16, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 16, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct DeleteItemResult_t - { - internal Result Result; // m_eResult enum EResult - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(DeleteItemResult_t) ); - internal static DeleteItemResult_t Fill( IntPtr p ) => ((DeleteItemResult_t)(DeleteItemResult_t) Marshal.PtrToStructure( p, typeof(DeleteItemResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 17, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 17, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 17, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamAppInstalled_t - { - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamAppInstalled_t) ); - internal static SteamAppInstalled_t Fill( IntPtr p ) => ((SteamAppInstalled_t)(SteamAppInstalled_t) Marshal.PtrToStructure( p, typeof(SteamAppInstalled_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamAppList + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamAppList + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamAppList + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamAppUninstalled_t - { - internal AppId AppID; // m_nAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamAppUninstalled_t) ); - internal static SteamAppUninstalled_t Fill( IntPtr p ) => ((SteamAppUninstalled_t)(SteamAppUninstalled_t) Marshal.PtrToStructure( p, typeof(SteamAppUninstalled_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamAppList + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamAppList + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamAppList + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_BrowserReady_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_BrowserReady_t) ); - internal static HTML_BrowserReady_t Fill( IntPtr p ) => ((HTML_BrowserReady_t)(HTML_BrowserReady_t) Marshal.PtrToStructure( p, typeof(HTML_BrowserReady_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_NeedsPaint_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PBGRA; // pBGRA const char * - internal uint UnWide; // unWide uint32 - internal uint UnTall; // unTall uint32 - internal uint UnUpdateX; // unUpdateX uint32 - internal uint UnUpdateY; // unUpdateY uint32 - internal uint UnUpdateWide; // unUpdateWide uint32 - internal uint UnUpdateTall; // unUpdateTall uint32 - internal uint UnScrollX; // unScrollX uint32 - internal uint UnScrollY; // unScrollY uint32 - internal float FlPageScale; // flPageScale float - internal uint UnPageSerial; // unPageSerial uint32 - - #region Marshalling - internal static HTML_NeedsPaint_t Fill( IntPtr p ) => ((HTML_NeedsPaint_t)(HTML_NeedsPaint_t) Marshal.PtrToStructure( p, typeof(HTML_NeedsPaint_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_StartRequest_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchURL; // pchURL const char * - internal string PchTarget; // pchTarget const char * - internal string PchPostData; // pchPostData const char * - [MarshalAs(UnmanagedType.I1)] - internal bool BIsRedirect; // bIsRedirect _Bool - - #region Marshalling - internal static HTML_StartRequest_t Fill( IntPtr p ) => ((HTML_StartRequest_t)(HTML_StartRequest_t) Marshal.PtrToStructure( p, typeof(HTML_StartRequest_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_CloseBrowser_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - - #region Marshalling - internal static HTML_CloseBrowser_t Fill( IntPtr p ) => ((HTML_CloseBrowser_t)(HTML_CloseBrowser_t) Marshal.PtrToStructure( p, typeof(HTML_CloseBrowser_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_URLChanged_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchURL; // pchURL const char * - internal string PchPostData; // pchPostData const char * - [MarshalAs(UnmanagedType.I1)] - internal bool BIsRedirect; // bIsRedirect _Bool - internal string PchPageTitle; // pchPageTitle const char * - [MarshalAs(UnmanagedType.I1)] - internal bool BNewNavigation; // bNewNavigation _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_URLChanged_t) ); - internal static HTML_URLChanged_t Fill( IntPtr p ) => ((HTML_URLChanged_t)(HTML_URLChanged_t) Marshal.PtrToStructure( p, typeof(HTML_URLChanged_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_FinishedRequest_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchURL; // pchURL const char * - internal string PchPageTitle; // pchPageTitle const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_FinishedRequest_t) ); - internal static HTML_FinishedRequest_t Fill( IntPtr p ) => ((HTML_FinishedRequest_t)(HTML_FinishedRequest_t) Marshal.PtrToStructure( p, typeof(HTML_FinishedRequest_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 6, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 6, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 6, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_OpenLinkInNewTab_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchURL; // pchURL const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_OpenLinkInNewTab_t) ); - internal static HTML_OpenLinkInNewTab_t Fill( IntPtr p ) => ((HTML_OpenLinkInNewTab_t)(HTML_OpenLinkInNewTab_t) Marshal.PtrToStructure( p, typeof(HTML_OpenLinkInNewTab_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 7, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 7, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 7, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_ChangedTitle_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchTitle; // pchTitle const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_ChangedTitle_t) ); - internal static HTML_ChangedTitle_t Fill( IntPtr p ) => ((HTML_ChangedTitle_t)(HTML_ChangedTitle_t) Marshal.PtrToStructure( p, typeof(HTML_ChangedTitle_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 8, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 8, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 8, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_SearchResults_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal uint UnResults; // unResults uint32 - internal uint UnCurrentMatch; // unCurrentMatch uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_SearchResults_t) ); - internal static HTML_SearchResults_t Fill( IntPtr p ) => ((HTML_SearchResults_t)(HTML_SearchResults_t) Marshal.PtrToStructure( p, typeof(HTML_SearchResults_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 9, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 9, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 9, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_CanGoBackAndForward_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - [MarshalAs(UnmanagedType.I1)] - internal bool BCanGoBack; // bCanGoBack _Bool - [MarshalAs(UnmanagedType.I1)] - internal bool BCanGoForward; // bCanGoForward _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_CanGoBackAndForward_t) ); - internal static HTML_CanGoBackAndForward_t Fill( IntPtr p ) => ((HTML_CanGoBackAndForward_t)(HTML_CanGoBackAndForward_t) Marshal.PtrToStructure( p, typeof(HTML_CanGoBackAndForward_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 10, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 10, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 10, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_HorizontalScroll_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal uint UnScrollMax; // unScrollMax uint32 - internal uint UnScrollCurrent; // unScrollCurrent uint32 - internal float FlPageScale; // flPageScale float - [MarshalAs(UnmanagedType.I1)] - internal bool BVisible; // bVisible _Bool - internal uint UnPageSize; // unPageSize uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_HorizontalScroll_t) ); - internal static HTML_HorizontalScroll_t Fill( IntPtr p ) => ((HTML_HorizontalScroll_t)(HTML_HorizontalScroll_t) Marshal.PtrToStructure( p, typeof(HTML_HorizontalScroll_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_VerticalScroll_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal uint UnScrollMax; // unScrollMax uint32 - internal uint UnScrollCurrent; // unScrollCurrent uint32 - internal float FlPageScale; // flPageScale float - [MarshalAs(UnmanagedType.I1)] - internal bool BVisible; // bVisible _Bool - internal uint UnPageSize; // unPageSize uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_VerticalScroll_t) ); - internal static HTML_VerticalScroll_t Fill( IntPtr p ) => ((HTML_VerticalScroll_t)(HTML_VerticalScroll_t) Marshal.PtrToStructure( p, typeof(HTML_VerticalScroll_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 12, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 12, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 12, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_LinkAtPosition_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal uint X; // x uint32 - internal uint Y; // y uint32 - internal string PchURL; // pchURL const char * - [MarshalAs(UnmanagedType.I1)] - internal bool BInput; // bInput _Bool - [MarshalAs(UnmanagedType.I1)] - internal bool BLiveLink; // bLiveLink _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_LinkAtPosition_t) ); - internal static HTML_LinkAtPosition_t Fill( IntPtr p ) => ((HTML_LinkAtPosition_t)(HTML_LinkAtPosition_t) Marshal.PtrToStructure( p, typeof(HTML_LinkAtPosition_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 13, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 13, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 13, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_JSAlert_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchMessage; // pchMessage const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_JSAlert_t) ); - internal static HTML_JSAlert_t Fill( IntPtr p ) => ((HTML_JSAlert_t)(HTML_JSAlert_t) Marshal.PtrToStructure( p, typeof(HTML_JSAlert_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 14, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 14, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 14, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_JSConfirm_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchMessage; // pchMessage const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_JSConfirm_t) ); - internal static HTML_JSConfirm_t Fill( IntPtr p ) => ((HTML_JSConfirm_t)(HTML_JSConfirm_t) Marshal.PtrToStructure( p, typeof(HTML_JSConfirm_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 15, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 15, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 15, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_FileOpenDialog_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchTitle; // pchTitle const char * - internal string PchInitialFile; // pchInitialFile const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_FileOpenDialog_t) ); - internal static HTML_FileOpenDialog_t Fill( IntPtr p ) => ((HTML_FileOpenDialog_t)(HTML_FileOpenDialog_t) Marshal.PtrToStructure( p, typeof(HTML_FileOpenDialog_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 16, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 16, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 16, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_NewWindow_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchURL; // pchURL const char * - internal uint UnX; // unX uint32 - internal uint UnY; // unY uint32 - internal uint UnWide; // unWide uint32 - internal uint UnTall; // unTall uint32 - internal uint UnNewWindow_BrowserHandle_IGNORE; // unNewWindow_BrowserHandle_IGNORE HHTMLBrowser - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_NewWindow_t) ); - internal static HTML_NewWindow_t Fill( IntPtr p ) => ((HTML_NewWindow_t)(HTML_NewWindow_t) Marshal.PtrToStructure( p, typeof(HTML_NewWindow_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 21, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 21, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 21, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_SetCursor_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal uint EMouseCursor; // eMouseCursor uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_SetCursor_t) ); - internal static HTML_SetCursor_t Fill( IntPtr p ) => ((HTML_SetCursor_t)(HTML_SetCursor_t) Marshal.PtrToStructure( p, typeof(HTML_SetCursor_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 22, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 22, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 22, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_StatusText_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchMsg; // pchMsg const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_StatusText_t) ); - internal static HTML_StatusText_t Fill( IntPtr p ) => ((HTML_StatusText_t)(HTML_StatusText_t) Marshal.PtrToStructure( p, typeof(HTML_StatusText_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 23, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 23, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 23, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_ShowToolTip_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchMsg; // pchMsg const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_ShowToolTip_t) ); - internal static HTML_ShowToolTip_t Fill( IntPtr p ) => ((HTML_ShowToolTip_t)(HTML_ShowToolTip_t) Marshal.PtrToStructure( p, typeof(HTML_ShowToolTip_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 24, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 24, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 24, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_UpdateToolTip_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal string PchMsg; // pchMsg const char * - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_UpdateToolTip_t) ); - internal static HTML_UpdateToolTip_t Fill( IntPtr p ) => ((HTML_UpdateToolTip_t)(HTML_UpdateToolTip_t) Marshal.PtrToStructure( p, typeof(HTML_UpdateToolTip_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 25, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 25, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 25, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_HideToolTip_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_HideToolTip_t) ); - internal static HTML_HideToolTip_t Fill( IntPtr p ) => ((HTML_HideToolTip_t)(HTML_HideToolTip_t) Marshal.PtrToStructure( p, typeof(HTML_HideToolTip_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 26, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 26, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 26, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct HTML_BrowserRestarted_t - { - internal uint UnBrowserHandle; // unBrowserHandle HHTMLBrowser - internal uint UnOldBrowserHandle; // unOldBrowserHandle HHTMLBrowser - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(HTML_BrowserRestarted_t) ); - internal static HTML_BrowserRestarted_t Fill( IntPtr p ) => ((HTML_BrowserRestarted_t)(HTML_BrowserRestarted_t) Marshal.PtrToStructure( p, typeof(HTML_BrowserRestarted_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamHTMLSurface + 27, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamHTMLSurface + 27, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamHTMLSurface + 27, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] @@ -8852,2107 +167,30 @@ namespace Steamworks.Data internal ushort Quantity; // m_unQuantity uint16 internal ushort Flags; // m_unFlags uint16 - #region Marshalling - internal static SteamItemDetails_t Fill( IntPtr p ) => ((SteamItemDetails_t)(SteamItemDetails_t) Marshal.PtrToStructure( p, typeof(SteamItemDetails_t) ) ); - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamInventoryResultReady_t + internal partial struct SteamDatagramHostedAddress { - internal int Handle; // m_handle SteamInventoryResult_t - internal Result Result; // m_result enum EResult + internal int CbSize; // m_cbSize int + internal string DataUTF8() => System.Text.Encoding.UTF8.GetString( Data, 0, System.Array.IndexOf( Data, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_data + internal byte[] Data; // m_data char [128] - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryResultReady_t) ); - internal static SteamInventoryResultReady_t Fill( IntPtr p ) => ((SteamInventoryResultReady_t)(SteamInventoryResultReady_t) Marshal.PtrToStructure( p, typeof(SteamInventoryResultReady_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientInventory + 0, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientInventory + 0, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientInventory + 0, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion } [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamInventoryFullUpdate_t + internal struct SteamDatagramGameCoordinatorServerLogin { - internal int Handle; // m_handle SteamInventoryResult_t + internal NetIdentity Dentity; // m_identity SteamNetworkingIdentity + internal SteamDatagramHostedAddress Outing; // m_routing SteamDatagramHostedAddress + internal AppId AppID; // m_nAppID AppId_t + internal uint Time; // m_rtime RTime32 + internal int CbAppData; // m_cbAppData int + internal string AppDataUTF8() => System.Text.Encoding.UTF8.GetString( AppData, 0, System.Array.IndexOf( AppData, 0 ) ); + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)] // byte[] m_appData + internal byte[] AppData; // m_appData char [2048] - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryFullUpdate_t) ); - internal static SteamInventoryFullUpdate_t Fill( IntPtr p ) => ((SteamInventoryFullUpdate_t)(SteamInventoryFullUpdate_t) Marshal.PtrToStructure( p, typeof(SteamInventoryFullUpdate_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientInventory + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientInventory + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientInventory + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct SteamInventoryEligiblePromoItemDefIDs_t - { - internal Result Result; // m_result enum EResult - internal ulong SteamID; // m_steamID class CSteamID - internal int UmEligiblePromoItemDefs; // m_numEligiblePromoItemDefs int - [MarshalAs(UnmanagedType.I1)] - internal bool CachedData; // m_bCachedData _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryEligiblePromoItemDefIDs_t) ); - internal static SteamInventoryEligiblePromoItemDefIDs_t Fill( IntPtr p ) => ((SteamInventoryEligiblePromoItemDefIDs_t)(SteamInventoryEligiblePromoItemDefIDs_t) Marshal.PtrToStructure( p, typeof(SteamInventoryEligiblePromoItemDefIDs_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientInventory + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientInventory + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientInventory + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamInventoryStartPurchaseResult_t - { - internal Result Result; // m_result enum EResult - internal ulong OrderID; // m_ulOrderID uint64 - internal ulong TransID; // m_ulTransID uint64 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryStartPurchaseResult_t) ); - internal static SteamInventoryStartPurchaseResult_t Fill( IntPtr p ) => ((SteamInventoryStartPurchaseResult_t)(SteamInventoryStartPurchaseResult_t) Marshal.PtrToStructure( p, typeof(SteamInventoryStartPurchaseResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientInventory + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientInventory + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientInventory + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamInventoryRequestPricesResult_t - { - internal Result Result; // m_result enum EResult - internal string CurrencyUTF8() => System.Text.Encoding.UTF8.GetString( Currency, 0, System.Array.IndexOf( Currency, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] // byte[] m_rgchCurrency - internal byte[] Currency; // m_rgchCurrency char [4] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryRequestPricesResult_t) ); - internal static SteamInventoryRequestPricesResult_t Fill( IntPtr p ) => ((SteamInventoryRequestPricesResult_t)(SteamInventoryRequestPricesResult_t) Marshal.PtrToStructure( p, typeof(SteamInventoryRequestPricesResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientInventory + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientInventory + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientInventory + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct BroadcastUploadStop_t - { - internal BroadcastUploadResult Result; // m_eResult enum EBroadcastUploadResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(BroadcastUploadStop_t) ); - internal static BroadcastUploadStop_t Fill( IntPtr p ) => ((BroadcastUploadStop_t)(BroadcastUploadStop_t) Marshal.PtrToStructure( p, typeof(BroadcastUploadStop_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientVideo + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientVideo + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientVideo + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GetVideoURLResult_t - { - internal Result Result; // m_eResult enum EResult - internal AppId VideoAppID; // m_unVideoAppID AppId_t - internal string URLUTF8() => System.Text.Encoding.UTF8.GetString( URL, 0, System.Array.IndexOf( URL, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] // byte[] m_rgchURL - internal byte[] URL; // m_rgchURL char [256] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetVideoURLResult_t) ); - internal static GetVideoURLResult_t Fill( IntPtr p ) => ((GetVideoURLResult_t)(GetVideoURLResult_t) Marshal.PtrToStructure( p, typeof(GetVideoURLResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientVideo + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientVideo + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientVideo + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GetOPFSettingsResult_t - { - internal Result Result; // m_eResult enum EResult - internal AppId VideoAppID; // m_unVideoAppID AppId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GetOPFSettingsResult_t) ); - internal static GetOPFSettingsResult_t Fill( IntPtr p ) => ((GetOPFSettingsResult_t)(GetOPFSettingsResult_t) Marshal.PtrToStructure( p, typeof(GetOPFSettingsResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientVideo + 24, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientVideo + 24, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientVideo + 24, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GSClientApprove_t - { - internal ulong SteamID; // m_SteamID class CSteamID - internal ulong OwnerSteamID; // m_OwnerSteamID class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientApprove_t) ); - internal static GSClientApprove_t Fill( IntPtr p ) => ((GSClientApprove_t)(GSClientApprove_t) Marshal.PtrToStructure( p, typeof(GSClientApprove_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GSClientDeny_t - { - internal ulong SteamID; // m_SteamID class CSteamID - internal DenyReason DenyReason; // m_eDenyReason enum EDenyReason - internal string OptionalTextUTF8() => System.Text.Encoding.UTF8.GetString( OptionalText, 0, System.Array.IndexOf( OptionalText, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_rgchOptionalText - internal byte[] OptionalText; // m_rgchOptionalText char [128] - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientDeny_t) ); - internal static GSClientDeny_t Fill( IntPtr p ) => ((GSClientDeny_t)(GSClientDeny_t) Marshal.PtrToStructure( p, typeof(GSClientDeny_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GSClientKick_t - { - internal ulong SteamID; // m_SteamID class CSteamID - internal DenyReason DenyReason; // m_eDenyReason enum EDenyReason - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientKick_t) ); - internal static GSClientKick_t Fill( IntPtr p ) => ((GSClientKick_t)(GSClientKick_t) Marshal.PtrToStructure( p, typeof(GSClientKick_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 3, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 3, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 3, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GSClientAchievementStatus_t - { - internal ulong SteamID; // m_SteamID uint64 - internal string PchAchievementUTF8() => System.Text.Encoding.UTF8.GetString( PchAchievement, 0, System.Array.IndexOf( PchAchievement, 0 ) ); - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] // byte[] m_pchAchievement - internal byte[] PchAchievement; // m_pchAchievement char [128] - [MarshalAs(UnmanagedType.I1)] - internal bool Unlocked; // m_bUnlocked _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientAchievementStatus_t) ); - internal static GSClientAchievementStatus_t Fill( IntPtr p ) => ((GSClientAchievementStatus_t)(GSClientAchievementStatus_t) Marshal.PtrToStructure( p, typeof(GSClientAchievementStatus_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 6, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 6, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 6, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GSPolicyResponse_t - { - internal byte Secure; // m_bSecure uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSPolicyResponse_t) ); - internal static GSPolicyResponse_t Fill( IntPtr p ) => ((GSPolicyResponse_t)(GSPolicyResponse_t) Marshal.PtrToStructure( p, typeof(GSPolicyResponse_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 15, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 15, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 15, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GSGameplayStats_t - { - internal Result Result; // m_eResult enum EResult - internal int Rank; // m_nRank int32 - internal uint TotalConnects; // m_unTotalConnects uint32 - internal uint TotalMinutesPlayed; // m_unTotalMinutesPlayed uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSGameplayStats_t) ); - internal static GSGameplayStats_t Fill( IntPtr p ) => ((GSGameplayStats_t)(GSGameplayStats_t) Marshal.PtrToStructure( p, typeof(GSGameplayStats_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 7, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 7, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 7, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GSClientGroupStatus_t - { - internal ulong SteamIDUser; // m_SteamIDUser class CSteamID - internal ulong SteamIDGroup; // m_SteamIDGroup class CSteamID - [MarshalAs(UnmanagedType.I1)] - internal bool Member; // m_bMember _Bool - [MarshalAs(UnmanagedType.I1)] - internal bool Officer; // m_bOfficer _Bool - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSClientGroupStatus_t) ); - internal static GSClientGroupStatus_t Fill( IntPtr p ) => ((GSClientGroupStatus_t)(GSClientGroupStatus_t) Marshal.PtrToStructure( p, typeof(GSClientGroupStatus_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 8, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 8, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 8, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GSReputation_t - { - internal Result Result; // m_eResult enum EResult - internal uint ReputationScore; // m_unReputationScore uint32 - [MarshalAs(UnmanagedType.I1)] - internal bool Banned; // m_bBanned _Bool - internal uint BannedIP; // m_unBannedIP uint32 - internal ushort BannedPort; // m_usBannedPort uint16 - internal ulong BannedGameID; // m_ulBannedGameID uint64 - internal uint BanExpires; // m_unBanExpires uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSReputation_t) ); - internal static GSReputation_t Fill( IntPtr p ) => ((GSReputation_t)(GSReputation_t) Marshal.PtrToStructure( p, typeof(GSReputation_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 9, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 9, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 9, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct AssociateWithClanResult_t - { - internal Result Result; // m_eResult enum EResult - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AssociateWithClanResult_t) ); - internal static AssociateWithClanResult_t Fill( IntPtr p ) => ((AssociateWithClanResult_t)(AssociateWithClanResult_t) Marshal.PtrToStructure( p, typeof(AssociateWithClanResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 10, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 10, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 10, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct ComputeNewPlayerCompatibilityResult_t - { - internal Result Result; // m_eResult enum EResult - internal int CPlayersThatDontLikeCandidate; // m_cPlayersThatDontLikeCandidate int - internal int CPlayersThatCandidateDoesntLike; // m_cPlayersThatCandidateDoesntLike int - internal int CClanPlayersThatDontLikeCandidate; // m_cClanPlayersThatDontLikeCandidate int - internal ulong SteamIDCandidate; // m_SteamIDCandidate class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ComputeNewPlayerCompatibilityResult_t) ); - internal static ComputeNewPlayerCompatibilityResult_t Fill( IntPtr p ) => ((ComputeNewPlayerCompatibilityResult_t)(ComputeNewPlayerCompatibilityResult_t) Marshal.PtrToStructure( p, typeof(ComputeNewPlayerCompatibilityResult_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServer + 11, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServer + 11, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServer + 11, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GSStatsReceived_t - { - internal Result Result; // m_eResult enum EResult - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSStatsReceived_t) ); - internal static GSStatsReceived_t Fill( IntPtr p ) => ((GSStatsReceived_t)(GSStatsReceived_t) Marshal.PtrToStructure( p, typeof(GSStatsReceived_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServerStats + 0, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServerStats + 0, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServerStats + 0, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GSStatsStored_t - { - internal Result Result; // m_eResult enum EResult - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSStatsStored_t) ); - internal static GSStatsStored_t Fill( IntPtr p ) => ((GSStatsStored_t)(GSStatsStored_t) Marshal.PtrToStructure( p, typeof(GSStatsStored_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameServerStats + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameServerStats + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameServerStats + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct GSStatsUnloaded_t - { - internal ulong SteamIDUser; // m_steamIDUser class CSteamID - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GSStatsUnloaded_t) ); - internal static GSStatsUnloaded_t Fill( IntPtr p ) => ((GSStatsUnloaded_t)(GSStatsUnloaded_t) Marshal.PtrToStructure( p, typeof(GSStatsUnloaded_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUserStats + 8, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUserStats + 8, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUserStats + 8, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct AvailableBeaconLocationsUpdated_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(AvailableBeaconLocationsUpdated_t) ); - internal static AvailableBeaconLocationsUpdated_t Fill( IntPtr p ) => ((AvailableBeaconLocationsUpdated_t)(AvailableBeaconLocationsUpdated_t) Marshal.PtrToStructure( p, typeof(AvailableBeaconLocationsUpdated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamParties + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamParties + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamParties + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct ActiveBeaconsUpdated_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ActiveBeaconsUpdated_t) ); - internal static ActiveBeaconsUpdated_t Fill( IntPtr p ) => ((ActiveBeaconsUpdated_t)(ActiveBeaconsUpdated_t) Marshal.PtrToStructure( p, typeof(ActiveBeaconsUpdated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamParties + 6, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamParties + 6, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamParties + 6, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct PlaybackStatusHasChanged_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(PlaybackStatusHasChanged_t) ); - internal static PlaybackStatusHasChanged_t Fill( IntPtr p ) => ((PlaybackStatusHasChanged_t)(PlaybackStatusHasChanged_t) Marshal.PtrToStructure( p, typeof(PlaybackStatusHasChanged_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamMusic + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamMusic + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamMusic + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct BroadcastUploadStart_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(BroadcastUploadStart_t) ); - internal static BroadcastUploadStart_t Fill( IntPtr p ) => ((BroadcastUploadStart_t)(BroadcastUploadStart_t) Marshal.PtrToStructure( p, typeof(BroadcastUploadStart_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientVideo + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientVideo + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientVideo + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct NewUrlLaunchParameters_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(NewUrlLaunchParameters_t) ); - internal static NewUrlLaunchParameters_t Fill( IntPtr p ) => ((NewUrlLaunchParameters_t)(NewUrlLaunchParameters_t) Marshal.PtrToStructure( p, typeof(NewUrlLaunchParameters_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamApps + 14, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamApps + 14, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamApps + 14, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct ItemInstalled_t - { - internal AppId AppID; // m_unAppID AppId_t - internal PublishedFileId PublishedFileId; // m_nPublishedFileId PublishedFileId_t - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ItemInstalled_t) ); - internal static ItemInstalled_t Fill( IntPtr p ) => ((ItemInstalled_t)(ItemInstalled_t) Marshal.PtrToStructure( p, typeof(ItemInstalled_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientUGC + 5, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientUGC + 5, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientUGC + 5, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamNetConnectionStatusChangedCallback_t - { - internal Connection Conn; // m_hConn HSteamNetConnection - internal ConnectionInfo Nfo; // m_info SteamNetConnectionInfo_t - internal ConnectionState OldState; // m_eOldState ESteamNetworkingConnectionState - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamNetConnectionStatusChangedCallback_t) ); - internal static SteamNetConnectionStatusChangedCallback_t Fill( IntPtr p ) => ((SteamNetConnectionStatusChangedCallback_t)(SteamNetConnectionStatusChangedCallback_t) Marshal.PtrToStructure( p, typeof(SteamNetConnectionStatusChangedCallback_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamNetworkingSockets + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamNetworkingSockets + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamNetworkingSockets + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamInventoryDefinitionUpdate_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamInventoryDefinitionUpdate_t) ); - internal static SteamInventoryDefinitionUpdate_t Fill( IntPtr p ) => ((SteamInventoryDefinitionUpdate_t)(SteamInventoryDefinitionUpdate_t) Marshal.PtrToStructure( p, typeof(SteamInventoryDefinitionUpdate_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.ClientInventory + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.ClientInventory + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.ClientInventory + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamParentalSettingsChanged_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamParentalSettingsChanged_t) ); - internal static SteamParentalSettingsChanged_t Fill( IntPtr p ) => ((SteamParentalSettingsChanged_t)(SteamParentalSettingsChanged_t) Marshal.PtrToStructure( p, typeof(SteamParentalSettingsChanged_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamParentalSettings + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamParentalSettings + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamParentalSettings + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamServersConnected_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamServersConnected_t) ); - internal static SteamServersConnected_t Fill( IntPtr p ) => ((SteamServersConnected_t)(SteamServersConnected_t) Marshal.PtrToStructure( p, typeof(SteamServersConnected_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct NewLaunchQueryParameters_t - { - - #region Marshalling - internal static NewLaunchQueryParameters_t Fill( IntPtr p ) => ((NewLaunchQueryParameters_t)(NewLaunchQueryParameters_t) Marshal.PtrToStructure( p, typeof(NewLaunchQueryParameters_t) ) ); - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GCMessageAvailable_t - { - internal uint MessageSize; // m_nMessageSize uint32 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GCMessageAvailable_t) ); - internal static GCMessageAvailable_t Fill( IntPtr p ) => ((GCMessageAvailable_t)(GCMessageAvailable_t) Marshal.PtrToStructure( p, typeof(GCMessageAvailable_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameCoordinator + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameCoordinator + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameCoordinator + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct GCMessageFailed_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(GCMessageFailed_t) ); - internal static GCMessageFailed_t Fill( IntPtr p ) => ((GCMessageFailed_t)(GCMessageFailed_t) Marshal.PtrToStructure( p, typeof(GCMessageFailed_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamGameCoordinator + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamGameCoordinator + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamGameCoordinator + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct ScreenshotRequested_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(ScreenshotRequested_t) ); - internal static ScreenshotRequested_t Fill( IntPtr p ) => ((ScreenshotRequested_t)(ScreenshotRequested_t) Marshal.PtrToStructure( p, typeof(ScreenshotRequested_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamScreenshots + 2, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamScreenshots + 2, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamScreenshots + 2, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct LicensesUpdated_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(LicensesUpdated_t) ); - internal static LicensesUpdated_t Fill( IntPtr p ) => ((LicensesUpdated_t)(LicensesUpdated_t) Marshal.PtrToStructure( p, typeof(LicensesUpdated_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 25, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 25, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 25, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct SteamShutdown_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(SteamShutdown_t) ); - internal static SteamShutdown_t Fill( IntPtr p ) => ((SteamShutdown_t)(SteamShutdown_t) Marshal.PtrToStructure( p, typeof(SteamShutdown_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUtils + 4, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUtils + 4, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUtils + 4, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct IPCountry_t - { - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(IPCountry_t) ); - internal static IPCountry_t Fill( IntPtr p ) => ((IPCountry_t)(IPCountry_t) Marshal.PtrToStructure( p, typeof(IPCountry_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUtils + 1, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUtils + 1, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUtils + 1, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion - } - - [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] - internal struct IPCFailure_t - { - internal byte FailureType; // m_eFailureType uint8 - - #region SteamCallback - internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof(IPCFailure_t) ); - internal static IPCFailure_t Fill( IntPtr p ) => ((IPCFailure_t)(IPCFailure_t) Marshal.PtrToStructure( p, typeof(IPCFailure_t) ) ); - - static Action actionClient; - [MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) ); - static Action actionServer; - [MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) ); - public static void Install( Action action, bool server = false ) - { - if ( server ) - { - Event.Register( OnServer, StructSize, CallbackIdentifiers.SteamUser + 17, true ); - actionServer = action; - } - else - { - Event.Register( OnClient, StructSize, CallbackIdentifiers.SteamUser + 17, false ); - actionClient = action; - } - } - public static async Task GetResultAsync( SteamAPICall_t handle ) - { - bool failed = false; - - while ( !SteamUtils.IsCallComplete( handle, out failed ) ) - { - await Task.Delay( 1 ); - if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null; - } - if ( failed ) return null; - - var ptr = Marshal.AllocHGlobal( StructSize ); - - try - { - if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, CallbackIdentifiers.SteamUser + 17, ref failed ) || failed ) - return null; - - return Fill( ptr ); - } - finally - { - Marshal.FreeHGlobal( ptr ); - } - } - #endregion } } diff --git a/Facepunch.Steamworks/Generated/SteamTypes.cs b/Facepunch.Steamworks/Generated/SteamTypes.cs index 1ccf33b..5f5085f 100644 --- a/Facepunch.Steamworks/Generated/SteamTypes.cs +++ b/Facepunch.Steamworks/Generated/SteamTypes.cs @@ -6,113 +6,9 @@ using System.Threading.Tasks; namespace Steamworks.Data { - internal struct GID_t : IEquatable, IComparable - { - public ulong Value; - - public static implicit operator GID_t( ulong value ) => new GID_t(){ Value = value }; - public static implicit operator ulong( GID_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (GID_t) p ); - public bool Equals( GID_t p ) => p.Value == Value; - public static bool operator ==( GID_t a, GID_t b ) => a.Equals( b ); - public static bool operator !=( GID_t a, GID_t b ) => !a.Equals( b ); - public int CompareTo( GID_t other ) => Value.CompareTo( other.Value ); - } - - internal struct JobID_t : IEquatable, IComparable - { - public ulong Value; - - public static implicit operator JobID_t( ulong value ) => new JobID_t(){ Value = value }; - public static implicit operator ulong( JobID_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (JobID_t) p ); - public bool Equals( JobID_t p ) => p.Value == Value; - public static bool operator ==( JobID_t a, JobID_t b ) => a.Equals( b ); - public static bool operator !=( JobID_t a, JobID_t b ) => !a.Equals( b ); - public int CompareTo( JobID_t other ) => Value.CompareTo( other.Value ); - } - - internal struct TxnID_t : IEquatable, IComparable - { - public GID_t Value; - - public static implicit operator TxnID_t( GID_t value ) => new TxnID_t(){ Value = value }; - public static implicit operator GID_t( TxnID_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (TxnID_t) p ); - public bool Equals( TxnID_t p ) => p.Value == Value; - public static bool operator ==( TxnID_t a, TxnID_t b ) => a.Equals( b ); - public static bool operator !=( TxnID_t a, TxnID_t b ) => !a.Equals( b ); - public int CompareTo( TxnID_t other ) => Value.CompareTo( other.Value ); - } - - internal struct PackageId_t : IEquatable, IComparable - { - public uint Value; - - public static implicit operator PackageId_t( uint value ) => new PackageId_t(){ Value = value }; - public static implicit operator uint( PackageId_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (PackageId_t) p ); - public bool Equals( PackageId_t p ) => p.Value == Value; - public static bool operator ==( PackageId_t a, PackageId_t b ) => a.Equals( b ); - public static bool operator !=( PackageId_t a, PackageId_t b ) => !a.Equals( b ); - public int CompareTo( PackageId_t other ) => Value.CompareTo( other.Value ); - } - - internal struct BundleId_t : IEquatable, IComparable - { - public uint Value; - - public static implicit operator BundleId_t( uint value ) => new BundleId_t(){ Value = value }; - public static implicit operator uint( BundleId_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (BundleId_t) p ); - public bool Equals( BundleId_t p ) => p.Value == Value; - public static bool operator ==( BundleId_t a, BundleId_t b ) => a.Equals( b ); - public static bool operator !=( BundleId_t a, BundleId_t b ) => !a.Equals( b ); - public int CompareTo( BundleId_t other ) => Value.CompareTo( other.Value ); - } - - internal struct AssetClassId_t : IEquatable, IComparable - { - public ulong Value; - - public static implicit operator AssetClassId_t( ulong value ) => new AssetClassId_t(){ Value = value }; - public static implicit operator ulong( AssetClassId_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (AssetClassId_t) p ); - public bool Equals( AssetClassId_t p ) => p.Value == Value; - public static bool operator ==( AssetClassId_t a, AssetClassId_t b ) => a.Equals( b ); - public static bool operator !=( AssetClassId_t a, AssetClassId_t b ) => !a.Equals( b ); - public int CompareTo( AssetClassId_t other ) => Value.CompareTo( other.Value ); - } - - internal struct PhysicalItemId_t : IEquatable, IComparable - { - public uint Value; - - public static implicit operator PhysicalItemId_t( uint value ) => new PhysicalItemId_t(){ Value = value }; - public static implicit operator uint( PhysicalItemId_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (PhysicalItemId_t) p ); - public bool Equals( PhysicalItemId_t p ) => p.Value == Value; - public static bool operator ==( PhysicalItemId_t a, PhysicalItemId_t b ) => a.Equals( b ); - public static bool operator !=( PhysicalItemId_t a, PhysicalItemId_t b ) => !a.Equals( b ); - public int CompareTo( PhysicalItemId_t other ) => Value.CompareTo( other.Value ); - } - internal struct DepotId_t : IEquatable, IComparable { + // Name: DepotId_t, Type: unsigned int public uint Value; public static implicit operator DepotId_t( uint value ) => new DepotId_t(){ Value = value }; @@ -128,6 +24,7 @@ namespace Steamworks.Data internal struct RTime32 : IEquatable, IComparable { + // Name: RTime32, Type: unsigned int public uint Value; public static implicit operator RTime32( uint value ) => new RTime32(){ Value = value }; @@ -141,23 +38,9 @@ namespace Steamworks.Data public int CompareTo( RTime32 other ) => Value.CompareTo( other.Value ); } - internal struct CellID_t : IEquatable, IComparable - { - public uint Value; - - public static implicit operator CellID_t( uint value ) => new CellID_t(){ Value = value }; - public static implicit operator uint( CellID_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (CellID_t) p ); - public bool Equals( CellID_t p ) => p.Value == Value; - public static bool operator ==( CellID_t a, CellID_t b ) => a.Equals( b ); - public static bool operator !=( CellID_t a, CellID_t b ) => !a.Equals( b ); - public int CompareTo( CellID_t other ) => Value.CompareTo( other.Value ); - } - internal struct SteamAPICall_t : IEquatable, IComparable { + // Name: SteamAPICall_t, Type: unsigned long long public ulong Value; public static implicit operator SteamAPICall_t( ulong value ) => new SteamAPICall_t(){ Value = value }; @@ -173,6 +56,7 @@ namespace Steamworks.Data internal struct AccountID_t : IEquatable, IComparable { + // Name: AccountID_t, Type: unsigned int public uint Value; public static implicit operator AccountID_t( uint value ) => new AccountID_t(){ Value = value }; @@ -186,53 +70,9 @@ namespace Steamworks.Data public int CompareTo( AccountID_t other ) => Value.CompareTo( other.Value ); } - internal struct PartnerId_t : IEquatable, IComparable - { - public uint Value; - - public static implicit operator PartnerId_t( uint value ) => new PartnerId_t(){ Value = value }; - public static implicit operator uint( PartnerId_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (PartnerId_t) p ); - public bool Equals( PartnerId_t p ) => p.Value == Value; - public static bool operator ==( PartnerId_t a, PartnerId_t b ) => a.Equals( b ); - public static bool operator !=( PartnerId_t a, PartnerId_t b ) => !a.Equals( b ); - public int CompareTo( PartnerId_t other ) => Value.CompareTo( other.Value ); - } - - internal struct ManifestId_t : IEquatable, IComparable - { - public ulong Value; - - public static implicit operator ManifestId_t( ulong value ) => new ManifestId_t(){ Value = value }; - public static implicit operator ulong( ManifestId_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (ManifestId_t) p ); - public bool Equals( ManifestId_t p ) => p.Value == Value; - public static bool operator ==( ManifestId_t a, ManifestId_t b ) => a.Equals( b ); - public static bool operator !=( ManifestId_t a, ManifestId_t b ) => !a.Equals( b ); - public int CompareTo( ManifestId_t other ) => Value.CompareTo( other.Value ); - } - - internal struct SiteId_t : IEquatable, IComparable - { - public ulong Value; - - public static implicit operator SiteId_t( ulong value ) => new SiteId_t(){ Value = value }; - public static implicit operator ulong( SiteId_t value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (SiteId_t) p ); - public bool Equals( SiteId_t p ) => p.Value == Value; - public static bool operator ==( SiteId_t a, SiteId_t b ) => a.Equals( b ); - public static bool operator !=( SiteId_t a, SiteId_t b ) => !a.Equals( b ); - public int CompareTo( SiteId_t other ) => Value.CompareTo( other.Value ); - } - internal struct PartyBeaconID_t : IEquatable, IComparable { + // Name: PartyBeaconID_t, Type: unsigned long long public ulong Value; public static implicit operator PartyBeaconID_t( ulong value ) => new PartyBeaconID_t(){ Value = value }; @@ -248,6 +88,7 @@ namespace Steamworks.Data internal struct HAuthTicket : IEquatable, IComparable { + // Name: HAuthTicket, Type: unsigned int public uint Value; public static implicit operator HAuthTicket( uint value ) => new HAuthTicket(){ Value = value }; @@ -261,23 +102,9 @@ namespace Steamworks.Data public int CompareTo( HAuthTicket other ) => Value.CompareTo( other.Value ); } - internal struct BREAKPAD_HANDLE : IEquatable, IComparable - { - public IntPtr Value; - - public static implicit operator BREAKPAD_HANDLE( IntPtr value ) => new BREAKPAD_HANDLE(){ Value = value }; - public static implicit operator IntPtr( BREAKPAD_HANDLE value ) => value.Value; - public override string ToString() => Value.ToString(); - public override int GetHashCode() => Value.GetHashCode(); - public override bool Equals( object p ) => this.Equals( (BREAKPAD_HANDLE) p ); - public bool Equals( BREAKPAD_HANDLE p ) => p.Value == Value; - public static bool operator ==( BREAKPAD_HANDLE a, BREAKPAD_HANDLE b ) => a.Equals( b ); - public static bool operator !=( BREAKPAD_HANDLE a, BREAKPAD_HANDLE b ) => !a.Equals( b ); - public int CompareTo( BREAKPAD_HANDLE other ) => Value.ToInt64().CompareTo( other.Value.ToInt64() ); - } - internal struct HSteamPipe : IEquatable, IComparable { + // Name: HSteamPipe, Type: int public int Value; public static implicit operator HSteamPipe( int value ) => new HSteamPipe(){ Value = value }; @@ -293,6 +120,7 @@ namespace Steamworks.Data internal struct HSteamUser : IEquatable, IComparable { + // Name: HSteamUser, Type: int public int Value; public static implicit operator HSteamUser( int value ) => new HSteamUser(){ Value = value }; @@ -308,6 +136,7 @@ namespace Steamworks.Data internal struct FriendsGroupID_t : IEquatable, IComparable { + // Name: FriendsGroupID_t, Type: short public short Value; public static implicit operator FriendsGroupID_t( short value ) => new FriendsGroupID_t(){ Value = value }; @@ -323,6 +152,7 @@ namespace Steamworks.Data internal struct HServerListRequest : IEquatable, IComparable { + // Name: HServerListRequest, Type: void * public IntPtr Value; public static implicit operator HServerListRequest( IntPtr value ) => new HServerListRequest(){ Value = value }; @@ -338,6 +168,7 @@ namespace Steamworks.Data internal struct HServerQuery : IEquatable, IComparable { + // Name: HServerQuery, Type: int public int Value; public static implicit operator HServerQuery( int value ) => new HServerQuery(){ Value = value }; @@ -353,6 +184,7 @@ namespace Steamworks.Data internal struct UGCHandle_t : IEquatable, IComparable { + // Name: UGCHandle_t, Type: unsigned long long public ulong Value; public static implicit operator UGCHandle_t( ulong value ) => new UGCHandle_t(){ Value = value }; @@ -368,6 +200,7 @@ namespace Steamworks.Data internal struct PublishedFileUpdateHandle_t : IEquatable, IComparable { + // Name: PublishedFileUpdateHandle_t, Type: unsigned long long public ulong Value; public static implicit operator PublishedFileUpdateHandle_t( ulong value ) => new PublishedFileUpdateHandle_t(){ Value = value }; @@ -383,6 +216,7 @@ namespace Steamworks.Data public struct PublishedFileId : IEquatable, IComparable { + // Name: PublishedFileId_t, Type: unsigned long long public ulong Value; public static implicit operator PublishedFileId( ulong value ) => new PublishedFileId(){ Value = value }; @@ -398,6 +232,7 @@ namespace Steamworks.Data internal struct UGCFileWriteStreamHandle_t : IEquatable, IComparable { + // Name: UGCFileWriteStreamHandle_t, Type: unsigned long long public ulong Value; public static implicit operator UGCFileWriteStreamHandle_t( ulong value ) => new UGCFileWriteStreamHandle_t(){ Value = value }; @@ -413,6 +248,7 @@ namespace Steamworks.Data internal struct SteamLeaderboard_t : IEquatable, IComparable { + // Name: SteamLeaderboard_t, Type: unsigned long long public ulong Value; public static implicit operator SteamLeaderboard_t( ulong value ) => new SteamLeaderboard_t(){ Value = value }; @@ -428,6 +264,7 @@ namespace Steamworks.Data internal struct SteamLeaderboardEntries_t : IEquatable, IComparable { + // Name: SteamLeaderboardEntries_t, Type: unsigned long long public ulong Value; public static implicit operator SteamLeaderboardEntries_t( ulong value ) => new SteamLeaderboardEntries_t(){ Value = value }; @@ -443,6 +280,7 @@ namespace Steamworks.Data internal struct SNetSocket_t : IEquatable, IComparable { + // Name: SNetSocket_t, Type: unsigned int public uint Value; public static implicit operator SNetSocket_t( uint value ) => new SNetSocket_t(){ Value = value }; @@ -458,6 +296,7 @@ namespace Steamworks.Data internal struct SNetListenSocket_t : IEquatable, IComparable { + // Name: SNetListenSocket_t, Type: unsigned int public uint Value; public static implicit operator SNetListenSocket_t( uint value ) => new SNetListenSocket_t(){ Value = value }; @@ -473,6 +312,7 @@ namespace Steamworks.Data internal struct ScreenshotHandle : IEquatable, IComparable { + // Name: ScreenshotHandle, Type: unsigned int public uint Value; public static implicit operator ScreenshotHandle( uint value ) => new ScreenshotHandle(){ Value = value }; @@ -488,6 +328,7 @@ namespace Steamworks.Data internal struct HTTPRequestHandle : IEquatable, IComparable { + // Name: HTTPRequestHandle, Type: unsigned int public uint Value; public static implicit operator HTTPRequestHandle( uint value ) => new HTTPRequestHandle(){ Value = value }; @@ -503,6 +344,7 @@ namespace Steamworks.Data internal struct HTTPCookieContainerHandle : IEquatable, IComparable { + // Name: HTTPCookieContainerHandle, Type: unsigned int public uint Value; public static implicit operator HTTPCookieContainerHandle( uint value ) => new HTTPCookieContainerHandle(){ Value = value }; @@ -518,6 +360,7 @@ namespace Steamworks.Data internal struct InputHandle_t : IEquatable, IComparable { + // Name: InputHandle_t, Type: unsigned long long public ulong Value; public static implicit operator InputHandle_t( ulong value ) => new InputHandle_t(){ Value = value }; @@ -533,6 +376,7 @@ namespace Steamworks.Data internal struct InputActionSetHandle_t : IEquatable, IComparable { + // Name: InputActionSetHandle_t, Type: unsigned long long public ulong Value; public static implicit operator InputActionSetHandle_t( ulong value ) => new InputActionSetHandle_t(){ Value = value }; @@ -548,6 +392,7 @@ namespace Steamworks.Data internal struct InputDigitalActionHandle_t : IEquatable, IComparable { + // Name: InputDigitalActionHandle_t, Type: unsigned long long public ulong Value; public static implicit operator InputDigitalActionHandle_t( ulong value ) => new InputDigitalActionHandle_t(){ Value = value }; @@ -563,6 +408,7 @@ namespace Steamworks.Data internal struct InputAnalogActionHandle_t : IEquatable, IComparable { + // Name: InputAnalogActionHandle_t, Type: unsigned long long public ulong Value; public static implicit operator InputAnalogActionHandle_t( ulong value ) => new InputAnalogActionHandle_t(){ Value = value }; @@ -578,6 +424,7 @@ namespace Steamworks.Data internal struct ControllerHandle_t : IEquatable, IComparable { + // Name: ControllerHandle_t, Type: unsigned long long public ulong Value; public static implicit operator ControllerHandle_t( ulong value ) => new ControllerHandle_t(){ Value = value }; @@ -593,6 +440,7 @@ namespace Steamworks.Data internal struct ControllerActionSetHandle_t : IEquatable, IComparable { + // Name: ControllerActionSetHandle_t, Type: unsigned long long public ulong Value; public static implicit operator ControllerActionSetHandle_t( ulong value ) => new ControllerActionSetHandle_t(){ Value = value }; @@ -608,6 +456,7 @@ namespace Steamworks.Data internal struct ControllerDigitalActionHandle_t : IEquatable, IComparable { + // Name: ControllerDigitalActionHandle_t, Type: unsigned long long public ulong Value; public static implicit operator ControllerDigitalActionHandle_t( ulong value ) => new ControllerDigitalActionHandle_t(){ Value = value }; @@ -623,6 +472,7 @@ namespace Steamworks.Data internal struct ControllerAnalogActionHandle_t : IEquatable, IComparable { + // Name: ControllerAnalogActionHandle_t, Type: unsigned long long public ulong Value; public static implicit operator ControllerAnalogActionHandle_t( ulong value ) => new ControllerAnalogActionHandle_t(){ Value = value }; @@ -638,6 +488,7 @@ namespace Steamworks.Data internal struct UGCQueryHandle_t : IEquatable, IComparable { + // Name: UGCQueryHandle_t, Type: unsigned long long public ulong Value; public static implicit operator UGCQueryHandle_t( ulong value ) => new UGCQueryHandle_t(){ Value = value }; @@ -653,6 +504,7 @@ namespace Steamworks.Data internal struct UGCUpdateHandle_t : IEquatable, IComparable { + // Name: UGCUpdateHandle_t, Type: unsigned long long public ulong Value; public static implicit operator UGCUpdateHandle_t( ulong value ) => new UGCUpdateHandle_t(){ Value = value }; @@ -668,6 +520,7 @@ namespace Steamworks.Data internal struct HHTMLBrowser : IEquatable, IComparable { + // Name: HHTMLBrowser, Type: unsigned int public uint Value; public static implicit operator HHTMLBrowser( uint value ) => new HHTMLBrowser(){ Value = value }; @@ -683,6 +536,7 @@ namespace Steamworks.Data public struct InventoryItemId : IEquatable, IComparable { + // Name: SteamItemInstanceID_t, Type: unsigned long long public ulong Value; public static implicit operator InventoryItemId( ulong value ) => new InventoryItemId(){ Value = value }; @@ -698,6 +552,7 @@ namespace Steamworks.Data public struct InventoryDefId : IEquatable, IComparable { + // Name: SteamItemDef_t, Type: int public int Value; public static implicit operator InventoryDefId( int value ) => new InventoryDefId(){ Value = value }; @@ -713,6 +568,7 @@ namespace Steamworks.Data internal struct SteamInventoryResult_t : IEquatable, IComparable { + // Name: SteamInventoryResult_t, Type: int public int Value; public static implicit operator SteamInventoryResult_t( int value ) => new SteamInventoryResult_t(){ Value = value }; @@ -728,6 +584,7 @@ namespace Steamworks.Data internal struct SteamInventoryUpdateHandle_t : IEquatable, IComparable { + // Name: SteamInventoryUpdateHandle_t, Type: unsigned long long public ulong Value; public static implicit operator SteamInventoryUpdateHandle_t( ulong value ) => new SteamInventoryUpdateHandle_t(){ Value = value }; @@ -741,4 +598,52 @@ namespace Steamworks.Data public int CompareTo( SteamInventoryUpdateHandle_t other ) => Value.CompareTo( other.Value ); } + internal struct RemotePlaySessionID_t : IEquatable, IComparable + { + // Name: RemotePlaySessionID_t, Type: unsigned int + public uint Value; + + public static implicit operator RemotePlaySessionID_t( uint value ) => new RemotePlaySessionID_t(){ Value = value }; + public static implicit operator uint( RemotePlaySessionID_t value ) => value.Value; + public override string ToString() => Value.ToString(); + public override int GetHashCode() => Value.GetHashCode(); + public override bool Equals( object p ) => this.Equals( (RemotePlaySessionID_t) p ); + public bool Equals( RemotePlaySessionID_t p ) => p.Value == Value; + public static bool operator ==( RemotePlaySessionID_t a, RemotePlaySessionID_t b ) => a.Equals( b ); + public static bool operator !=( RemotePlaySessionID_t a, RemotePlaySessionID_t b ) => !a.Equals( b ); + public int CompareTo( RemotePlaySessionID_t other ) => Value.CompareTo( other.Value ); + } + + internal struct HSteamNetPollGroup : IEquatable, IComparable + { + // Name: HSteamNetPollGroup, Type: unsigned int + public uint Value; + + public static implicit operator HSteamNetPollGroup( uint value ) => new HSteamNetPollGroup(){ Value = value }; + public static implicit operator uint( HSteamNetPollGroup value ) => value.Value; + public override string ToString() => Value.ToString(); + public override int GetHashCode() => Value.GetHashCode(); + public override bool Equals( object p ) => this.Equals( (HSteamNetPollGroup) p ); + public bool Equals( HSteamNetPollGroup p ) => p.Value == Value; + public static bool operator ==( HSteamNetPollGroup a, HSteamNetPollGroup b ) => a.Equals( b ); + public static bool operator !=( HSteamNetPollGroup a, HSteamNetPollGroup b ) => !a.Equals( b ); + public int CompareTo( HSteamNetPollGroup other ) => Value.CompareTo( other.Value ); + } + + internal struct SteamNetworkingPOPID : IEquatable, IComparable + { + // Name: SteamNetworkingPOPID, Type: unsigned int + public uint Value; + + public static implicit operator SteamNetworkingPOPID( uint value ) => new SteamNetworkingPOPID(){ Value = value }; + public static implicit operator uint( SteamNetworkingPOPID value ) => value.Value; + public override string ToString() => Value.ToString(); + public override int GetHashCode() => Value.GetHashCode(); + public override bool Equals( object p ) => this.Equals( (SteamNetworkingPOPID) p ); + public bool Equals( SteamNetworkingPOPID p ) => p.Value == Value; + public static bool operator ==( SteamNetworkingPOPID a, SteamNetworkingPOPID b ) => a.Equals( b ); + public static bool operator !=( SteamNetworkingPOPID a, SteamNetworkingPOPID b ) => !a.Equals( b ); + public int CompareTo( SteamNetworkingPOPID other ) => Value.CompareTo( other.Value ); + } + } diff --git a/Facepunch.Steamworks/Networking/BroadcastBufferManager.cs b/Facepunch.Steamworks/Networking/BroadcastBufferManager.cs new file mode 100644 index 0000000..ba0ccc2 --- /dev/null +++ b/Facepunch.Steamworks/Networking/BroadcastBufferManager.cs @@ -0,0 +1,282 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Threading; +using Steamworks.Data; + +namespace Steamworks +{ + internal static unsafe class BufferManager + { + private sealed class ReferenceCounter + { + public IntPtr Pointer { get; private set; } + public int Size { get; private set; } + private int _count; + + public void Set( IntPtr ptr, int size, int referenceCount ) + { + if ( ptr == IntPtr.Zero ) + throw new ArgumentNullException( nameof( ptr ) ); + if ( size <= 0 ) + throw new ArgumentOutOfRangeException( nameof( size ) ); + if ( referenceCount <= 0 ) + throw new ArgumentOutOfRangeException( nameof( referenceCount ) ); + + Pointer = ptr; + Size = size; + + var prevCount = Interlocked.Exchange(ref _count, referenceCount); + if (prevCount != 0) + { +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Warning, $"{nameof( BufferManager )} set reference count when current count was not 0" ); +#endif + } + } + + public bool Decrement() + { + var newCount = Interlocked.Decrement( ref _count ); + if ( newCount < 0 ) + { + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Bug, $"Prevented double free of {nameof(BufferManager)} pointer" ); + return false; + } + + return newCount == 0; + } + } + + [UnmanagedFunctionPointer( CallingConvention.Cdecl )] + private delegate void FreeFn( NetMsg* msg ); + + private static readonly Stack ReferenceCounterPool = + new Stack( 1024 ); + + private static readonly Dictionary> BufferPools = + new Dictionary>(); + + private static readonly Dictionary ReferenceCounters = + new Dictionary( 1024 ); + + private static readonly FreeFn FreeFunctionPin = new FreeFn( Free ); + + public static readonly IntPtr FreeFunctionPointer = Marshal.GetFunctionPointerForDelegate( FreeFunctionPin ); + + public static IntPtr Get( int size, int referenceCount ) + { + const int maxSize = 16 * 1024 * 1024; + if ( size < 0 || size > maxSize ) + throw new ArgumentOutOfRangeException( nameof( size ) ); + if ( referenceCount <= 0 ) + throw new ArgumentOutOfRangeException( nameof( referenceCount ) ); + + AllocateBuffer( size, out var ptr, out var actualSize ); + var counter = AllocateReferenceCounter( ptr, actualSize, referenceCount ); + +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, + $"{nameof( BufferManager )} allocated {ptr.ToInt64():X8} (size={size}, actualSize={actualSize}) with {referenceCount} references" ); +#endif + + lock ( ReferenceCounters ) + { + ReferenceCounters.Add( ptr, counter ); + } + + return ptr; + } + + [MonoPInvokeCallback] + private static void Free( NetMsg* msg ) + { + var ptr = msg->DataPtr; + + lock ( ReferenceCounters ) + { + if ( !ReferenceCounters.TryGetValue( ptr, out var counter ) ) + { + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Bug, $"Attempt to free pointer not tracked by {nameof(BufferManager)}: {ptr.ToInt64():X8}" ); + return; + } + +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, $"{nameof( BufferManager )} decrementing reference count of {ptr.ToInt64():X8}" ); +#endif + + if ( counter.Decrement() ) + { +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, $"{nameof( BufferManager )} freeing {ptr.ToInt64():X8} as it is now unreferenced" ); + + if ( ptr != counter.Pointer ) + { + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Bug, + $"{nameof( BufferManager )} freed pointer ({ptr.ToInt64():X8}) does not match counter pointer ({counter.Pointer.ToInt64():X8})" ); + } + + var bucketSize = GetBucketSize( counter.Size ); + if ( counter.Size != bucketSize ) + { + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Bug, + $"{nameof( BufferManager )} freed pointer size ({counter.Size}) does not match bucket size ({bucketSize})" ); + } +#endif + + ReferenceCounters.Remove( ptr ); + FreeBuffer( ptr, counter.Size ); + FreeReferenceCounter( counter ); + } + } + } + + private static ReferenceCounter AllocateReferenceCounter( IntPtr ptr, int size, int referenceCount ) + { + lock ( ReferenceCounterPool ) + { + var counter = ReferenceCounterPool.Count > 0 + ? ReferenceCounterPool.Pop() + : new ReferenceCounter(); + + counter.Set( ptr, size, referenceCount ); + return counter; + } + } + + private static void FreeReferenceCounter( ReferenceCounter counter ) + { + if ( counter == null ) + throw new ArgumentNullException( nameof( counter ) ); + + lock ( ReferenceCounterPool ) + { + if ( ReferenceCounterPool.Count >= 1024 ) + { + // we don't want to keep a ton of these lying around - let it GC if we have too many + return; + } + + ReferenceCounterPool.Push( counter ); + } + } + + private static void AllocateBuffer( int minimumSize, out IntPtr ptr, out int size ) + { + var bucketSize = GetBucketSize( minimumSize ); + + if ( bucketSize <= 0 ) + { + // not bucketed, no pooling for this size + ptr = Marshal.AllocHGlobal( minimumSize ); + size = minimumSize; + +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, + $"{nameof( BufferManager )} allocated unpooled pointer {ptr.ToInt64():X8} (size={size})" ); +#endif + return; + } + + lock ( BufferPools ) + { + if ( !BufferPools.TryGetValue( bucketSize, out var bucketPool ) || bucketPool.Count == 0 ) + { + // nothing pooled yet, but we can pool this size + ptr = Marshal.AllocHGlobal( bucketSize ); + size = bucketSize; + +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, + $"{nameof( BufferManager )} allocated new poolable pointer {ptr.ToInt64():X8} (size={size})" ); +#endif + return; + } + + ptr = bucketPool.Pop(); + size = bucketSize; +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, + $"{nameof( BufferManager )} allocated pointer from pool {ptr.ToInt64():X8} (size={size})" ); +#endif + } + } + + private static void FreeBuffer( IntPtr ptr, int size ) + { + var bucketSize = GetBucketSize( size ); + var bucketLimit = GetBucketLimit( size ); + + if ( bucketSize <= 0 || bucketLimit <= 0 ) + { + // not bucketed, no pooling for this size + Marshal.FreeHGlobal( ptr ); + +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, + $"{nameof( BufferManager )} freed unpooled pointer {ptr.ToInt64():X8} (size={size})" ); +#endif + return; + } + + lock ( BufferPools ) + { + if ( !BufferPools.TryGetValue( bucketSize, out var bucketPool ) ) + { + bucketPool = new Stack( bucketLimit ); + BufferPools.Add( bucketSize, bucketPool ); + } + + if ( bucketPool.Count >= bucketLimit ) + { + // pool overflow, get rid + Marshal.FreeHGlobal( ptr ); + +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, + $"{nameof( BufferManager )} pool overflow, freed pooled pointer {ptr.ToInt64():X8} (size={size})" ); +#endif + return; + } + + bucketPool.Push( ptr ); + +#if DEBUG + SteamNetworkingUtils.LogDebugMessage( NetDebugOutput.Verbose, + $"{nameof( BufferManager )} returned pointer to pool {ptr.ToInt64():X8} (size={size})" ); +#endif + } + } + + private const int Bucket512 = 512; + private const int Bucket1Kb = 1 * 1024; + private const int Bucket4Kb = 4 * 1024; + private const int Bucket16Kb = 16 * 1024; + private const int Bucket64Kb = 64 * 1024; + private const int Bucket256Kb = 256 * 1024; + + private static int GetBucketSize( int size ) + { + if ( size <= Bucket512 ) return Bucket512; + if ( size <= Bucket1Kb ) return Bucket1Kb; + if ( size <= Bucket4Kb ) return Bucket4Kb; + if ( size <= Bucket16Kb ) return Bucket16Kb; + if ( size <= Bucket64Kb ) return Bucket64Kb; + if ( size <= Bucket256Kb ) return Bucket256Kb; + + return -1; + } + + private static int GetBucketLimit( int size ) + { + if ( size <= Bucket512 ) return 1024; + if ( size <= Bucket1Kb ) return 512; + if ( size <= Bucket4Kb ) return 128; + if ( size <= Bucket16Kb ) return 32; + if ( size <= Bucket64Kb ) return 16; + if ( size <= Bucket256Kb ) return 8; + + return -1; + } + } +} diff --git a/Facepunch.Steamworks/Networking/Connection.cs b/Facepunch.Steamworks/Networking/Connection.cs new file mode 100644 index 0000000..9596421 --- /dev/null +++ b/Facepunch.Steamworks/Networking/Connection.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Generic; + +namespace Steamworks.Data +{ + + /// + /// Used as a base to create your client connection. This creates a socket + /// to a single connection. + /// + /// You can override all the virtual functions to turn it into what you + /// want it to do. + /// + public struct Connection : IEquatable + { + public uint Id { get; set; } + + public bool Equals( Connection other ) => Id == other.Id; + public override bool Equals( object obj ) => obj is Connection other && Id == other.Id; + public override int GetHashCode() => Id.GetHashCode(); + public override string ToString() => Id.ToString(); + public static implicit operator Connection( uint value ) => new Connection() { Id = value }; + public static implicit operator uint( Connection value ) => value.Id; + public static bool operator ==( Connection value1, Connection value2 ) => value1.Equals( value2 ); + public static bool operator !=( Connection value1, Connection value2 ) => !value1.Equals( value2 ); + + /// + /// Accept an incoming connection that has been received on a listen socket. + /// + public Result Accept() + { + return SteamNetworkingSockets.Internal.AcceptConnection( this ); + } + + /// + /// Disconnects from the remote host and invalidates the connection handle. Any unread data on the connection is discarded.. + /// reasonCode is defined and used by you. + /// + public bool Close( bool linger = false, int reasonCode = 0, string debugString = "Closing Connection" ) + { + return SteamNetworkingSockets.Internal.CloseConnection( this, reasonCode, debugString, linger ); + } + + /// + /// Get/Set connection user data + /// + public long UserData + { + get => SteamNetworkingSockets.Internal.GetConnectionUserData( this ); + set => SteamNetworkingSockets.Internal.SetConnectionUserData( this, value ); + } + + /// + /// A name for the connection, used mostly for debugging + /// + public string ConnectionName + { + get + { + if ( !SteamNetworkingSockets.Internal.GetConnectionName( this, out var strVal ) ) + return "ERROR"; + + return strVal; + } + + set => SteamNetworkingSockets.Internal.SetConnectionName( this, value ); + } + + /// + /// This is the best version to use. + /// + public unsafe Result SendMessage( IntPtr ptr, int size, SendType sendType = SendType.Reliable, ushort laneIndex = 0 ) + { + if ( ptr == IntPtr.Zero ) + throw new ArgumentNullException( nameof( ptr ) ); + if ( size == 0 ) + throw new ArgumentException( "`size` cannot be zero", nameof( size ) ); + + var copyPtr = BufferManager.Get( size, 1 ); + Buffer.MemoryCopy( (void*)ptr, (void*)copyPtr, size, size ); + + var message = SteamNetworkingUtils.AllocateMessage(); + message->Connection = this; + message->Flags = sendType; + message->DataPtr = copyPtr; + message->DataSize = size; + message->FreeDataPtr = BufferManager.FreeFunctionPointer; + message->IdxLane = laneIndex; + + long messageNumber = 0; + SteamNetworkingSockets.Internal.SendMessages( 1, &message, &messageNumber ); + + return messageNumber >= 0 + ? Result.OK + : (Result)(-messageNumber); + } + + /// + /// Ideally should be using an IntPtr version unless you're being really careful with the byte[] array and + /// you're not creating a new one every frame (like using .ToArray()) + /// + public unsafe Result SendMessage( byte[] data, SendType sendType = SendType.Reliable, ushort laneIndex = 0 ) + { + fixed ( byte* ptr = data ) + { + return SendMessage( (IntPtr)ptr, data.Length, sendType, laneIndex ); + } + } + + /// + /// Ideally should be using an IntPtr version unless you're being really careful with the byte[] array and + /// you're not creating a new one every frame (like using .ToArray()) + /// + public unsafe Result SendMessage( byte[] data, int offset, int length, SendType sendType = SendType.Reliable, ushort laneIndex = 0 ) + { + fixed ( byte* ptr = data ) + { + return SendMessage( (IntPtr)ptr + offset, length, sendType, laneIndex ); + } + } + + /// + /// This creates a ton of garbage - so don't do anything with this beyond testing! + /// + public unsafe Result SendMessage( string str, SendType sendType = SendType.Reliable, ushort laneIndex = 0 ) + { + var bytes = System.Text.Encoding.UTF8.GetBytes( str ); + return SendMessage( bytes, sendType, laneIndex ); + } + + /// + /// Flush any messages waiting on the Nagle timer and send them at the next transmission + /// opportunity (often that means right now). + /// + public Result Flush() => SteamNetworkingSockets.Internal.FlushMessagesOnConnection( this ); + + /// + /// Returns detailed connection stats in text format. Useful + /// for dumping to a log, etc. + /// + /// Plain text connection info + public string DetailedStatus() + { + if ( SteamNetworkingSockets.Internal.GetDetailedConnectionStatus( this, out var strVal ) != 0 ) + return null; + + return strVal; + } + + /// + /// Returns a small set of information about the real-time state of the connection. + /// + public ConnectionStatus QuickStatus() + { + ConnectionStatus connectionStatus = default( ConnectionStatus ); + + SteamNetworkingSockets.Internal.GetConnectionRealTimeStatus( this, ref connectionStatus, 0, null ); + + return connectionStatus; + } + + /// + /// Configure multiple outbound messages streams ("lanes") on a connection, and + /// control head-of-line blocking between them. + /// + public Result ConfigureConnectionLanes( int[] lanePriorities, ushort[] laneWeights ) + { + return SteamNetworkingSockets.Internal.ConfigureConnectionLanes( this, lanePriorities.Length, lanePriorities, laneWeights ); + } + } +} diff --git a/Facepunch.Steamworks/Structs/ConnectionInfo.cs b/Facepunch.Steamworks/Networking/ConnectionInfo.cs similarity index 51% rename from Facepunch.Steamworks/Structs/ConnectionInfo.cs rename to Facepunch.Steamworks/Networking/ConnectionInfo.cs index 6cbdf22..a8369d6 100644 --- a/Facepunch.Steamworks/Structs/ConnectionInfo.cs +++ b/Facepunch.Steamworks/Networking/ConnectionInfo.cs @@ -2,6 +2,9 @@ namespace Steamworks.Data { + /// + /// Describe the state of a connection + /// [StructLayout( LayoutKind.Sequential, Size = 696 )] public struct ConnectionInfo { @@ -19,8 +22,24 @@ namespace Steamworks.Data [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )] internal string connectionDescription; + /// + /// High level state of the connection + /// public ConnectionState State => state; - public SteamId SteamId => identity.steamID; - public int EndReason => endReason; + + /// + /// Remote address. Might be all 0's if we don't know it, or if this is N/A. + /// + public NetAddress Address => address; + + /// + /// Who is on the other end? Depending on the connection type and phase of the connection, we might not know + /// + public NetIdentity Identity => identity; + + /// + /// Basic cause of the connection termination or problem. + /// + public NetConnectionEnd EndReason => (NetConnectionEnd)endReason; } } \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/ConnectionLaneStatus.cs b/Facepunch.Steamworks/Networking/ConnectionLaneStatus.cs new file mode 100644 index 0000000..a109542 --- /dev/null +++ b/Facepunch.Steamworks/Networking/ConnectionLaneStatus.cs @@ -0,0 +1,34 @@ +using System.Runtime.InteropServices; + +namespace Steamworks.Data +{ + /// + /// Describe the status of a connection + /// + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + public struct ConnectionLaneStatus + { + internal int cbPendingUnreliable; // m_cbPendingUnreliable int + internal int cbPendingReliable; // m_cbPendingReliable int + internal int cbSentUnackedReliable; // m_cbSentUnackedReliable int + internal int _reservePad1; // _reservePad1 int + internal long ecQueueTime; // m_usecQueueTime SteamNetworkingMicroseconds + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.U4 )] + internal uint[] reserved; // reserved uint32 [10] + + /// + /// Number of bytes unreliable data pending to be sent. This is data that you have recently requested to be sent but has not yet actually been put on the wire. + /// + public int PendingUnreliable => cbPendingUnreliable; + + /// + /// Number of bytes reliable data pending to be sent. This is data that you have recently requested to be sent but has not yet actually been put on the wire. + /// + public int PendingReliable => cbPendingReliable; + + /// + /// Number of bytes of reliable data that has been placed the wire, but for which we have not yet received an acknowledgment, and thus we may have to re-transmit. + /// + public int SentUnackedReliable => cbSentUnackedReliable; + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/ConnectionManager.cs b/Facepunch.Steamworks/Networking/ConnectionManager.cs new file mode 100644 index 0000000..396c8d9 --- /dev/null +++ b/Facepunch.Steamworks/Networking/ConnectionManager.cs @@ -0,0 +1,273 @@ +using Steamworks.Data; +using System; + +namespace Steamworks +{ + public class ConnectionManager + { + /// + /// An optional interface to use instead of deriving + /// + public IConnectionManager Interface { get; set; } + + /// + /// The actual connection we're managing + /// + public Connection Connection; + + /// + /// The last received ConnectionInfo + /// + public ConnectionInfo ConnectionInfo { get; internal set; } + + public bool Connected = false; + public bool Connecting = true; + + public string ConnectionName + { + get => Connection.ConnectionName; + set => Connection.ConnectionName = value; + } + + public long UserData + { + get => Connection.UserData; + set => Connection.UserData = value; + } + + public void Close( bool linger = false, int reasonCode = 0, string debugString = "Closing Connection" ) + { + Connection.Close( linger, reasonCode, debugString ); + } + + public override string ToString() => Connection.ToString(); + + public virtual void OnConnectionChanged( ConnectionInfo info ) + { + ConnectionInfo = info; + + // + // Some notes: + // - Update state before the callbacks, in case an exception is thrown + // - ConnectionState.None happens when a connection is destroyed, even if it was already disconnected (ClosedByPeer / ProblemDetectedLocally) + // + switch ( info.State ) + { + case ConnectionState.Connecting: + if ( !Connecting && !Connected ) + { + Connecting = true; + + OnConnecting( info ); + } + break; + case ConnectionState.Connected: + if ( Connecting && !Connected ) + { + Connecting = false; + Connected = true; + + OnConnected( info ); + } + break; + case ConnectionState.ClosedByPeer: + case ConnectionState.ProblemDetectedLocally: + case ConnectionState.None: + if ( Connecting || Connected ) + { + Connecting = false; + Connected = false; + + OnDisconnected( info ); + } + break; + } + } + + /// + /// We're trying to connect! + /// + public virtual void OnConnecting( ConnectionInfo info ) + { + Interface?.OnConnecting( info ); + } + + /// + /// Client is connected. They move from connecting to Connections + /// + public virtual void OnConnected( ConnectionInfo info ) + { + Interface?.OnConnected( info ); + } + + /// + /// The connection has been closed remotely or disconnected locally. Check data.State for details. + /// + public virtual void OnDisconnected( ConnectionInfo info ) + { + Interface?.OnDisconnected( info ); + } + + public unsafe int Receive( int bufferSize = 32, bool receiveToEnd = true ) + { + if ( bufferSize < 1 || bufferSize > 256 ) throw new ArgumentOutOfRangeException( nameof( bufferSize ) ); + + int totalProcessed = 0; + NetMsg** messageBuffer = stackalloc NetMsg*[bufferSize]; + + while ( true ) + { + int processed = SteamNetworkingSockets.Internal.ReceiveMessagesOnConnection( Connection, new IntPtr( &messageBuffer[0] ), bufferSize ); + totalProcessed += processed; + + try + { + for ( int i = 0; i < processed; i++ ) + { + ReceiveMessage( ref messageBuffer[i] ); + } + } + catch + { + for ( int i = 0; i < processed; i++ ) + { + if ( messageBuffer[i] != null ) + { + NetMsg.InternalRelease( messageBuffer[i] ); + } + } + + throw; + } + + + // + // Keep going if receiveToEnd and we filled the buffer + // + if ( !receiveToEnd || processed < bufferSize ) + break; + } + + return totalProcessed; + } + + /// + /// Sends a message to multiple connections. + /// + /// The connections to send the message to. + /// The number of connections to send the message to, to allow reusing the connections array. + /// Pointer to the message data. + /// Size of the message data. + /// Flags to control delivery of the message. + /// An optional array to hold the results of sending the messages for each connection. + public unsafe void SendMessages( Connection[] connections, int connectionCount, IntPtr ptr, int size, SendType sendType = SendType.Reliable, Result[] results = null ) + { + if ( connections == null ) + throw new ArgumentNullException( nameof( connections ) ); + if ( connectionCount < 0 || connectionCount > connections.Length ) + throw new ArgumentException( "`connectionCount` must be between 0 and `connections.Length`", nameof( connectionCount ) ); + if ( results != null && connectionCount > results.Length ) + throw new ArgumentException( "`results` must have at least `connectionCount` entries", nameof( results ) ); + if ( connectionCount > 1024 ) // restricting this because we stack allocate based on this value + throw new ArgumentOutOfRangeException( nameof( connectionCount ) ); + if ( ptr == IntPtr.Zero ) + throw new ArgumentNullException( nameof( ptr ) ); + if ( size == 0 ) + throw new ArgumentException( "`size` cannot be zero", nameof( size ) ); + + if ( connectionCount == 0 ) + return; + + // SendMessages does not make a copy of the data. We will need to copy because we don't want to force the caller to keep the pointer valid. + // 1. We don't want a copy per message. They all refer to the same data. This is the benefit of using Broadcast vs. many sends. + // 2. We need to use unmanaged memory. Managed memory may move around and invalidate pointers so it's not an option. + // 3. We'll use a reference counter and custom free() function to release this unmanaged memory. + var copyPtr = BufferManager.Get( size, connectionCount ); + Buffer.MemoryCopy( (void*)ptr, (void*)copyPtr, size, size ); + + var messages = stackalloc NetMsg*[connectionCount]; + var messageNumberOrResults = stackalloc long[results != null ? connectionCount : 0]; + + for ( var i = 0; i < connectionCount; i++ ) + { + messages[i] = SteamNetworkingUtils.AllocateMessage(); + messages[i]->Connection = connections[i]; + messages[i]->Flags = sendType; + messages[i]->DataPtr = copyPtr; + messages[i]->DataSize = size; + messages[i]->FreeDataPtr = BufferManager.FreeFunctionPointer; + } + + SteamNetworkingSockets.Internal.SendMessages( connectionCount, messages, messageNumberOrResults ); + + if (results == null) + return; + + for ( var i = 0; i < connectionCount; i++ ) + { + if ( messageNumberOrResults[i] < 0 ) + { + results[i] = (Result)( -messageNumberOrResults[i] ); + } + else + { + results[i] = Result.OK; + } + } + } + + /// + /// Ideally should be using an IntPtr version unless you're being really careful with the byte[] array and + /// you're not creating a new one every frame (like using .ToArray()) + /// + public unsafe void SendMessages( Connection[] connections, int connectionCount, byte[] data, SendType sendType = SendType.Reliable, Result[] results = null ) + { + fixed ( byte* ptr = data ) + { + SendMessages( connections, connectionCount, (IntPtr)ptr, data.Length, sendType, results ); + } + } + + /// + /// Ideally should be using an IntPtr version unless you're being really careful with the byte[] array and + /// you're not creating a new one every frame (like using .ToArray()) + /// + public unsafe void SendMessages( Connection[] connections, int connectionCount, byte[] data, int offset, int length, SendType sendType = SendType.Reliable, Result[] results = null ) + { + fixed ( byte* ptr = data ) + { + SendMessages( connections, connectionCount, (IntPtr)ptr + offset, length, sendType, results ); + } + } + + /// + /// This creates a ton of garbage - so don't do anything with this beyond testing! + /// + public void SendMessages( Connection[] connections, int connectionCount, string str, SendType sendType = SendType.Reliable, Result[] results = null ) + { + var bytes = System.Text.Encoding.UTF8.GetBytes( str ); + SendMessages( connections, connectionCount, bytes, sendType, results ); + } + + internal unsafe void ReceiveMessage( ref NetMsg* msg ) + { + try + { + OnMessage( msg->DataPtr, msg->DataSize, msg->RecvTime, msg->MessageNumber, msg->Channel ); + } + finally + { + // + // Releases the message + // + NetMsg.InternalRelease( msg ); + msg = null; + } + } + + public virtual void OnMessage( IntPtr data, int size, long messageNum, long recvTime, int channel ) + { + Interface?.OnMessage( data, size, messageNum, recvTime, channel ); + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/ConnectionStatus.cs b/Facepunch.Steamworks/Networking/ConnectionStatus.cs new file mode 100644 index 0000000..c217055 --- /dev/null +++ b/Facepunch.Steamworks/Networking/ConnectionStatus.cs @@ -0,0 +1,77 @@ +using System.Runtime.InteropServices; + +namespace Steamworks.Data +{ + /// + /// Describe the status of a connection + /// + [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPlatformPackSize )] + public struct ConnectionStatus + { + internal ConnectionState state; // m_eState ESteamNetworkingConnectionState + internal int ping; // m_nPing int + internal float connectionQualityLocal; // m_flConnectionQualityLocal float + internal float connectionQualityRemote; // m_flConnectionQualityRemote float + internal float outPacketsPerSec; // m_flOutPacketsPerSec float + internal float outBytesPerSec; // m_flOutBytesPerSec float + internal float inPacketsPerSec; // m_flInPacketsPerSec float + internal float inBytesPerSec; // m_flInBytesPerSec float + internal int sendRateBytesPerSecond; // m_nSendRateBytesPerSecond int + internal int cbPendingUnreliable; // m_cbPendingUnreliable int + internal int cbPendingReliable; // m_cbPendingReliable int + internal int cbSentUnackedReliable; // m_cbSentUnackedReliable int + internal long ecQueueTime; // m_usecQueueTime SteamNetworkingMicroseconds + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.U4 )] + internal uint[] reserved; // reserved uint32 [16] + + /// + /// Current ping (ms) + /// + public int Ping => ping; + + /// + /// Outgoing packets per second + /// + public float OutPacketsPerSec => outPacketsPerSec; + + /// + /// Outgoing bytes per second + /// + public float OutBytesPerSec => outBytesPerSec; + + /// + /// Incoming packets per second + /// + public float InPacketsPerSec => inPacketsPerSec; + + /// + /// Incoming bytes per second + /// + public float InBytesPerSec => inBytesPerSec; + + /// + /// Connection quality measured locally, 0...1 (percentage of packets delivered end-to-end in order). + /// + public float ConnectionQualityLocal => connectionQualityLocal; + + /// + /// Packet delivery success rate as observed from remote host, 0...1 (percentage of packets delivered end-to-end in order). + /// + public float ConnectionQualityRemote => connectionQualityRemote; + + /// + /// Number of bytes unreliable data pending to be sent. This is data that you have recently requested to be sent but has not yet actually been put on the wire. + /// + public int PendingUnreliable => cbPendingUnreliable; + + /// + /// Number of bytes reliable data pending to be sent. This is data that you have recently requested to be sent but has not yet actually been put on the wire. + /// + public int PendingReliable => cbPendingReliable; + + /// + /// Number of bytes of reliable data that has been placed the wire, but for which we have not yet received an acknowledgment, and thus we may have to re-transmit. + /// + public int SentUnackedReliable => cbSentUnackedReliable; + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/Delegates.cs b/Facepunch.Steamworks/Networking/Delegates.cs new file mode 100644 index 0000000..2ab13e1 --- /dev/null +++ b/Facepunch.Steamworks/Networking/Delegates.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using Steamworks.Data; + +namespace Steamworks +{ + [UnmanagedFunctionPointer( Platform.CC )] + internal delegate void NetDebugFunc( [In] NetDebugOutput nType, [In] IntPtr pszMsg ); + + [UnmanagedFunctionPointer( Platform.CC )] + internal unsafe delegate void FnSteamNetConnectionStatusChanged( ref SteamNetConnectionStatusChangedCallback_t arg ); + + [UnmanagedFunctionPointer( Platform.CC )] + internal delegate void FnSteamNetAuthenticationStatusChanged( ref SteamNetAuthenticationStatus_t arg ); + + [UnmanagedFunctionPointer( Platform.CC )] + internal delegate void FnSteamRelayNetworkStatusChanged( ref SteamRelayNetworkStatus_t arg ); + + [UnmanagedFunctionPointer( Platform.CC )] + internal delegate void FnSteamNetworkingMessagesSessionRequest( ref SteamNetworkingMessagesSessionRequest_t arg ); + + [UnmanagedFunctionPointer( Platform.CC )] + internal delegate void FnSteamNetworkingMessagesSessionFailed( ref SteamNetworkingMessagesSessionFailed_t arg ); + + [UnmanagedFunctionPointer( Platform.CC )] + internal delegate void FnSteamNetworkingFakeIPResult( ref SteamNetworkingFakeIPResult_t arg ); +} diff --git a/Facepunch.Steamworks/Networking/IConnectionManager.cs b/Facepunch.Steamworks/Networking/IConnectionManager.cs new file mode 100644 index 0000000..b94af7a --- /dev/null +++ b/Facepunch.Steamworks/Networking/IConnectionManager.cs @@ -0,0 +1,28 @@ +using System; +using Steamworks.Data; + +namespace Steamworks +{ + public interface IConnectionManager + { + /// + /// We started connecting to this guy + /// + void OnConnecting( ConnectionInfo info ); + + /// + /// Called when the connection is fully connected and can start being communicated with + /// + void OnConnected( ConnectionInfo info ); + + /// + /// We got disconnected + /// + void OnDisconnected( ConnectionInfo info ); + + /// + /// Received a message + /// + void OnMessage( IntPtr data, int size, long messageNum, long recvTime, int channel ); + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/ISocketManager.cs b/Facepunch.Steamworks/Networking/ISocketManager.cs new file mode 100644 index 0000000..44d6797 --- /dev/null +++ b/Facepunch.Steamworks/Networking/ISocketManager.cs @@ -0,0 +1,28 @@ +using System; +using Steamworks.Data; + +namespace Steamworks +{ + public interface ISocketManager + { + /// + /// Must call Accept or Close on the connection within a second or so + /// + void OnConnecting( Connection connection, ConnectionInfo info ); + + /// + /// Called when the connection is fully connected and can start being communicated with + /// + void OnConnected( Connection connection, ConnectionInfo info ); + + /// + /// Called when the connection leaves. Must call Close on the connection + /// + void OnDisconnected( Connection connection, ConnectionInfo info ); + + /// + /// Received a message from a connection + /// + void OnMessage( Connection connection, NetIdentity identity, IntPtr data, int size, long messageNum, long recvTime, int channel ); + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/NetAddress.cs b/Facepunch.Steamworks/Networking/NetAddress.cs new file mode 100644 index 0000000..c532003 --- /dev/null +++ b/Facepunch.Steamworks/Networking/NetAddress.cs @@ -0,0 +1,168 @@ +using System.Net; +using System.Runtime.InteropServices; + +namespace Steamworks.Data +{ + [StructLayout( LayoutKind.Explicit, Size = 18, Pack = 1 )] + public partial struct NetAddress + { + [FieldOffset( 0 )] + internal IPV4 ip; + + [FieldOffset( 16 )] + internal ushort port; + + internal struct IPV4 + { + internal ulong m_8zeros; + internal ushort m_0000; + internal ushort m_ffff; + internal byte ip0; + internal byte ip1; + internal byte ip2; + internal byte ip3; + } + + /// + /// The Port. This is redundant documentation. + /// + public ushort Port => port; + + /// + /// Any IP, specific port + /// + public static NetAddress AnyIp( ushort port ) + { + var addr = Cleared; + addr.port = port; + return addr; + } + + /// + /// Localhost IP, specific port + /// + public static NetAddress LocalHost( ushort port ) + { + var local = Cleared; + InternalSetIPv6LocalHost( ref local, port ); + return local; + } + + /// + /// Specific IP, specific port + /// + public static NetAddress From( string addrStr, ushort port ) + { + return From( IPAddress.Parse( addrStr ), port ); + } + + /// + /// Specific IP, specific port + /// + public static NetAddress From( IPAddress address, ushort port ) + { + var addr = address.GetAddressBytes(); + + if ( address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork ) + { + var local = Cleared; + InternalSetIPv4( ref local, Utility.IpToInt32( address ), port ); + return local; + } + + throw new System.NotImplementedException( "Oops - no IPV6 support yet?" ); + } + + /// + /// Set everything to zero + /// + public static NetAddress Cleared + { + get + { + NetAddress self = default; + InternalClear( ref self ); + return self; + } + } + + /// + /// Return true if the IP is ::0. (Doesn't check port.) + /// + public bool IsIPv6AllZeros + { + get + { + NetAddress self = this; + return InternalIsIPv6AllZeros( ref self ); + } + } + + /// + /// Return true if IP is mapped IPv4 + /// + public bool IsIPv4 + { + get + { + NetAddress self = this; + return InternalIsIPv4( ref self ); + } + } + + /// + /// Return true if IP is a fake IPv4 for Steam Datagram Relay + /// + public bool IsFakeIPv4 + { + get + { + NetAddress self = this; + return SteamNetworkingUtils.Internal.IsFakeIPv4( InternalGetIPv4( ref self ) ); + } + } + + /// + /// Return true if this identity is localhost. (Either IPv6 ::1, or IPv4 127.0.0.1) + /// + public bool IsLocalHost + { + get + { + NetAddress self = this; + return InternalIsLocalHost( ref self ); + } + } + + /// + /// Get the Address section + /// + public IPAddress Address + { + get + { + if ( IsIPv4 ) + { + NetAddress self = this; + var ip = InternalGetIPv4( ref self ); + return Utility.Int32ToIp( ip ); + } + + if ( IsIPv6AllZeros ) + { + return IPAddress.IPv6Loopback; + } + + throw new System.NotImplementedException( "Oops - no IPV6 support yet?" ); + } + } + + public override string ToString() + { + using var ptr = Helpers.TakeMemory(); + var self = this; + InternalToString( ref self, ptr, Helpers.MemoryBufferSize, true ); + return Helpers.MemoryToString( ptr ); + } + } +} diff --git a/Facepunch.Steamworks/Networking/NetErrorMessage.cs b/Facepunch.Steamworks/Networking/NetErrorMessage.cs new file mode 100644 index 0000000..685a43d --- /dev/null +++ b/Facepunch.Steamworks/Networking/NetErrorMessage.cs @@ -0,0 +1,10 @@ + +using Steamworks.Data; + +namespace Steamworks.Data +{ + internal unsafe struct NetErrorMessage + { + public fixed char Value[1024]; + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/NetIdentity.cs b/Facepunch.Steamworks/Networking/NetIdentity.cs new file mode 100644 index 0000000..270bf5a --- /dev/null +++ b/Facepunch.Steamworks/Networking/NetIdentity.cs @@ -0,0 +1,126 @@ +using System.Runtime.InteropServices; + +namespace Steamworks.Data +{ + [StructLayout( LayoutKind.Explicit, Size = 136, Pack = 1 )] + public partial struct NetIdentity + { + [FieldOffset( 0 )] + internal IdentityType type; + + [FieldOffset( 4 )] + internal int size; + + [FieldOffset( 8 )] + internal ulong steamid; + + [FieldOffset( 8 )] + internal NetAddress netaddress; + + /// + /// Return a NetIdentity that represents LocalHost + /// + public static NetIdentity LocalHost + { + get + { + NetIdentity id = default; + InternalSetLocalHost( ref id ); + return id; + } + } + + + public bool IsSteamId => type == IdentityType.SteamID; + public bool IsIpAddress => type == IdentityType.IPAddress; + + /// + /// Return true if this identity is localhost + /// + public bool IsLocalHost + { + get + { + NetIdentity id = default; + return InternalIsLocalHost( ref id ); + } + } + + /// + /// Convert to a SteamId + /// + /// + public static implicit operator NetIdentity( SteamId value ) + { + NetIdentity id = default; + InternalSetSteamID( ref id, value ); + return id; + } + + /// + /// Set the specified Address + /// + public static implicit operator NetIdentity( NetAddress address ) + { + NetIdentity id = default; + InternalSetIPAddr( ref id, ref address ); + return id; + } + + /// + /// Automatically convert to a SteamId + /// + /// + public static implicit operator SteamId( NetIdentity value ) + { + return value.SteamId; + } + + /// + /// Returns NULL if we're not a SteamId + /// + public SteamId SteamId + { + get + { + if ( type != IdentityType.SteamID ) return default; + var id = this; + return InternalGetSteamID( ref id ); + } + } + + /// + /// Returns NULL if we're not a NetAddress + /// + public NetAddress Address + { + get + { + if ( type != IdentityType.IPAddress ) return default; + var id = this; + + var addrptr = InternalGetIPAddr( ref id ); + return addrptr.ToType(); + } + } + + /// + /// We override tostring to provide a sensible representation + /// + public override string ToString() + { + var id = this; + SteamNetworkingUtils.Internal.SteamNetworkingIdentity_ToString( ref id, out var str ); + return str; + } + + internal enum IdentityType + { + Invalid = 0, + IPAddress = 1, + GenericString = 2, + GenericBytes = 3, + SteamID = 16 + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/NetKeyValue.cs b/Facepunch.Steamworks/Networking/NetKeyValue.cs new file mode 100644 index 0000000..5ce0661 --- /dev/null +++ b/Facepunch.Steamworks/Networking/NetKeyValue.cs @@ -0,0 +1,31 @@ +using Steamworks.Data; +using System; +using System.Runtime.InteropServices; + +namespace Steamworks.Data +{ + [StructLayout( LayoutKind.Explicit, Pack = Platform.StructPlatformPackSize )] + internal partial struct NetKeyValue + { + [FieldOffset(0)] + internal NetConfig Value; // m_eValue ESteamNetworkingConfigValue + + [FieldOffset( 4 )] + internal NetConfigType DataType; // m_eDataType ESteamNetworkingConfigDataType + + [FieldOffset( 8 )] + internal long Int64Value; // m_int64 int64_t + + [FieldOffset( 8 )] + internal int Int32Value; // m_val_int32 int32_t + + [FieldOffset( 8 )] + internal float FloatValue; // m_val_float float + + [FieldOffset( 8 )] + internal IntPtr PointerValue; // m_val_functionPtr void * + + + // TODO - support strings, maybe + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/NetMsg.cs b/Facepunch.Steamworks/Networking/NetMsg.cs similarity index 51% rename from Facepunch.Steamworks/Structs/NetMsg.cs rename to Facepunch.Steamworks/Networking/NetMsg.cs index 5555e68..63091cf 100644 --- a/Facepunch.Steamworks/Structs/NetMsg.cs +++ b/Facepunch.Steamworks/Networking/NetMsg.cs @@ -1,11 +1,10 @@ -using Steamworks.Data; -using System; +using System; using System.Runtime.InteropServices; namespace Steamworks.Data { [StructLayout( LayoutKind.Sequential )] - internal struct NetMsg + internal partial struct NetMsg { internal IntPtr DataPtr; internal int DataSize; @@ -17,17 +16,9 @@ namespace Steamworks.Data internal IntPtr FreeDataPtr; internal IntPtr ReleasePtr; internal int Channel; - - internal delegate void ReleaseDelegate( IntPtr msg ); - - public void Release( IntPtr data ) - { - // - // I think this function might be a static global, so we could probably - // cache this release call. - // - var d = Marshal.GetDelegateForFunctionPointer( ReleasePtr ); - d( data ); - } + internal SendType Flags; + internal long UserData; + internal ushort IdxLane; + internal ushort _pad1__; } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/PingLocation.cs b/Facepunch.Steamworks/Networking/NetPingLocation.cs similarity index 93% rename from Facepunch.Steamworks/Structs/PingLocation.cs rename to Facepunch.Steamworks/Networking/NetPingLocation.cs index 9eb0a95..9aceca5 100644 --- a/Facepunch.Steamworks/Structs/PingLocation.cs +++ b/Facepunch.Steamworks/Networking/NetPingLocation.cs @@ -20,11 +20,11 @@ namespace Steamworks.Data /// /// [StructLayout( LayoutKind.Explicit, Size = 512 )] - public struct PingLocation + public struct NetPingLocation { - public static PingLocation? TryParseFromString( string str ) + public static NetPingLocation? TryParseFromString( string str ) { - var result = default( PingLocation ); + var result = default( NetPingLocation ); if ( !SteamNetworkingUtils.Internal.ParsePingLocationString( str, ref result ) ) return null; @@ -59,7 +59,7 @@ namespace Steamworks.Data /// /// Do you need to be able to do this from a backend/matchmaking server? /// You are looking for the "ticketgen" library. - public int EstimatePingTo( PingLocation target ) + public int EstimatePingTo( NetPingLocation target ) { return SteamNetworkingUtils.Internal.EstimatePingTimeBetweenTwoLocations( ref this, ref target ); } diff --git a/Facepunch.Steamworks/Networking/Socket.cs b/Facepunch.Steamworks/Networking/Socket.cs new file mode 100644 index 0000000..334f589 --- /dev/null +++ b/Facepunch.Steamworks/Networking/Socket.cs @@ -0,0 +1,29 @@ + +using System.Runtime.InteropServices; + +namespace Steamworks.Data +{ + [StructLayout( LayoutKind.Sequential )] + public struct Socket + { + internal uint Id; + public override string ToString() => Id.ToString(); + public static implicit operator Socket( uint value ) => new Socket() { Id = value }; + public static implicit operator uint( Socket value ) => value.Id; + + /// + /// Destroy a listen socket. All the connections that were accepting on the listen + /// socket are closed ungracefully. + /// + public bool Close() + { + return SteamNetworkingSockets.Internal.CloseListenSocket( Id ); + } + + public SocketManager Manager + { + get => SteamNetworkingSockets.GetSocketManager( Id ); + set => SteamNetworkingSockets.SetSocketManager( Id, value ); + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/SocketManager.cs b/Facepunch.Steamworks/Networking/SocketManager.cs new file mode 100644 index 0000000..fd7e61f --- /dev/null +++ b/Facepunch.Steamworks/Networking/SocketManager.cs @@ -0,0 +1,176 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using Steamworks.Data; + +namespace Steamworks +{ + /// + /// Used as a base to create your networking server. This creates a socket + /// and listens/communicates with multiple queries. + /// + /// You can override all the virtual functions to turn it into what you + /// want it to do. + /// + public partial class SocketManager + { + public ISocketManager Interface { get; set; } + + public HashSet Connecting = new HashSet(); + public HashSet Connected = new HashSet(); + + public Socket Socket { get; internal set; } + + public override string ToString() => Socket.ToString(); + + internal HSteamNetPollGroup pollGroup; + + internal void Initialize() + { + pollGroup = SteamNetworkingSockets.Internal.CreatePollGroup(); + } + + public bool Close() + { + if ( SteamNetworkingSockets.Internal.IsValid ) + { + SteamNetworkingSockets.Internal.DestroyPollGroup( pollGroup ); + Socket.Close(); + } + + pollGroup = 0; + Socket = 0; + return true; + } + + public virtual void OnConnectionChanged( Connection connection, ConnectionInfo info ) + { + // + // Some notes: + // - Update state before the callbacks, in case an exception is thrown + // - ConnectionState.None happens when a connection is destroyed, even if it was already disconnected (ClosedByPeer / ProblemDetectedLocally) + // + switch ( info.State ) + { + case ConnectionState.Connecting: + if ( !Connecting.Contains( connection ) && !Connected.Contains( connection ) ) + { + Connecting.Add( connection ); + + OnConnecting( connection, info ); + } + break; + case ConnectionState.Connected: + if ( Connecting.Contains( connection ) && !Connected.Contains( connection ) ) + { + Connecting.Remove( connection ); + Connected.Add( connection ); + + OnConnected( connection, info ); + } + break; + case ConnectionState.ClosedByPeer: + case ConnectionState.ProblemDetectedLocally: + case ConnectionState.None: + if ( Connecting.Contains( connection ) || Connected.Contains( connection ) ) + { + Connecting.Remove( connection ); + Connected.Remove( connection ); + + OnDisconnected( connection, info ); + } + break; + } + } + + /// + /// Default behaviour is to accept every connection + /// + public virtual void OnConnecting( Connection connection, ConnectionInfo info ) + { + if ( Interface != null ) + { + Interface.OnConnecting( connection, info ); + } + else + { + connection.Accept(); + } + } + + /// + /// Client is connected. They move from connecting to Connections + /// + public virtual void OnConnected( Connection connection, ConnectionInfo info ) + { + SteamNetworkingSockets.Internal.SetConnectionPollGroup( connection, pollGroup ); + + Interface?.OnConnected( connection, info ); + } + + /// + /// The connection has been closed remotely or disconnected locally. Check data.State for details. + /// + public virtual void OnDisconnected( Connection connection, ConnectionInfo info ) + { + if ( Interface != null ) + { + Interface.OnDisconnected( connection, info ); + } + else + { + connection.Close(); + } + } + + public int Receive( int bufferSize = 32, bool receiveToEnd = true ) + { + int processed = 0; + IntPtr messageBuffer = Marshal.AllocHGlobal( IntPtr.Size * bufferSize ); + + try + { + processed = SteamNetworkingSockets.Internal.ReceiveMessagesOnPollGroup( pollGroup, messageBuffer, bufferSize ); + + for ( int i = 0; i < processed; i++ ) + { + ReceiveMessage( Marshal.ReadIntPtr( messageBuffer, i * IntPtr.Size ) ); + } + } + finally + { + Marshal.FreeHGlobal( messageBuffer ); + } + + + // + // Overwhelmed our buffer, keep going + // + if ( receiveToEnd && processed == bufferSize ) + processed += Receive( bufferSize ); + + return processed; + } + + internal unsafe void ReceiveMessage( IntPtr msgPtr ) + { + var msg = Marshal.PtrToStructure( msgPtr ); + try + { + OnMessage( msg.Connection, msg.Identity, msg.DataPtr, msg.DataSize, msg.RecvTime, msg.MessageNumber, msg.Channel ); + } + finally + { + // + // Releases the message + // + NetMsg.InternalRelease( (NetMsg*) msgPtr ); + } + } + + public virtual void OnMessage( Connection connection, NetIdentity identity, IntPtr data, int size, long messageNum, long recvTime, int channel ) + { + Interface?.OnMessage( connection, identity, data, size, messageNum, recvTime, channel ); + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Networking/SteamDatagramRelayAuthTicket.cs b/Facepunch.Steamworks/Networking/SteamDatagramRelayAuthTicket.cs new file mode 100644 index 0000000..8a95234 --- /dev/null +++ b/Facepunch.Steamworks/Networking/SteamDatagramRelayAuthTicket.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Steamworks.Data +{ + struct SteamDatagramRelayAuthTicket + { + // Not implemented, not used + }; +} \ No newline at end of file diff --git a/Facepunch.Steamworks/ServerList/Base.cs b/Facepunch.Steamworks/ServerList/Base.cs index 4b66225..41f8624 100644 --- a/Facepunch.Steamworks/ServerList/Base.cs +++ b/Facepunch.Steamworks/ServerList/Base.cs @@ -11,27 +11,7 @@ namespace Steamworks.ServerList { #region ISteamMatchmakingServers - - static ISteamMatchmakingServers _internal; - internal static ISteamMatchmakingServers Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamMatchmakingServers(); - _internal.Init(); - } - - return _internal; - } - } - - internal static void Shutdown() - { - _internal = null; - } - + internal static ISteamMatchmakingServers Internal => SteamMatchmakingServers.Internal; #endregion diff --git a/Facepunch.Steamworks/SteamApps.cs b/Facepunch.Steamworks/SteamApps.cs index b01210f..b2437f7 100644 --- a/Facepunch.Steamworks/SteamApps.cs +++ b/Facepunch.Steamworks/SteamApps.cs @@ -11,70 +11,60 @@ namespace Steamworks /// /// Exposes a wide range of information and actions for applications and Downloadable Content (DLC). /// - public static class SteamApps + public class SteamApps : SteamSharedClass { - static ISteamApps _internal; - internal static ISteamApps Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamApps(); - _internal.Init(); - } + internal static ISteamApps Internal => Interface as ISteamApps; - return _internal; - } - } - - internal static void Shutdown() + internal override bool InitializeInterface( bool server ) { - _internal = null; + SetInterface( server, new ISteamApps( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + return true; } internal static void InstallEvents() { - DlcInstalled_t.Install( x => OnDlcInstalled?.Invoke( x.AppID ) ); - NewUrlLaunchParameters_t.Install( x => OnNewLaunchParameters?.Invoke() ); + Dispatch.Install( x => OnDlcInstalled?.Invoke( x.AppID ) ); + Dispatch.Install( x => OnNewLaunchParameters?.Invoke() ); } /// - /// posted after the user gains ownership of DLC and that DLC is installed + /// Posted after the user gains ownership of DLC and that DLC is installed. /// public static event Action OnDlcInstalled; /// - /// posted after the user gains executes a Steam URL with command line or query parameters + /// Posted after the user gains executes a Steam URL with command line or query parameters /// such as steam://run/appid//-commandline/?param1=value1(and)param2=value2(and)param3=value3 etc /// while the game is already running. The new params can be queried - /// with GetLaunchQueryParam and GetLaunchCommandLine + /// with GetLaunchQueryParam and GetLaunchCommandLine. /// public static event Action OnNewLaunchParameters; /// - /// Checks if the active user is subscribed to the current App ID + /// Gets whether or not the active user is subscribed to the current App ID. /// public static bool IsSubscribed => Internal.BIsSubscribed(); /// - /// Check if user borrowed this game via Family Sharing, If true, call GetAppOwner() to get the lender SteamID + /// Gets whether or not the user borrowed this game via Family Sharing. If true, call GetAppOwner() to get the lender SteamID. /// public static bool IsSubscribedFromFamilySharing => Internal.BIsSubscribedFromFamilySharing(); /// - /// Checks if the license owned by the user provides low violence depots. + /// Gets whether or not the license owned by the user provides low violence depots. /// Low violence depots are useful for copies sold in countries that have content restrictions /// - public static bool IsLowVoilence => Internal.BIsLowViolence(); + public static bool IsLowViolence => Internal.BIsLowViolence(); /// - /// Checks whether the current App ID license is for Cyber Cafes. + /// Gets whether or not the current App ID license is for Cyber Cafes. /// public static bool IsCybercafe => Internal.BIsCybercafe(); /// - /// CChecks if the user has a VAC ban on their account + /// Gets whether or not the user has a VAC ban on their account. /// public static bool IsVACBanned => Internal.BIsVACBanned(); @@ -90,19 +80,22 @@ namespace Steamworks public static string[] AvailableLanguages => Internal.GetAvailableGameLanguages().Split( new[] { ',' }, StringSplitOptions.RemoveEmptyEntries ); /// - /// Checks if the active user is subscribed to a specified AppId. + /// Gets whether or not the active user is subscribed to a specified App ID. /// Only use this if you need to check ownership of another game related to yours, a demo for example. /// + /// The App ID of the DLC to check. public static bool IsSubscribedToApp( AppId appid ) => Internal.BIsSubscribedApp( appid.Value ); /// - /// Checks if the user owns a specific DLC and if the DLC is installed + /// Gets whether or not the user owns a specific DLC and if the DLC is installed. /// + /// The App ID of the DLC to check. public static bool IsDlcInstalled( AppId appid ) => Internal.BIsDlcInstalled( appid.Value ); /// - /// Returns the time of the purchase of the app + /// Returns the time of the purchase of the app. /// + /// The App ID to check the purchase time for. public static DateTime PurchaseTime( AppId appid = default ) { if ( appid == 0 ) @@ -112,14 +105,14 @@ namespace Steamworks } /// - /// Checks if the user is subscribed to the current app through a free weekend - /// This function will return false for users who have a retail or other type of license - /// Before using, please ask your Valve technical contact how to package and secure your free weekened + /// Checks if the user is subscribed to the current app through a free weekend. + /// This function will return false for users who have a retail or other type of license. + /// Before using, please ask your Valve technical contact how to package and secure your free weekened. /// public static bool IsSubscribedFromFreeWeekend => Internal.BIsSubscribedFromFreeWeekend(); /// - /// Returns metadata for all available DLC + /// Returns metadata for all available DLC. /// public static IEnumerable DlcInformation() { @@ -141,17 +134,19 @@ namespace Steamworks } /// - /// Install/Uninstall control for optional DLC + /// Install control for optional DLC. /// + /// The App ID of the DLC to install. public static void InstallDlc( AppId appid ) => Internal.InstallDLC( appid.Value ); /// - /// Install/Uninstall control for optional DLC + /// Uninstall control for optional DLC. /// + /// The App ID of the DLC to uninstall. public static void UninstallDlc( AppId appid ) => Internal.UninstallDLC( appid.Value ); /// - /// Returns null if we're not on a beta branch, else the name of the branch + /// Gets the name of the beta branch that is launched, or if the application is not running on a beta branch. /// public static string CurrentBetaName { @@ -165,25 +160,26 @@ namespace Steamworks } /// - /// Allows you to force verify game content on next launch. - /// - /// If you detect the game is out-of-date(for example, by having the client detect a version mismatch with a server), - /// you can call use MarkContentCorrupt to force a verify, show a message to the user, and then quit. + /// Force verify game content on next launch. + /// + /// If you detect the game is out-of-date (for example, by having the client detect a version mismatch with a server), + /// you can call MarkContentCorrupt to force a verify, show a message to the user, and then quit. + /// /// + /// Whether or not to only verify missing files. public static void MarkContentCorrupt( bool missingFilesOnly ) => Internal.MarkContentCorrupt( missingFilesOnly ); /// - /// Gets a list of all installed depots for a given App ID in mount order + /// Gets a list of all installed depots for a given App ID in mount order. /// + /// The App ID. public static IEnumerable InstalledDepots( AppId appid = default ) { if ( appid == 0 ) appid = SteamClient.AppId; var depots = new DepotId_t[32]; - uint count = 0; - - count = Internal.GetInstalledDepots( appid.Value, depots, (uint) depots.Length ); + uint count = Internal.GetInstalledDepots( appid.Value, depots, (uint) depots.Length ); for ( int i = 0; i < count; i++ ) { @@ -192,9 +188,10 @@ namespace Steamworks } /// - /// Gets the install folder for a specific AppID. + /// Gets the install folder for a specific App ID. /// This works even if the application is not installed, based on where the game would be installed with the default Steam library location. /// + /// The App ID. public static string AppInstallDir( AppId appid = default ) { if ( appid == 0 ) @@ -207,48 +204,54 @@ namespace Steamworks } /// - /// The app may not actually be owned by the current user, they may have it left over from a free weekend, etc. + /// Gets whether or not the app is owned by the current user. The app may not actually be owned by the current user; they may have it left over from a free weekend, etc. /// + /// The App ID. public static bool IsAppInstalled( AppId appid ) => Internal.BIsAppInstalled( appid.Value ); /// - /// Gets the Steam ID of the original owner of the current app. If it's different from the current user then it is borrowed.. + /// Gets the Steam ID of the original owner of the current app. If it's different from the current user then it is borrowed. /// public static SteamId AppOwner => Internal.GetAppOwner().Value; /// /// Gets the associated launch parameter if the game is run via steam://run/appid/?param1=value1;param2=value2;param3=value3 etc. - /// Parameter names starting with the character '@' are reserved for internal use and will always return an empty string. - /// Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, + /// + /// Parameter names starting with the character '@' are reserved for internal use and will always return an empty string. + /// Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, /// but it is advised that you not param names beginning with an underscore for your own features. + /// /// + /// The name of the parameter. + /// The launch parameter value. public static string GetLaunchParam( string param ) => Internal.GetLaunchQueryParam( param ); /// /// Gets the download progress for optional DLC. /// + /// The App ID to check the progress for. public static DownloadProgress DlcDownloadProgress( AppId appid ) { ulong punBytesDownloaded = 0; ulong punBytesTotal = 0; if ( !Internal.GetDlcDownloadProgress( appid.Value, ref punBytesDownloaded, ref punBytesTotal ) ) - return default( DownloadProgress ); + return default; return new DownloadProgress { BytesDownloaded = punBytesDownloaded, BytesTotal = punBytesTotal, Active = true }; } /// - /// Gets the buildid of this app, may change at any time based on backend updates to the game. - /// Defaults to 0 if you're not running a build downloaded from steam. + /// Gets the Build ID of this app, which can change at any time based on backend updates to the game. + /// Defaults to 0 if you're not running a build downloaded from steam. /// public static int BuildId => Internal.GetAppBuildId(); /// /// Asynchronously retrieves metadata details about a specific file in the depot manifest. - /// Currently provides: /// + /// The name of the file. public static async Task GetFileDetailsAsync( string filename ) { var r = await Internal.GetFileDetails( filename ); @@ -268,18 +271,39 @@ namespace Steamworks /// Get command line if game was launched via Steam URL, e.g. steam://run/appid//command line/. /// This method of passing a connect string (used when joining via rich presence, accepting an /// invite, etc) is preferable to passing the connect string on the operating system command - /// line, which is a security risk. In order for rich presence joins to go through this + /// line, which is a security risk. In order for rich presence joins to go through this /// path and not be placed on the OS command line, you must set a value in your app's - /// configuration on Steam. Ask Valve for help with this. + /// configuration on Steam. Ask Valve for help with this. /// public static string CommandLine { get { - var len = Internal.GetLaunchCommandLine( out var strVal ); + Internal.GetLaunchCommandLine( out var strVal ); return strVal; } } + /// + /// Check if game is a timed trial with limited playtime. + /// + /// The amount of seconds left on the timed trial. + /// The amount of seconds played on the timed trial. + public static bool IsTimedTrial( out int secondsAllowed, out int secondsPlayed ) + { + uint a = 0; + uint b = 0; + secondsAllowed = 0; + secondsPlayed = 0; + + if ( !Internal.BIsTimedTrial( ref a, ref b ) ) + return false; + + secondsAllowed = (int) a; + secondsPlayed = (int) b; + + return true; + } + } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamClient.cs b/Facepunch.Steamworks/SteamClient.cs index e7fd15c..f8f1db2 100644 --- a/Facepunch.Steamworks/SteamClient.cs +++ b/Facepunch.Steamworks/SteamClient.cs @@ -13,92 +13,103 @@ namespace Steamworks /// /// Initialize the steam client. - /// If asyncCallbacks is false you need to call RunCallbacks manually every frame. + /// If is false you need to call manually every frame. /// public static void Init( uint appid, bool asyncCallbacks = true ) { + if ( initialized ) + throw new System.Exception( "Calling SteamClient.Init but is already initialized" ); + System.Environment.SetEnvironmentVariable( "SteamAppId", appid.ToString() ); System.Environment.SetEnvironmentVariable( "SteamGameId", appid.ToString() ); if ( !SteamAPI.Init() ) { - throw new System.Exception( "SteamApi_Init returned false. Steam isn't running, couldn't find Steam, AppId is ureleased, Don't own AppId." ); + throw new System.Exception( "SteamApi_Init returned false. Steam isn't running, couldn't find Steam, App ID is ureleased, Don't own App ID." ); } AppId = appid; initialized = true; - SteamApps.InstallEvents(); - SteamUtils.InstallEvents(); - SteamParental.InstallEvents(); - SteamMusic.InstallEvents(); - SteamVideo.InstallEvents(); - SteamUser.InstallEvents(); - SteamFriends.InstallEvents(); - SteamScreenshots.InstallEvents(); - SteamUserStats.InstallEvents(); - SteamInventory.InstallEvents(); - SteamNetworking.InstallEvents(); - SteamMatchmaking.InstallEvents(); - SteamParties.InstallEvents(); - SteamNetworkingSockets.InstallEvents(); - SteamInput.InstallEvents(); - SteamUGC.InstallEvents(); + // + // Dispatch is responsible for pumping the + // event loop. + // + Dispatch.Init(); + Dispatch.ClientPipe = SteamAPI.GetHSteamPipe(); + + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + + initialized = openInterfaces.Count > 0; if ( asyncCallbacks ) { - RunCallbacksAsync(); + // + // This will keep looping in the background every 16 ms + // until we shut down. + // + Dispatch.LoopClientAsync(); } } - static List openIterfaces = new List(); - - internal static void WatchInterface( SteamInterface steamInterface ) + internal static void AddInterface() where T : SteamClass, new() { - if ( openIterfaces.Contains( steamInterface ) ) - throw new System.Exception( "openIterfaces already contains interface!" ); - - openIterfaces.Add( steamInterface ); + var t = new T(); + bool valid = t.InitializeInterface( false ); + if ( valid ) + { + openInterfaces.Add( t ); + } + else + { + t.DestroyInterface( false ); + } } + static readonly List openInterfaces = new List(); + internal static void ShutdownInterfaces() { - foreach ( var e in openIterfaces ) + foreach ( var e in openInterfaces ) { - e.Shutdown(); + e.DestroyInterface( false ); } - openIterfaces.Clear(); + openInterfaces.Clear(); } - public static Action OnCallbackException; - + /// + /// Check if Steam is loaded and accessible. + /// public static bool IsValid => initialized; - internal static async void RunCallbacksAsync() - { - while ( IsValid ) - { - await Task.Delay( 16 ); - - try - { - RunCallbacks(); - } - catch ( System.Exception e ) - { - OnCallbackException?.Invoke( e ); - } - } - } - + /// + /// Shuts down the steam client. + /// public static void Shutdown() { if ( !IsValid ) return; - SteamInput.Shutdown(); - Cleanup(); SteamAPI.Shutdown(); @@ -106,56 +117,29 @@ namespace Steamworks internal static void Cleanup() { + Dispatch.ShutdownClient(); + initialized = false; - - Event.DisposeAllClient(); ShutdownInterfaces(); - - SteamInput.Shutdown(); - SteamApps.Shutdown(); - SteamUtils.Shutdown(); - SteamParental.Shutdown(); - SteamMusic.Shutdown(); - SteamVideo.Shutdown(); - SteamUser.Shutdown(); - SteamFriends.Shutdown(); - SteamScreenshots.Shutdown(); - SteamUserStats.Shutdown(); - SteamInventory.Shutdown(); - SteamNetworking.Shutdown(); - SteamMatchmaking.Shutdown(); - SteamParties.Shutdown(); - SteamNetworkingUtils.Shutdown(); - SteamNetworkingSockets.Shutdown(); - ServerList.Base.Shutdown(); - } - - internal static void RegisterCallback( IntPtr intPtr, int callbackId ) - { - SteamAPI.RegisterCallback( intPtr, callbackId ); } public static void RunCallbacks() { - if ( !IsValid ) return; - - SteamAPI.RunCallbacks(); - } - - internal static void UnregisterCallback( IntPtr intPtr ) - { - SteamAPI.UnregisterCallback( intPtr ); + if ( Dispatch.ClientPipe != 0 ) + Dispatch.Frame( Dispatch.ClientPipe ); } /// /// Checks if the current user's Steam client is connected to the Steam servers. - /// If it's not then no real-time services provided by the Steamworks API will be enabled. The Steam + /// + /// If it's not, no real-time services provided by the Steamworks API will be enabled. The Steam /// client will automatically be trying to recreate the connection as often as possible. When the /// connection is restored a SteamServersConnected_t callback will be posted. /// You usually don't need to check for this yourself. All of the API calls that rely on this will /// check internally. Forcefully disabling stuff when the player loses access is usually not a /// very good experience for the player and you could be preventing them from accessing APIs that do not /// need a live connection to Steam. + /// /// public static bool IsLoggedOn => SteamUser.Internal.BLoggedOn(); @@ -168,28 +152,30 @@ namespace Steamworks public static SteamId SteamId => SteamUser.Internal.GetSteamID(); /// - /// returns the local players name - guaranteed to not be NULL. - /// this is the same name as on the users community profile page + /// returns the local players name - guaranteed to not be . + /// This is the same name as on the user's community profile page. /// public static string Name => SteamFriends.Internal.GetPersonaName(); /// - /// gets the status of the current user + /// Gets the status of the current user. /// public static FriendState State => SteamFriends.Internal.GetPersonaState(); /// - /// returns the appID of the current process + /// Returns the App ID of the current process. /// public static AppId AppId { get; internal set; } /// - /// Checks if your executable was launched through Steam and relaunches it through Steam if it wasn't - /// this returns true then it starts the Steam client if required and launches your game again through it, + /// Checks if your executable was launched through Steam and relaunches it through Steam if it wasn't. + /// + /// This returns true then it starts the Steam client if required and launches your game again through it, /// and you should quit your process as soon as possible. This effectively runs steam://run/AppId so it /// may not relaunch the exact executable that called it, as it will always relaunch from the version /// installed in your Steam library folder/ /// Note that during development, when not launching via Steam, this might always return true. + /// /// public static bool RestartAppIfNecessary( uint appid ) { @@ -211,4 +197,4 @@ namespace Steamworks } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamFriends.cs b/Facepunch.Steamworks/SteamFriends.cs index 8be5d34..6b8f86b 100644 --- a/Facepunch.Steamworks/SteamFriends.cs +++ b/Facepunch.Steamworks/SteamFriends.cs @@ -8,111 +8,134 @@ using Steamworks.Data; namespace Steamworks { /// - /// Undocumented Parental Settings + /// Class for utilizing the Steam Friends API. /// - public static class SteamFriends + public class SteamFriends : SteamClientClass { - static ISteamFriends _internal; - internal static ISteamFriends Internal + internal static ISteamFriends Internal => Interface as ISteamFriends; + + internal override bool InitializeInterface( bool server ) { - get - { - SteamClient.ValidCheck(); + SetInterface( server, new ISteamFriends( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; - if ( _internal == null ) - { - _internal = new ISteamFriends(); - _internal.Init(); + richPresence = new Dictionary(); - richPresence = new Dictionary(); - } + InstallEvents(); - return _internal; - } - } - internal static void Shutdown() - { - _internal = null; + return true; } static Dictionary richPresence; - internal static void InstallEvents() + internal void InstallEvents() { - FriendStateChange_t.Install( x => OnPersonaStateChange?.Invoke( new Friend( x.SteamID ) ) ); - GameRichPresenceJoinRequested_t.Install( x => OnGameRichPresenceJoinRequested?.Invoke( new Friend( x.SteamIDFriend), x.ConnectUTF8() ) ); - GameConnectedFriendChatMsg_t.Install( OnFriendChatMessage ); - GameOverlayActivated_t.Install( x => OnGameOverlayActivated?.Invoke() ); - GameServerChangeRequested_t.Install( x => OnGameServerChangeRequested?.Invoke( x.ServerUTF8(), x.PasswordUTF8() ) ); - GameLobbyJoinRequested_t.Install( x => OnGameLobbyJoinRequested?.Invoke( new Lobby( x.SteamIDLobby ), x.SteamIDFriend ) ); - FriendRichPresenceUpdate_t.Install( x => OnFriendRichPresenceUpdate?.Invoke( new Friend( x.SteamIDFriend ) ) ); + Dispatch.Install( x => OnPersonaStateChange?.Invoke( new Friend( x.SteamID ) ) ); + Dispatch.Install( x => OnGameRichPresenceJoinRequested?.Invoke( new Friend( x.SteamIDFriend), x.ConnectUTF8() ) ); + Dispatch.Install( OnFriendChatMessage ); + Dispatch.Install( OnGameConnectedClanChatMessage ); + Dispatch.Install( x => OnGameOverlayActivated?.Invoke( x.Active != 0 ) ); + Dispatch.Install( x => OnGameServerChangeRequested?.Invoke( x.ServerUTF8(), x.PasswordUTF8() ) ); + Dispatch.Install( x => OnGameLobbyJoinRequested?.Invoke( new Lobby( x.SteamIDLobby ), x.SteamIDFriend ) ); + Dispatch.Install( x => OnFriendRichPresenceUpdate?.Invoke( new Friend( x.SteamIDFriend ) ) ); + Dispatch.Install( x => OnOverlayBrowserProtocol?.Invoke( x.RgchURIUTF8() ) ); } /// - /// Called when chat message has been received from a friend. You'll need to turn on - /// ListenForFriendsMessages to recieve this. (friend, msgtype, message) + /// Invoked when a chat message has been received from a friend. You'll need to enable + /// to recieve this. (friend, msgtype, message) /// public static event Action OnChatMessage; /// - /// called when a friends' status changes + /// Invoked when a chat message has been received in a Steam group chat that we are in. Associated Functions: JoinClanChatRoom. (friend, msgtype, message) + /// + public static event Action OnClanChatMessage; + + /// + /// Invoked when a friends' status changes. /// public static event Action OnPersonaStateChange; /// - /// Called when the user tries to join a game from their friends list - /// rich presence will have been set with the "connect" key which is set here + /// Invoked when the user tries to join a game from their friends list. + /// Rich presence will have been set with the "connect" key which is set here. /// public static event Action OnGameRichPresenceJoinRequested; /// - /// Posted when game overlay activates or deactivates - /// the game can use this to be pause or resume single player games + /// Invoked when game overlay activates or deactivates. + /// The game can use this to be pause or resume single player games. /// - public static event Action OnGameOverlayActivated; + public static event Action OnGameOverlayActivated; /// - /// Called when the user tries to join a different game server from their friends list - /// game client should attempt to connect to specified server when this is received + /// Invoked when the user tries to join a different game server from their friends list. + /// Game client should attempt to connect to specified server when this is received. /// public static event Action OnGameServerChangeRequested; /// - /// Called when the user tries to join a lobby from their friends list - /// game client should attempt to connect to specified lobby when this is received + /// Invoked when the user tries to join a lobby from their friends list. + /// Game client should attempt to connect to specified lobby when this is received. /// public static event Action OnGameLobbyJoinRequested; /// - /// Callback indicating updated data about friends rich presence information + /// Invoked when a friend's rich presence data is updated. /// public static event Action OnFriendRichPresenceUpdate; + /// + /// Invoked when an overlay browser instance is navigated to a + /// protocol/scheme registered by . + /// + public static event Action OnOverlayBrowserProtocol; + + static unsafe void OnFriendChatMessage( GameConnectedFriendChatMsg_t data ) { if ( OnChatMessage == null ) return; var friend = new Friend( data.SteamIDUser ); - var buffer = Helpers.TakeBuffer( 1024 * 32 ); + using var buffer = Helpers.TakeMemory(); var type = ChatEntryType.ChatMsg; - fixed ( byte* ptr = buffer ) - { - var len = Internal.GetFriendMessage( data.SteamIDUser, data.MessageID, (IntPtr)ptr, buffer.Length, ref type ); + var len = Internal.GetFriendMessage( data.SteamIDUser, data.MessageID, buffer, Helpers.MemoryBufferSize, ref type ); - if ( len == 0 && type == ChatEntryType.Invalid ) - return; + if ( len == 0 && type == ChatEntryType.Invalid ) + return; - var typeName = type.ToString(); - var message = Encoding.UTF8.GetString( buffer, 0, len ); + var typeName = type.ToString(); + var message = Helpers.MemoryToString( buffer ); - OnChatMessage( friend, typeName, message ); - } + OnChatMessage( friend, typeName, message ); } - - public static IEnumerable GetFriendsWithFlag(FriendFlags flag) + + static unsafe void OnGameConnectedClanChatMessage( GameConnectedClanChatMsg_t data ) + { + if ( OnClanChatMessage == null ) return; + + var friend = new Friend( data.SteamIDUser ); + + using var buffer = Helpers.TakeMemory(); + var type = ChatEntryType.ChatMsg; + SteamId chatter = data.SteamIDUser; + + var len = Internal.GetClanChatMessage( data.SteamIDClanChat, data.MessageID, buffer, Helpers.MemoryBufferSize, ref type, ref chatter ); + + if ( len == 0 && type == ChatEntryType.Invalid ) + return; + + var typeName = type.ToString(); + var message = Helpers.MemoryToString( buffer ); + + OnClanChatMessage( friend, typeName, message ); + } + + private static IEnumerable GetFriendsWithFlag(FriendFlags flag) { for ( int i=0; i + /// Gets an of friends that the current user has. + /// + /// An of friends. public static IEnumerable GetFriends() { return GetFriendsWithFlag(FriendFlags.Immediate); } + /// + /// Gets an of blocked users that the current user has. + /// + /// An of blocked users. public static IEnumerable GetBlocked() { return GetFriendsWithFlag(FriendFlags.Blocked); } + /// + /// Gets an of friend requests that the current user has. + /// + /// An of friend requests. + public static IEnumerable GetFriendsRequested() + { + return GetFriendsWithFlag( FriendFlags.FriendshipRequested ); + } + + public static IEnumerable GetFriendsClanMembers() + { + return GetFriendsWithFlag( FriendFlags.ClanMember ); + } + + public static IEnumerable GetFriendsOnGameServer() + { + return GetFriendsWithFlag( FriendFlags.OnGameServer ); + } + + public static IEnumerable GetFriendsRequestingFriendship() + { + return GetFriendsWithFlag( FriendFlags.RequestingFriendship ); + } + public static IEnumerable GetPlayedWith() { for ( int i = 0; i < Internal.GetCoplayFriendCount(); i++ ) @@ -146,8 +201,16 @@ namespace Steamworks } } + public static IEnumerable GetClans() + { + for (int i = 0; i < Internal.GetClanCount(); i++) + { + yield return new Clan( Internal.GetClanByIndex( i ) ); + } + } + /// - /// The dialog to open. Valid options are: + /// Opens a specific overlay window. Valid options are: /// "friends", /// "community", /// "players", @@ -174,7 +237,7 @@ namespace Steamworks /// /// Activates the Steam Overlay to the Steam store page for the provided app. /// - public static void OpenStoreOverlay( AppId id ) => Internal.ActivateGameOverlayToStore( id.Value, OverlayToStoreFlag.None ); + public static void OpenStoreOverlay( AppId id, OverlayToStoreFlag overlayToStoreFlag = OverlayToStoreFlag.None ) => Internal.ActivateGameOverlayToStore( id.Value, overlayToStoreFlag ); /// /// Activates Steam Overlay web browser directly to the specified URL. @@ -219,18 +282,33 @@ namespace Steamworks await Task.Delay( 500 ); } + /// + /// Returns a small avatar of the user with the given . + /// + /// The of the user to get. + /// A with a value if the image was successfully retrieved. public static async Task GetSmallAvatarAsync( SteamId steamid ) { await CacheUserInformationAsync( steamid, false ); return SteamUtils.GetImage( Internal.GetSmallFriendAvatar( steamid ) ); } + /// + /// Returns a medium avatar of the user with the given . + /// + /// The of the user to get. + /// A with a value if the image was successfully retrieved. public static async Task GetMediumAvatarAsync( SteamId steamid ) { await CacheUserInformationAsync( steamid, false ); return SteamUtils.GetImage( Internal.GetMediumFriendAvatar( steamid ) ); } + /// + /// Returns a large avatar of the user with the given . + /// + /// The of the user to get. + /// A with a value if the image was successfully retrieved. public static async Task GetLargeAvatarAsync( SteamId steamid ) { await CacheUserInformationAsync( steamid, false ); @@ -298,5 +376,64 @@ namespace Steamworks } } + /// + /// Gets whether or not the current user is following the user with the given . + /// + /// The to check. + /// Boolean. + public static async Task IsFollowing(SteamId steamID) + { + var r = await Internal.IsFollowing(steamID); + return r.Value.IsFollowing; + } + + public static async Task GetFollowerCount(SteamId steamID) + { + var r = await Internal.GetFollowerCount(steamID); + return r.Value.Count; + } + + public static async Task GetFollowingList() + { + int resultCount = 0; + var steamIds = new List(); + + FriendsEnumerateFollowingList_t? result; + + do + { + if ( (result = await Internal.EnumerateFollowingList((uint)resultCount)) != null) + { + resultCount += result.Value.ResultsReturned; + + Array.ForEach(result.Value.GSteamID, id => { if (id > 0) steamIds.Add(id); }); + } + } while (result != null && resultCount < result.Value.TotalResultCount); + + return steamIds.ToArray(); + } + + /// + /// Call this before calling ActivateGameOverlayToWebPage() to have the Steam Overlay Browser block navigations + /// to your specified protocol (scheme) uris and instead dispatch a OverlayBrowserProtocolNavigation callback to your game. + /// + public static bool RegisterProtocolInOverlayBrowser( string protocol ) + { + return Internal.RegisterProtocolInOverlayBrowser( protocol ); + } + + public static async Task JoinClanChatRoom( SteamId chatId ) + { + var result = await Internal.JoinClanChatRoom( chatId ); + if ( !result.HasValue ) + return false; + + return result.Value.ChatRoomEnterResponse == RoomEnter.Success ; + } + + public static bool SendClanChatRoomMessage( SteamId chatId, string message ) + { + return Internal.SendClanChatMessage( chatId, message ); + } } } diff --git a/Facepunch.Steamworks/SteamInput.cs b/Facepunch.Steamworks/SteamInput.cs index 5d897dc..f4c8dc3 100644 --- a/Facepunch.Steamworks/SteamInput.cs +++ b/Facepunch.Steamworks/SteamInput.cs @@ -1,61 +1,41 @@ -using Steamworks.Data; +using System; +using Steamworks.Data; using System.Collections.Generic; namespace Steamworks { - public static class SteamInput + /// + /// Class for utilizing Steam Input. + /// + public class SteamInput : SteamClientClass { + internal static ISteamInput Internal => Interface as ISteamInput; + + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamInput( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + return true; + } + internal const int STEAM_CONTROLLER_MAX_COUNT = 16; - static ISteamInput _internal; - internal static ISteamInput Internal - { - get - { - SteamClient.ValidCheck(); - - if ( _internal == null ) - { - _internal = new ISteamInput(); - _internal.Init(); - } - - return _internal; - } - } - - internal static void Shutdown() - { - if ( _internal != null && _internal.IsValid ) - { - _internal.DoShutdown(); - } - - _internal = null; - } - - internal static void InstallEvents() - { - Internal.DoInit(); - Internal.RunFrame(); - - // None? - } /// - /// You shouldn't really need to call this because it get called by RunCallbacks on SteamClient + /// You shouldn't really need to call this because it gets called by /// but Valve think it might be a nice idea if you call it right before you get input info - /// just to make sure the info you're getting is 100% up to date. /// public static void RunFrame() { - Internal.RunFrame(); + Internal.RunFrame( false ); } - static InputHandle_t[] queryArray = new InputHandle_t[STEAM_CONTROLLER_MAX_COUNT]; + static readonly InputHandle_t[] queryArray = new InputHandle_t[STEAM_CONTROLLER_MAX_COUNT]; /// - /// Return a list of connected controllers. + /// Gets a list of connected controllers. /// public static IEnumerable Controllers { @@ -90,10 +70,39 @@ namespace Steamworks ref origin ); - return Internal.GetGlyphForActionOrigin(origin); + return Internal.GetGlyphForActionOrigin_Legacy(origin); } - internal static Dictionary DigitalHandles = new Dictionary(); + + /// + /// Return an absolute path to the PNG image glyph for the provided digital action name. The current + /// action set in use for the controller will be used for the lookup. You should cache the result and + /// maintain your own list of loaded PNG assets. + /// + public static string GetPngActionGlyph( Controller controller, string action, GlyphSize size ) + { + InputActionOrigin origin = InputActionOrigin.None; + + Internal.GetDigitalActionOrigins( controller.Handle, Internal.GetCurrentActionSet( controller.Handle ), GetDigitalActionHandle( action ), ref origin ); + + return Internal.GetGlyphPNGForActionOrigin( origin, size, 0 ); + } + + /// + /// Return an absolute path to the SVF image glyph for the provided digital action name. The current + /// action set in use for the controller will be used for the lookup. You should cache the result and + /// maintain your own list of loaded PNG assets. + /// + public static string GetSvgActionGlyph( Controller controller, string action ) + { + InputActionOrigin origin = InputActionOrigin.None; + + Internal.GetDigitalActionOrigins( controller.Handle, Internal.GetCurrentActionSet( controller.Handle ), GetDigitalActionHandle( action ), ref origin ); + + return Internal.GetGlyphSVGForActionOrigin( origin, 0 ); + } + + internal static Dictionary DigitalHandles = new Dictionary(); internal static InputDigitalActionHandle_t GetDigitalActionHandle( string name ) { if ( DigitalHandles.TryGetValue( name, out var val ) ) @@ -126,4 +135,4 @@ namespace Steamworks return val; } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamInventory.cs b/Facepunch.Steamworks/SteamInventory.cs index 784db4a..8a347a9 100644 --- a/Facepunch.Steamworks/SteamInventory.cs +++ b/Facepunch.Steamworks/SteamInventory.cs @@ -10,34 +10,30 @@ using Steamworks.Data; namespace Steamworks { /// - /// Undocumented Parental Settings + /// Class for utilizing the Steam Inventory API. /// - public static class SteamInventory + public class SteamInventory : SteamSharedClass { - static ISteamInventory _internal; - internal static ISteamInventory Internal + internal static ISteamInventory Internal => Interface as ISteamInventory; + + internal override bool InitializeInterface( bool server ) { - get + SetInterface( server, new ISteamInventory( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents( server ); + + return true; + } + + internal static void InstallEvents( bool server ) + { + if ( !server ) { - if ( _internal == null ) - { - _internal = new ISteamInventory(); - _internal.Init(); - } - - return _internal; + Dispatch.Install( x => InventoryUpdated( x ) ); } - } - internal static void Shutdown() - { - _internal = null; - } - internal static void InstallEvents() - { - SteamInventoryFullUpdate_t.Install( x => InventoryUpdated( x ) ); - SteamInventoryDefinitionUpdate_t.Install( x => LoadDefinitions() ); - SteamInventoryDefinitionUpdate_t.Install( x => LoadDefinitions(), true ); + Dispatch.Install( x => LoadDefinitions(), server ); } private static void InventoryUpdated( SteamInventoryFullUpdate_t x ) @@ -72,7 +68,7 @@ namespace Steamworks /// /// Call this if you're going to want to access definition information. You should be able to get /// away with calling this once at the start if your game, assuming your items don't change all the time. - /// This will trigger OnDefinitionsUpdated at which point Definitions should be set. + /// This will trigger at which point Definitions should be set. /// public static void LoadItemDefinitions() { @@ -90,7 +86,7 @@ namespace Steamworks } /// - /// Will call LoadItemDefinitions and wait until Definitions is not null + /// Will call and wait until Definitions is not null /// public static async Task WaitForDefinitions( float timeoutSeconds = 30 ) { @@ -184,7 +180,7 @@ namespace Steamworks /// public static bool GetAllItems() { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; return Internal.GetAllItems( ref sresult ); } @@ -193,7 +189,7 @@ namespace Steamworks /// public static async Task GetAllItemsAsync() { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !Internal.GetAllItems( ref sresult ) ) return null; @@ -209,7 +205,7 @@ namespace Steamworks /// public static async Task GenerateItemAsync( InventoryDef target, int amount ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; var defs = new InventoryDefId[] { target.Id }; var cnts = new uint[] { (uint)amount }; @@ -227,7 +223,7 @@ namespace Steamworks /// public static async Task CraftItemAsync( InventoryItem[] list, InventoryDef target ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; var give = new InventoryDefId[] { target.Id }; var givec = new uint[] { 1 }; @@ -248,7 +244,7 @@ namespace Steamworks /// public static async Task CraftItemAsync( InventoryItem.Amount[] list, InventoryDef target ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; var give = new InventoryDefId[] { target.Id }; var givec = new uint[] { 1 }; @@ -290,7 +286,7 @@ namespace Steamworks { Marshal.Copy( data, 0, ptr, dataLength ); - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !Internal.DeserializeResult( ref sresult, (IntPtr)ptr, (uint)dataLength, false ) ) return null; @@ -307,11 +303,11 @@ namespace Steamworks /// - /// Grant all promotional items the user is eligible for + /// Grant all promotional items the user is eligible for. /// public static async Task GrantPromoItemsAsync() { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !Internal.GrantPromoItems( ref sresult ) ) return null; @@ -325,7 +321,7 @@ namespace Steamworks /// public static async Task TriggerItemDropAsync( InventoryDefId id ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !Internal.TriggerItemDrop( ref sresult, id ) ) return null; @@ -339,7 +335,7 @@ namespace Steamworks /// public static async Task AddPromoItemAsync( InventoryDefId id ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !Internal.AddPromoItem( ref sresult, id ) ) return null; @@ -354,8 +350,9 @@ namespace Steamworks /// public static async Task StartPurchaseAsync( InventoryDef[] items ) { - var item_i = items.Select( x => x._id ).ToArray(); - var item_q = items.Select( x => (uint)1 ).ToArray(); + var d = items.GroupBy( x => x._id ).ToDictionary( x => x.Key, x => (uint) x.Count() ); + var item_i = d.Keys.ToArray(); + var item_q = d.Values.ToArray(); var r = await Internal.StartPurchase( item_i, item_q, (uint)item_i.Length ); if ( !r.HasValue ) return null; @@ -369,4 +366,4 @@ namespace Steamworks } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamMatchmaking.cs b/Facepunch.Steamworks/SteamMatchmaking.cs index 71c2c22..c54baad 100644 --- a/Facepunch.Steamworks/SteamMatchmaking.cs +++ b/Facepunch.Steamworks/SteamMatchmaking.cs @@ -8,50 +8,39 @@ using Steamworks.Data; namespace Steamworks { /// - /// Functions for clients to access matchmaking services, favorites, and to operate on game lobbies + /// Methods for clients to access matchmaking services, favorites, and to operate on game lobbies /// - public static class SteamMatchmaking + public class SteamMatchmaking : SteamClientClass { + internal static ISteamMatchmaking Internal => Interface as ISteamMatchmaking; + + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamMatchmaking( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents(); + + return true; + } + /// /// Maximum number of characters a lobby metadata key can be /// internal static int MaxLobbyKeyLength => 255; - static ISteamMatchmaking _internal; - - internal static ISteamMatchmaking Internal - { - get - { - SteamClient.ValidCheck(); - - if ( _internal == null ) - { - _internal = new ISteamMatchmaking(); - _internal.Init(); - } - - return _internal; - } - } - - internal static void Shutdown() - { - _internal = null; - } - internal static void InstallEvents() { - LobbyInvite_t.Install( x => OnLobbyInvite?.Invoke( new Friend( x.SteamIDUser ), new Lobby( x.SteamIDLobby ) ) ); + Dispatch.Install( x => OnLobbyInvite?.Invoke( new Friend( x.SteamIDUser ), new Lobby( x.SteamIDLobby ) ) ); - LobbyEnter_t.Install( x => OnLobbyEntered?.Invoke( new Lobby( x.SteamIDLobby ) ) ); + Dispatch.Install( x => OnLobbyEntered?.Invoke( new Lobby( x.SteamIDLobby ) ) ); - LobbyCreated_t.Install( x => OnLobbyCreated?.Invoke( x.Result, new Lobby( x.SteamIDLobby ) ) ); + Dispatch.Install( x => OnLobbyCreated?.Invoke( x.Result, new Lobby( x.SteamIDLobby ) ) ); - LobbyGameCreated_t.Install( x => OnLobbyGameCreated?.Invoke( new Lobby( x.SteamIDLobby ), x.IP, x.Port, x.SteamIDGameServer ) ); + Dispatch.Install( x => OnLobbyGameCreated?.Invoke( new Lobby( x.SteamIDLobby ), x.IP, x.Port, x.SteamIDGameServer ) ); - LobbyDataUpdate_t.Install( x => + Dispatch.Install( x => { if ( x.Success == 0 ) return; @@ -61,7 +50,7 @@ namespace Steamworks OnLobbyMemberDataChanged?.Invoke( new Lobby( x.SteamIDLobby ), new Friend( x.SteamIDMember ) ); } ); - LobbyChatUpdate_t.Install( x => + Dispatch.Install( x => { if ( (x.GfChatMemberStateChange & (int)ChatMemberStateChange.Entered) != 0 ) OnLobbyMemberJoined?.Invoke( new Lobby( x.SteamIDLobby ), new Friend( x.SteamIDUserChanged ) ); @@ -79,90 +68,87 @@ namespace Steamworks OnLobbyMemberBanned?.Invoke( new Lobby( x.SteamIDLobby ), new Friend( x.SteamIDUserChanged ), new Friend( x.SteamIDMakingChange ) ); } ); - LobbyChatMsg_t.Install( OnLobbyChatMessageRecievedAPI ); + Dispatch.Install( OnLobbyChatMessageRecievedAPI ); } static private unsafe void OnLobbyChatMessageRecievedAPI( LobbyChatMsg_t callback ) { SteamId steamid = default; ChatEntryType chatEntryType = default; - var buffer = Helpers.TakeBuffer( 1024 * 4 ); + using var buffer = Helpers.TakeMemory(); - fixed ( byte* p = buffer ) + var readData = Internal.GetLobbyChatEntry( callback.SteamIDLobby, (int)callback.ChatID, ref steamid, buffer, Helpers.MemoryBufferSize, ref chatEntryType ); + + if ( readData > 0 ) { - var readData = Internal.GetLobbyChatEntry( callback.SteamIDLobby, (int)callback.ChatID, ref steamid, (IntPtr)p, buffer.Length, ref chatEntryType ); - - if ( readData > 0 ) - { - OnChatMessage?.Invoke( new Lobby( callback.SteamIDLobby ), new Friend( steamid ), Encoding.UTF8.GetString( buffer, 0, readData ) ); - } + OnChatMessage?.Invoke( new Lobby( callback.SteamIDLobby ), new Friend( steamid ), Helpers.MemoryToString( buffer ) ); } } /// - /// Someone invited you to a lobby + /// Invoked when the current user is invited to a lobby. /// public static event Action OnLobbyInvite; /// - /// You joined a lobby + /// Invoked when the current user joins a lobby. /// public static event Action OnLobbyEntered; /// - /// You created a lobby + /// Invoked when the current user creates a lobby. /// public static event Action OnLobbyCreated; /// - /// A game server has been associated with the lobby + /// Invoked when a game server has been associated with a lobby. /// public static event Action OnLobbyGameCreated; /// - /// The lobby metadata has changed + /// Invoked when a lobby's metadata is modified. /// public static event Action OnLobbyDataChanged; /// - /// The lobby member metadata has changed + /// Invoked when a member in a lobby's metadata is modified. /// public static event Action OnLobbyMemberDataChanged; /// - /// The lobby member joined + /// Invoked when a member joins a lobby. /// public static event Action OnLobbyMemberJoined; /// - /// The lobby member left the room + /// Invoked when a lobby member leaves the lobby. /// public static event Action OnLobbyMemberLeave; /// - /// The lobby member left the room + /// Invoked when a lobby member leaves the lobby. /// public static event Action OnLobbyMemberDisconnected; /// - /// The lobby member was kicked. The 3rd param is the user that kicked them. + /// Invoked when a lobby member is kicked from a lobby. The 3rd param is the user that kicked them. /// public static event Action OnLobbyMemberKicked; /// - /// The lobby member was banned. The 3rd param is the user that banned them. + /// Invoked when a lobby member is kicked from a lobby. The 3rd param is the user that kicked them. /// public static event Action OnLobbyMemberBanned; /// - /// A chat message was recieved from a member of a lobby + /// Invoked when a chat message is received from a member of the lobby. /// public static event Action OnChatMessage; public static LobbyQuery LobbyList => new LobbyQuery(); /// - /// Creates a new invisible lobby. Call lobby.SetPublic to take it online. + /// Creates a new invisible lobby. Call to take it online. /// public static async Task CreateLobbyAsync( int maxMembers = 100 ) { @@ -172,9 +158,9 @@ namespace Steamworks return new Lobby { Id = lobby.Value.SteamIDLobby }; } - /// - /// Attempts to directly join the specified lobby - /// + /// + /// Attempts to directly join the specified lobby. + /// public static async Task JoinLobbyAsync( SteamId lobbyId ) { var lobby = await Internal.JoinLobby( lobbyId ); @@ -184,7 +170,7 @@ namespace Steamworks } /// - /// Get a list of servers that are on your favorites list + /// Get a list of servers that are on the current user's favorites list. /// public static IEnumerable GetFavoriteServers() { @@ -208,7 +194,7 @@ namespace Steamworks } /// - /// Get a list of servers that you have added to your play history + /// Get a list of servers that the current user has added to their history. /// public static IEnumerable GetHistoryServers() { @@ -232,4 +218,4 @@ namespace Steamworks } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamMatchmakingServers.cs b/Facepunch.Steamworks/SteamMatchmakingServers.cs new file mode 100644 index 0000000..673cee3 --- /dev/null +++ b/Facepunch.Steamworks/SteamMatchmakingServers.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + +namespace Steamworks +{ + /// + /// Methods for clients to access matchmaking services, favorites, and to operate on game lobbies + /// + internal class SteamMatchmakingServers : SteamClientClass + { + internal static ISteamMatchmakingServers Internal => Interface as ISteamMatchmakingServers; + + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamMatchmakingServers( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + return true; + } + } +} diff --git a/Facepunch.Steamworks/SteamMusic.cs b/Facepunch.Steamworks/SteamMusic.cs index ac45724..7322fd6 100644 --- a/Facepunch.Steamworks/SteamMusic.cs +++ b/Facepunch.Steamworks/SteamMusic.cs @@ -13,52 +13,42 @@ namespace Steamworks /// when an important cut scene is shown, and start playing afterwards. /// Nothing uses Steam Music though so this can probably get fucked /// - public static class SteamMusic + public class SteamMusic : SteamClientClass { - static ISteamMusic _internal; - internal static ISteamMusic Internal - { - get - { - SteamClient.ValidCheck(); + internal static ISteamMusic Internal => Interface as ISteamMusic; - if ( _internal == null ) - { - _internal = new ISteamMusic(); - _internal.Init(); - } - - return _internal; - } - } - internal static void Shutdown() + internal override bool InitializeInterface( bool server ) { - _internal = null; + SetInterface( server, new ISteamMusic( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents(); + return true; } internal static void InstallEvents() { - PlaybackStatusHasChanged_t.Install( x => OnPlaybackChanged?.Invoke() ); - VolumeHasChanged_t.Install( x => OnVolumeChanged?.Invoke( x.NewVolume ) ); + Dispatch.Install( x => OnPlaybackChanged?.Invoke() ); + Dispatch.Install( x => OnVolumeChanged?.Invoke( x.NewVolume ) ); } /// - /// Playback status changed + /// Invoked when playback status is changed. /// public static event Action OnPlaybackChanged; /// - /// Volume changed, parameter is new volume + /// Invoked when the volume of the music player is changed. /// public static event Action OnVolumeChanged; /// - /// Checks if Steam Music is enabled + /// Checks if Steam Music is enabled. /// public static bool IsEnabled => Internal.BIsEnabled(); /// - /// true if a song is currently playing, paused, or queued up to play; otherwise false. + /// if a song is currently playing, paused, or queued up to play; otherwise . /// public static bool IsPlaying => Internal.BIsPlaying(); @@ -67,23 +57,28 @@ namespace Steamworks /// public static MusicStatus Status => Internal.GetPlaybackStatus(); - + /// + /// Plays the music player. + /// public static void Play() => Internal.Play(); + /// + /// Pauses the music player. + /// public static void Pause() => Internal.Pause(); /// - /// Have the Steam Music player play the previous song. + /// Forces the music player to play the previous song. /// public static void PlayPrevious() => Internal.PlayPrevious(); /// - /// Have the Steam Music player skip to the next song + /// Forces the music player to skip to the next song. /// public static void PlayNext() => Internal.PlayNext(); /// - /// Gets/Sets the current volume of the Steam Music player + /// Gets and sets the current volume of the Steam Music player /// public static float Volume { @@ -91,4 +86,4 @@ namespace Steamworks set => Internal.SetVolume( value ); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamNetworking.cs b/Facepunch.Steamworks/SteamNetworking.cs index 41b592d..7622803 100644 --- a/Facepunch.Steamworks/SteamNetworking.cs +++ b/Facepunch.Steamworks/SteamNetworking.cs @@ -8,49 +8,44 @@ using Steamworks.Data; namespace Steamworks { - public static class SteamNetworking + /// + /// Class for utilizing the Steam Network API. + /// + public class SteamNetworking : SteamSharedClass { - static ISteamNetworking _internal; - internal static ISteamNetworking Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamNetworking(); - _internal.Init(); - } + internal static ISteamNetworking Internal => Interface as ISteamNetworking; - return _internal; - } + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamNetworking( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents( server ); + + return true; } - internal static void Shutdown() + internal static void InstallEvents( bool server ) { - _internal = null; - } - - internal static void InstallEvents() - { - P2PSessionRequest_t.Install( x => OnP2PSessionRequest?.Invoke( x.SteamIDRemote ) ); - P2PSessionConnectFail_t.Install( x => OnP2PConnectionFailed?.Invoke( x.SteamIDRemote, (P2PSessionError) x.P2PSessionError ) ); + Dispatch.Install( x => OnP2PSessionRequest?.Invoke( x.SteamIDRemote ), server ); + Dispatch.Install( x => OnP2PConnectionFailed?.Invoke( x.SteamIDRemote, (P2PSessionError) x.P2PSessionError ), server ); } /// - /// This SteamId wants to send you a message. You should respond by calling AcceptP2PSessionWithUser - /// if you want to recieve their messages + /// Invoked when a wants to send the current user a message. You should respond by calling + /// if you want to recieve their messages. /// public static Action OnP2PSessionRequest; /// - /// Called when packets can't get through to the specified user. + /// Invoked when packets can't get through to the specified user. /// All queued packets unsent at this point will be dropped, further attempts /// to send will retry making the connection (but will be dropped if we fail again). /// public static Action OnP2PConnectionFailed; /// - /// This should be called in response to a OnP2PSessionRequest + /// This should be called in response to a . /// public static bool AcceptP2PSessionWithUser( SteamId user ) => Internal.AcceptP2PSessionWithUser( user ); @@ -64,22 +59,31 @@ namespace Steamworks /// /// This should be called when you're done communicating with a user, as this will /// free up all of the resources allocated for the connection under-the-hood. - /// If the remote user tries to send data to you again, a new OnP2PSessionRequest + /// If the remote user tries to send data to you again, a new /// callback will be posted /// public static bool CloseP2PSessionWithUser( SteamId user ) => Internal.CloseP2PSessionWithUser( user ); /// - /// Checks if a P2P packet is available to read, and gets the size of the message if there is one. + /// Checks if a P2P packet is available to read. /// public static bool IsP2PPacketAvailable( int channel = 0 ) { uint _ = 0; return Internal.IsP2PPacketAvailable( ref _, channel ); } + + /// + /// Checks if a P2P packet is available to read, and gets the size of the message if there is one. + /// + public static bool IsP2PPacketAvailable( out uint msgSize, int channel = 0 ) + { + msgSize = 0; + return Internal.IsP2PPacketAvailable( ref msgSize, channel ); + } /// - /// Reads in a packet that has been sent from another user via SendP2PPacket.. + /// Reads in a packet that has been sent from another user via SendP2PPacket. /// public unsafe static P2Packet? ReadP2PPacket( int channel = 0 ) { @@ -108,7 +112,7 @@ namespace Steamworks } /// - /// Reads in a packet that has been sent from another user via SendP2PPacket.. + /// Reads in a packet that has been sent from another user via SendP2PPacket. /// public unsafe static bool ReadP2PPacket( byte[] buffer, ref uint size, ref SteamId steamid, int channel = 0 ) { @@ -118,7 +122,7 @@ namespace Steamworks } /// - /// Reads in a packet that has been sent from another user via SendP2PPacket.. + /// Reads in a packet that has been sent from another user via SendP2PPacket. /// public unsafe static bool ReadP2PPacket( byte* buffer, uint cbuf, ref uint size, ref SteamId steamid, int channel = 0 ) { diff --git a/Facepunch.Steamworks/SteamNetworkingSockets.cs b/Facepunch.Steamworks/SteamNetworkingSockets.cs index 03db4ac..7fe3ace 100644 --- a/Facepunch.Steamworks/SteamNetworkingSockets.cs +++ b/Facepunch.Steamworks/SteamNetworkingSockets.cs @@ -8,31 +8,43 @@ using Steamworks.Data; namespace Steamworks { - public static class SteamNetworkingSockets + public class SteamNetworkingSockets : SteamSharedClass { - static ISteamNetworkingSockets _internal; - internal static ISteamNetworkingSockets Internal + internal static ISteamNetworkingSockets Internal => Interface as ISteamNetworkingSockets; + + /// + /// Get the identity assigned to this interface. + /// E.g. on Steam, this is the user's SteamID, or for the gameserver interface, the SteamID assigned + /// to the gameserver. Returns false and sets the result to an invalid identity if we don't know + /// our identity yet. (E.g. GameServer has not logged in. On Steam, the user will know their SteamID + /// even if they are not signed into Steam.) + /// + public static NetIdentity Identity { get { - if ( _internal == null ) - { - _internal = new ISteamNetworkingSockets(); - _internal.Init(); + NetIdentity identity = default; - SocketInterfaces = new Dictionary(); - ConnectionInterfaces = new Dictionary(); - } + Internal.GetIdentity( ref identity ); - return _internal; + return identity; } } - #region SocketInterface + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamNetworkingSockets( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; - static Dictionary SocketInterfaces; + InstallEvents( server ); + return true; + } + +#region SocketInterface - internal static SocketInterface GetSocketInterface( uint id ) + static readonly Dictionary SocketInterfaces = new Dictionary(); + + internal static SocketManager GetSocketManager( uint id ) { if ( SocketInterfaces == null ) return null; if ( id == 0 ) throw new System.ArgumentException( "Invalid Socket" ); @@ -43,20 +55,17 @@ namespace Steamworks return null; } - internal static void SetSocketInterface( uint id, SocketInterface iface ) + internal static void SetSocketManager( uint id, SocketManager manager ) { if ( id == 0 ) throw new System.ArgumentException( "Invalid Socket" ); - - Console.WriteLine( $"Installing Socket For {id}" ); - SocketInterfaces[id] = iface; + SocketInterfaces[id] = manager; } - #endregion +#endregion - #region ConnectionInterface - static Dictionary ConnectionInterfaces; +#region ConnectionInterface + static readonly Dictionary ConnectionInterfaces = new Dictionary(); - - internal static ConnectionInterface GetConnectionInterface( uint id ) + internal static ConnectionManager GetConnectionManager( uint id ) { if ( ConnectionInterfaces == null ) return null; if ( id == 0 ) return null; @@ -67,24 +76,21 @@ namespace Steamworks return null; } - internal static void SetConnectionInterface( uint id, ConnectionInterface iface ) + internal static void SetConnectionManager( uint id, ConnectionManager manager ) { if ( id == 0 ) throw new System.ArgumentException( "Invalid Connection" ); - ConnectionInterfaces[id] = iface; + ConnectionInterfaces[id] = manager; } - #endregion +#endregion - internal static void Shutdown() + + + internal void InstallEvents( bool server ) { - _internal = null; - SocketInterfaces = null; - ConnectionInterfaces = null; + Dispatch.Install( ConnectionStatusChanged, server ); + Dispatch.Install( FakeIPResult, server ); } - internal static void InstallEvents( bool server = false ) - { - SteamNetConnectionStatusChangedCallback_t.Install( x => ConnectionStatusChanged( x ), server ); - } private static void ConnectionStatusChanged( SteamNetConnectionStatusChangedCallback_t data ) { @@ -93,12 +99,12 @@ namespace Steamworks // if ( data.Nfo.listenSocket.Id > 0 ) { - var iface = GetSocketInterface( data.Nfo.listenSocket.Id ); + var iface = GetSocketManager( data.Nfo.listenSocket.Id ); iface?.OnConnectionChanged( data.Conn, data.Nfo ); } else { - var iface = GetConnectionInterface( data.Conn.Id ); + var iface = GetConnectionManager( data.Conn.Id ); iface?.OnConnectionChanged( data.Nfo ); } @@ -107,51 +113,233 @@ namespace Steamworks public static event Action OnConnectionStatusChanged; + private static void FakeIPResult( SteamNetworkingFakeIPResult_t data ) + { + foreach ( var port in data.Ports ) + { + if ( port == 0 ) continue; + + var address = NetAddress.From( Utility.Int32ToIp( data.IP ), port ); + + OnFakeIPResult?.Invoke( address ); + } + } + + public static event Action OnFakeIPResult; /// /// Creates a "server" socket that listens for clients to connect to by calling /// Connect, over ordinary UDP (IPv4 or IPv6) + /// + /// To use this derive a class from and override as much as you want. + /// /// - public static T CreateNormalSocket( NetAddress address ) where T : SocketInterface, new() + public static T CreateNormalSocket( NetAddress address ) where T : SocketManager, new() { var t = new T(); - t.Socket = Internal.CreateListenSocketIP( ref address ); - SetSocketInterface( t.Socket.Id, t ); + var options = Array.Empty(); + t.Socket = Internal.CreateListenSocketIP( ref address, options.Length, options ); + t.Initialize(); + + SetSocketManager( t.Socket.Id, t ); return t; } /// - /// Connect to a socket created via CreateListenSocketIP + /// Creates a "server" socket that listens for clients to connect to by calling + /// Connect, over ordinary UDP (IPv4 or IPv6). + /// + /// To use this you should pass a class that inherits . You can use + /// SocketManager to get connections and send messages, but the ISocketManager class + /// will received all the appropriate callbacks. + /// /// - public static T ConnectNormal( NetAddress address ) where T : ConnectionInterface, new() + public static SocketManager CreateNormalSocket( NetAddress address, ISocketManager intrface ) { - var t = new T(); - t.Connection = Internal.ConnectByIPAddress( ref address ); - SetConnectionInterface( t.Connection.Id, t ); + var options = Array.Empty(); + var socket = Internal.CreateListenSocketIP( ref address, options.Length, options ); + + var t = new SocketManager + { + Socket = socket, + Interface = intrface + }; + + t.Initialize(); + + SetSocketManager( t.Socket.Id, t ); return t; } /// - /// Creates a server that will be relayed via Valve's network (hiding the IP and improving ping) + /// Connect to a socket created via CreateListenSocketIP. /// - public static T CreateRelaySocket( int virtualport = 0 ) where T : SocketInterface, new() + public static T ConnectNormal( NetAddress address ) where T : ConnectionManager, new() { var t = new T(); - t.Socket = Internal.CreateListenSocketP2P( virtualport ); - SetSocketInterface( t.Socket.Id, t ); + var options = Array.Empty(); + t.Connection = Internal.ConnectByIPAddress( ref address, options.Length, options ); + SetConnectionManager( t.Connection.Id, t ); return t; } /// - /// Connect to a relay server + /// Connect to a socket created via CreateListenSocketIP. /// - public static T ConnectRelay( SteamId serverId, int virtualport = 0 ) where T : ConnectionInterface, new() + public static ConnectionManager ConnectNormal( NetAddress address, IConnectionManager iface ) + { + var options = Array.Empty(); + var connection = Internal.ConnectByIPAddress( ref address, options.Length, options ); + + var t = new ConnectionManager + { + Connection = connection, + Interface = iface + }; + + SetConnectionManager( t.Connection.Id, t ); + return t; + } + + /// + /// Creates a server that will be relayed via Valve's network (hiding the IP and improving ping). + /// + /// To use this derive a class from and override as much as you want. + /// + /// + public static T CreateRelaySocket( int virtualport = 0 ) where T : SocketManager, new() + { + var t = new T(); + var options = Array.Empty(); + t.Socket = Internal.CreateListenSocketP2P( virtualport, options.Length, options ); + t.Initialize(); + SetSocketManager( t.Socket.Id, t ); + return t; + } + + /// + /// Creates a server that will be relayed via Valve's network (hiding the IP and improving ping). + /// + /// To use this you should pass a class that inherits . You can use + /// to get connections and send messages, but the class + /// will received all the appropriate callbacks. + /// + /// + public static SocketManager CreateRelaySocket( int virtualport, ISocketManager intrface ) + { + var options = Array.Empty(); + var socket = Internal.CreateListenSocketP2P( virtualport, options.Length, options ); + + var t = new SocketManager + { + Socket = socket, + Interface = intrface + }; + + t.Initialize(); + + SetSocketManager( t.Socket.Id, t ); + return t; + } + + /// + /// Connect to a relay server. + /// + public static T ConnectRelay( SteamId serverId, int virtualport = 0 ) where T : ConnectionManager, new() { var t = new T(); NetIdentity identity = serverId; - t.Connection = Internal.ConnectP2P( ref identity, virtualport ); - SetConnectionInterface( t.Connection.Id, t ); + var options = Array.Empty(); + t.Connection = Internal.ConnectP2P( ref identity, virtualport, options.Length, options ); + SetConnectionManager( t.Connection.Id, t ); + return t; + } + + /// + /// Connect to a relay server. + /// + public static ConnectionManager ConnectRelay( SteamId serverId, int virtualport, IConnectionManager iface ) + { + NetIdentity identity = serverId; + var options = Array.Empty(); + var connection = Internal.ConnectP2P( ref identity, virtualport, options.Length, options ); + + var t = new ConnectionManager + { + Connection = connection, + Interface = iface + }; + + SetConnectionManager( t.Connection.Id, t ); + return t; + } + + /// + /// Begin asynchronous process of allocating a fake IPv4 address that other + /// peers can use to contact us via P2P. IP addresses returned by this + /// function are globally unique for a given appid. + /// + /// For gameservers, you *must* call this after initializing the SDK but before + /// beginning login. Steam needs to know in advance that FakeIP will be used. + /// + public static bool RequestFakeIP( int numFakePorts = 1 ) + { + return Internal.BeginAsyncRequestFakeIP( numFakePorts ); + } + + /// + /// Return info about the FakeIP and port that we have been assigned, if any. + /// + /// + public static Result GetFakeIP( int fakePortIndex, out NetAddress address ) + { + var pInfo = default( SteamNetworkingFakeIPResult_t ); + + Internal.GetFakeIP( 0, ref pInfo ); + + address = NetAddress.From( Utility.Int32ToIp( pInfo.IP ), pInfo.Ports[fakePortIndex] ); + return pInfo.Result; + } + + /// + /// Creates a server that will be relayed via Valve's network (hiding the IP and improving ping). + /// + /// To use this derive a class from and override as much as you want. + /// + /// + public static T CreateRelaySocketFakeIP( int fakePortIndex = 0 ) where T : SocketManager, new() + { + var t = new T(); + var options = Array.Empty(); + t.Socket = Internal.CreateListenSocketP2PFakeIP( 0, options.Length, options ); + t.Initialize(); + SetSocketManager( t.Socket.Id, t ); + return t; + } + + /// + /// Creates a server that will be relayed via Valve's network (hiding the IP and improving ping). + /// + /// To use this you should pass a class that inherits . You can use + /// to get connections and send messages, but the class + /// will received all the appropriate callbacks. + /// + /// + public static SocketManager CreateRelaySocketFakeIP( int fakePortIndex, ISocketManager intrface ) + { + var options = Array.Empty(); + var socket = Internal.CreateListenSocketP2PFakeIP( 0, options.Length, options ); + + var t = new SocketManager + { + Socket = socket, + Interface = intrface + }; + + t.Initialize(); + + SetSocketManager( t.Socket.Id, t ); return t; } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamNetworkingUtils.cs b/Facepunch.Steamworks/SteamNetworkingUtils.cs index 6ea3cdc..c34fcb9 100644 --- a/Facepunch.Steamworks/SteamNetworkingUtils.cs +++ b/Facepunch.Steamworks/SteamNetworkingUtils.cs @@ -8,28 +8,74 @@ using Steamworks.Data; namespace Steamworks { /// - /// Undocumented Parental Settings + /// Provides Steam Networking utilities. /// - public static class SteamNetworkingUtils + public class SteamNetworkingUtils : SteamSharedClass { - static ISteamNetworkingUtils _internal; - internal static ISteamNetworkingUtils Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamNetworkingUtils(); - _internal.InitUserless(); - } + internal static ISteamNetworkingUtils Internal => Interface as ISteamNetworkingUtils; - return _internal; - } + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamNetworkingUtils( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallCallbacks( server ); + + return true; } - internal static void Shutdown() + static void InstallCallbacks( bool server ) { - _internal = null; + Dispatch.Install( x => + { + Status = x.Avail; + }, server ); + } + + /// + /// A function to receive debug network information on. This will do nothing + /// unless you set to something other than . + /// + /// You should set this to an appropriate level instead of setting it to the highest + /// and then filtering it by hand because a lot of energy is used by creating the strings + /// and your frame rate will tank and you won't know why. + /// + + public static event Action OnDebugOutput; + + /// + /// The latest available status gathered from the SteamRelayNetworkStatus callback + /// + public static SteamNetworkingAvailability Status { get; private set; } + + /// + /// If you know that you are going to be using the relay network (for example, + /// because you anticipate making P2P connections), call this to initialize the + /// relay network. If you do not call this, the initialization will + /// be delayed until the first time you use a feature that requires access + /// to the relay network, which will delay that first access. + /// + /// You can also call this to force a retry if the previous attempt has failed. + /// Performing any action that requires access to the relay network will also + /// trigger a retry, and so calling this function is never strictly necessary, + /// but it can be useful to call it a program launch time, if access to the + /// relay network is anticipated. + /// + /// + /// Use GetRelayNetworkStatus or listen for SteamRelayNetworkStatus_t + /// callbacks to know when initialization has completed. + /// Typically initialization completes in a few seconds. + /// + /// + /// Note: dedicated servers hosted in known data centers do *not* need + /// to call this, since they do not make routing decisions. However, if + /// the dedicated server will be using P2P functionality, it will act as + /// a "client" and this should be called. + /// + /// + public static void InitRelayNetworkAccess() + { + Internal.InitRelayNetworkAccess(); } /// @@ -41,11 +87,11 @@ namespace Steamworks /// This always return the most up-to-date information we have available /// right now, even if we are in the middle of re-calculating ping times. /// - public static PingLocation? LocalPingLocation + public static NetPingLocation? LocalPingLocation { get { - PingLocation location = default; + NetPingLocation location = default; var age = Internal.GetLocalPingLocation( ref location ); if ( age < 0 ) return null; @@ -59,21 +105,23 @@ namespace Steamworks /// This is a bit faster, especially if you need to calculate a bunch of /// these in a loop to find the fastest one. /// - public static int EstimatePingTo( PingLocation target ) + public static int EstimatePingTo( NetPingLocation target ) { return Internal.EstimatePingTimeFromLocalHost( ref target ); } /// /// If you need ping information straight away, wait on this. It will return - /// immediately if you already have up to date ping data + /// immediately if you already have up to date ping data. /// public static async Task WaitForPingDataAsync( float maxAgeInSeconds = 60 * 5 ) { - if ( Internal.CheckPingDataUpToDate( 60.0f ) ) + if ( Internal.CheckPingDataUpToDate( maxAgeInSeconds ) ) return; - while ( Internal.IsPingMeasurementInProgress() ) + SteamRelayNetworkStatus_t status = default; + + while ( Internal.GetRelayNetworkStatus( ref status ) != SteamNetworkingAvailability.Current ) { await Task.Delay( 10 ); } @@ -83,7 +131,7 @@ namespace Steamworks /// - /// [0 - 100] - Randomly discard N pct of packets + /// [0 - 100] - Randomly discard N pct of packets. /// public static float FakeSendPacketLoss { @@ -92,7 +140,7 @@ namespace Steamworks } /// - /// [0 - 100] - Randomly discard N pct of packets + /// [0 - 100] - Randomly discard N pct of packets. /// public static float FakeRecvPacketLoss { @@ -101,7 +149,7 @@ namespace Steamworks } /// - /// Delay all packets by N ms + /// Delay all packets by N ms. /// public static float FakeSendPacketLag { @@ -110,7 +158,7 @@ namespace Steamworks } /// - /// Delay all packets by N ms + /// Delay all packets by N ms. /// public static float FakeRecvPacketLag { @@ -118,12 +166,244 @@ namespace Steamworks set => SetConfigFloat( NetConfig.FakePacketLag_Recv, value ); } + /// + /// Timeout value (in ms) to use when first connecting. + /// + public static int ConnectionTimeout + { + get => GetConfigInt( NetConfig.TimeoutInitial ); + set => SetConfigInt( NetConfig.TimeoutInitial, value ); + } + + /// + /// Timeout value (in ms) to use after connection is established. + /// + public static int Timeout + { + get => GetConfigInt( NetConfig.TimeoutConnected ); + set => SetConfigInt( NetConfig.TimeoutConnected, value ); + } + + /// + /// Upper limit of buffered pending bytes to be sent. + /// If this is reached SendMessage will return LimitExceeded. + /// Default is 524288 bytes (512k). + /// + public static int SendBufferSize + { + get => GetConfigInt( NetConfig.SendBufferSize ); + set => SetConfigInt( NetConfig.SendBufferSize, value ); + } + + /// + /// Minimum send rate clamp, 0 is no limit. + /// This value will control the min allowed sending rate that + /// bandwidth estimation is allowed to reach. Default is 0 (no-limit) + /// + public static int SendRateMin + { + get => GetConfigInt( NetConfig.SendRateMin ); + set => SetConfigInt( NetConfig.SendRateMin, value ); + } + + /// + /// Maximum send rate clamp, 0 is no limit. + /// This value will control the max allowed sending rate that + /// bandwidth estimation is allowed to reach. Default is 0 (no-limit) + /// + public static int SendRateMax + { + get => GetConfigInt( NetConfig.SendRateMax ); + set => SetConfigInt( NetConfig.SendRateMax, value ); + } + + /// + /// Nagle time, in microseconds. When SendMessage is called, if + /// the outgoing message is less than the size of the MTU, it will be + /// queued for a delay equal to the Nagle timer value. This is to ensure + /// that if the application sends several small messages rapidly, they are + /// coalesced into a single packet. + /// See historical RFC 896. Value is in microseconds. + /// Default is 5000us (5ms). + /// + public static int NagleTime + { + get => GetConfigInt( NetConfig.NagleTime ); + set => SetConfigInt( NetConfig.NagleTime, value ); + } + + /// + /// Don't automatically fail IP connections that don't have + /// strong auth. On clients, this means we will attempt the connection even if + /// we don't know our identity or can't get a cert. On the server, it means that + /// we won't automatically reject a connection due to a failure to authenticate. + /// (You can examine the incoming connection and decide whether to accept it.) + /// + /// This is a dev configuration value, and you should not let users modify it in + /// production. + /// + /// + public static int AllowWithoutAuth + { + get => GetConfigInt( NetConfig.IP_AllowWithoutAuth ); + set => SetConfigInt( NetConfig.IP_AllowWithoutAuth, value ); + } + + /// + /// Allow unencrypted (and unauthenticated) communication. + /// 0: Not allowed (the default) + /// 1: Allowed, but prefer encrypted + /// 2: Allowed, and preferred + /// 3: Required. (Fail the connection if the peer requires encryption.) + /// + /// This is a dev configuration value, since its purpose is to disable encryption. + /// You should not let users modify it in production. (But note that it requires + /// the peer to also modify their value in order for encryption to be disabled.) + /// + /// + public static int Unencrypted + { + get => GetConfigInt( NetConfig.Unencrypted ); + set => SetConfigInt( NetConfig.Unencrypted, value ); + } + + /// + /// Log RTT calculations for inline pings and replies. + /// + public static int DebugLevelAckRTT + { + get => GetConfigInt( NetConfig.LogLevel_AckRTT ); + set => SetConfigInt( NetConfig.LogLevel_AckRTT, value ); + } + + /// + /// Log SNP packets send. + /// + public static int DebugLevelPacketDecode + { + get => GetConfigInt( NetConfig.LogLevel_PacketDecode ); + set => SetConfigInt( NetConfig.LogLevel_PacketDecode, value ); + } + + /// + /// Log each message send/recv. + /// + public static int DebugLevelMessage + { + get => GetConfigInt( NetConfig.LogLevel_Message ); + set => SetConfigInt( NetConfig.LogLevel_Message, value ); + } + + /// + /// Log dropped packets. + /// + public static int DebugLevelPacketGaps + { + get => GetConfigInt( NetConfig.LogLevel_PacketGaps ); + set => SetConfigInt( NetConfig.LogLevel_PacketGaps, value ); + } + + /// + /// Log P2P rendezvous messages. + /// + public static int DebugLevelP2PRendezvous + { + get => GetConfigInt( NetConfig.LogLevel_P2PRendezvous ); + set => SetConfigInt( NetConfig.LogLevel_P2PRendezvous, value ); + } + + /// + /// Log ping relays. + /// + public static int DebugLevelSDRRelayPings + { + get => GetConfigInt( NetConfig.LogLevel_SDRRelayPings ); + set => SetConfigInt( NetConfig.LogLevel_SDRRelayPings, value ); + } + + /// + /// Get Debug Information via event. + /// + /// Except when debugging, you should only use + /// or . For best performance, do NOT + /// request a high detail level and then filter out messages in the callback. + /// + /// + /// This incurs all of the expense of formatting the messages, which are then discarded. + /// Setting a high priority value (low numeric value) here allows the library to avoid + /// doing this work. + /// + /// + public static NetDebugOutput DebugLevel + { + get => _debugLevel; + set + { + _debugLevel = value; + _debugFunc = new NetDebugFunc( OnDebugMessage ); + + Internal.SetDebugOutputFunction( value, _debugFunc ); + } + } + + /// + /// So we can remember and provide a Get for DebugLevel. + /// + private static NetDebugOutput _debugLevel; + + /// + /// We need to keep the delegate around until it's not used anymore. + /// + static NetDebugFunc _debugFunc; + + struct DebugMessage + { + public NetDebugOutput Type; + public string Msg; + } + + private static System.Collections.Concurrent.ConcurrentQueue debugMessages = new System.Collections.Concurrent.ConcurrentQueue(); + + /// + /// This can be called from other threads - so we're going to queue these up and process them in a safe place. + /// + [MonoPInvokeCallback] + private static void OnDebugMessage( NetDebugOutput nType, IntPtr str ) + { + debugMessages.Enqueue( new DebugMessage { Type = nType, Msg = Helpers.MemoryToString( str ) } ); + } + + internal static void LogDebugMessage( NetDebugOutput type, string message ) + { + debugMessages.Enqueue( new DebugMessage { Type = type, Msg = message } ); + } + + /// + /// Called regularly from the Dispatch loop so we can provide a timely + /// stream of messages. + /// + internal static void OutputDebugMessages() + { + if ( debugMessages.IsEmpty ) + return; + + while ( debugMessages.TryDequeue( out var result ) ) + { + OnDebugOutput?.Invoke( result.Type, result.Msg ); + } + } + + internal static unsafe NetMsg* AllocateMessage() + { + return Internal.AllocateMessage(0); + } + #region Config Internals - internal unsafe static bool GetConfigInt( NetConfig type, int value ) + internal unsafe static bool SetConfigInt( NetConfig type, int value ) { int* ptr = &value; - return Internal.SetConfigValue( type, NetScope.Global, 0, NetConfigType.Int32, (IntPtr)ptr ); + return Internal.SetConfigValue( type, NetConfigScope.Global, IntPtr.Zero, NetConfigType.Int32, (IntPtr)ptr ); } internal unsafe static int GetConfigInt( NetConfig type ) @@ -131,8 +411,8 @@ namespace Steamworks int value = 0; NetConfigType dtype = NetConfigType.Int32; int* ptr = &value; - ulong size = sizeof( int ); - var result = Internal.GetConfigValue( type, NetScope.Global, 0, ref dtype, (IntPtr) ptr, ref size ); + UIntPtr size = new UIntPtr( sizeof( int ) ); + var result = Internal.GetConfigValue( type, NetConfigScope.Global, IntPtr.Zero, ref dtype, (IntPtr) ptr, ref size ); if ( result != NetConfigResult.OK ) return 0; @@ -142,7 +422,7 @@ namespace Steamworks internal unsafe static bool SetConfigFloat( NetConfig type, float value ) { float* ptr = &value; - return Internal.SetConfigValue( type, NetScope.Global, 0, NetConfigType.Float, (IntPtr)ptr ); + return Internal.SetConfigValue( type, NetConfigScope.Global, IntPtr.Zero, NetConfigType.Float, (IntPtr)ptr ); } internal unsafe static float GetConfigFloat( NetConfig type ) @@ -150,8 +430,8 @@ namespace Steamworks float value = 0; NetConfigType dtype = NetConfigType.Float; float* ptr = &value; - ulong size = sizeof( float ); - var result = Internal.GetConfigValue( type, NetScope.Global, 0, ref dtype, (IntPtr)ptr, ref size ); + UIntPtr size = new UIntPtr( sizeof( float ) ); + var result = Internal.GetConfigValue( type, NetConfigScope.Global, IntPtr.Zero, ref dtype, (IntPtr)ptr, ref size ); if ( result != NetConfigResult.OK ) return 0; @@ -164,7 +444,7 @@ namespace Steamworks fixed ( byte* ptr = bytes ) { - return Internal.SetConfigValue( type, NetScope.Global, 0, NetConfigType.String, (IntPtr)ptr ); + return Internal.SetConfigValue( type, NetConfigScope.Global, IntPtr.Zero, NetConfigType.String, (IntPtr)ptr ); } } @@ -211,6 +491,6 @@ namespace Steamworks } }*/ - #endregion +#endregion } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamParental.cs b/Facepunch.Steamworks/SteamParental.cs index 4be1016..7ab5a1c 100644 --- a/Facepunch.Steamworks/SteamParental.cs +++ b/Facepunch.Steamworks/SteamParental.cs @@ -10,32 +10,23 @@ namespace Steamworks /// /// Undocumented Parental Settings /// - public static class SteamParental + public class SteamParental : SteamSharedClass { - static ISteamParentalSettings _internal; - internal static ISteamParentalSettings Internal - { - get - { - SteamClient.ValidCheck(); + internal static ISteamParentalSettings Internal => Interface as ISteamParentalSettings; - if ( _internal == null ) - { - _internal = new ISteamParentalSettings(); - _internal.Init(); - } - - return _internal; - } - } - internal static void Shutdown() + internal override bool InitializeInterface( bool server ) { - _internal = null; + SetInterface( server, new ISteamParentalSettings( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents( server ); + + return true; } - internal static void InstallEvents() + internal static void InstallEvents( bool server ) { - SteamParentalSettingsChanged_t.Install( x => OnSettingsChanged?.Invoke() ); + Dispatch.Install( x => OnSettingsChanged?.Invoke(), server ); } /// diff --git a/Facepunch.Steamworks/SteamParties.cs b/Facepunch.Steamworks/SteamParties.cs index d2555c1..0044207 100644 --- a/Facepunch.Steamworks/SteamParties.cs +++ b/Facepunch.Steamworks/SteamParties.cs @@ -7,46 +7,50 @@ using Steamworks.Data; namespace Steamworks { - public static class SteamParties + /// + /// This API can be used to selectively advertise your multiplayer game session in a Steam chat room group. + /// Tell Steam the number of player spots that are available for your party, and a join-game string, and it + /// will show a beacon in the selected group and allow that many users to “follow” the beacon to your party. + /// Adjust the number of open slots if other players join through alternate matchmaking methods. + /// + public class SteamParties : SteamClientClass { - static ISteamParties _internal; - internal static ISteamParties Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamParties(); - _internal.Init(); - } + internal static ISteamParties Internal => Interface as ISteamParties; - return _internal; - } - } - internal static void Shutdown() + internal override bool InitializeInterface( bool server ) { - _internal = null; + SetInterface( server, new ISteamParties( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents( server ); + + return true; } - internal static void InstallEvents() + internal void InstallEvents( bool server ) { - AvailableBeaconLocationsUpdated_t.Install( x => OnBeaconLocationsUpdated?.Invoke() ); - ActiveBeaconsUpdated_t.Install( x => OnActiveBeaconsUpdated?.Invoke() ); + Dispatch.Install( x => OnBeaconLocationsUpdated?.Invoke(), server ); + Dispatch.Install( x => OnActiveBeaconsUpdated?.Invoke(), server ); } /// - /// The list of possible Party beacon locations has changed + /// Invoked when the list of possible Party beacon locations has changed /// public static event Action OnBeaconLocationsUpdated; /// - /// The list of active beacons may have changed + /// Invoked when the list of active beacons may have changed /// public static event Action OnActiveBeaconsUpdated; - + /// + /// Gets the amount of beacons that are active. + /// public static int ActiveBeaconCount => (int) Internal.GetNumActiveBeacons(); + /// + /// Gets an of active beacons. + /// public static IEnumerable ActiveBeacons { get @@ -60,18 +64,5 @@ namespace Steamworks } } } - - /// - /// Create a new party beacon and activate it in the selected location. - /// When people begin responding to your beacon, Steam will send you - /// OnPartyReservation callbacks to let you know who is on the way. - /// - //public async Task CreateBeacon( int slots, string connectString, string meta ) - //{ - // var result = await Internal.CreateBeacon( (uint)slots, null, connectString, meta ); - // if ( !result.HasValue ) return null; - //} - - // TODO - is this useful to anyone, or is it a load of shit? } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamRemotePlay.cs b/Facepunch.Steamworks/SteamRemotePlay.cs new file mode 100644 index 0000000..0e7a89c --- /dev/null +++ b/Facepunch.Steamworks/SteamRemotePlay.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Steamworks.Data; + +namespace Steamworks +{ + /// + /// Functions that provide information about Steam Remote Play sessions, streaming your game content to another computer or to a Steam Link app or hardware. + /// + public class SteamRemotePlay : SteamClientClass + { + internal static ISteamRemotePlay Internal => Interface as ISteamRemotePlay; + + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamRemotePlay( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents( server ); + + return true; + } + + internal void InstallEvents( bool server ) + { + Dispatch.Install( x => OnSessionConnected?.Invoke( x.SessionID ), server ); + Dispatch.Install( x => OnSessionDisconnected?.Invoke( x.SessionID ), server ); + } + + /// + /// Invoked when a session is connected. + /// + public static event Action OnSessionConnected; + + /// + /// Invoked when a session becomes disconnected. + /// + public static event Action OnSessionDisconnected; + + /// + /// Gets the number of currently connected Steam Remote Play sessions + /// + public static int SessionCount => (int) Internal.GetSessionCount(); + + /// + /// Get the currently connected Steam Remote Play session ID at the specified index. + /// IsValid will return if it's out of bounds + /// + public static RemotePlaySession GetSession( int index ) => (RemotePlaySession) Internal.GetSessionID( index ).Value; + + + /// + /// Invite a friend to Remote Play Together. + /// This returns if the invite can't be sent + /// + public static bool SendInvite( SteamId steamid ) => Internal.BSendRemotePlayTogetherInvite( steamid ); + } +} diff --git a/Facepunch.Steamworks/SteamRemoteStorage.cs b/Facepunch.Steamworks/SteamRemoteStorage.cs index d559ffa..3b4579b 100644 --- a/Facepunch.Steamworks/SteamRemoteStorage.cs +++ b/Facepunch.Steamworks/SteamRemoteStorage.cs @@ -8,34 +8,28 @@ using Steamworks.Data; namespace Steamworks { /// - /// Undocumented Parental Settings + /// Class for utilizing the Steam Remote Storage API. /// - public static class SteamRemoteStorage + public class SteamRemoteStorage : SteamClientClass { - static ISteamRemoteStorage _internal; - internal static ISteamRemoteStorage Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamRemoteStorage(); - _internal.Init(); - } + internal static ISteamRemoteStorage Internal => Interface as ISteamRemoteStorage; - return _internal; - } + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamRemoteStorage( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + return true; } - internal static void Shutdown() - { - _internal = null; - } /// /// Creates a new file, writes the bytes to the file, and then closes the file. /// If the target file already exists, it is overwritten /// + /// The path of the file. + /// The bytes of data. + /// A boolean, detailing whether or not the operation was successful. public unsafe static bool FileWrite( string filename, byte[] data ) { fixed ( byte* ptr = data ) @@ -47,6 +41,7 @@ namespace Steamworks /// /// Opens a binary file, reads the contents of the file into a byte array, and then closes the file. /// + /// The path of the file. public unsafe static byte[] FileRead( string filename ) { var size = FileSize( filename ); @@ -56,6 +51,10 @@ namespace Steamworks fixed ( byte* ptr = buffer ) { var readsize = Internal.FileRead( filename, (IntPtr)ptr, size ); + if ( readsize != size ) + { + return null; + } return buffer; } } @@ -63,26 +62,35 @@ namespace Steamworks /// /// Checks whether the specified file exists. /// + /// The path of the file. + /// Whether or not the file exists. public static bool FileExists( string filename ) => Internal.FileExists( filename ); /// /// Checks if a specific file is persisted in the steam cloud. /// + /// The path of the file. + /// Boolean. public static bool FilePersisted( string filename ) => Internal.FilePersisted( filename ); /// /// Gets the specified file's last modified date/time. /// + /// The path of the file. + /// A describing when the file was modified last. public static DateTime FileTime( string filename ) => Epoch.ToDateTime( Internal.GetFileTimestamp( filename ) ); /// - /// Gets the specified files size in bytes. 0 if not exists. + /// Returns the specified files size in bytes, or 0 if the file does not exist. /// + /// The path of the file. + /// The size of the file in bytes, or 0 if the file doesn't exist. public static int FileSize( string filename ) => Internal.GetFileSize( filename ); /// /// Deletes the file from remote storage, but leaves it on the local disk and remains accessible from the API. /// + /// A boolean, detailing whether or not the operation was successful. public static bool FileForget( string filename ) => Internal.FileForget( filename ); /// @@ -92,7 +100,7 @@ namespace Steamworks /// - /// Number of bytes total + /// Gets the total number of quota bytes. /// public static ulong QuotaBytes { @@ -105,7 +113,7 @@ namespace Steamworks } /// - /// Number of bytes used + /// Gets the total number of quota bytes that have been used. /// public static ulong QuotaUsedBytes { @@ -118,7 +126,7 @@ namespace Steamworks } /// - /// Number of bytes remaining until your quota is used + /// Number of bytes remaining until the quota is used. /// public static ulong QuotaRemainingBytes { @@ -131,7 +139,7 @@ namespace Steamworks } /// - /// returns true if IsCloudEnabledForAccount AND IsCloudEnabledForApp + /// returns if AND are . /// public static bool IsCloudEnabled => IsCloudEnabledForAccount && IsCloudEnabledForApp; @@ -161,7 +169,7 @@ namespace Steamworks public static int FileCount => Internal.GetFileCount(); /// - /// Get a list of filenames synchronized by Steam Cloud + /// Gets a list of filenames synchronized by Steam Cloud. /// public static IEnumerable Files { @@ -177,4 +185,4 @@ namespace Steamworks } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamScreenshots.cs b/Facepunch.Steamworks/SteamScreenshots.cs index 6b83fe5..2088845 100644 --- a/Facepunch.Steamworks/SteamScreenshots.cs +++ b/Facepunch.Steamworks/SteamScreenshots.cs @@ -8,35 +8,26 @@ using Steamworks.Data; namespace Steamworks { /// - /// Undocumented Parental Settings + /// Class for utilizing the Steam Screenshots API. /// - public static class SteamScreenshots + public class SteamScreenshots : SteamClientClass { - static ISteamScreenshots _internal; - internal static ISteamScreenshots Internal - { - get - { - SteamClient.ValidCheck(); + internal static ISteamScreenshots Internal => Interface as ISteamScreenshots; - if ( _internal == null ) - { - _internal = new ISteamScreenshots(); - _internal.Init(); - } - - return _internal; - } - } - internal static void Shutdown() + internal override bool InitializeInterface( bool server ) { - _internal = null; + SetInterface( server, new ISteamScreenshots( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents(); + + return true; } internal static void InstallEvents() { - ScreenshotRequested_t.Install( x => OnScreenshotRequested?.Invoke() ); - ScreenshotReady_t.Install( x => + Dispatch.Install( x => OnScreenshotRequested?.Invoke() ); + Dispatch.Install( x => { if ( x.Result != Result.OK ) OnScreenshotFailed?.Invoke( x.Result ); @@ -46,19 +37,19 @@ namespace Steamworks } /// - /// A screenshot has been requested by the user from the Steam screenshot hotkey. - /// This will only be called if HookScreenshots has been enabled, in which case Steam + /// Invoked when a screenshot has been requested by the user from the Steam screenshot hotkey. + /// This will only be called if is true, in which case Steam /// will not take the screenshot itself. /// public static event Action OnScreenshotRequested; /// - /// A screenshot successfully written or otherwise added to the library and can now be tagged. + /// Invoked when a screenshot has been successfully written or otherwise added to the library and can now be tagged. /// public static event Action OnScreenshotReady; /// - /// A screenshot attempt failed + /// Invoked when a screenshot attempt failed. /// public static event Action OnScreenshotFailed; @@ -94,15 +85,17 @@ namespace Steamworks /// /// Causes the Steam overlay to take a screenshot. /// If screenshots are being hooked by the game then a - /// ScreenshotRequested callback is sent back to the game instead. + /// callback is sent back to the game instead. /// public static void TriggerScreenshot() => Internal.TriggerScreenshot(); /// /// Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or if the game handles them. + /// /// Hooking is disabled by default, and only ever enabled if you do so with this function. - /// If the hooking is enabled, then the ScreenshotRequested_t callback will be sent if the user presses the hotkey or - /// when TriggerScreenshot is called, and then the game is expected to call WriteScreenshot or AddScreenshotToLibrary in response. + /// If the hooking is enabled, then the callback will be sent if the user presses the hotkey or + /// when TriggerScreenshot is called, and then the game is expected to call or in response. + /// /// public static bool Hooked { @@ -110,4 +103,4 @@ namespace Steamworks set => Internal.HookScreenshots( value ); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamServer.cs b/Facepunch.Steamworks/SteamServer.cs index d9771b6..68431bb 100644 --- a/Facepunch.Steamworks/SteamServer.cs +++ b/Facepunch.Steamworks/SteamServer.cs @@ -10,73 +10,68 @@ namespace Steamworks /// /// Provides the core of the Steam Game Servers API /// - public static partial class SteamServer + public partial class SteamServer : SteamServerClass { - static bool initialized; + internal static ISteamGameServer Internal => Interface as ISteamGameServer; - static ISteamGameServer _internal; - internal static ISteamGameServer Internal + internal override bool InitializeInterface( bool server ) { - get - { - if ( _internal == null ) - { - _internal = new ISteamGameServer( ); - _internal.InitServer(); - } + SetInterface( server, new ISteamGameServer( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; - return _internal; - } + InstallEvents(); + + return true; } - public static bool IsValid => initialized; - - - public static Action OnCallbackException; + public static bool IsValid => Internal != null && Internal.IsValid; internal static void InstallEvents() { - SteamInventory.InstallEvents(); - SteamNetworkingSockets.InstallEvents(true); - - ValidateAuthTicketResponse_t.Install( x => OnValidateAuthTicketResponse?.Invoke( x.SteamID, x.OwnerSteamID, x.AuthSessionResponse ), true ); - SteamServersConnected_t.Install( x => OnSteamServersConnected?.Invoke(), true ); - SteamServerConnectFailure_t.Install( x => OnSteamServerConnectFailure?.Invoke( x.Result, x.StillRetrying ), true ); - SteamServersDisconnected_t.Install( x => OnSteamServersDisconnected?.Invoke( x.Result ), true ); + Dispatch.Install( x => OnValidateAuthTicketResponse?.Invoke( x.SteamID, x.OwnerSteamID, x.AuthSessionResponse ), true ); + Dispatch.Install( x => OnSteamServersConnected?.Invoke(), true ); + Dispatch.Install( x => OnSteamServerConnectFailure?.Invoke( x.Result, x.StillRetrying ), true ); + Dispatch.Install( x => OnSteamServersDisconnected?.Invoke( x.Result ), true ); + Dispatch.Install(x => OnSteamNetAuthenticationStatus?.Invoke(x.Avail), true); } /// - /// User has been authed or rejected + /// Invoked when aser has been authed or rejected /// public static event Action OnValidateAuthTicketResponse; /// - /// Called when a connections to the Steam back-end has been established. + /// Invoked when a connection to the Steam back-end has been established. /// This means the server now is logged on and has a working connection to the Steam master server. /// public static event Action OnSteamServersConnected; /// - /// This will occur periodically if the Steam client is not connected, and has failed when retrying to establish a connection (result, stilltrying) + /// This will occur periodically if the Steam client is not connected, and has failed when retrying to establish a connection (result, stilltrying). /// public static event Action OnSteamServerConnectFailure; /// - /// Disconnected from Steam + /// Invoked when the server is disconnected from Steam /// public static event Action OnSteamServersDisconnected; + /// + /// Invoked when authentication status changes, useful for grabbing once availability is current. + /// + public static event Action OnSteamNetAuthenticationStatus; + /// /// Initialize the steam server. - /// If asyncCallbacks is false you need to call RunCallbacks manually every frame. + /// If is you need to call manually every frame. /// public static void Init( AppId appid, SteamServerInit init, bool asyncCallbacks = true ) { - uint ipaddress = 0; // Any Port + if ( IsValid ) + throw new System.Exception( "Calling SteamServer.Init but is already initialized" ); - if ( init.SteamPort == 0 ) - init = init.WithRandomSteamPort(); + uint ipaddress = 0; // Any Port if ( init.IpAddress != null ) ipaddress = Utility.IpToInt32( init.IpAddress ); @@ -88,17 +83,34 @@ namespace Steamworks // // Get other interfaces // - if ( !SteamInternal.GameServer_Init( ipaddress, init.SteamPort, init.GamePort, init.QueryPort, secure, init.VersionString ) ) + if ( !SteamInternal.GameServer_Init( ipaddress, 0, init.GamePort, init.QueryPort, secure, init.VersionString ) ) { - throw new System.Exception( $"InitGameServer returned false ({ipaddress},{init.SteamPort},{init.GamePort},{init.QueryPort},{secure},\"{init.VersionString}\")" ); + throw new System.Exception( $"InitGameServer returned false ({ipaddress},{0},{init.GamePort},{init.QueryPort},{secure},\"{init.VersionString}\")" ); } - initialized = true; + // + // Dispatch is responsible for pumping the + // event loop. + // + Dispatch.Init(); + Dispatch.ServerPipe = SteamGameServer.GetHSteamPipe(); + + AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + //AddInterface(); + AddInterface(); + AddInterface(); + AddInterface(); + + AddInterface(); + AddInterface(); // // Initial settings // - AutomaticHeartbeats = true; + AdvertiseServer = true; MaxPlayers = 32; BotCount = 0; Product = $"{appid.Value}"; @@ -107,75 +119,52 @@ namespace Steamworks Passworded = false; DedicatedServer = init.DedicatedServer; - InstallEvents(); - if ( asyncCallbacks ) { - RunCallbacksAsync(); + // + // This will keep looping in the background every 16 ms + // until we shut down. + // + Dispatch.LoopServerAsync(); } } - static List openIterfaces = new List(); - - internal static void WatchInterface( SteamInterface steamInterface ) + internal static void AddInterface() where T : SteamClass, new() { - if ( openIterfaces.Contains( steamInterface ) ) - throw new System.Exception( "openIterfaces already contains interface!" ); - - openIterfaces.Add( steamInterface ); + var t = new T(); + t.InitializeInterface( true ); + openInterfaces.Add( t ); } + static readonly List openInterfaces = new List(); + internal static void ShutdownInterfaces() { - foreach ( var e in openIterfaces ) + foreach ( var e in openInterfaces ) { - e.Shutdown(); + e.DestroyInterface( true ); } - openIterfaces.Clear(); + openInterfaces.Clear(); } public static void Shutdown() { - Event.DisposeAllServer(); - - initialized = false; - - _internal = null; + Dispatch.ShutdownServer(); ShutdownInterfaces(); - SteamNetworkingUtils.Shutdown(); - SteamNetworkingSockets.Shutdown(); - SteamInventory.Shutdown(); - - SteamServerStats.Shutdown(); - SteamGameServer.Shutdown(); } - internal static async void RunCallbacksAsync() - { - while ( IsValid ) - { - try - { - RunCallbacks(); - } - catch ( System.Exception e ) - { - OnCallbackException?.Invoke( e ); - } - - await Task.Delay( 16 ); - } - } - /// /// Run the callbacks. This is also called in Async callbacks. /// public static void RunCallbacks() { - SteamGameServer.RunCallbacks(); + if ( Dispatch.ServerPipe != 0 ) + { + Dispatch.Frame( Dispatch.ServerPipe ); + } } /// @@ -222,7 +211,7 @@ namespace Steamworks private static string _mapname; /// - /// Gets or sets the current ModDir + /// Gets or sets the current ModDir. /// public static string ModDir { @@ -232,7 +221,7 @@ namespace Steamworks private static string _modDir = ""; /// - /// Gets the current product + /// Gets the current product. /// public static string Product { @@ -242,7 +231,7 @@ namespace Steamworks private static string _product = ""; /// - /// Gets or sets the current Product + /// Gets or sets the current Product. /// public static string GameDescription { @@ -252,7 +241,7 @@ namespace Steamworks private static string _gameDescription = ""; /// - /// Gets or sets the current ServerName + /// Gets or sets the current ServerName. /// public static string ServerName { @@ -262,7 +251,7 @@ namespace Steamworks private static string _serverName = ""; /// - /// Set whether the server should report itself as passworded + /// Set whether the server should report itself as passworded. /// public static bool Passworded { @@ -287,6 +276,11 @@ namespace Steamworks } private static string _gametags = ""; + /// + /// Gets the SteamId of the server. + /// + public static SteamId SteamId => Internal.GetSteamID(); + /// /// Log onto Steam anonymously. /// @@ -297,7 +291,7 @@ namespace Steamworks } /// - /// Log onto Steam anonymously. + /// Log off of Steam. /// public static void LogOff() { @@ -306,51 +300,44 @@ namespace Steamworks /// /// Returns true if the server is connected and registered with the Steam master server - /// You should have called LogOnAnonymous etc on startup. + /// You should have called etc on startup. /// public static bool LoggedOn => Internal.BLoggedOn(); /// /// To the best of its ability this tries to get the server's - /// current public ip address. Be aware that this is likely to return - /// null for the first few seconds after initialization. + /// current public IP address. Be aware that this is likely to return + /// for the first few seconds after initialization. /// - public static System.Net.IPAddress PublicIp - { - get - { - var ip = Internal.GetPublicIP(); - if ( ip == 0 ) return null; - - return Utility.Int32ToIp( ip ); - } - } + public static System.Net.IPAddress PublicIp => Internal.GetPublicIP(); /// /// Enable or disable heartbeats, which are sent regularly to the master server. /// Enabled by default. /// + [Obsolete( "Renamed to AdvertiseServer in 1.52" )] public static bool AutomaticHeartbeats { - set { Internal.EnableHeartbeats( value ); } - } - + set { Internal.SetAdvertiseServerActive( value ); } + } + + /// - /// Set heartbeat interval, if automatic heartbeats are enabled. - /// You can leave this at the default. + /// Enable or disable heartbeats, which are sent regularly to the master server. + /// Enabled by default. /// - public static int AutomaticHeartbeatRate + public static bool AdvertiseServer { - set { Internal.SetHeartbeatInterval( value ); } + set { Internal.SetAdvertiseServerActive( value ); } } /// /// Force send a heartbeat to the master server instead of waiting /// for the next automatic update (if you've left them enabled) /// + [Obsolete( "No longer used" )] public static void ForceHeartbeat() { - Internal.ForceHeartbeat(); } /// @@ -389,7 +376,7 @@ namespace Steamworks } /// - /// Remove all key values + /// Remove all key values. /// public static void ClearKeys() { @@ -469,11 +456,11 @@ namespace Steamworks } /// - /// Does the user own this app (which could be DLC) + /// Does the user own this app (which could be DLC). /// public static UserHasLicenseForAppResult UserHasLicenseForApp( SteamId steamid, AppId appid ) { return Internal.UserHasLicenseForApp( steamid, appid ); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamServerStats.cs b/Facepunch.Steamworks/SteamServerStats.cs index 239807a..ed0bddf 100644 --- a/Facepunch.Steamworks/SteamServerStats.cs +++ b/Facepunch.Steamworks/SteamServerStats.cs @@ -7,34 +7,27 @@ using Steamworks.Data; namespace Steamworks { - public static class SteamServerStats + public class SteamServerStats : SteamServerClass { - static ISteamGameServerStats _internal; - internal static ISteamGameServerStats Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamGameServerStats(); - _internal.InitServer(); - } + internal static ISteamGameServerStats Internal => Interface as ISteamGameServerStats; - return _internal; - } - } - - internal static void Shutdown() + internal override bool InitializeInterface( bool server ) { - _internal = null; + SetInterface( server, new ISteamGameServerStats( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + return true; } + /// - /// Downloads stats for the user - /// If the user has no stats will return fail - /// these stats will only be auto-updated for clients playing on the server + /// Downloads stats for the user. + /// If the user has no stats, this will return . + /// These stats will only be auto-updated for clients playing on the server. /// - public static async Task RequestUserStats( SteamId steamid ) + /// The SteamId of the user to get stats for. + /// A task describing the progress and result of the download. + public static async Task RequestUserStatsAsync( SteamId steamid ) { var r = await Internal.RequestUserStats( steamid ); if ( !r.HasValue ) return Result.Fail; @@ -45,30 +38,39 @@ namespace Steamworks /// Set the named stat for this user. Setting stats should follow the rules /// you defined in Steamworks. /// + /// The SteamId of the user to set stats for. + /// The name of the stat. + /// The value of the stat. public static bool SetInt( SteamId steamid, string name, int stat ) { - return Internal.SetUserStat1( steamid, name, stat ); + return Internal.SetUserStat( steamid, name, stat ); } /// /// Set the named stat for this user. Setting stats should follow the rules /// you defined in Steamworks. /// + /// The SteamId of the user to set stats for. + /// The name of the stat. + /// The value of the stat. public static bool SetFloat( SteamId steamid, string name, float stat ) { - return Internal.SetUserStat2( steamid, name, stat ); + return Internal.SetUserStat( steamid, name, stat ); } /// /// Get the named stat for this user. If getting the stat failed, will return - /// defaultValue. You should have called Refresh for this userid - which downloads - /// the stats from the backend. If you didn't call it this will always return defaultValue. + /// . You should have called for this SteamID - which downloads + /// the stats from the backend. If you didn't call it this will always return . /// + /// The SteamId of the user to get stats for. + /// The name of the stat. + /// The value to return if the stats cannot be received. public static int GetInt( SteamId steamid, string name, int defaultValue = 0 ) { int data = defaultValue; - if ( !Internal.GetUserStat1( steamid, name, ref data ) ) + if ( !Internal.GetUserStat( steamid, name, ref data ) ) return defaultValue; return data; @@ -79,36 +81,43 @@ namespace Steamworks /// defaultValue. You should have called Refresh for this userid - which downloads /// the stats from the backend. If you didn't call it this will always return defaultValue. /// + /// The SteamId of the user to get stats for. + /// The name of the stat. + /// The value to return if the stats cannot be received. public static float GetFloat( SteamId steamid, string name, float defaultValue = 0 ) { float data = defaultValue; - if ( !Internal.GetUserStat2( steamid, name, ref data ) ) + if ( !Internal.GetUserStat( steamid, name, ref data ) ) return defaultValue; return data; } /// - /// Unlocks the specified achievement for the specified user. Must have called Refresh on a steamid first. - /// Remember to use Commit after use. + /// Unlocks the specified achievement for the specified user. Must have called on a SteamID first. + /// Remember to use after use. /// + /// The SteamId of the user to unlock the achievement for. + /// The ID of the achievement. public static bool SetAchievement( SteamId steamid, string name ) { return Internal.SetUserAchievement( steamid, name ); } /// - /// Resets the unlock status of an achievement for the specified user. Must have called Refresh on a steamid first. - /// Remember to use Commit after use. + /// Resets the unlock status of an achievement for the specified user. Must have called on a SteamID first. + /// Remember to use after use. /// + /// The SteamId of the user to clear the achievement for. + /// The ID of the achievement. public static bool ClearAchievement( SteamId steamid, string name ) { return Internal.ClearUserAchievement( steamid, name ); } /// - /// Return true if available, exists and unlocked + /// Return if available, exists and unlocked /// public static bool GetAchievement( SteamId steamid, string name ) { @@ -122,9 +131,11 @@ namespace Steamworks /// /// Once you've set a stat change on a user you need to commit your changes. - /// You can do that using this function. The callback will let you know if + /// You can do that using this method. The callback will let you know if /// your action succeeded, but most of the time you can fire and forget. /// + /// The SteamId of the user to store stats for. + /// A task describing the progress and result of the commit. public static async Task StoreUserStats( SteamId steamid ) { var r = await Internal.StoreUserStats( steamid ); @@ -132,4 +143,4 @@ namespace Steamworks return r.Value.Result; } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamUgc.cs b/Facepunch.Steamworks/SteamUgc.cs index b230ed4..57c484f 100644 --- a/Facepunch.Steamworks/SteamUgc.cs +++ b/Facepunch.Steamworks/SteamUgc.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; +using System.Threading; using System.Threading.Tasks; using Steamworks.Data; @@ -12,37 +13,39 @@ namespace Steamworks /// Functions for accessing and manipulating Steam user information. /// This is also where the APIs for Steam Voice are exposed. /// - public static class SteamUGC + public class SteamUGC : SteamSharedClass { - static ISteamUGC _internal; - internal static ISteamUGC Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamUGC(); - _internal.Init(); - } + internal static ISteamUGC Internal => Interface as ISteamUGC; - return _internal; - } + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamUGC( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents( server ); + + return true; } - internal static void InstallEvents() + internal static void InstallEvents( bool server ) { - DownloadItemResult_t.Install( x => OnDownloadItemResult?.Invoke( x.Result ) ); + Dispatch.Install( x => OnDownloadItemResult?.Invoke( x.Result ), server ); + Dispatch.Install( x => OnItemSubscribed?.Invoke( x.AppID.Value, x.PublishedFileId ), server ); + Dispatch.Install( x => OnItemUnsubscribed?.Invoke( x.AppID.Value, x.PublishedFileId ), server ); + Dispatch.Install( x => OnItemInstalled?.Invoke( x.AppID.Value, x.PublishedFileId ), server ); } /// - /// Posted after Download call + /// Invoked after an item is downloaded. /// public static event Action OnDownloadItemResult; - - internal static void Shutdown() - { - _internal = null; - } + + /// + /// Invoked when a new item is subscribed. + /// + public static event Action OnItemSubscribed; + public static event Action OnItemUnsubscribed; + public static event Action OnItemInstalled; public static async Task DeleteFileAsync( PublishedFileId fileId ) { @@ -50,13 +53,93 @@ namespace Steamworks return r?.Result == Result.OK; } + /// + /// Start downloading this item. You'll get notified of completion via . + /// + /// The ID of the file to download. + /// If this should go straight to the top of the download list. + /// if nothing went wrong and the download is started. public static bool Download( PublishedFileId fileId, bool highPriority = false ) { return Internal.DownloadItem( fileId, highPriority ); } /// - /// Utility function to fetch a single item. Internally this uses Ugc.FileQuery - + /// Will attempt to download this item asyncronously - allowing you to instantly react to its installation. + /// + /// The ID of the file you download. + /// An optional callback + /// Allows to send a message to cancel the download anywhere during the process. + /// How often to call the progress function. + /// if downloaded and installed properly. + public static async Task DownloadAsync( PublishedFileId fileId, Action progress = null, int milisecondsUpdateDelay = 60, CancellationToken ct = default ) + { + var item = new Steamworks.Ugc.Item( fileId ); + + if ( ct == default ) + ct = new CancellationTokenSource( TimeSpan.FromSeconds( 60 ) ).Token; + + progress?.Invoke( 0.0f ); + + if ( Download( fileId, true ) == false ) + return item.IsInstalled; + + // Steam docs about Download: + // If the return value is true then register and wait + // for the Callback DownloadItemResult_t before calling + // GetItemInstallInfo or accessing the workshop item on disk. + + // Wait for DownloadItemResult_t + { + Action onDownloadStarted = null; + + try + { + var downloadStarted = false; + + onDownloadStarted = r => downloadStarted = true; + OnDownloadItemResult += onDownloadStarted; + + while ( downloadStarted == false ) + { + if ( ct.IsCancellationRequested ) + break; + + await Task.Delay( milisecondsUpdateDelay ); + } + } + finally + { + OnDownloadItemResult -= onDownloadStarted; + } + } + + progress?.Invoke( 0.2f ); + await Task.Delay( milisecondsUpdateDelay ); + + //Wait for downloading completion + { + while ( true ) + { + if ( ct.IsCancellationRequested ) + break; + + progress?.Invoke( 0.2f + item.DownloadAmount * 0.8f ); + + if ( !item.IsDownloading && item.IsInstalled ) + break; + + await Task.Delay( milisecondsUpdateDelay ); + } + } + + progress?.Invoke( 1.0f ); + + return item.IsInstalled; + } + + /// + /// Utility function to fetch a single item. Internally this uses Ugc.FileQuery - /// which you can use to query multiple items if you need to. /// public static async Task QueryFileAsync( PublishedFileId fileId ) @@ -92,5 +175,34 @@ namespace Steamworks var result = await Internal.StopPlaytimeTrackingForAllItems(); return result.Value.Result == Result.OK; } + + /// + /// Suspends all workshop downloads. + /// Downloads will be suspended until you resume them by calling or when the game ends. + /// + public static void SuspendDownloads() => Internal.SuspendDownloads(true); + + /// + /// Resumes all workshop downloads. + /// + public static void ResumeDownloads() => Internal.SuspendDownloads(false); + + /// + /// Show the app's latest Workshop EULA to the user in an overlay window, where they can accept it or not. + /// + public static bool ShowWorkshopEula() + { + return Internal.ShowWorkshopEULA(); + } + + /// + /// Retrieve information related to the user's acceptance or not of the app's specific Workshop EULA. + /// + public static async Task GetWorkshopEulaStatus() + { + var status = await Internal.GetWorkshopEULAStatus(); + return status?.Accepted; + } + } } diff --git a/Facepunch.Steamworks/SteamUser.cs b/Facepunch.Steamworks/SteamUser.cs index 0f0d06a..5ddd777 100644 --- a/Facepunch.Steamworks/SteamUser.cs +++ b/Facepunch.Steamworks/SteamUser.cs @@ -13,50 +13,41 @@ namespace Steamworks /// Functions for accessing and manipulating Steam user information. /// This is also where the APIs for Steam Voice are exposed. /// - public static class SteamUser + public class SteamUser : SteamClientClass { - static ISteamUser _internal; - internal static ISteamUser Internal + internal static ISteamUser Internal => Interface as ISteamUser; + + internal override bool InitializeInterface( bool server ) { - get - { - SteamClient.ValidCheck(); + SetInterface( server, new ISteamUser( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; - if ( _internal == null ) - { - _internal = new ISteamUser(); - _internal.Init(); + InstallEvents(); - richPresence = new Dictionary(); + richPresence = new Dictionary(); + SampleRate = OptimalSampleRate; - SampleRate = OptimalSampleRate; - } - - return _internal; - } - } - internal static void Shutdown() - { - _internal = null; + return true; } static Dictionary richPresence; internal static void InstallEvents() { - SteamServersConnected_t.Install( x => OnSteamServersConnected?.Invoke() ); - SteamServerConnectFailure_t.Install( x => OnSteamServerConnectFailure?.Invoke() ); - SteamServersDisconnected_t.Install( x => OnSteamServersDisconnected?.Invoke() ); - ClientGameServerDeny_t.Install( x => OnClientGameServerDeny?.Invoke() ); - LicensesUpdated_t.Install( x => OnLicensesUpdated?.Invoke() ); - ValidateAuthTicketResponse_t.Install( x => OnValidateAuthTicketResponse?.Invoke( x.SteamID, x.OwnerSteamID, x.AuthSessionResponse ) ); - MicroTxnAuthorizationResponse_t.Install( x => OnMicroTxnAuthorizationResponse?.Invoke( x.AppID, x.OrderID, x.Authorized != 0 ) ); - GameWebCallback_t.Install( x => OnGameWebCallback?.Invoke( x.URLUTF8() ) ); - GetAuthSessionTicketResponse_t.Install( x => OnGetAuthSessionTicketResponse?.Invoke( x ) ); + Dispatch.Install( x => OnSteamServersConnected?.Invoke() ); + Dispatch.Install( x => OnSteamServerConnectFailure?.Invoke() ); + Dispatch.Install( x => OnSteamServersDisconnected?.Invoke() ); + Dispatch.Install( x => OnClientGameServerDeny?.Invoke() ); + Dispatch.Install( x => OnLicensesUpdated?.Invoke() ); + Dispatch.Install( x => OnValidateAuthTicketResponse?.Invoke( x.SteamID, x.OwnerSteamID, x.AuthSessionResponse ) ); + Dispatch.Install( x => OnMicroTxnAuthorizationResponse?.Invoke( x.AppID, x.OrderID, x.Authorized != 0 ) ); + Dispatch.Install( x => OnGameWebCallback?.Invoke( x.URLUTF8() ) ); + Dispatch.Install( x => OnGetAuthSessionTicketResponse?.Invoke( x ) ); + Dispatch.Install( x => OnDurationControl?.Invoke( new DurationControl { _inner = x } ) ); } /// - /// Called when a connections to the Steam back-end has been established. + /// Invoked when a connections to the Steam back-end has been established. /// This means the Steam client now has a working connection to the Steam servers. /// Usually this will have occurred before the game has launched, and should only be seen if the /// user has dropped connection due to a networking issue or a Steam server update. @@ -64,14 +55,14 @@ namespace Steamworks public static event Action OnSteamServersConnected; /// - /// Called when a connection attempt has failed. + /// Invoked when a connection attempt has failed. /// This will occur periodically if the Steam client is not connected, /// and has failed when retrying to establish a connection. /// public static event Action OnSteamServerConnectFailure; /// - /// Called if the client has lost connection to the Steam servers. + /// Invoked when the client has lost connection to the Steam servers. /// Real-time services will be disabled until a matching OnSteamServersConnected has been posted. /// public static event Action OnSteamServersDisconnected; @@ -85,38 +76,43 @@ namespace Steamworks public static event Action OnClientGameServerDeny; /// - /// Called whenever the users licenses (owned packages) changes. + /// Invoked whenever the users licenses (owned packages) changes. /// public static event Action OnLicensesUpdated; /// - /// Called when an auth ticket has been validated. - /// The first parameter is the steamid of this user - /// The second is the Steam ID that owns the game, this will be different from the first - /// if the game is being borrowed via Steam Family Sharing + /// Invoked when an auth ticket has been validated. + /// The first parameter is the of this user + /// The second is the that owns the game, which will be different from the first + /// if the game is being borrowed via Steam Family Sharing. /// public static event Action OnValidateAuthTicketResponse; /// - /// Used internally for GetAuthSessionTicketAsync + /// Used internally for . /// internal static event Action OnGetAuthSessionTicketResponse; /// - /// Called when a user has responded to a microtransaction authorization request. + /// Invoked when a user has responded to a microtransaction authorization request. /// ( appid, orderid, user authorized ) /// public static event Action OnMicroTxnAuthorizationResponse; /// - /// Sent to your game in response to a steam://gamewebcallback/ command from a user clicking a link in the Steam overlay browser. + /// Sent to your game in response to a steam://gamewebcallback/(appid)/command/stuff command from a user clicking a + /// link in the Steam overlay browser. /// You can use this to add support for external site signups where you want to pop back into the browser after some web page /// signup sequence, and optionally get back some detail about that. /// public static event Action OnGameWebCallback; - - + /// + /// Sent for games with enabled anti indulgence / duration control, for enabled users. + /// Lets the game know whether persistent rewards or XP should be granted at normal rate, + /// half rate, or zero rate. + /// + public static event Action OnDurationControl; static bool _recordingVoice; @@ -125,7 +121,6 @@ namespace Steamworks /// Once started, use GetAvailableVoice and GetVoice to get the data, and then call StopVoiceRecording /// when the user has released their push-to-talk hotkey or the game session has completed. /// - public static bool VoiceRecord { get => _recordingVoice; @@ -139,7 +134,7 @@ namespace Steamworks /// - /// Returns true if we have voice data waiting to be read + /// Returns true if we have voice data waiting to be read. /// public static bool HasVoiceData { @@ -266,6 +261,9 @@ namespace Steamworks return (int)szWritten; } + /// + /// Lazy version + /// public static unsafe int DecompressVoice( byte[] from, System.IO.Stream output ) { var to = Helpers.TakeBuffer( 1024 * 64 ); @@ -290,7 +288,23 @@ namespace Steamworks } /// - /// Retrieve a authentication ticket to be sent to the entity who wishes to authenticate you. + /// Advanced and potentially fastest version - incase you know what you're doing + /// + public static unsafe int DecompressVoice( IntPtr from, int length, IntPtr to, int bufferSize ) + { + if ( length <= 0 ) throw new ArgumentException( $"length should be > 0 " ); + if ( bufferSize <= 0 ) throw new ArgumentException( $"bufferSize should be > 0 " ); + + uint szWritten = 0; + + if ( Internal.DecompressVoice( from, (uint) length, to, (uint)bufferSize, ref szWritten, SampleRate ) != VoiceResult.OK ) + return 0; + + return (int)szWritten; + } + + /// + /// Retrieve an authentication ticket to be sent to the entity who wishes to authenticate you. /// public static unsafe AuthTicket GetAuthSessionTicket() { @@ -315,7 +329,7 @@ namespace Steamworks /// /// Retrieve a authentication ticket to be sent to the entity who wishes to authenticate you. /// This waits for a positive response from the backend before returning the ticket. This means - /// the ticket is definitely ready to go as soon as it returns. Will return null if the callback + /// the ticket is definitely ready to go as soon as it returns. Will return if the callback /// times out or returns negatively. /// public static async Task GetAuthSessionTicketAsync( double timeoutSeconds = 10.0f ) @@ -324,11 +338,11 @@ namespace Steamworks AuthTicket ticket = null; var stopwatch = Stopwatch.StartNew(); - Action f = ( t ) => + void f( GetAuthSessionTicketResponse_t t ) { if ( t.AuthTicket != ticket.Handle ) return; result = t.Result; - }; + } OnGetAuthSessionTicketResponse += f; @@ -424,6 +438,7 @@ namespace Steamworks /// Requests an application ticket encrypted with the secret "encrypted app ticket key". /// The encryption key can be obtained from the Encrypted App Ticket Key page on the App Admin for your app. /// There can only be one call pending, and this call is subject to a 60 second rate limit. + /// If you get a null result from this it's probably because you're calling it too often. /// This can fail if you don't have an encrypted ticket set for your app here https://partner.steamgames.com/apps/sdkauth/ /// public static async Task RequestEncryptedAppTicketAsync( byte[] dataToInclude ) @@ -483,5 +498,16 @@ namespace Steamworks } + + /// + /// Get anti indulgence / duration control + /// + public static async Task GetDurationControl() + { + var response = await Internal.GetDurationControl(); + if ( !response.HasValue ) return default; + + return new DurationControl { _inner = response.Value }; + } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamUserStats.cs b/Facepunch.Steamworks/SteamUserStats.cs index 241ff42..22b8303 100644 --- a/Facepunch.Steamworks/SteamUserStats.cs +++ b/Facepunch.Steamworks/SteamUserStats.cs @@ -7,36 +7,26 @@ using Steamworks.Data; namespace Steamworks { - public static class SteamUserStats + public class SteamUserStats : SteamClientClass { - static ISteamUserStats _internal; - internal static ISteamUserStats Internal + internal static ISteamUserStats Internal => Interface as ISteamUserStats; + + internal override bool InitializeInterface( bool server ) { - get - { - SteamClient.ValidCheck(); + SetInterface( server, new ISteamUserStats( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; - if ( _internal == null ) - { - _internal = new ISteamUserStats(); - _internal.Init(); + InstallEvents(); + RequestCurrentStats(); - RequestCurrentStats(); - } - - return _internal; - } - } - internal static void Shutdown() - { - _internal = null; + return true; } public static bool StatsRecieved { get; internal set; } internal static void InstallEvents() { - UserStatsReceived_t.Install( x => + Dispatch.Install( x => { if ( x.SteamIDUser == SteamClient.SteamId ) StatsRecieved = true; @@ -44,33 +34,33 @@ namespace Steamworks OnUserStatsReceived?.Invoke( x.SteamIDUser, x.Result ); } ); - UserStatsStored_t.Install( x => OnUserStatsStored?.Invoke( x.Result ) ); - UserAchievementStored_t.Install( x => OnAchievementProgress?.Invoke( new Achievement( x.AchievementNameUTF8() ), (int) x.CurProgress, (int)x.MaxProgress ) ); - UserStatsUnloaded_t.Install( x => OnUserStatsUnloaded?.Invoke( x.SteamIDUser ) ); - UserAchievementIconFetched_t.Install( x => OnAchievementIconFetched?.Invoke( x.AchievementNameUTF8(), x.IconHandle ) ); + Dispatch.Install( x => OnUserStatsStored?.Invoke( x.Result ) ); + Dispatch.Install( x => OnAchievementProgress?.Invoke( new Achievement( x.AchievementNameUTF8() ), (int) x.CurProgress, (int)x.MaxProgress ) ); + Dispatch.Install( x => OnUserStatsUnloaded?.Invoke( x.SteamIDUser ) ); + Dispatch.Install( x => OnAchievementIconFetched?.Invoke( x.AchievementNameUTF8(), x.IconHandle ) ); } /// - /// called when the achivement icon is loaded + /// Invoked when an achivement icon is loaded. /// internal static event Action OnAchievementIconFetched; /// - /// called when the latests stats and achievements have been received - /// from the server + /// Invoked when the latests stats and achievements have been received + /// from the server. /// public static event Action OnUserStatsReceived; /// - /// result of a request to store the user stats for a game + /// Result of a request to store the user stats for a game. /// public static event Action OnUserStatsStored; /// - /// result of a request to store the achievements for a game, or an + /// Result of a request to store the achievements for a game, or an /// "indicate progress" call. If both m_nCurProgress and m_nMaxProgress - /// are zero, that means the achievement has been fully unlocked + /// are zero, that means the achievement has been fully unlocked. /// public static event Action OnAchievementProgress; @@ -81,7 +71,7 @@ namespace Steamworks public static event Action OnUserStatsUnloaded; /// - /// Get the available achievements + /// Get all available achievements. /// public static IEnumerable Achievements { @@ -113,7 +103,7 @@ namespace Steamworks /// /// Tries to get the number of players currently playing this game. - /// Or -1 if failed. + /// Or -1 if failed. /// public static async Task PlayerCountAsync() { @@ -150,6 +140,22 @@ namespace Steamworks return Internal.RequestCurrentStats(); } + /// + /// Asynchronously fetches global stats data, which is available for stats marked as + /// "aggregated" in the App Admin panel of the Steamworks website. + /// You must have called and it needs to return successfully via + /// its callback prior to calling this. + /// + /// How many days of day-by-day history to retrieve in addition to the overall totals. The limit is 60. + /// indicates success, means you need to call first, means the remote call failed + public static async Task RequestGlobalStatsAsync( int days ) + { + var result = await SteamUserStats.Internal.RequestGlobalStats( days ); + if ( !result.HasValue ) return Result.Fail; + return result.Value.Result; + } + + /// /// Gets a leaderboard by name, it will create it if it's not yet created. /// Leaderboards created with this function will not automatically show up in the Steam Community. @@ -204,45 +210,43 @@ namespace Steamworks } /// - /// Set a stat value. This will automatically call StoreStats() after a successful call - /// unless you pass false as the last argument. + /// Set a stat value. This will automatically call after a successful call. /// public static bool SetStat( string name, int value ) { - return Internal.SetStat1( name, value ); + return Internal.SetStat( name, value ); } /// - /// Set a stat value. This will automatically call StoreStats() after a successful call - /// unless you pass false as the last argument. + /// Set a stat value. This will automatically call after a successful call. /// public static bool SetStat( string name, float value ) { - return Internal.SetStat2( name, value ); + return Internal.SetStat( name, value ); } /// - /// Get a Int stat value + /// Get an stat value. /// public static int GetStatInt( string name ) { int data = 0; - Internal.GetStat1( name, ref data ); + Internal.GetStat( name, ref data ); return data; } /// - /// Get a float stat value + /// Get a stat value. /// public static float GetStatFloat( string name ) { float data = 0; - Internal.GetStat2( name, ref data ); + Internal.GetStat( name, ref data ); return data; } /// - /// Practically wipes the slate clean for this user. If includeAchievements is true, will wipe + /// Practically wipes the slate clean for this user. If is , will also wipe /// any achievements too. /// /// @@ -251,4 +255,4 @@ namespace Steamworks return Internal.ResetAllStats( includeAchievements ); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamUtils.cs b/Facepunch.Steamworks/SteamUtils.cs index 40d0cb3..8d2c45e 100644 --- a/Facepunch.Steamworks/SteamUtils.cs +++ b/Facepunch.Steamworks/SteamUtils.cs @@ -10,34 +10,26 @@ namespace Steamworks /// /// Interface which provides access to a range of miscellaneous utility functions /// - public static class SteamUtils + public class SteamUtils : SteamSharedClass { - static ISteamUtils _internal; - internal static ISteamUtils Internal - { - get - { - if ( _internal == null ) - { - _internal = new ISteamUtils(); - _internal.Init(); - } + internal static ISteamUtils Internal => Interface as ISteamUtils; - return _internal; - } + internal override bool InitializeInterface( bool server ) + { + SetInterface( server, new ISteamUtils( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; + + InstallEvents( server ); + + return true; } - internal static void Shutdown() + internal static void InstallEvents( bool server ) { - _internal = null; - } - - internal static void InstallEvents() - { - IPCountry_t.Install( x => OnIpCountryChanged?.Invoke() ); - LowBatteryPower_t.Install( x => OnLowBatteryPower?.Invoke( x.MinutesBatteryLeft ) ); - SteamShutdown_t.Install( x => SteamClosed() ); - GamepadTextInputDismissed_t.Install( x => OnGamepadTextInputDismissed?.Invoke( x.Submitted ) ); + Dispatch.Install( x => OnIpCountryChanged?.Invoke(), server ); + Dispatch.Install( x => OnLowBatteryPower?.Invoke( x.MinutesBatteryLeft ), server ); + Dispatch.Install( x => SteamClosed(), server ); + Dispatch.Install( x => OnGamepadTextInputDismissed?.Invoke( x.Submitted ), server ); } private static void SteamClosed() @@ -48,33 +40,33 @@ namespace Steamworks } /// - /// The country of the user changed + /// Invoked when the country of the user changed. /// public static event Action OnIpCountryChanged; /// - /// Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute - /// The parameter is the number of minutes left + /// Invoked when running on a laptop and less than 10 minutes of battery is left, fires then every minute. + /// The parameter is the number of minutes left. /// public static event Action OnLowBatteryPower; /// - /// Called when Steam wants to shutdown + /// Invoked when Steam wants to shutdown. /// public static event Action OnSteamShutdown; /// - /// Big Picture gamepad text input has been closed. Parameter is true if text was submitted, false if cancelled etc. + /// Invoked when Big Picture gamepad text input has been closed. Parameter is if text was submitted, if cancelled etc. /// public static event Action OnGamepadTextInputDismissed; /// - /// Returns the number of seconds since the application was active + /// Returns the number of seconds since the application was active. /// public static uint SecondsSinceAppActive => Internal.GetSecondsSinceAppActive(); /// - /// Returns the number of seconds since the user last moved the mouse etc + /// Returns the number of seconds since the user last moved the mouse and/or provided other input. /// public static uint SecondsSinceComputerActive => Internal.GetSecondsSinceComputerActive(); @@ -82,7 +74,7 @@ namespace Steamworks public static Universe ConnectedUniverse => Internal.GetConnectedUniverse(); /// - /// Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) + /// Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) /// public static DateTime SteamServerTime => Epoch.ToDateTime( Internal.GetServerRealTime() ); @@ -93,9 +85,9 @@ namespace Steamworks public static string IpCountry => Internal.GetIPCountry(); /// - /// returns true if the image exists, and the buffer was successfully filled out - /// results are returned in RGBA format - /// the destination buffer size should be 4 * height * width * sizeof(char) + /// Returns true if the image exists, and the buffer was successfully filled out. + /// Results are returned in RGBA format. + /// The destination buffer size should be 4 * height * width * sizeof(char). /// public static bool GetImageSize( int image, out uint width, out uint height ) { @@ -105,7 +97,7 @@ namespace Steamworks } /// - /// returns the image in RGBA format + /// returns the image in RGBA format. /// public static Data.Image? GetImage( int image ) { @@ -130,12 +122,12 @@ namespace Steamworks } /// - /// Returns true if we're using a battery (ie, a laptop not plugged in) + /// Returns true if we're using a battery (ie, a laptop not plugged in). /// public static bool UsingBatteryPower => Internal.GetCurrentBatteryPower() != 255; /// - /// Returns battery power [0-1] + /// Returns battery power [0-1]. /// public static float CurrentBatteryPower => Math.Min( Internal.GetCurrentBatteryPower() / 100, 1.0f ); @@ -192,7 +184,7 @@ namespace Steamworks } /// - /// Activates the Big Picture text input dialog which only supports gamepad input + /// Activates the Big Picture text input dialog which only supports gamepad input. /// public static bool ShowGamepadTextInput( GamepadTextInputMode inputMode, GamepadTextInputLineMode lineInputMode, string description, int maxChars, string existingText = "" ) { @@ -200,7 +192,7 @@ namespace Steamworks } /// - /// Returns previously entered text + /// Returns previously entered text. /// public static string GetEnteredGamepadText() { @@ -214,18 +206,18 @@ namespace Steamworks } /// - /// returns the language the steam client is running in, you probably want - /// Apps.CurrentGameLanguage instead, this is for very special usage cases + /// Returns the language the steam client is running in. You probably want + /// instead, this is for very special usage cases. /// public static string SteamUILanguage => Internal.GetSteamUILanguage(); /// - /// returns true if Steam itself is running in VR mode + /// Returns if Steam itself is running in VR mode. /// public static bool IsSteamRunningInVR => Internal.IsSteamRunningInVR(); /// - /// Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition + /// Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. /// public static void SetOverlayNotificationInset( int x, int y ) { @@ -233,24 +225,26 @@ namespace Steamworks } /// - /// returns true if Steam and the Steam Overlay are running in Big Picture mode + /// returns if Steam and the Steam Overlay are running in Big Picture mode /// Games much be launched through the Steam client to enable the Big Picture overlay. During development, - /// a game can be added as a non-steam game to the developers library to test this feature + /// a game can be added as a non-steam game to the developers library to test this feature. /// public static bool IsSteamInBigPictureMode => Internal.IsSteamInBigPictureMode(); /// - /// ask SteamUI to create and render its OpenVR dashboard + /// Ask Steam UI to create and render its OpenVR dashboard. /// public static void StartVRDashboard() => Internal.StartVRDashboard(); /// - /// Set whether the HMD content will be streamed via Steam In-Home Streaming - /// If this is set to true, then the scene in the HMD headset will be streamed, and remote input will not be allowed. - /// If this is set to false, then the application window will be streamed instead, and remote input will be allowed. - /// The default is true unless "VRHeadsetStreaming" "0" is in the extended appinfo for a game. - /// (this is useful for games that have asymmetric multiplayer gameplay) + /// Gets or sets whether the HMD content will be streamed via Steam In-Home Streaming. + /// + /// If this is set to , then the scene in the HMD headset will be streamed, and remote input will not be allowed. + /// If this is set to , then the application window will be streamed instead, and remote input will be allowed. + /// The default is unless "VRHeadsetStreaming" "0" is in the extended app info for a game + /// (this is useful for games that have asymmetric multiplayer gameplay). + /// /// public static bool VrHeadsetStreaming { @@ -267,5 +261,44 @@ namespace Steamworks failed = false; return Internal.IsAPICallCompleted( call, ref failed ); } + + + /// + /// Gets whether this steam client is a Steam China specific client (), or the global client (). + /// + public static bool IsSteamChinaLauncher => Internal.IsSteamChinaLauncher(); + + /// + /// Initializes text filtering, loading dictionaries for the language the game is running in. + /// Users can customize the text filter behavior in their Steam Account preferences. + /// + public static bool InitFilterText() => Internal.InitFilterText( 0 ); + + /// + /// Filters the provided input message and places the filtered result into pchOutFilteredText, + /// using legally required filtering and additional filtering based on the context and user settings. + /// + public static string FilterText( TextFilteringContext context, SteamId sourceSteamID, string inputMessage ) + { + Internal.FilterText( context, sourceSteamID, inputMessage, out var filteredString ); + return filteredString; + } + + /// + /// Gets whether or not Steam itself is running on the Steam Deck. + /// + public static bool IsRunningOnSteamDeck => Internal.IsSteamRunningOnSteamDeck(); + + + /// + /// In game launchers that don't have controller support: You can call this to have + /// Steam Input translate the controller input into mouse/kb to navigate the launcher + /// + public static void SetGameLauncherMode( bool mode ) => Internal.SetGameLauncherMode( mode ); + + //public void ShowFloatingGamepadTextInput( TextInputMode mode, int left, int top, int width, int height ) + //{ + // Internal.ShowFloatingGamepadTextInput( mode, left, top, width, height ); + //} } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/SteamVideo.cs b/Facepunch.Steamworks/SteamVideo.cs index 2d2a632..de4fd19 100644 --- a/Facepunch.Steamworks/SteamVideo.cs +++ b/Facepunch.Steamworks/SteamVideo.cs @@ -8,43 +8,28 @@ using Steamworks.Data; namespace Steamworks { /// - /// Undocumented Parental Settings + /// Class for utilizing the Steam Video API. /// - public static class SteamVideo + public class SteamVideo : SteamClientClass { - static ISteamVideo _internal; - internal static ISteamVideo Internal + internal static ISteamVideo Internal => Interface as ISteamVideo; + + internal override bool InitializeInterface( bool server ) { - get - { - SteamClient.ValidCheck(); + SetInterface( server, new ISteamVideo( server ) ); + if ( Interface.Self == IntPtr.Zero ) return false; - if ( _internal == null ) - { - _internal = new ISteamVideo(); - _internal.Init(); - } + InstallEvents(); - return _internal; - } - } - - internal static void Shutdown() - { - _internal = null; + return true; } internal static void InstallEvents() { - BroadcastUploadStart_t.Install( x => OnBroadcastStarted?.Invoke() ); - BroadcastUploadStop_t.Install( x => OnBroadcastStopped?.Invoke( x.Result ) ); } - public static event Action OnBroadcastStarted; - public static event Action OnBroadcastStopped; - /// - /// Return true if currently using Steam's live broadcasting + /// Return if currently using Steam's live broadcasting /// public static bool IsBroadcasting { @@ -56,7 +41,7 @@ namespace Steamworks } /// - /// If we're broadcasting, will return the number of live viewers + /// Returns the number of viewers that are watching the stream, or 0 if is . /// public static int NumViewers { @@ -71,4 +56,4 @@ namespace Steamworks } } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/Achievement.cs b/Facepunch.Steamworks/Structs/Achievement.cs index 966df12..9cbe45a 100644 --- a/Facepunch.Steamworks/Structs/Achievement.cs +++ b/Facepunch.Steamworks/Structs/Achievement.cs @@ -6,6 +6,9 @@ using System.Threading.Tasks; namespace Steamworks.Data { + /// + /// Represents a Steam Achievement. + /// public struct Achievement { internal string Value; @@ -18,7 +21,7 @@ namespace Steamworks.Data public override string ToString() => Value; /// - /// True if unlocked + /// Gets whether or not the achievement has been unlocked. /// public bool State { @@ -30,15 +33,24 @@ namespace Steamworks.Data } } + /// + /// Gets the identifier of the achievement. This is the "API Name" on Steamworks. + /// public string Identifier => Value; + /// + /// Gets the display name of the achievement. + /// public string Name => SteamUserStats.Internal.GetAchievementDisplayAttribute( Value, "name" ); + /// + /// Gets the description of the achievement. + /// public string Description => SteamUserStats.Internal.GetAchievementDisplayAttribute( Value, "desc" ); /// - /// Should hold the unlock time if State is true + /// If is , this value represents the time that the achievement was unlocked. /// public DateTime? UnlockTime { @@ -56,7 +68,7 @@ namespace Steamworks.Data /// /// Gets the icon of the achievement. This can return a null image even though the image exists if the image - /// hasn't been downloaded by Steam yet. You can use GetIconAsync if you want to wait for the image to be downloaded. + /// hasn't been downloaded by Steam yet. You should use if you want to wait for the image to be downloaded. /// public Image? GetIcon() { @@ -65,8 +77,9 @@ namespace Steamworks.Data /// - /// Gets the icon of the achievement, waits for it to load if we have to + /// Gets the icon of the achievement, yielding until the icon is received or the is reached. /// + /// The timeout in milliseconds before the request will be canceled. Defaults to 5000. public async Task GetIconAsync( int timeout = 5000 ) { var i = SteamUserStats.Internal.GetAchievementIcon( Value ); @@ -75,12 +88,12 @@ namespace Steamworks.Data var ident = Identifier; bool gotCallback = false; - Action f = ( x, icon ) => + void f( string x, int icon ) { if ( x != ident ) return; i = icon; gotCallback = true; - }; + } try { @@ -107,7 +120,7 @@ namespace Steamworks.Data } /// - /// Returns the fraction (0-1) of users who have unlocked the specified achievement, or -1 if no data available. + /// Gets a decimal (0-1) representing the global amount of users who have unlocked the specified achievement, or -1 if no data available. /// public float GlobalUnlocked { @@ -123,7 +136,7 @@ namespace Steamworks.Data } /// - /// Make this achievement earned + /// Unlock this achievement. /// public bool Trigger( bool apply = true ) { @@ -138,11 +151,11 @@ namespace Steamworks.Data } /// - /// Reset this achievement to not achieved + /// Reset this achievement to be locked. /// public bool Clear() { return SteamUserStats.Internal.ClearAchievement( Value ); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/AppId.cs b/Facepunch.Steamworks/Structs/AppId.cs index 16e4dcd..eced131 100644 --- a/Facepunch.Steamworks/Structs/AppId.cs +++ b/Facepunch.Steamworks/Structs/AppId.cs @@ -6,6 +6,9 @@ using System.Text; namespace Steamworks { + /// + /// Represents the ID of a Steam application. + /// public struct AppId { public uint Value; @@ -27,4 +30,4 @@ namespace Steamworks return value.Value; } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/Clan.cs b/Facepunch.Steamworks/Structs/Clan.cs new file mode 100644 index 0000000..6bcdda8 --- /dev/null +++ b/Facepunch.Steamworks/Structs/Clan.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace Steamworks +{ + public struct Clan + { + public SteamId Id; + + public Clan(SteamId id) + { + Id = id; + } + + public string Name => SteamFriends.Internal.GetClanName(Id); + + public string Tag => SteamFriends.Internal.GetClanTag(Id); + + public int ChatMemberCount => SteamFriends.Internal.GetClanChatMemberCount(Id); + + public Friend Owner => new Friend(SteamFriends.Internal.GetClanOwner(Id)); + + public bool Public => SteamFriends.Internal.IsClanPublic(Id); + + /// + /// Is the clan an official game group? + /// + public bool Official => SteamFriends.Internal.IsClanOfficialGameGroup(Id); + + /// + /// Asynchronously fetches the officer list for a given clan + /// + /// Whether the request was successful or not + public async Task RequestOfficerList() + { + var req = await SteamFriends.Internal.RequestClanOfficerList(Id); + return req.HasValue && req.Value.Success != 0x0; + } + + public IEnumerable GetOfficers() + { + for (int i = 0; i < SteamFriends.Internal.GetClanOfficerCount(Id); i++) + { + yield return new Friend(SteamFriends.Internal.GetClanOfficerByIndex(Id, i)); + } + } + } +} diff --git a/Facepunch.Steamworks/Structs/Connection.cs b/Facepunch.Steamworks/Structs/Connection.cs deleted file mode 100644 index d045d2a..0000000 --- a/Facepunch.Steamworks/Structs/Connection.cs +++ /dev/null @@ -1,117 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Steamworks.Data -{ - public struct Connection - { - internal uint Id; - - public override string ToString() => Id.ToString(); - - /// - /// Accept an incoming connection that has been received on a listen socket. - /// - public Result Accept() - { - return SteamNetworkingSockets.Internal.AcceptConnection( this ); - } - - /// - /// Disconnects from the remote host and invalidates the connection handle. Any unread data on the connection is discarded.. - /// reasonCode is defined and used by you. - /// - public bool Close( bool linger = false, int reasonCode = 0, string debugString = "Closing Connection" ) - { - return SteamNetworkingSockets.Internal.CloseConnection( this, reasonCode, debugString, linger ); - } - - /// - /// Get/Set connection user data - /// - public long UserData - { - get => SteamNetworkingSockets.Internal.GetConnectionUserData( this ); - set => SteamNetworkingSockets.Internal.SetConnectionUserData( this, value ); - } - - /// - /// A name for the connection, used mostly for debugging - /// - public string ConnectionName - { - get - { - if ( !SteamNetworkingSockets.Internal.GetConnectionName( this, out var strVal ) ) - return "ERROR"; - - return strVal; - } - - set => SteamNetworkingSockets.Internal.SetConnectionName( this, value ); - } - - - public Result SendMessage( IntPtr ptr, int size, SendType sendType = SendType.Reliable ) - { - return SteamNetworkingSockets.Internal.SendMessageToConnection( this, ptr, (uint) size, (int)sendType ); - } - - public unsafe Result SendMessage( byte[] data, SendType sendType = SendType.Reliable ) - { - fixed ( byte* ptr = data ) - { - return SendMessage( (IntPtr)ptr, data.Length, sendType ); - } - } - - public unsafe Result SendMessage( byte[] data, int offset, int length, SendType sendType = SendType.Reliable ) - { - fixed ( byte* ptr = data ) - { - return SendMessage( (IntPtr)ptr + offset, length, sendType ); - } - } - - public unsafe Result SendMessage( string str, SendType sendType = SendType.Reliable ) - { - var bytes = System.Text.Encoding.UTF8.GetBytes( str ); - return SendMessage( bytes, sendType ); - } - - /// - /// Flush any messages waiting on the Nagle timer and send them at the next transmission opportunity (often that means right now). - /// - public Result Flush() => SteamNetworkingSockets.Internal.FlushMessagesOnConnection( this ); - - public string DetailedStatus() - { - if ( SteamNetworkingSockets.Internal.GetDetailedConnectionStatus( this, out var strVal ) != 0 ) - return null; - - return strVal; - } - - /* - [ThreadStatic] - private static SteamNetworkingMessage_t[] messageBuffer; - - public IEnumerable Messages - { - get - { - if ( messageBuffer == null ) - messageBuffer = new SteamNetworkingMessage_t[128]; - - var num = SteamNetworkingSockets.Internal.ReceiveMessagesOnConnection( this, ref messageBuffer, messageBuffer.Length ); - - for ( int i = 0; i < num; i++) - { - yield return messageBuffer[i]; - messageBuffer[i].Release(); - } - } - }*/ - - } -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/DlcInformation.cs b/Facepunch.Steamworks/Structs/DlcInformation.cs index 6d02ff8..2a0654b 100644 --- a/Facepunch.Steamworks/Structs/DlcInformation.cs +++ b/Facepunch.Steamworks/Structs/DlcInformation.cs @@ -6,10 +6,24 @@ using System.Text; namespace Steamworks.Data { + /// + /// Provides information about a DLC. + /// public struct DlcInformation { + /// + /// The of the DLC. + /// public AppId AppId { get; internal set; } + + /// + /// The name of the DLC. + /// public string Name { get; internal set; } + + /// + /// Whether or not the DLC is available. + /// public bool Available { get; internal set; } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/DownloadProgress.cs b/Facepunch.Steamworks/Structs/DownloadProgress.cs index 1f64d45..7a77b33 100644 --- a/Facepunch.Steamworks/Structs/DownloadProgress.cs +++ b/Facepunch.Steamworks/Structs/DownloadProgress.cs @@ -6,10 +6,29 @@ using System.Text; namespace Steamworks.Data { + /// + /// Represents download progress. + /// public struct DownloadProgress { + /// + /// Whether or not the download is currently active. + /// public bool Active; + + /// + /// How many bytes have been downloaded. + /// public ulong BytesDownloaded; + + /// + /// How many bytes in total the download is. + /// public ulong BytesTotal; + + /// + /// Gets the amount of bytes left that need to be downloaded. + /// + public ulong BytesRemaining => BytesTotal - BytesDownloaded; } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/DurationControl.cs b/Facepunch.Steamworks/Structs/DurationControl.cs new file mode 100644 index 0000000..4161692 --- /dev/null +++ b/Facepunch.Steamworks/Structs/DurationControl.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + + +namespace Steamworks.Data +{ + /// + /// Sent for games with enabled anti indulgence / duration control, for enabled users. + /// Lets the game know whether persistent rewards or XP should be granted at normal rate, half rate, or zero rate. + /// + public struct DurationControl + { + internal DurationControl_t _inner; + + /// + /// appid generating playtime + /// + public AppId Appid => _inner.Appid; + + /// + /// is duration control applicable to user + game combination + /// + public bool Applicable => _inner.Applicable; + + /// + /// playtime since most recent 5 hour gap in playtime, only counting up to regulatory limit of playtime, in seconds + /// + internal TimeSpan PlaytimeInLastFiveHours => TimeSpan.FromSeconds( _inner.CsecsLast5h ); + + /// + /// playtime on current calendar day + /// + internal TimeSpan PlaytimeToday => TimeSpan.FromSeconds( _inner.CsecsLast5h ); + + /// + /// recommended progress + /// + internal DurationControlProgress Progress => _inner.Progress; + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/FileDetails.cs b/Facepunch.Steamworks/Structs/FileDetails.cs index 50bd8f7..d4d21f9 100644 --- a/Facepunch.Steamworks/Structs/FileDetails.cs +++ b/Facepunch.Steamworks/Structs/FileDetails.cs @@ -6,10 +6,16 @@ using System.Text; namespace Steamworks.Data { + /// + /// Represents details of a file. + /// public struct FileDetails { + /// + /// The size of the file in bytes. + /// public ulong SizeInBytes; public string Sha1; public uint Flags; } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/Friend.cs b/Facepunch.Steamworks/Structs/Friend.cs index 5a3da5e..4b45627 100644 --- a/Facepunch.Steamworks/Structs/Friend.cs +++ b/Facepunch.Steamworks/Structs/Friend.cs @@ -51,7 +51,7 @@ namespace Steamworks /// Sometimes we don't know the user's name. This will wait until we have /// downloaded the information on this user. /// - public async Task RequestInfoAsync( int timeout = 5000 ) + public async Task RequestInfoAsync() { await SteamFriends.CacheUserInformationAsync( Id, true ); } @@ -99,7 +99,7 @@ namespace Steamworks { get { - FriendGameInfo_t gameInfo = default( FriendGameInfo_t ); + FriendGameInfo_t gameInfo = default; if ( !SteamFriends.Internal.GetFriendGamePlayed( Id, ref gameInfo ) ) return null; @@ -184,5 +184,80 @@ namespace Steamworks return SteamFriends.Internal.ReplyToFriendMessage( Id, message ); } + + /// + /// Tries to get download the latest user stats + /// + /// True if successful, False if failure + public async Task RequestUserStatsAsync() + { + var result = await SteamUserStats.Internal.RequestUserStats( Id ); + return result.HasValue && result.Value.Result == Result.OK; + } + + /// + /// Gets a user stat. Must call RequestUserStats first. + /// + /// The name of the stat you want to get + /// Will return this value if not available + /// The value, or defult if not available + public float GetStatFloat( string statName, float defult = 0 ) + { + var val = defult; + + if ( !SteamUserStats.Internal.GetUserStat( Id, statName, ref val ) ) + return defult; + + return val; + } + + /// + /// Gets a user stat. Must call RequestUserStats first. + /// + /// The name of the stat you want to get + /// Will return this value if not available + /// The value, or defult if not available + public int GetStatInt( string statName, int defult = 0 ) + { + var val = defult; + + if ( !SteamUserStats.Internal.GetUserStat( Id, statName, ref val ) ) + return defult; + + return val; + } + + /// + /// Gets a user achievement state. Must call RequestUserStats first. + /// + /// The name of the achievement you want to get + /// Will return this value if not available + /// The value, or defult if not available + public bool GetAchievement( string statName, bool defult = false ) + { + var val = defult; + + if ( !SteamUserStats.Internal.GetUserAchievement( Id, statName, ref val ) ) + return defult; + + return val; + } + + /// + /// Gets a the time this achievement was unlocked. + /// + /// The name of the achievement you want to get + /// The time unlocked. If it wasn't unlocked, or you haven't downloaded the stats yet - will return DateTime.MinValue + public DateTime GetAchievementUnlockTime( string statName ) + { + bool val = false; + uint time = 0; + + if ( !SteamUserStats.Internal.GetUserAchievementAndUnlockTime( Id, statName, ref val, ref time ) || !val ) + return DateTime.MinValue; + + return Epoch.ToDateTime( time ); + } + } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/Image.cs b/Facepunch.Steamworks/Structs/Image.cs index 57b00cd..8918df6 100644 --- a/Facepunch.Steamworks/Structs/Image.cs +++ b/Facepunch.Steamworks/Structs/Image.cs @@ -7,10 +7,17 @@ namespace Steamworks.Data public uint Height; public byte[] Data; + /// + /// Returns the color of the pixel at the specified position. + /// + /// X-coordinate + /// Y-coordinate + /// The color. + /// If the X and Y or out of bounds. public Color GetPixel( int x, int y ) { - if ( x < 0 || x >= Width ) throw new System.Exception( "x out of bounds" ); - if ( y < 0 || y >= Height ) throw new System.Exception( "y out of bounds" ); + if ( x < 0 || x >= Width ) throw new System.ArgumentException( "x out of bounds" ); + if ( y < 0 || y >= Height ) throw new System.ArgumentException( "y out of bounds" ); Color c = new Color(); @@ -24,14 +31,21 @@ namespace Steamworks.Data return c; } + /// + /// Returns "{Width}x{Height} ({length of }bytes)" + /// + /// public override string ToString() { return $"{Width}x{Height} ({Data.Length}bytes)"; } } + /// + /// Represents a color. + /// public struct Color { public byte r, g, b, a; } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/InventoryDef.cs b/Facepunch.Steamworks/Structs/InventoryDef.cs index 4475986..8150940 100644 --- a/Facepunch.Steamworks/Structs/InventoryDef.cs +++ b/Facepunch.Steamworks/Structs/InventoryDef.cs @@ -98,11 +98,14 @@ namespace Steamworks if ( _properties!= null && _properties.TryGetValue( name, out string val ) ) return val; - uint _ = (uint)Helpers.MaxStringSize; + uint _ = (uint)Helpers.MemoryBufferSize; if ( !SteamInventory.Internal.GetItemDefinitionProperty( Id, name, out var vl, ref _ ) ) return null; - + + if (name == null) //return keys string + return vl; + if ( _properties == null ) _properties = new Dictionary(); @@ -132,7 +135,7 @@ namespace Steamworks string val = GetProperty( name ); if ( string.IsNullOrEmpty( val ) ) - return default( T ); + return default; try { @@ -140,7 +143,7 @@ namespace Steamworks } catch ( System.Exception ) { - return default( T ); + return default; } } @@ -235,4 +238,4 @@ namespace Steamworks } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/InventoryItem.cs b/Facepunch.Steamworks/Structs/InventoryItem.cs index c9e21cc..886ed9b 100644 --- a/Facepunch.Steamworks/Structs/InventoryItem.cs +++ b/Facepunch.Steamworks/Structs/InventoryItem.cs @@ -53,7 +53,7 @@ namespace Steamworks /// public async Task ConsumeAsync( int amount = 1 ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !SteamInventory.Internal.ConsumeItem( ref sresult, Id, (uint)amount ) ) return null; @@ -65,7 +65,7 @@ namespace Steamworks /// public async Task SplitStackAsync( int quantity = 1 ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !SteamInventory.Internal.TransferItemQuantity( ref sresult, Id, (uint)quantity, ulong.MaxValue ) ) return null; @@ -77,7 +77,7 @@ namespace Steamworks /// public async Task AddAsync( InventoryItem add, int quantity = 1 ) { - var sresult = default( SteamInventoryResult_t ); + var sresult = Defines.k_SteamInventoryResultInvalid; if ( !SteamInventory.Internal.TransferItemQuantity( ref sresult, add.Id, (uint)quantity, Id ) ) return null; @@ -100,7 +100,7 @@ namespace Steamworks internal static Dictionary GetProperties( SteamInventoryResult_t result, int index ) { - var strlen = (uint) Helpers.MaxStringSize; + var strlen = (uint) Helpers.MemoryBufferSize; if ( !SteamInventory.Internal.GetResultItemProperty( result, (uint)index, null, out var propNames, ref strlen ) ) return null; @@ -109,7 +109,7 @@ namespace Steamworks foreach ( var propertyName in propNames.Split( ',' ) ) { - strlen = (uint)Helpers.MaxStringSize; + strlen = (uint)Helpers.MemoryBufferSize; if ( SteamInventory.Internal.GetResultItemProperty( result, (uint)index, propertyName, out var strVal, ref strlen ) ) { @@ -130,17 +130,20 @@ namespace Steamworks { if ( Properties == null ) return DateTime.UtcNow; - var str = Properties["acquired"]; + if ( Properties.TryGetValue( "acquired", out var str ) ) + { + var y = int.Parse( str.Substring( 0, 4 ) ); + var m = int.Parse( str.Substring( 4, 2 ) ); + var d = int.Parse( str.Substring( 6, 2 ) ); - var y = int.Parse( str.Substring( 0, 4 ) ); - var m = int.Parse( str.Substring( 4, 2 ) ); - var d = int.Parse( str.Substring( 6, 2 ) ); + var h = int.Parse( str.Substring( 9, 2 ) ); + var mn = int.Parse( str.Substring( 11, 2 ) ); + var s = int.Parse( str.Substring( 13, 2 ) ); - var h = int.Parse( str.Substring( 9, 2 ) ); - var mn = int.Parse( str.Substring( 11, 2 ) ); - var s = int.Parse( str.Substring( 13, 2 ) ); + return new DateTime( y, m, d, h, mn, s, DateTimeKind.Utc ); + } - return new DateTime( y, m, d, h, mn, s, DateTimeKind.Utc ); + return DateTime.UtcNow; } } @@ -153,7 +156,11 @@ namespace Steamworks get { if ( Properties == null ) return null; - return Properties["origin"]; + + if ( Properties.TryGetValue( "origin", out var str ) ) + return str; + + return null; } } diff --git a/Facepunch.Steamworks/Structs/Leaderboard.cs b/Facepunch.Steamworks/Structs/Leaderboard.cs index 2010a33..ed7deb8 100644 --- a/Facepunch.Steamworks/Structs/Leaderboard.cs +++ b/Facepunch.Steamworks/Structs/Leaderboard.cs @@ -17,9 +17,10 @@ namespace Steamworks.Data public string Name => SteamUserStats.Internal.GetLeaderboardName( Id ); public LeaderboardSort Sort => SteamUserStats.Internal.GetLeaderboardSortMethod( Id ); public LeaderboardDisplay Display => SteamUserStats.Internal.GetLeaderboardDisplayType( Id ); + public int EntryCount => SteamUserStats.Internal.GetLeaderboardEntryCount(Id); static int[] detailsBuffer = new int[64]; - static int[] noDetails = new int[0]; + static int[] noDetails = Array.Empty(); /// /// Submit your score and replace your old score even if it was better @@ -58,6 +59,21 @@ namespace Steamworks.Data return r.Value.Result; } + /// + /// Fetches leaderboard entries for an arbitrary set of users on a specified leaderboard. + /// + public async Task GetScoresForUsersAsync( SteamId[] users ) + { + if ( users == null || users.Length == 0 ) + return null; + + var r = await SteamUserStats.Internal.DownloadLeaderboardEntriesForUsers( Id, users, users.Length ); + if ( !r.HasValue ) + return null; + + return await LeaderboardResultToEntries( r.Value ); + } + /// /// Used to query for a sequential range of leaderboard entries by leaderboard Sort. /// @@ -65,7 +81,7 @@ namespace Steamworks.Data { if ( offset <= 0 ) throw new System.ArgumentException( "Should be 1+", nameof( offset ) ); - var r = await SteamUserStats.Internal.DownloadLeaderboardEntries( Id, LeaderboardDataRequest.Global, offset, offset + count ); + var r = await SteamUserStats.Internal.DownloadLeaderboardEntries( Id, LeaderboardDataRequest.Global, offset, offset + count - 1 ); if ( !r.HasValue ) return null; @@ -121,7 +137,7 @@ namespace Steamworks.Data return output; } - internal async Task WaitForUserNames( LeaderboardEntry[] entries) + internal static async Task WaitForUserNames( LeaderboardEntry[] entries) { bool gotAll = false; while ( !gotAll ) diff --git a/Facepunch.Steamworks/Structs/Lobby.cs b/Facepunch.Steamworks/Structs/Lobby.cs index 037e712..0427c23 100644 --- a/Facepunch.Steamworks/Structs/Lobby.cs +++ b/Facepunch.Steamworks/Structs/Lobby.cs @@ -5,19 +5,22 @@ using System.Threading.Tasks; namespace Steamworks.Data { + /// + /// Represents a Steam lobby. + /// public struct Lobby { public SteamId Id { get; internal set; } - internal Lobby( SteamId id ) + public Lobby( SteamId id ) { Id = id; } /// - /// Try to join this room. Will return RoomEnter.Success on success, - /// and anything else is a failure + /// Try to join this room. Will return on success, + /// and anything else is a failure. /// public async Task Join() { @@ -37,9 +40,9 @@ namespace Steamworks.Data } /// - /// Invite another user to the lobby - /// will return true if the invite is successfully sent, whether or not the target responds - /// returns false if the local user is not connected to the Steam servers + /// Invite another user to the lobby. + /// Will return if the invite is successfully sent, whether or not the target responds + /// returns if the local user is not connected to the Steam servers /// public bool InviteFriend( SteamId steamid ) { @@ -47,12 +50,12 @@ namespace Steamworks.Data } /// - /// returns the number of users in the specified lobby + /// Gets the number of users in this lobby. /// public int MemberCount => SteamMatchmaking.Internal.GetNumLobbyMembers( Id ); /// - /// Returns current members. Need to be in the lobby to see the users. + /// Returns current members in the lobby. The current user must be in the lobby in order to see the users. /// public IEnumerable Members { @@ -67,7 +70,7 @@ namespace Steamworks.Data /// - /// Get data associated with this lobby + /// Get data associated with this lobby. /// public string GetData( string key ) { @@ -75,7 +78,7 @@ namespace Steamworks.Data } /// - /// Get data associated with this lobby + /// Set data associated with this lobby. /// public bool SetData( string key, string value ) { @@ -86,7 +89,7 @@ namespace Steamworks.Data } /// - /// Removes a metadata key from the lobby + /// Removes a metadata key from the lobby. /// public bool DeleteData( string key ) { @@ -94,7 +97,7 @@ namespace Steamworks.Data } /// - /// Get all data for this lobby + /// Get all data for this lobby. /// public IEnumerable> Data { @@ -113,7 +116,7 @@ namespace Steamworks.Data } /// - /// Gets per-user metadata for someone in this lobby + /// Gets per-user metadata for someone in this lobby. /// public string GetMemberData( Friend member, string key ) { @@ -121,43 +124,52 @@ namespace Steamworks.Data } /// - /// Sets per-user metadata (for the local user implicitly) + /// Sets per-user metadata (for the local user implicitly). /// - public void SetMemberData( Friend member, string key, string value ) + public void SetMemberData( string key, string value ) { SteamMatchmaking.Internal.SetLobbyMemberData( Id, key, value ); } /// - /// Sends a string to the chat room + /// Sends a string to the chat room. /// public bool SendChatString( string message ) { - var data = System.Text.Encoding.UTF8.GetBytes( message ); + //adding null terminator as it's used in Helpers.MemoryToString + var data = System.Text.Encoding.UTF8.GetBytes( message + '\0' ); return SendChatBytes( data ); } /// - /// Sends bytes the the chat room - /// this isn't exposed because there's no way to read raw bytes atm, - /// and I figure people can send json if they want something more advanced + /// Sends bytes to the chat room. /// - internal unsafe bool SendChatBytes( byte[] data ) + public unsafe bool SendChatBytes( byte[] data ) { fixed ( byte* ptr = data ) { - return SteamMatchmaking.Internal.SendLobbyChatMsg( Id, (IntPtr)ptr, data.Length ); + return SendChatBytesUnsafe( ptr, data.Length ); } } /// - /// Refreshes metadata for a lobby you're not necessarily in right now - /// you never do this for lobbies you're a member of, only if your - /// this will send down all the metadata associated with a lobby - /// this is an asynchronous call - /// returns false if the local user is not connected to the Steam servers - /// results will be returned by a LobbyDataUpdate_t callback - /// if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false + /// Sends bytes to the chat room from an unsafe buffer. + /// + public unsafe bool SendChatBytesUnsafe( byte* ptr, int length ) + { + return SteamMatchmaking.Internal.SendLobbyChatMsg( Id, (IntPtr)ptr, length ); + } + + /// + /// Refreshes metadata for a lobby you're not necessarily in right now. + /// + /// You never do this for lobbies you're a member of, only if your + /// this will send down all the metadata associated with a lobby. + /// This is an asynchronous call. + /// Returns if the local user is not connected to the Steam servers. + /// Results will be returned by a LobbyDataUpdate_t callback. + /// If the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to . + /// /// public bool Refresh() { @@ -165,8 +177,8 @@ namespace Steamworks.Data } /// - /// Max members able to join this lobby. Cannot be over 250. - /// Can only be set by the owner + /// Max members able to join this lobby. Cannot be over 250. + /// Can only be set by the owner of the lobby. /// public int MaxMembers { @@ -174,26 +186,42 @@ namespace Steamworks.Data set => SteamMatchmaking.Internal.SetLobbyMemberLimit( Id, value ); } + /// + /// Sets the lobby as public. + /// public bool SetPublic() { return SteamMatchmaking.Internal.SetLobbyType( Id, LobbyType.Public ); } + /// + /// Sets the lobby as private. + /// public bool SetPrivate() { return SteamMatchmaking.Internal.SetLobbyType( Id, LobbyType.Private ); } + /// + /// Sets the lobby as invisible. + /// public bool SetInvisible() { return SteamMatchmaking.Internal.SetLobbyType( Id, LobbyType.Invisible ); } + /// + /// Sets the lobby as friends only. + /// public bool SetFriendsOnly() { return SteamMatchmaking.Internal.SetLobbyType( Id, LobbyType.FriendsOnly ); } + /// + /// Set whether or not the lobby can be joined. + /// + /// Whether or not the lobby can be joined. public bool SetJoinable( bool b ) { return SteamMatchmaking.Internal.SetLobbyJoinable( Id, b ); @@ -201,7 +229,7 @@ namespace Steamworks.Data /// /// [SteamID variant] - /// Allows the owner to set the game server associated with the lobby. Triggers the + /// Allows the owner to set the game server associated with the lobby. Triggers the /// Steammatchmaking.OnLobbyGameCreated event. /// public void SetGameServer( SteamId steamServer ) @@ -214,7 +242,7 @@ namespace Steamworks.Data /// /// [IP/Port variant] - /// Allows the owner to set the game server associated with the lobby. Triggers the + /// Allows the owner to set the game server associated with the lobby. Triggers the /// Steammatchmaking.OnLobbyGameCreated event. /// public void SetGameServer( string ip, ushort port ) @@ -226,7 +254,7 @@ namespace Steamworks.Data } /// - /// Gets the details of the lobby's game server, if set. Returns true if the lobby is + /// Gets the details of the lobby's game server, if set. Returns true if the lobby is /// valid and has a server set, otherwise returns false. /// public bool GetGameServer( ref uint ip, ref ushort port, ref SteamId serverId ) @@ -235,7 +263,7 @@ namespace Steamworks.Data } /// - /// You must be the lobby owner to set the owner + /// Gets or sets the owner of the lobby. You must be the lobby owner to set the owner /// public Friend Owner { @@ -244,8 +272,8 @@ namespace Steamworks.Data } /// - /// Check if the specified SteamId owns the lobby + /// Check if the specified SteamId owns the lobby. /// public bool IsOwnedBy( SteamId k ) => Owner.Id == k; } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/MatchMakingKeyValuePair.cs b/Facepunch.Steamworks/Structs/MatchMakingKeyValuePair.cs index b82ecf1..401eb05 100644 --- a/Facepunch.Steamworks/Structs/MatchMakingKeyValuePair.cs +++ b/Facepunch.Steamworks/Structs/MatchMakingKeyValuePair.cs @@ -4,7 +4,7 @@ using System.Runtime.InteropServices; namespace Steamworks.Data { [StructLayout( LayoutKind.Sequential, Pack = Platform.StructPackSize )] - internal struct MatchMakingKeyValuePair + internal partial struct MatchMakingKeyValuePair { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] internal string Key; diff --git a/Facepunch.Steamworks/Structs/NetAddress.cs b/Facepunch.Steamworks/Structs/NetAddress.cs deleted file mode 100644 index 7add599..0000000 --- a/Facepunch.Steamworks/Structs/NetAddress.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System.Net; -using System.Runtime.InteropServices; - -namespace Steamworks.Data -{ - [StructLayout( LayoutKind.Explicit, Size = 18, Pack = 1 )] - public struct NetAddress - { - [FieldOffset( 0 )] - internal IPV4 ip; - - [FieldOffset( 16 )] - internal ushort port; - - internal struct IPV4 - { - internal ulong m_8zeros; - internal ushort m_0000; - internal ushort m_ffff; - internal byte ip0; - internal byte ip1; - internal byte ip2; - internal byte ip3; - } - - /// - /// Any IP, specific port - /// - public static NetAddress AnyIp( ushort port ) - { - return new NetAddress - { - ip = new IPV4 - { - m_8zeros = 0, - m_0000 = 0, - m_ffff = 0, - ip0 = 0, - ip1 = 0, - ip2 = 0, - ip3 = 0, - }, - - port = port - }; - } - - /// - /// Localhost IP, specific port - /// - public static NetAddress LocalHost( ushort port ) - { - return new NetAddress - { - ip = new IPV4 - { - m_8zeros = 0, - m_0000 = 0, - m_ffff = 0, - ip0 = 0, - ip1 = 0, - ip2 = 0, - ip3 = 1, - }, - - port = port - }; - } - - /// - /// Specific IP, specific port - /// - public static NetAddress From( string addrStr, ushort port ) - { - return From( IPAddress.Parse( addrStr ), port ); - } - - /// - /// Specific IP, specific port - /// - public static NetAddress From( IPAddress address, ushort port ) - { - var addr = address.GetAddressBytes(); - - if ( addr.Length == 4 ) - { - return new NetAddress - { - ip = new IPV4 - { - m_8zeros = 0, - m_0000 = 0, - m_ffff = 0xffff, - ip0 = addr[0], - ip1 = addr[1], - ip2 = addr[2], - ip3 = addr[3], - }, - - port = port - }; - } - - throw new System.NotImplementedException( "Oops - no IPV6 support yet?" ); - } - } -} diff --git a/Facepunch.Steamworks/Structs/NetIdentity.cs b/Facepunch.Steamworks/Structs/NetIdentity.cs deleted file mode 100644 index c466c99..0000000 --- a/Facepunch.Steamworks/Structs/NetIdentity.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Runtime.InteropServices; - -namespace Steamworks.Data -{ - [StructLayout( LayoutKind.Explicit, Size = 136, Pack = 1 )] - public struct NetIdentity - { - [FieldOffset( 0 )] - internal IdentityType type; - - [FieldOffset( 4 )] - internal int m_cbSize; - - [FieldOffset( 8 )] - internal SteamId steamID; - - public static implicit operator NetIdentity( SteamId value ) - { - return new NetIdentity { steamID = value, type = IdentityType.SteamID, m_cbSize = 8 }; - } - - public static implicit operator SteamId( NetIdentity value ) - { - return value.steamID; - } - - public override string ToString() => $"{type};{m_cbSize};{steamID}"; - - internal enum IdentityType - { - Invalid = 0, - IPAddress = 1, - GenericString = 2, - GenericBytes = 3, - SteamID = 16 - } - } -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/PartyBeacon.cs b/Facepunch.Steamworks/Structs/PartyBeacon.cs index 2bb4145..c235008 100644 --- a/Facepunch.Steamworks/Structs/PartyBeacon.cs +++ b/Facepunch.Steamworks/Structs/PartyBeacon.cs @@ -10,7 +10,7 @@ namespace Steamworks internal PartyBeaconID_t Id; /// - /// Creator of the beacon + /// Gets the owner of the beacon. /// public SteamId Owner { @@ -18,13 +18,13 @@ namespace Steamworks { var owner = default( SteamId ); var location = default( SteamPartyBeaconLocation_t ); - Internal.GetBeaconDetails( Id, ref owner, ref location, out var strVal ); + Internal.GetBeaconDetails( Id, ref owner, ref location, out _ ); return owner; } } /// - /// Creator of the beacon + /// Gets metadata related to the beacon. /// public string MetaData { @@ -32,14 +32,14 @@ namespace Steamworks { var owner = default( SteamId ); var location = default( SteamPartyBeaconLocation_t ); - Internal.GetBeaconDetails( Id, ref owner, ref location, out var strVal ); + _ = Internal.GetBeaconDetails( Id, ref owner, ref location, out var strVal ); return strVal; } } /// /// Will attempt to join the party. If successful will return a connection string. - /// If failed, will return null + /// If failed, will return /// public async Task JoinAsync() { @@ -52,7 +52,7 @@ namespace Steamworks /// /// 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 + /// When that user joins your party, call this method to notify Steam that the user has joined successfully. /// public void OnReservationCompleted( SteamId steamid ) { @@ -70,11 +70,11 @@ namespace Steamworks } /// - /// Turn off the beacon + /// Turn off the beacon. /// public bool Destroy() { return Internal.DestroyBeacon( Id ); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/RemotePlaySession.cs b/Facepunch.Steamworks/Structs/RemotePlaySession.cs new file mode 100644 index 0000000..f39693f --- /dev/null +++ b/Facepunch.Steamworks/Structs/RemotePlaySession.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +namespace Steamworks.Data +{ + /// + /// Represents a RemotePlaySession from the SteamRemotePlay interface + /// + public struct RemotePlaySession + { + public uint Id { get; set; } + + public override string ToString() => Id.ToString(); + public static implicit operator RemotePlaySession( uint value ) => new RemotePlaySession() { Id = value }; + public static implicit operator uint( RemotePlaySession value ) => value.Id; + + /// + /// Returns true if this session was valid when created. This will stay true even + /// after disconnection - so be sure to watch SteamRemotePlay.OnSessionDisconnected + /// + public bool IsValid => Id > 0; + + /// + /// Get the SteamID of the connected user + /// + public SteamId SteamId => SteamRemotePlay.Internal.GetSessionSteamID( Id ); + + /// + /// Get the name of the session client device + /// + public string ClientName => SteamRemotePlay.Internal.GetSessionClientName( Id ); + + /// + /// Get the name of the session client device + /// + public SteamDeviceFormFactor FormFactor => SteamRemotePlay.Internal.GetSessionClientFormFactor( Id ); + } +} diff --git a/Facepunch.Steamworks/Structs/Screenshot.cs b/Facepunch.Steamworks/Structs/Screenshot.cs index 2d6e920..623448f 100644 --- a/Facepunch.Steamworks/Structs/Screenshot.cs +++ b/Facepunch.Steamworks/Structs/Screenshot.cs @@ -6,6 +6,9 @@ using System.Text; namespace Steamworks.Data { + /// + /// Represents a screenshot that was taken by a user. + /// public struct Screenshot { internal ScreenshotHandle Value; @@ -19,19 +22,16 @@ namespace Steamworks.Data } /// - /// Tags a user as being visible in the screenshot + /// Sets the location of the screenshot. /// public bool SetLocation( string location ) { return SteamScreenshots.Internal.SetLocation( Value, location ); } - /// - /// Tags a user as being visible in the screenshot - /// public bool TagPublishedFile( PublishedFileId file ) { return SteamScreenshots.Internal.TagPublishedFile( Value, file ); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/Server.cs b/Facepunch.Steamworks/Structs/Server.cs index 765e052..95e333a 100644 --- a/Facepunch.Steamworks/Structs/Server.cs +++ b/Facepunch.Steamworks/Structs/Server.cs @@ -9,8 +9,6 @@ namespace Steamworks.Data { public struct ServerInfo : IEquatable { - static ISteamMatchmakingServers Internal => Steamworks.ServerList.Base.Internal; - public string Name { get; set; } public int Ping { get; set; } public string GameDir { get; set; } @@ -144,4 +142,4 @@ namespace Steamworks.Data return Address.GetHashCode() + SteamId.GetHashCode() + ConnectionPort.GetHashCode() + QueryPort.GetHashCode(); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/ServerInit.cs b/Facepunch.Steamworks/Structs/ServerInit.cs index 74b8355..d620726 100644 --- a/Facepunch.Steamworks/Structs/ServerInit.cs +++ b/Facepunch.Steamworks/Structs/ServerInit.cs @@ -14,7 +14,6 @@ namespace Steamworks public struct SteamServerInit { public IPAddress IpAddress; - public ushort SteamPort; public ushort GamePort; public ushort QueryPort; public bool Secure; @@ -52,7 +51,6 @@ namespace Steamworks Secure = true; VersionString = "1.0.0.0"; IpAddress = null; - SteamPort = 0; } public ServerInit(IPAddress ip, string modDir, string gameDesc) @@ -80,15 +78,6 @@ namespace Steamworks return this; } - /// - /// Set the Steam quert port - /// - public SteamServerInit WithRandomSteamPort() - { - SteamPort = (ushort)new Random().Next( 10000, 60000 ); - return this; - } - /// /// If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE into usQueryPort, then it causes the game server API to use /// "GameSocketShare" mode, which means that the game is responsible for sending and receiving UDP packets for the master diff --git a/Facepunch.Steamworks/Structs/Socket.cs b/Facepunch.Steamworks/Structs/Socket.cs deleted file mode 100644 index d589acb..0000000 --- a/Facepunch.Steamworks/Structs/Socket.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Steamworks.Data -{ - public struct Socket - { - internal uint Id; - public override string ToString() => Id.ToString(); - - /// - /// Destroy a listen socket. All the connections that were accepting on the listen - /// socket are closed ungracefully. - /// - public bool Close() - { - return SteamNetworkingSockets.Internal.CloseListenSocket( this ); - } - - public SocketInterface Interface - { - get => SteamNetworkingSockets.GetSocketInterface( Id ); - set => SteamNetworkingSockets.SetSocketInterface( Id, value ); - } - } -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/Stat.cs b/Facepunch.Steamworks/Structs/Stat.cs index 1a17861..2aecda1 100644 --- a/Facepunch.Steamworks/Structs/Stat.cs +++ b/Facepunch.Steamworks/Structs/Stat.cs @@ -36,7 +36,7 @@ namespace Steamworks.Data { double val = 0.0; - if ( SteamUserStats.Internal.GetGlobalStat2( Name, ref val ) ) + if ( SteamUserStats.Internal.GetGlobalStat( Name, ref val ) ) return val; return 0; @@ -45,7 +45,7 @@ namespace Steamworks.Data public long GetGlobalInt() { long val = 0; - SteamUserStats.Internal.GetGlobalStat1( Name, ref val ); + SteamUserStats.Internal.GetGlobalStat( Name, ref val ); return val; } @@ -56,7 +56,7 @@ namespace Steamworks.Data var r = new long[days]; - var rows = SteamUserStats.Internal.GetGlobalStatHistory1( Name, r, (uint) r.Length * sizeof(long) ); + var rows = SteamUserStats.Internal.GetGlobalStatHistory( Name, r, (uint) r.Length * sizeof(long) ); if ( days != rows ) r = r.Take( rows ).ToArray(); @@ -71,7 +71,7 @@ namespace Steamworks.Data var r = new double[days]; - var rows = SteamUserStats.Internal.GetGlobalStatHistory2( Name, r, (uint)r.Length * sizeof( double ) ); + var rows = SteamUserStats.Internal.GetGlobalStatHistory( Name, r, (uint)r.Length * sizeof( double ) ); if ( days != rows ) r = r.Take( rows ).ToArray(); @@ -85,14 +85,14 @@ namespace Steamworks.Data if ( UserId > 0 ) { - SteamUserStats.Internal.GetUserStat2( UserId, Name, ref val ); + SteamUserStats.Internal.GetUserStat( UserId, Name, ref val ); } else { - SteamUserStats.Internal.GetStat2( Name, ref val ); + SteamUserStats.Internal.GetStat( Name, ref val ); } - return 0; + return val; } public int GetInt() @@ -101,11 +101,11 @@ namespace Steamworks.Data if ( UserId > 0 ) { - SteamUserStats.Internal.GetUserStat1( UserId, Name, ref val ); + SteamUserStats.Internal.GetUserStat( UserId, Name, ref val ); } else { - SteamUserStats.Internal.GetStat1( Name, ref val ); + SteamUserStats.Internal.GetStat( Name, ref val ); } return val; @@ -114,13 +114,13 @@ namespace Steamworks.Data public bool Set( int val ) { LocalUserOnly(); - return SteamUserStats.Internal.SetStat1( Name, val ); + return SteamUserStats.Internal.SetStat( Name, val ); } public bool Set( float val ) { LocalUserOnly(); - return SteamUserStats.Internal.SetStat2( Name, val ); + return SteamUserStats.Internal.SetStat( Name, val ); } public bool Add( int val ) @@ -147,4 +147,4 @@ namespace Steamworks.Data return SteamUserStats.Internal.StoreStats(); } } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/SteamId.cs b/Facepunch.Steamworks/Structs/SteamId.cs index 48c0a0c..9977e5f 100644 --- a/Facepunch.Steamworks/Structs/SteamId.cs +++ b/Facepunch.Steamworks/Structs/SteamId.cs @@ -6,6 +6,9 @@ using System.Text; namespace Steamworks { + /// + /// Represents the ID of a user or steam lobby. + /// public struct SteamId { public ulong Value; @@ -26,4 +29,4 @@ namespace Steamworks public bool IsValid => Value != default; } -} \ No newline at end of file +} diff --git a/Facepunch.Steamworks/Structs/SteamIpAddress.cs b/Facepunch.Steamworks/Structs/SteamIpAddress.cs new file mode 100644 index 0000000..202ee17 --- /dev/null +++ b/Facepunch.Steamworks/Structs/SteamIpAddress.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + + +namespace Steamworks.Data +{ + [StructLayout( LayoutKind.Explicit, Pack = Platform.StructPlatformPackSize )] + internal partial struct SteamIPAddress + { + [FieldOffset( 0 )] + public uint Ip4Address; // Host Order + + [FieldOffset( 16 )] + internal SteamIPType Type; // m_eType ESteamIPType + + public static implicit operator System.Net.IPAddress( SteamIPAddress value ) + { + if ( value.Type == SteamIPType.Type4 ) + return Utility.Int32ToIp( value.Ip4Address ); + + throw new System.Exception( $"Oops - can't convert SteamIPAddress to System.Net.IPAddress because no-one coded support for {value.Type} yet" ); + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/SteamNetworking.cs b/Facepunch.Steamworks/Structs/SteamNetworking.cs deleted file mode 100644 index 3b8f786..0000000 --- a/Facepunch.Steamworks/Structs/SteamNetworking.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Runtime.InteropServices; -using System.Text; - -namespace Steamworks.Data -{ - delegate void FSteamNetworkingSocketsDebugOutput (DebugOutputType nType, string pszMsg ); - - public struct SteamNetworkingPOPID - { - public uint Value; - - public static implicit operator SteamNetworkingPOPID( uint value ) - { - return new SteamNetworkingPOPID { Value = value }; - } - - public static implicit operator uint( SteamNetworkingPOPID value ) - { - return value.Value; - } - - public override string ToString() => Value.ToString(); - } - - [StructLayout( LayoutKind.Sequential )] - public struct SteamNetworkingQuickConnectionStatus - { - public ConnectionState state; - public int ping; - public float connectionQualityLocal; - public float connectionQualityRemote; - public float outPacketsPerSecond; - public float outBytesPerSecond; - public float inPacketsPerSecond; - public float inBytesPerSecond; - public int sendRateBytesPerSecond; - public int pendingUnreliable; - public int pendingReliable; - public int sentUnackedReliable; - public long queueTime; - - [MarshalAs( UnmanagedType.ByValArray, SizeConst = 16 )] - uint[] reserved; - } - - struct SteamDatagramRelayAuthTicket - { - // Not implemented - }; - - struct SteamDatagramHostedAddress - { - // Not implemented - } -} \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/Ugc.cs b/Facepunch.Steamworks/Structs/Ugc.cs index f902b33..20a459b 100644 --- a/Facepunch.Steamworks/Structs/Ugc.cs +++ b/Facepunch.Steamworks/Structs/Ugc.cs @@ -1,9 +1,13 @@ using System.Linq; +#pragma warning disable 649 + namespace Steamworks.Data { public struct Ugc { internal UGCHandle_t Handle; } -} \ No newline at end of file +} + +#pragma warning restore 649 diff --git a/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs new file mode 100644 index 0000000..8b95d33 --- /dev/null +++ b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Steamworks.Data +{ + public struct UgcAdditionalPreview + { + internal UgcAdditionalPreview( string urlOrVideoID, string originalFileName, ItemPreviewType itemPreviewType ) + { + this.UrlOrVideoID = urlOrVideoID; + this.OriginalFileName = originalFileName; + this.ItemPreviewType = itemPreviewType; + } + + public string UrlOrVideoID { get; private set; } + public string OriginalFileName { get; private set; } + public ItemPreviewType ItemPreviewType { get; private set; } + } +} diff --git a/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs.meta b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs.meta new file mode 100644 index 0000000..511f7d5 --- /dev/null +++ b/Facepunch.Steamworks/Structs/UgcAdditionalPreview.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 48f086235d5dbeb44bccbb40802e30fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Facepunch.Steamworks/Structs/UgcEditor.cs b/Facepunch.Steamworks/Structs/UgcEditor.cs index b842df8..ffd00f0 100644 --- a/Facepunch.Steamworks/Structs/UgcEditor.cs +++ b/Facepunch.Steamworks/Structs/UgcEditor.cs @@ -33,11 +33,22 @@ namespace Steamworks.Ugc /// public static Editor NewCommunityFile => new Editor( WorkshopFileType.Community ); + /// + /// Create a Collection + /// Add items using Item.AddDependency() + /// + public static Editor NewCollection => new Editor( WorkshopFileType.Collection ); + /// /// Workshop item that is meant to be voted on for the purpose of selling in-game /// public static Editor NewMicrotransactionFile => new Editor( WorkshopFileType.Microtransaction ); - + + /// + /// Workshop item that is meant to be managed by the game. It is queryable by the API, but isn't visible on the web browser. + /// + public static Editor NewGameManagedFile => new Editor(WorkshopFileType.GameManagedItem); + public Editor ForAppId( AppId id ) { this.consumerAppId = id; return this; } string Title; @@ -69,8 +80,9 @@ namespace Steamworks.Ugc public Editor WithPrivateVisibility() { Visibility = RemoteStoragePublishedFileVisibility.Private; return this; } List Tags; - Dictionary KeyValueTags; - + Dictionary> KeyValueTags; + HashSet KeyValueTagsToRemove; + public Editor WithTag( string tag ) { if ( Tags == null ) Tags = new List(); @@ -80,14 +92,41 @@ namespace Steamworks.Ugc return this; } + /// + /// Adds a key-value tag pair to an item. + /// Keys can map to multiple different values (1-to-many relationship). + /// Key names are restricted to alpha-numeric characters and the '_' character. + /// Both keys and values cannot exceed 255 characters in length. Key-value tags are searchable by exact match only. + /// To replace all values associated to one key use RemoveKeyValueTags then AddKeyValueTag. + /// public Editor AddKeyValueTag(string key, string value) { - if (KeyValueTags == null) KeyValueTags = new Dictionary(); - KeyValueTags.Add(key, value); + if (KeyValueTags == null) + KeyValueTags = new Dictionary>(); + + if ( KeyValueTags.TryGetValue( key, out var list ) ) + list.Add( value ); + else + KeyValueTags[key] = new List() { value }; + return this; } - public async Task SubmitAsync( IProgress progress = null ) + /// + /// Removes a key and all values associated to it. + /// You can remove up to 100 keys per item update. + /// If you need remove more tags than that you'll need to make subsequent item updates. + /// + public Editor RemoveKeyValueTags( string key ) + { + if ( KeyValueTagsToRemove == null ) + KeyValueTagsToRemove = new HashSet(); + + KeyValueTagsToRemove.Add( key ); + return this; + } + + public async Task SubmitAsync( IProgress progress = null, Action onItemCreated = null ) { var result = default( PublishResult ); @@ -96,6 +135,19 @@ namespace Steamworks.Ugc if ( consumerAppId == 0 ) consumerAppId = SteamClient.AppId; + // + // Checks + // + if ( ContentFolder != null ) + { + if ( !System.IO.Directory.Exists( ContentFolder.FullName ) ) + throw new System.Exception( $"UgcEditor - Content Folder doesn't exist ({ContentFolder.FullName})" ); + + if ( !ContentFolder.EnumerateFiles( "*", System.IO.SearchOption.AllDirectories ).Any() ) + throw new System.Exception( $"UgcEditor - Content Folder is empty" ); + } + + // // Item Create // @@ -114,6 +166,9 @@ namespace Steamworks.Ugc fileId = created.Value.PublishedFileId; result.NeedsWorkshopAgreement = created.Value.UserNeedsToAcceptWorkshopLegalAgreement; result.FileId = fileId; + + if ( onItemCreated != null ) + onItemCreated( result ); } @@ -143,11 +198,19 @@ namespace Steamworks.Ugc } } - if (KeyValueTags != null && KeyValueTags.Count > 0) + if ( KeyValueTagsToRemove != null) { - foreach (var keyValueTag in KeyValueTags) + foreach ( var key in KeyValueTagsToRemove ) + SteamUGC.Internal.RemoveItemKeyValueTags( handle, key ); + } + + if ( KeyValueTags != null ) + { + foreach ( var keyWithValues in KeyValueTags ) { - SteamUGC.Internal.AddItemKeyValueTag(handle, keyValueTag.Key, keyValueTag.Value); + var key = keyWithValues.Key; + foreach ( var value in keyWithValues.Value ) + SteamUGC.Internal.AddItemKeyValueTag( handle, key, value ); } } @@ -183,7 +246,7 @@ namespace Steamworks.Ugc case ItemUpdateStatus.UploadingContent: { var uploaded = total > 0 ? ((float)processed / (float)total) : 0.0f; - progress?.Report( 0.2f + uploaded * 0.7f ); + progress?.Report( 0.2f + uploaded * 0.6f ); break; } case ItemUpdateStatus.UploadingPreviewFile: @@ -204,7 +267,7 @@ namespace Steamworks.Ugc progress?.Report( 1 ); - var updated = updating.Result; + var updated = updating.GetResult(); if ( !updated.HasValue ) return result; diff --git a/Facepunch.Steamworks/Structs/UgcItem.cs b/Facepunch.Steamworks/Structs/UgcItem.cs index fe5dd05..fb63898 100644 --- a/Facepunch.Steamworks/Structs/UgcItem.cs +++ b/Facepunch.Steamworks/Structs/UgcItem.cs @@ -39,6 +39,11 @@ namespace Steamworks.Ugc /// public string[] Tags { get; internal set; } + /// + /// A dictionary of key value tags for this item, only available from queries WithKeyValueTags(true) + /// + public Dictionary KeyValueTags { get; internal set; } + /// /// App Id of the app that created this item /// @@ -103,6 +108,15 @@ namespace Steamworks.Ugc /// The number of downvotes of this item /// public uint VotesDown => details.VotesDown; + /// + /// Dependencies/children of this item or collection, available only from WithDependencies(true) queries + /// + public PublishedFileId[] Children; + + /// + /// Additional previews of this item or collection, available only from WithAdditionalPreviews(true) queries + /// + public UgcAdditionalPreview[] AdditionalPreviews { get; internal set; } public bool IsInstalled => (State & ItemState.Installed) == ItemState.Installed; public bool IsDownloading => (State & ItemState.Downloading) == ItemState.Downloading; @@ -126,11 +140,11 @@ namespace Steamworks.Ugc /// /// Start downloading this item. - /// If this returns false the item isn#t getting downloaded. + /// If this returns false the item isn't getting downloaded. /// public bool Download( bool highPriority = false ) { - return SteamUGC.Internal.DownloadItem( Id, highPriority ); + return SteamUGC.Download( Id, highPriority ); } /// @@ -183,8 +197,7 @@ namespace Steamworks.Ugc ulong size = 0; uint ts = 0; - - if ( !SteamUGC.Internal.GetItemInstallInfo( Id, ref size, out var strVal, ref ts ) ) + if ( !SteamUGC.Internal.GetItemInstallInfo( Id, ref size, out _, ref ts ) ) return 0; return (long) size; @@ -218,10 +231,18 @@ namespace Steamworks.Ugc public static async Task GetAsync( PublishedFileId id, int maxageseconds = 60 * 30 ) { - var result = await SteamUGC.Internal.RequestUGCDetails( id, (uint) maxageseconds ); - if ( !result.HasValue ) return null; + var file = await Steamworks.Ugc.Query.All + .WithFileId( id ) + .WithLongDescription( true ) + .GetPageAsync( 1 ); - return From( result.Value.Details ); + if ( !file.HasValue ) return null; + using ( file.Value ) + { + if ( file.Value.ResultCount == 0 ) return null; + + return file.Value.Entries.First(); + } } internal static Item From( SteamUGCDetails_t details ) @@ -258,79 +279,13 @@ namespace Steamworks.Ugc } /// - /// Allows the user to subscribe to this item and wait for it to be downloaded + /// Allows the user to subscribe to download this item asyncronously /// If CancellationToken is default then there is 60 seconds timeout /// Progress will be set to 0-1 /// - public async Task SubscribeDownloadAsync( Action progress = null, CancellationToken ct = default, int milisecondsUpdateDelay = 60 ) + public async Task DownloadAsync( Action progress = null, int milisecondsUpdateDelay = 60, CancellationToken ct = default ) { - if ( ct == default ) - ct = new CancellationTokenSource( TimeSpan.FromSeconds( 60 ) ).Token; - - progress?.Invoke( 0 ); - await Task.Delay( milisecondsUpdateDelay ); - - //Subscribe - { - var subResult = await SteamUGC.Internal.SubscribeItem( _id ); - if ( subResult?.Result != Result.OK ) - return false; - } - - progress?.Invoke( 0.1f ); - await Task.Delay( milisecondsUpdateDelay ); - - //Try to start downloading - { - if ( Download( true ) == false ) - return State.HasFlag( ItemState.Installed ); - - //Steam docs about Download: - //If the return value is true then register and wait - //for the Callback DownloadItemResult_t before calling - //GetItemInstallInfo or accessing the workshop item on disk. - - //Wait for DownloadItemResult_t - { - var downloadStarted = false; - Action onDownloadStarted = null; - onDownloadStarted = r => - { - SteamUGC.OnDownloadItemResult -= onDownloadStarted; - downloadStarted = true; - }; - SteamUGC.OnDownloadItemResult += onDownloadStarted; - - while ( downloadStarted == false ) - { - if ( ct.IsCancellationRequested ) - break; - - await Task.Delay( milisecondsUpdateDelay ); - } - } - } - - progress?.Invoke( 0.2f ); - await Task.Delay( milisecondsUpdateDelay ); - - //Wait for downloading completion - { - while ( true ) - { - if ( ct.IsCancellationRequested ) - break; - - progress?.Invoke( 0.2f + DownloadAmount * 0.8f ); - - if ( !IsDownloading && State.HasFlag( ItemState.Installed ) ) - break; - - await Task.Delay( milisecondsUpdateDelay ); - } - } - - return State.HasFlag( ItemState.Installed ); + return await SteamUGC.DownloadAsync( Id, progress, milisecondsUpdateDelay, ct ); } /// @@ -419,10 +374,15 @@ namespace Steamworks.Ugc public ulong NumSecondsPlayedDuringTimePeriod { get; internal set; } public ulong NumPlaytimeSessionsDuringTimePeriod { get; internal set; } - /// - /// The URL to the preview image for this item - /// - public string PreviewImageUrl { get; internal set; } + /// + /// The URL to the preview image for this item + /// + public string PreviewImageUrl { get; internal set; } + + /// + /// The metadata string for this item, only available from queries WithMetadata(true) + /// + public string Metadata { get; internal set; } /// /// Edit this item @@ -431,7 +391,19 @@ namespace Steamworks.Ugc { return new Ugc.Editor( Id ); } - + + public async Task AddDependency( PublishedFileId child ) + { + var r = await SteamUGC.Internal.AddDependency( Id, child ); + return r?.Result == Result.OK; + } + + public async Task RemoveDependency( PublishedFileId child ) + { + var r = await SteamUGC.Internal.RemoveDependency( Id, child ); + return r?.Result == Result.OK; + } + public Result Result => details.Result; } } diff --git a/Facepunch.Steamworks/Structs/UgcQuery.cs b/Facepunch.Steamworks/Structs/UgcQuery.cs index 986bdcd..79893bb 100644 --- a/Facepunch.Steamworks/Structs/UgcQuery.cs +++ b/Facepunch.Steamworks/Structs/UgcQuery.cs @@ -124,7 +124,7 @@ namespace Steamworks.Ugc } else { - handle = SteamUGC.Internal.CreateQueryAllUGCRequest1( queryType, matchingType, creatorApp.Value, consumerApp.Value, (uint)page ); + handle = SteamUGC.Internal.CreateQueryAllUGCRequest( queryType, matchingType, creatorApp.Value, consumerApp.Value, (uint)page ); } ApplyReturns(handle); @@ -148,7 +148,12 @@ namespace Steamworks.Ugc Handle = result.Value.Handle, ResultCount = (int) result.Value.NumResultsReturned, TotalCount = (int)result.Value.TotalMatchingResults, - CachedData = result.Value.CachedData + CachedData = result.Value.CachedData, + ReturnsKeyValueTags = WantsReturnKeyValueTags ?? false, + ReturnsDefaultStats = WantsDefaultStats ?? true, //true by default + ReturnsMetadata = WantsReturnMetadata ?? false, + ReturnsChildren = WantsReturnChildren ?? false, + ReturnsAdditionalPreviews = WantsReturnAdditionalPreviews ?? false, }; } @@ -241,7 +246,9 @@ namespace Steamworks.Ugc bool? WantsReturnOnlyIDs; public QueryType WithOnlyIDs(bool b) { WantsReturnOnlyIDs = b; return this; } bool? WantsReturnKeyValueTags; - public QueryType WithKeyValueTag(bool b) { WantsReturnKeyValueTags = b; return this; } + public QueryType WithKeyValueTags(bool b) { WantsReturnKeyValueTags = b; return this; } + [Obsolete( "Renamed to WithKeyValueTags" )] + public QueryType WithKeyValueTag(bool b) { WantsReturnKeyValueTags = b; return this; } bool? WantsReturnLongDescription; public QueryType WithLongDescription(bool b) { WantsReturnLongDescription = b; return this; } bool? WantsReturnMetadata; @@ -299,5 +306,15 @@ namespace Steamworks.Ugc } #endregion - } + + #region LoadingBehaviour + + bool? WantsDefaultStats; //true by default + /// + /// Set to false to disable, by default following stats are loaded: NumSubscriptions, NumFavorites, NumFollowers, NumUniqueSubscriptions, NumUniqueFavorites, NumUniqueFollowers, NumUniqueWebsiteViews, ReportScore, NumSecondsPlayed, NumPlaytimeSessions, NumComments, NumSecondsPlayedDuringTimePeriod, NumPlaytimeSessionsDuringTimePeriod + /// + public QueryType WithDefaultStats( bool b ) { WantsDefaultStats = b; return this; } + + #endregion + } } \ No newline at end of file diff --git a/Facepunch.Steamworks/Structs/UgcResultPage.cs b/Facepunch.Steamworks/Structs/UgcResultPage.cs index 77044af..03399b5 100644 --- a/Facepunch.Steamworks/Structs/UgcResultPage.cs +++ b/Facepunch.Steamworks/Structs/UgcResultPage.cs @@ -12,6 +12,12 @@ namespace Steamworks.Ugc public bool CachedData; + internal bool ReturnsKeyValueTags; + internal bool ReturnsDefaultStats; + internal bool ReturnsMetadata; + internal bool ReturnsChildren; + internal bool ReturnsAdditionalPreviews; + public IEnumerable Entries { get @@ -24,30 +30,81 @@ namespace Steamworks.Ugc { var item = Item.From( details ); - item.NumSubscriptions = GetStat( i, ItemStatistic.NumSubscriptions ); - item.NumFavorites = GetStat( i, ItemStatistic.NumFavorites ); - item.NumFollowers = GetStat( i, ItemStatistic.NumFollowers ); - item.NumUniqueSubscriptions = GetStat( i, ItemStatistic.NumUniqueSubscriptions ); - item.NumUniqueFavorites = GetStat( i, ItemStatistic.NumUniqueFavorites ); - item.NumUniqueFollowers = GetStat( i, ItemStatistic.NumUniqueFollowers ); - item.NumUniqueWebsiteViews = GetStat( i, ItemStatistic.NumUniqueWebsiteViews ); - item.ReportScore = GetStat( i, ItemStatistic.ReportScore ); - item.NumSecondsPlayed = GetStat( i, ItemStatistic.NumSecondsPlayed ); - item.NumPlaytimeSessions = GetStat( i, ItemStatistic.NumPlaytimeSessions ); - item.NumComments = GetStat( i, ItemStatistic.NumComments ); - item.NumSecondsPlayedDuringTimePeriod = GetStat( i, ItemStatistic.NumSecondsPlayedDuringTimePeriod ); - item.NumPlaytimeSessionsDuringTimePeriod = GetStat( i, ItemStatistic.NumPlaytimeSessionsDuringTimePeriod ); + + if ( ReturnsDefaultStats ) + { + item.NumSubscriptions = GetStat( i, ItemStatistic.NumSubscriptions ); + item.NumFavorites = GetStat( i, ItemStatistic.NumFavorites ); + item.NumFollowers = GetStat( i, ItemStatistic.NumFollowers ); + item.NumUniqueSubscriptions = GetStat( i, ItemStatistic.NumUniqueSubscriptions ); + item.NumUniqueFavorites = GetStat( i, ItemStatistic.NumUniqueFavorites ); + item.NumUniqueFollowers = GetStat( i, ItemStatistic.NumUniqueFollowers ); + item.NumUniqueWebsiteViews = GetStat( i, ItemStatistic.NumUniqueWebsiteViews ); + item.ReportScore = GetStat( i, ItemStatistic.ReportScore ); + item.NumSecondsPlayed = GetStat( i, ItemStatistic.NumSecondsPlayed ); + item.NumPlaytimeSessions = GetStat( i, ItemStatistic.NumPlaytimeSessions ); + item.NumComments = GetStat( i, ItemStatistic.NumComments ); + item.NumSecondsPlayedDuringTimePeriod = GetStat( i, ItemStatistic.NumSecondsPlayedDuringTimePeriod ); + item.NumPlaytimeSessionsDuringTimePeriod = GetStat( i, ItemStatistic.NumPlaytimeSessionsDuringTimePeriod ); + } if ( SteamUGC.Internal.GetQueryUGCPreviewURL( Handle, i, out string preview ) ) { item.PreviewImageUrl = preview; } - // TODO GetQueryUGCAdditionalPreview - // TODO GetQueryUGCChildren - // TODO GetQueryUGCKeyValueTag - // TODO GetQueryUGCMetadata + if ( ReturnsKeyValueTags ) + { + var keyValueTagsCount = SteamUGC.Internal.GetQueryUGCNumKeyValueTags( Handle, i ); + item.KeyValueTags = new Dictionary( (int)keyValueTagsCount ); + for ( uint j = 0; j < keyValueTagsCount; j++ ) + { + string key, value; + if ( SteamUGC.Internal.GetQueryUGCKeyValueTag( Handle, i, j, out key, out value ) ) + item.KeyValueTags[key] = value; + } + } + + if (ReturnsMetadata) + { + string metadata; + if (SteamUGC.Internal.GetQueryUGCMetadata(Handle, i, out metadata)) + { + item.Metadata = metadata; + } + } + + uint numChildren = item.details.NumChildren; + if ( ReturnsChildren && numChildren > 0 ) + { + var children = new PublishedFileId[numChildren]; + if ( SteamUGC.Internal.GetQueryUGCChildren( Handle, i, children, numChildren ) ) + { + item.Children = children; + } + } + + if ( ReturnsAdditionalPreviews ) + { + var previewsCount = SteamUGC.Internal.GetQueryUGCNumAdditionalPreviews( Handle, i ); + if ( previewsCount > 0 ) + { + item.AdditionalPreviews = new UgcAdditionalPreview[previewsCount]; + for ( uint j = 0; j < previewsCount; j++ ) + { + string previewUrlOrVideo; + string originalFileName; //what is this??? + ItemPreviewType previewType = default; + if ( SteamUGC.Internal.GetQueryUGCAdditionalPreview( + Handle, i, j, out previewUrlOrVideo, out originalFileName, ref previewType ) ) + { + item.AdditionalPreviews[j] = new UgcAdditionalPreview( + previewUrlOrVideo, originalFileName, previewType ); + } + } + } + } yield return item; } diff --git a/Facepunch.Steamworks/Utility/Helpers.cs b/Facepunch.Steamworks/Utility/Helpers.cs index 549ea06..3f481ce 100644 --- a/Facepunch.Steamworks/Utility/Helpers.cs +++ b/Facepunch.Steamworks/Utility/Helpers.cs @@ -7,73 +7,88 @@ namespace Steamworks { internal static class Helpers { - public const int MaxStringSize = 1024 * 32; + public const int MemoryBufferSize = 1024 * 32; - private static IntPtr[] MemoryPool; - private static int MemoryPoolIndex; - - public static unsafe IntPtr TakeMemory() + internal struct Memory : IDisposable { - if ( MemoryPool == null ) - { - // - // The pool has 5 items. This should be safe because we shouldn't really - // ever be using more than 2 memory pools - // - MemoryPool = new IntPtr[5]; + private const int MaxBagSize = 4; + private static readonly Queue BufferBag = new Queue(); - for ( int i = 0; i < MemoryPool.Length; i++ ) - MemoryPool[i] = Marshal.AllocHGlobal( MaxStringSize ); + public IntPtr Ptr { get; private set; } + + public static implicit operator IntPtr(in Memory m) => m.Ptr; + + internal static unsafe Memory Take() + { + IntPtr ptr; + lock (BufferBag) + { + ptr = BufferBag.Count > 0 ? BufferBag.Dequeue() : Marshal.AllocHGlobal(MemoryBufferSize); + } + ((byte*)ptr)[0] = 0; + return new Memory + { + Ptr = ptr + }; } - MemoryPoolIndex++; - if ( MemoryPoolIndex >= MemoryPool.Length ) - MemoryPoolIndex = 0; + public void Dispose() + { + if (Ptr == IntPtr.Zero) { return; } + lock (BufferBag) + { + if (BufferBag.Count < MaxBagSize) + { + BufferBag.Enqueue(Ptr); + } + else + { + Marshal.FreeHGlobal(Ptr); + } + } + Ptr = IntPtr.Zero; + } + } - var take = MemoryPool[MemoryPoolIndex]; - - ((byte*)take)[0] = 0; - - return take; + public static Memory TakeMemory() + { + return Memory.Take(); } - private static byte[][] BufferPool; + private static byte[][] BufferPool = new byte[4][]; private static int BufferPoolIndex; /// /// Returns a buffer. This will get returned and reused later on. + /// We shouldn't really be using this anymore. /// public static byte[] TakeBuffer( int minSize ) { - if ( BufferPool == null ) + lock ( BufferPool ) { - // - // The pool has 8 items. - // - BufferPool = new byte[8][]; + BufferPoolIndex++; - for ( int i = 0; i < BufferPool.Length; i++ ) - BufferPool[i] = new byte[ 1024 * 128 ]; + if ( BufferPoolIndex >= BufferPool.Length ) + BufferPoolIndex = 0; + + if ( BufferPool[BufferPoolIndex] == null ) + BufferPool[BufferPoolIndex] = new byte[1024 * 256]; + + if ( BufferPool[BufferPoolIndex].Length < minSize ) + { + BufferPool[BufferPoolIndex] = new byte[minSize + 1024]; + } + + return BufferPool[BufferPoolIndex]; } - - BufferPoolIndex++; - if ( BufferPoolIndex >= BufferPool.Length ) - BufferPoolIndex = 0; - - if ( BufferPool[BufferPoolIndex].Length < minSize ) - { - BufferPool[BufferPoolIndex] = new byte[minSize + 1024]; - } - - return BufferPool[BufferPoolIndex]; } internal unsafe static string MemoryToString( IntPtr ptr ) { var len = 0; - for( len = 0; len < MaxStringSize; len++ ) + for( len = 0; len < MemoryBufferSize; len++ ) { if ( ((byte*)ptr)[len] == 0 ) break; diff --git a/Facepunch.Steamworks/Utility/Platform.cs b/Facepunch.Steamworks/Utility/Platform.cs index 1145021..d573dab 100644 --- a/Facepunch.Steamworks/Utility/Platform.cs +++ b/Facepunch.Steamworks/Utility/Platform.cs @@ -13,32 +13,15 @@ namespace Steamworks #if PLATFORM_WIN64 public const int StructPlatformPackSize = 8; public const string LibraryName = "steam_api64"; - public const CallingConvention MemberConvention = CallingConvention.Cdecl; #elif PLATFORM_WIN32 public const int StructPlatformPackSize = 8; public const string LibraryName = "steam_api"; - public const CallingConvention MemberConvention = CallingConvention.ThisCall; -#elif PLATFORM_POSIX32 +#elif PLATFORM_POSIX public const int StructPlatformPackSize = 4; public const string LibraryName = "libsteam_api"; - public const CallingConvention MemberConvention = CallingConvention.Cdecl; -#elif PLATFORM_POSIX64 - public const int StructPlatformPackSize = 4; - public const string LibraryName = "libsteam_api"; - public const CallingConvention MemberConvention = CallingConvention.Cdecl; #endif + public const CallingConvention CC = CallingConvention.Cdecl; public const int StructPackSize = 4; - - - - public static int MemoryOffset( int memLocation ) - { -#if PLATFORM_64 - return memLocation; -#else - return memLocation / 2; -#endif - } } } diff --git a/Facepunch.Steamworks/Utility/SourceServerQuery.cs b/Facepunch.Steamworks/Utility/SourceServerQuery.cs index 15fc24e..8463ed5 100644 --- a/Facepunch.Steamworks/Utility/SourceServerQuery.cs +++ b/Facepunch.Steamworks/Utility/SourceServerQuery.cs @@ -13,7 +13,7 @@ namespace Steamworks { private static readonly byte[] A2S_SERVERQUERY_GETCHALLENGE = { 0x55, 0xFF, 0xFF, 0xFF, 0xFF }; // private static readonly byte A2S_PLAYER = 0x55; - private static readonly byte A2S_RULES = 0x56; + private const byte A2S_RULES = 0x56; private static readonly Dictionary>> PendingQueries = new Dictionary>>(); @@ -27,7 +27,7 @@ namespace Steamworks if (PendingQueries.TryGetValue(endpoint, out var pending)) return pending; - var task = GetRulesImpl(endpoint, server) + var task = GetRulesImpl( endpoint ) .ContinueWith(t => { lock (PendingQueries) @@ -44,7 +44,7 @@ namespace Steamworks } } - private static async Task> GetRulesImpl( IPEndPoint endpoint, ServerInfo server ) + private static async Task> GetRulesImpl( IPEndPoint endpoint ) { try { @@ -57,7 +57,7 @@ namespace Steamworks return await GetRules(client); } } - catch (System.Exception e) + catch (System.Exception) { //Console.Error.WriteLine( e.Message ); return null; diff --git a/Facepunch.Steamworks/Utility/SteamInterface.cs b/Facepunch.Steamworks/Utility/SteamInterface.cs index d9d10ba..e683cd3 100644 --- a/Facepunch.Steamworks/Utility/SteamInterface.cs +++ b/Facepunch.Steamworks/Utility/SteamInterface.cs @@ -11,103 +11,136 @@ namespace Steamworks { internal abstract class SteamInterface { + public virtual IntPtr GetUserInterfacePointer() => IntPtr.Zero; + public virtual IntPtr GetServerInterfacePointer() => IntPtr.Zero; + public virtual IntPtr GetGlobalInterfacePointer() => IntPtr.Zero; + public IntPtr Self; - public IntPtr VTable; + public IntPtr SelfGlobal; + public IntPtr SelfServer; + public IntPtr SelfClient; - public virtual string InterfaceName => null; - public bool IsValid => Self != IntPtr.Zero && VTable != IntPtr.Zero; + public bool IsValid => Self != IntPtr.Zero; + public bool IsServer { get; private set; } - public void Init() + internal void SetupInterface( bool gameServer ) { - if ( SteamClient.IsValid ) - { - InitClient(); + if ( Self != IntPtr.Zero ) return; - } - if ( SteamServer.IsValid ) - { - InitServer(); + IsServer = gameServer; + SelfGlobal = GetGlobalInterfacePointer(); + Self = SelfGlobal; + + if ( Self != IntPtr.Zero ) return; - } - throw new System.Exception( "Trying to initialize Steam Interface but Steam not initialized" ); - } - - public void InitClient() - { - - // - // There's an issue for us using FindOrCreateUserInterface on Rust. - // We have a different appid for our staging branch, but we use Rust's - // appid so we can still test with the live data/setup. The issue is - // if we run the staging branch and get interfaces using FindOrCreate - // then some callbacks don't work. I assume this is because these interfaces - // have already been initialized using the old appid pipe, but since I - // can't see inside Steam this is just a gut feeling. Either way using - // CreateInterface doesn't seem to have caused any fires, so we'll just use that. - // - - // - // var pipe = SteamAPI.GetHSteamPipe(); - // - - Self = SteamInternal.CreateInterface( InterfaceName ); - - if ( Self == IntPtr.Zero ) + if ( gameServer ) { - var user = SteamAPI.GetHSteamUser(); - Self = SteamInternal.FindOrCreateUserInterface( user, InterfaceName ); + SelfServer = GetServerInterfacePointer(); + Self = SelfServer; + } + else + { + SelfClient = GetUserInterfacePointer(); + Self = SelfClient; } - - if ( Self == IntPtr.Zero ) - throw new System.Exception( $"Couldn't find interface {InterfaceName}" ); - - VTable = Marshal.ReadIntPtr( Self, 0 ); - if ( Self == IntPtr.Zero ) - throw new System.Exception( $"Invalid VTable for {InterfaceName}" ); - - InitInternals(); - SteamClient.WatchInterface( this ); } - public void InitServer() - { - var user = SteamGameServer.GetHSteamUser(); - Self = SteamInternal.FindOrCreateGameServerInterface( user, InterfaceName ); - - if ( Self == IntPtr.Zero ) - throw new System.Exception( $"Couldn't find server interface {InterfaceName}" ); - - VTable = Marshal.ReadIntPtr( Self, 0 ); - if ( Self == IntPtr.Zero ) - throw new System.Exception( $"Invalid VTable for server {InterfaceName}" ); - - InitInternals(); - SteamServer.WatchInterface( this ); - } - - public virtual void InitUserless() - { - Self = SteamInternal.FindOrCreateUserInterface( 0, InterfaceName ); - - if ( Self == IntPtr.Zero ) - throw new System.Exception( $"Couldn't find interface {InterfaceName}" ); - - VTable = Marshal.ReadIntPtr( Self, 0 ); - if ( Self == IntPtr.Zero ) - throw new System.Exception( $"Invalid VTable for {InterfaceName}" ); - - InitInternals(); - } - - internal virtual void Shutdown() + internal void ShutdownInterface() { Self = IntPtr.Zero; - VTable = IntPtr.Zero; + } + } + public abstract class SteamClass + { + internal abstract bool InitializeInterface( bool server ); + internal abstract void DestroyInterface( bool server ); + } + + public class SteamSharedClass : SteamClass + { + internal static SteamInterface Interface => InterfaceClient ?? InterfaceServer; + internal static SteamInterface InterfaceClient; + internal static SteamInterface InterfaceServer; + + internal override bool InitializeInterface( bool server ) + { + return false; } - public abstract void InitInternals(); + internal virtual void SetInterface( bool server, SteamInterface iface ) + { + if ( server ) + { + InterfaceServer = iface; + } + + if ( !server ) + { + InterfaceClient = iface; + } + } + + internal override void DestroyInterface( bool server ) + { + if ( !server ) + { + InterfaceClient = null; + } + + if ( server ) + { + InterfaceServer = null; + } + } } + + public class SteamClientClass : SteamClass + { + internal static SteamInterface Interface; + + internal override bool InitializeInterface( bool server ) + { + return false; + } + + internal virtual void SetInterface( bool server, SteamInterface iface ) + { + if ( server ) + throw new System.NotSupportedException(); + + Interface = iface; + } + + internal override void DestroyInterface( bool server ) + { + Interface = null; + } + } + + public class SteamServerClass : SteamClass + { + internal static SteamInterface Interface; + + internal override bool InitializeInterface( bool server ) + { + return false; + } + + internal virtual void SetInterface( bool server, SteamInterface iface ) + { + if ( !server ) + throw new System.NotSupportedException(); + + Interface = iface; + } + + internal override void DestroyInterface( bool server ) + { + Interface = null; + } + } + } \ No newline at end of file diff --git a/Facepunch.Steamworks/Utility/Utf8String.cs b/Facepunch.Steamworks/Utility/Utf8String.cs index ac73835..3599753 100644 --- a/Facepunch.Steamworks/Utility/Utf8String.cs +++ b/Facepunch.Steamworks/Utility/Utf8String.cs @@ -44,7 +44,9 @@ namespace Steamworks internal struct Utf8StringPointer { +#pragma warning disable 649 internal IntPtr ptr; +#pragma warning restore 649 public unsafe static implicit operator string( Utf8StringPointer p ) { diff --git a/Facepunch.Steamworks/Utility/Utility.cs b/Facepunch.Steamworks/Utility/Utility.cs index 4f52dd7..3365d2f 100644 --- a/Facepunch.Steamworks/Utility/Utility.cs +++ b/Facepunch.Steamworks/Utility/Utility.cs @@ -3,12 +3,29 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; +using System.Runtime.InteropServices; using System.Text; namespace Steamworks { public static partial class Utility { + static internal T ToType( this IntPtr ptr ) + { + if ( ptr == IntPtr.Zero ) + return default; + + return (T)Marshal.PtrToStructure( ptr, typeof( T ) ); + } + + static internal object ToType( this IntPtr ptr, System.Type t ) + { + if ( ptr == IntPtr.Zero ) + return default; + + return Marshal.PtrToStructure( ptr, t ); + } + static internal uint Swap( uint x ) { return ((x & 0x000000ff) << 24) + @@ -80,7 +97,7 @@ namespace Steamworks } } - static byte[] readBuffer = new byte[1024 * 8]; + static readonly byte[] readBuffer = new byte[1024 * 8]; public static string ReadNullTerminatedUTF8String( this BinaryReader br ) { diff --git a/Facepunch.Steamworks/libsteam_api.dylib b/Facepunch.Steamworks/libsteam_api.dylib deleted file mode 100644 index ce8dc57..0000000 Binary files a/Facepunch.Steamworks/libsteam_api.dylib and /dev/null differ diff --git a/Facepunch.Steamworks/libsteam_api.so b/Facepunch.Steamworks/libsteam_api.so deleted file mode 100644 index eb230a9..0000000 Binary files a/Facepunch.Steamworks/libsteam_api.so and /dev/null differ diff --git a/Facepunch.Steamworks/steam_api.dll b/Facepunch.Steamworks/steam_api.dll new file mode 100644 index 0000000..319bb83 Binary files /dev/null and b/Facepunch.Steamworks/steam_api.dll differ diff --git a/Facepunch.Steamworks/steam_api64.dll b/Facepunch.Steamworks/steam_api64.dll index 328dade..e1ca692 100644 Binary files a/Facepunch.Steamworks/steam_api64.dll and b/Facepunch.Steamworks/steam_api64.dll differ diff --git a/Generator/App.config b/Generator/App.config deleted file mode 100644 index 88fa402..0000000 --- a/Generator/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Generator/Cleanup.cs b/Generator/Cleanup.cs index fd0ccd2..3414c58 100644 --- a/Generator/Cleanup.cs +++ b/Generator/Cleanup.cs @@ -10,9 +10,18 @@ public static class Cleanup { public static string ConvertType( string type ) { + type = type.Replace( "class ", "" ); + type = type.Replace( "struct ", "" ); + + type = type.Replace( "unsigned long long", "uint64" ); + type = type.Replace( "unsigned int", "uint" ); + type = type.Replace( "uint32", "uint" ); + type = type.Replace( "int32_t", "int" ); + type = type.Replace( "int64_t", "long" ); + type = type.Replace( "uint16", "ushort" ); + type = type.Replace( "CSteamID", "SteamId" ); type = type.Replace( "CGameID", "GameId" ); - type = type.Replace( "PersonaState", "FriendState" ); type = type.Replace( "AudioPlayback_Status", "MusicStatus" ); type = type.Replace( "AuthSessionResponse", "AuthResponse" ); type = type.Replace( "FriendRelationship", "Relationship" ); @@ -26,10 +35,14 @@ public static class Cleanup type = type.Replace( "SteamItemInstanceID_t", "InventoryItemId" ); type = type.Replace( "SteamItemDef_t", "InventoryDefId" ); type = type.Replace( "ChatRoomEnterResponse", "RoomEnter" ); - type = type.Replace( "SteamNetworkPingLocation_t", "PingLocation" ); + type = type.Replace( "SteamNetworkPingLocation_t", "NetPingLocation" ); + type = type.Replace( "SteamNetworkingConfigValue_t", "NetKeyValue" ); type = type.Replace( "SteamNetworkingConfigValue", "NetConfig" ); - type = type.Replace( "SteamNetworkingConfigScope", "NetScope" ); + type = type.Replace( "SteamNetworkingConfigScope", "NetConfigScope" ); type = type.Replace( "SteamNetworkingConfigDataType", "NetConfigType" ); + type = type.Replace( "FSteamNetworkingSocketsDebugOutput", "NetDebugFunc" ); + type = type.Replace( "SteamNetworkingErrMsg", "NetErrorMessage" ); + type = type.Replace( "SteamNetConnectionEnd", "NetConnectionEnd" ); type = type.Replace( "HSteamNetConnection", "Connection" ); type = type.Replace( "HSteamListenSocket", "Socket" ); type = type.Replace( "SteamNetworkingIPAddr", "NetAddress" ); @@ -37,19 +50,32 @@ public static class Cleanup type = type.Replace( "SteamNetConnectionInfo_t", "ConnectionInfo" ); type = type.Replace( "SteamNetworkingConnectionState", "ConnectionState" ); type = type.Replace( "SteamNetworkingMicroseconds", "long" ); - type = type.Replace( "SteamNetworkingSocketsDebugOutputType", "DebugOutputType" ); + type = type.Replace( "SteamNetworkingSocketsDebugOutputType", "NetDebugOutput" ); type = type.Replace( "SteamNetworkingGetConfigValueResult", "NetConfigResult" ); type = type.Replace( "SteamInputType", "InputType" ); type = type.Replace( "InputDigitalActionData_t", "DigitalState" ); type = type.Replace( "InputAnalogActionData_t", "AnalogState" ); type = type.Replace( "InputMotionData_t", "MotionState" ); type = type.Replace( "MatchMakingKeyValuePair_t", "MatchMakingKeyValuePair" ); + type = type.Replace( "ISteamNetworkingMessage", "NetMsg" ); + type = type.Replace( "SteamNetworkingMessage_t", "NetMsg" ); + type = type.Replace( "SteamIPAddress_t", "SteamIPAddress" ); + type = type.Replace( "SteamNetConnectionRealTimeStatus_t", "ConnectionStatus" ); + type = type.Replace( "SteamNetConnectionRealTimeLaneStatus_t", "ConnectionLaneStatus" ); + type = type.Replace( "SteamInputGlyphSize", "GlyphSize" ); + type = type.Replace( "FloatingGamepadTextInputMode", "TextInputMode" ); + + type = type.Replace( "::", "." ); + + if ( type == "EPersonaState" ) return "EFriendState"; + if ( type == "PersonaState" ) return "FriendState"; return type; } public static bool ShouldCreate( string type ) { + if ( IsDeprecated( type ) ) return false; if ( type == "SteamId" ) return false; if ( type == "LeaderboardSort" ) return false; if ( type == "LeaderboardDisplay" ) return false; @@ -58,6 +84,31 @@ public static class Cleanup if ( type == "DigitalState" ) return false; if ( type == "MotionState" ) return false; if ( type == "MatchMakingKeyValuePair" ) return false; + if ( type == "Connection" ) return false; + if ( type == "Socket" ) return false; + if ( type == "SteamNetworkingMicroseconds" ) return false; + if ( type == "NetDebugFunc" ) return false; + if ( type == "NetMsg" ) return false; + if ( type == "SteamDatagramErrMsg" ) return false; + if ( type == "ConnectionInfo" ) return false; + if ( type == "SteamNetworkingIPAddr" ) return false; + if ( type == "NetAddress" ) return false; + if ( type == "NetIdentity" ) return false; + if ( type == "SteamNetworkingErrMsg" ) return false; + if ( type == "NetKeyValue" ) return false; + if ( type == "SteamIPAddress" ) return false; + if ( type == "NetPingLocation" ) return false; + if ( type == "CSteamID" ) return false; + if ( type == "CSteamAPIContext" ) return false; + if ( type == "CCallResult" ) return false; + if ( type == "CCallback" ) return false; + if ( type == "ValvePackingSentinel_t" ) return false; + if ( type == "CCallbackBase" ) return false; + if ( type == "CSteamGameServerAPIContext" ) return false; + if ( type == "ConnectionStatus") return false; + if ( type == "ConnectionLaneStatus" ) return false; + if ( type == "SteamInputActionEventCallbackPointer" ) return false; + if ( type.StartsWith( "FnSteam" ) ) return false; return true; } @@ -65,7 +116,6 @@ public static class Cleanup internal static string Expose( string name ) { if ( name == "FriendState" ) return "public"; - if (name == "FriendFlags") return "public"; if ( name == "MusicStatus" ) return "public"; if ( name == "ParentalFeature" ) return "public"; if ( name == "AuthResponse" ) return "public"; @@ -88,12 +138,39 @@ public static class Cleanup if ( name == "InputType" ) return "public"; if ( name == "InputSourceMode" ) return "public"; if ( name == "UserHasLicenseForAppResult" ) return "public"; + if ( name == "NetPingLocation" ) return "public"; + if ( name == "ConnectionState" ) return "public"; + if ( name == "SteamNetworkingAvailability" ) return "public"; + if ( name == "SteamDeviceFormFactor" ) return "public"; + if ( name == "DurationControlProgress" ) return "public"; + if ( name == "NetConnectionEnd" ) return "public"; + if ( name == "NetIdentity" ) return "public"; + if ( name == "NetAddress" ) return "public"; + if ( name == "NetDebugOutput" ) return "public"; + if ( name == "ItemPreviewType" ) return "public"; + if ( name == "OverlayToStoreFlag" ) return "public"; + if ( name == "TextFilteringContext" ) return "public"; + if ( name == "GlyphSize" ) return "public"; + if ( name == "TextInputMode" ) return "public"; return "internal"; } internal static bool IsDeprecated( string name ) { + if ( name.StartsWith( "PS3" ) ) return true; + + if ( name == "SocketStatusCallback_t" ) return true; + if ( name == "SNetSocketConnectionType" ) return true; + if ( name == "SNetSocketState" ) return true; + + + if ( name.StartsWith( "ISteamInput." ) ) + { + if ( name.Contains( "EnableActionEventCallbacks" ) ) return true; + if ( name.Contains( "DualSense" ) ) return true; + } + if ( name.StartsWith( "ISteamRemoteStorage." ) ) { if ( name.Contains( "Publish" ) ) return true; @@ -102,6 +179,29 @@ public static class Cleanup if ( name.Contains( "EnumerateUserSharedWorkshopFile" ) ) return true; } + // + // In ISteamNetworking everything is deprecated apart from the p2p stuff + // + if ( name.StartsWith( "ISteamNetworking." ) ) + { + if ( !name.Contains( "P2P" )) + return true; + } + + if ( name == "ISteamUGC.RequestUGCDetails" ) return true; + return false; + } + + // + // If we start with E[Capital] then strip the E + // (makes us more C# like) + // + internal static string CleanEnum( string name ) + { + if ( name[0] != 'E' ) return name; + if ( !char.IsUpper( name[1] ) ) return name; + + return name.Substring( 1 ); } } diff --git a/Generator/CodeParser/CodeParser.Class.cs b/Generator/CodeParser/CodeParser.Class.cs deleted file mode 100644 index bcb72d7..0000000 --- a/Generator/CodeParser/CodeParser.Class.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; - -namespace Generator -{ - partial class CodeParser - { - public class Class - { - public string Name; - public string InterfaceString; - - public class Function - { - public string Name; - public string DuplicateName; - public Dictionary Arguments = new Dictionary(); - - public string ReturnType; - public string CallResult; - } - - public List Functions = new List(); - - internal Function AddFunction( string funcName, string returnType, string args ) - { - if ( funcName == "Init" ) funcName = "DoInit"; - if ( funcName == "Shutdown" ) funcName = "DoShutdown"; - - var f = new Function - { - Name = funcName, - ReturnType = returnType - }; - - args = Regex.Replace( args, "", "" ); - - foreach ( var arg in args.Split( new[] { ',' }, StringSplitOptions.RemoveEmptyEntries ) ) - { - var m = Regex.Match( arg.Trim(), @"(.+?[ |\*|\&])?([a-zA-Z0-9_]+?)( = (.+?))?$" ); - - var t = m.Groups[1].Value.Trim(); - var n = m.Groups[2].Value.Trim(); - - t = Cleanup.ConvertType( t ); - - f.Arguments.Add( n, t ); - } - - Functions.Add( f ); - - return f; - } - - public void PostProcess() - { - var duplicateFunctions = Functions - .GroupBy( x => x.Name ) - .Where( x => x.Count() > 1 ); - - foreach ( var group in duplicateFunctions ) - { - var g = group.ToArray(); - for ( int i=0; i< g.Count(); i++ ) - { - g[i].DuplicateName = g[i].Name; - g[i].Name = $"{g[i].Name}{i+1}"; - } - } - } - } - - } -} diff --git a/Generator/CodeParser/CodeParser.cs b/Generator/CodeParser/CodeParser.cs deleted file mode 100644 index 7c03b15..0000000 --- a/Generator/CodeParser/CodeParser.cs +++ /dev/null @@ -1,174 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; - -namespace Generator -{ - public partial class CodeParser - { - public string Content; - - public CodeParser( string folder ) - { - foreach ( var file in System.IO.Directory.GetFiles( folder, "*.h", System.IO.SearchOption.AllDirectories ) ) - { - Content += System.IO.File.ReadAllText( file ); - } - - Content = Content.Replace( "\r\n", "\n" ); - Content = Content.Replace( "\n\r", "\n" ); - } - - internal void ExtendDefinition( SteamApiDefinition def ) - { - // - // Get a list of CallbackIds - // - def.CallbackIds = new Dictionary(); - - //v1 - { - var r = new Regex( @"enum { (k_[i|I](?:.+)) = ([0-9]+) };" ); - var ma = r.Matches( Content ); - - foreach ( Match m in ma ) - { - def.CallbackIds.Add( m.Groups[1].Value.Substring( 3 ).Replace( "Callbacks", "" ), int.Parse( m.Groups[2].Value ) ); - } - } - - // - // Associate callbackIds with structs - // - foreach ( var t in def.structs ) - { - if ( !string.IsNullOrEmpty( t.CallbackId ) ) continue; - - // Standard style - { - var r = new Regex( @"struct "+t.Name+@"\n{ ?\n(?:.)+enum { k_iCallback = (?:(.+) \+ ([0-9]+)|(.+)) };", RegexOptions.Multiline | RegexOptions.IgnoreCase ); - var m = r.Match( Content ); - if ( m.Success ) - { - var kName = m.Groups[1].Value; - var num = m.Groups[2].Value; - - if ( string.IsNullOrEmpty( kName ) ) - { - kName = m.Groups[3].Value; - num = "0"; - } - - kName = "CallbackIdentifiers." + kName.Substring( 3 ).Replace( "Callbacks", "" ); - - t.CallbackId = $"{kName} + {num}"; - } - } - - // New style - { - var r = new Regex( @"DEFINE_CALLBACK\( "+t.Name+@", (.+) \+ ([0-9]+) \)" ); - var m = r.Match( Content ); - if ( m.Success ) - { - var kName = m.Groups[1].Value; - var num = m.Groups[2].Value; - - //kName = kName.Replace( "k_i", "CallbackIdentifiers." ).Replace( "Callbacks", "" ); - kName = "CallbackIdentifiers." + kName.Substring( 3 ).Replace( "Callbacks", "" ); - - t.CallbackId = $"{kName} + {num}"; - } - } - - // Even Newer Style - { - var r = new Regex( @"STEAM_CALLBACK_BEGIN\( " + t.Name + @", (.+) \+ ([0-9]+) \)" ); - var m = r.Match( Content ); - if ( m.Success ) - { - var kName = m.Groups[1].Value; - var num = m.Groups[2].Value; - - //kName = kName.Replace( "k_i", "CallbackIdentifiers." ).Replace( "Callbacks", "" ); - kName = "CallbackIdentifiers." + kName.Substring( 3 ).Replace( "Callbacks", "" ); - - t.CallbackId = $"{kName} + {num}"; - } - } - } - - // - // Find defines - // - def.Defines = new Dictionary(); - { - var r = new Regex( @"#define ([a-zA-Z_]+) ""(.+)""" ); - var ma = r.Matches( Content ); - - foreach ( Match m in ma ) - { - def.Defines.Add( m.Groups[1].Value.Replace( "Callbacks", "" ), m.Groups[2].Value ); - } - } - - // - // Find CALL_RESULTs - // - { - var r = new Regex( @"CALL_RESULT\( (.+) \)(?:.+)?\n(?:.+)virtual\s+SteamAPICall_t\s+(\w+)\(" ); - var ma = r.Matches( Content ); - - foreach ( Match m in ma ) - { - var s = def.structs.Single( x => x.Name == m.Groups[1].Value ); - s.IsCallResult = true; - - foreach ( var t in def.methods.Where( x => x.Name == m.Groups[2].Value ) ) - { - if ( !string.IsNullOrEmpty( t.CallResult ) ) continue; - - t.CallResult = s.Name; - } - } - } - - // - // Find missing structs - // - { - var r = new Regex( @"struct ([a-zA-Z]+_t)" ); - var ma = r.Matches( Content ); - - foreach ( Match m in ma ) - { - var s = def.structs.SingleOrDefault( x => x.Name == m.Groups[1].Value ); - if ( s == null ) - { - Console.WriteLine( "Missing Struct: " + m.Groups[1].Value ); - } - } - - //Console.ReadKey(); - } - - // - // Change all struct bool fields to bytes (they're technically bytes anyway, and it helps with marshalling) - // - { - foreach ( var s in def.structs ) - { - foreach ( var f in s.Fields ) - { - if ( f.Type == "bool" ) - f.Type = "byte"; - } - } - } - - } - } -} diff --git a/Generator/CodeParser/ParseClasses.cs b/Generator/CodeParser/ParseClasses.cs deleted file mode 100644 index 5ebc6a7..0000000 --- a/Generator/CodeParser/ParseClasses.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; - -namespace Generator -{ - partial class CodeParser - { - public List Classes = new List(); - - public void ParseClasses() - { - var source = RemoveAnnotations( Content ); - - { - var r = new Regex( @"class ([a-zA-Z]+)[\r|\n]+{[\r|\n]((?s).*?)};" ); - var ma = r.Matches( source ); - - foreach ( Match m in ma ) - { - ProcessClass( m.Groups[0].Value.Trim(), m.Groups[1].Value.Trim(), m.Groups[2].Value.Trim() ); - //def.CallbackIds.Add( m.Groups[1].Value.Substring( 3 ).Replace( "Callbacks", "" ), int.Parse( m.Groups[2].Value ) ); - } - } - - Console.WriteLine( "OKay" ); - } - - public void ProcessClass( string fulldef, string classname, string inner ) - { - Console.WriteLine( $"Class: {classname} " ); - - var lines = inner.Split( new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries ); - - var func = new Regex( @"virtual (.+[\t |\*])([a-z0-9A-Z]+?)\((.+?)?\) = 0 ?;$" ); - - var c = new Class(); - c.Name = classname; - - var interfaceMatch = Regex.Match( Content, $"#define {classname.ToUpper().Substring( 1 )}_INTERFACE_VERSION \"(.+?)\"" ); - if ( interfaceMatch.Success ) - { - c.InterfaceString = interfaceMatch.Groups[1].Value; - } - - var lastCallResult = ""; - - var partialLine = ""; - - var needsEndIf = false; - - foreach ( var linestr in lines ) - { - var line = linestr.Trim(); - - var commentPos = line.IndexOf( "//" ); - if ( commentPos > 0 ) - line = line.Substring( 0, commentPos-1 ).Trim(); - - if ( line.Trim().Length < 4 ) continue; - if ( line.Trim().StartsWith( "public:" ) ) continue; - if ( line.Trim().StartsWith( "//" ) ) continue; - - if ( line.Trim().StartsWith( "#ifdef _PS3" ) || line.Trim().StartsWith( "#if defined(_PS3)" ) ) - { - needsEndIf = true; - continue; - } - - if ( needsEndIf ) - { - needsEndIf = !line.Trim().StartsWith( "#endif" ); - continue; - } - - var callresult = Regex.Match( line, @"STEAM_CALL_RESULT\((.+?)\)" ); - if ( callresult.Success ) - { - partialLine = ""; - lastCallResult = callresult.Groups[1].Value.Trim(); - continue; - } - - if ( !string.IsNullOrEmpty( partialLine ) ) - { - partialLine += " " + line.Trim(); - - if ( !partialLine.Trim().EndsWith( ";" ) ) - continue; - - line = partialLine; - partialLine = ""; - } - - var f = func.Match( line ); - if ( f.Success ) - { - var returnType = f.Groups[1].Value.Trim(); - var funcName = f.Groups[2].Value.Trim(); - var args = f.Groups[3].Value.Trim(); - // Console.WriteLine( $"Function: {funcName} returns {returnType} with args {args}" ); - - if ( funcName == "RequestUGCDetails" ) lastCallResult = "SteamUGCRequestUGCDetailsResult_t"; - if ( funcName == "DownloadClanActivityCounts" ) lastCallResult = "DownloadClanActivityCountsResult_t"; - - if ( funcName.Contains( ' ' ) || funcName.Contains( '*' ) ) - throw new System.Exception( "Parsing Error!" ); - - var fnc = c.AddFunction( funcName, returnType, args ); - - fnc.CallResult = lastCallResult; - lastCallResult = null; - partialLine = ""; - } - else - { - if ( line.Trim().StartsWith( "virtual " ) ) - { - partialLine = line; - } - - Console.WriteLine( $"Unknown Line: {line}" ); - } - } - - c.PostProcess(); - - Classes.Add( c ); - } - - public string RemoveAnnotations( string str ) - { - str = Regex.Replace( str, @"STEAM_OUT_ARRAY_CALL\((.+?)\)", "" ); - str = Regex.Replace( str, @"STEAM_PRIVATE_API\((.+)\)", "$1" ); - str = Regex.Replace( str, @"STEAM_ARRAY_COUNT\((.+?)\) ", "" ); - str = Regex.Replace( str, @"STEAM_OUT_STRUCT\(\) ", "" ); - str = Regex.Replace( str, @"STEAM_OUT_STRUCT\((.+?)\) ", "" ); - str = Regex.Replace( str, @"STEAM_OUT_ARRAY_COUNT\((.+?)\)", "" ); - str = Regex.Replace( str, @"STEAM_ARRAY_COUNT_D\((.+?)\)", "" ); - str = Regex.Replace( str, @"STEAM_OUT_STRING_COUNT\((.+?)\)", "" ); - str = Regex.Replace( str, @"STEAM_OUT_STRING\(\) ", "" ); - str = Regex.Replace( str, @"STEAM_OUT_BUFFER_COUNT\((.+?)\) ", "" ); - str = Regex.Replace( str, @"STEAM_BUFFER_COUNT\((.+?)\) ", "" ); - str = Regex.Replace( str, @"STEAM_DESC\((.+?)\) ", "" ); - - - - return str; - } - - } -} diff --git a/Generator/CodeWriter/Callbacks.cs b/Generator/CodeWriter/Callbacks.cs new file mode 100644 index 0000000..670ee41 --- /dev/null +++ b/Generator/CodeWriter/Callbacks.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Generator +{ + public partial class CodeWriter + { + void Callbacks() + { + var callbackList = new List(); + + foreach ( var c in def.callback_structs ) + { + var name = Cleanup.ConvertType( c.Name ); + + if ( !Cleanup.ShouldCreate( name ) ) + continue; + + if ( name.Contains( "::" ) ) + continue; + + var partial = ""; + if ( c.Methods != null ) partial = " partial"; + + int defaultPack = c.IsPack4OnWindows ? 4 : 8; + + var isCallback = true; + var iface = ""; + if ( isCallback ) + iface = " : ICallbackData"; + + // + // Main struct + // + WriteLine( $"[StructLayout( LayoutKind.Sequential, Pack = Platform.{(c.IsPack4OnWindows?"StructPackSize": "StructPlatformPackSize")} )]" ); + StartBlock( $"{Cleanup.Expose( name )}{partial} struct {name}{iface}" ); + { + // + // The fields + // + StructFields( c.Fields ); + WriteLine(); + + if ( isCallback ) + { + WriteLine( "#region SteamCallback" ); + { + + WriteLine( $"public static int _datasize = System.Runtime.InteropServices.Marshal.SizeOf( typeof({name}) );" ); + WriteLine( $"public int DataSize => _datasize;" ); + WriteLine( $"public CallbackType CallbackType => CallbackType.{name.Replace( "_t", "" )};" ); + } + WriteLine( "#endregion" ); + } + + if ( c.Enums != null ) + { + foreach ( var e in c.Enums ) + { + WriteEnum( e, e.Name ); + } + } + + // if ( c.CallbackId ) ) + { + callbackList.Add( c ); + } + + } + EndBlock(); + WriteLine(); + } + } + } +} diff --git a/Generator/CodeWriter/ClassVTable.cs b/Generator/CodeWriter/ClassVTable.cs deleted file mode 100644 index 84b444b..0000000 --- a/Generator/CodeWriter/ClassVTable.cs +++ /dev/null @@ -1,313 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Generator -{ - public partial class CodeWriter - { - public void GenerateVTableClass( string className, string filename ) - { - var clss = Parser.Classes.Single( x => x.Name == className ); - - sb = new StringBuilder(); - - WriteLine( $"using System;" ); - WriteLine( $"using System.Runtime.InteropServices;" ); - WriteLine( $"using System.Text;" ); - WriteLine( $"using System.Threading.Tasks;" ); - WriteLine( $"using Steamworks.Data;" ); - WriteLine(); - - WriteLine(); - - StartBlock( $"namespace Steamworks" ); - { - StartBlock( $"internal class {clss.Name} : SteamInterface" ); - { - WriteLine( $"public override string InterfaceName => \"{clss.InterfaceString}\";" ); - WriteLine(); - - WriteFunctionPointerReader( clss ); - - WriteLine(); - - foreach ( var func in clss.Functions ) - { - if ( Cleanup.IsDeprecated( $"{clss.Name}.{func.Name}" ) ) - continue; - - - WriteFunction( clss, func ); - WriteLine(); - } - - } - EndBlock(); - } - EndBlock(); - - System.IO.File.WriteAllText( $"{filename}", sb.ToString() ); - } - - void WriteFunctionPointerReader( CodeParser.Class clss ) - { - // TODO - we'll probably have to do this PER platform - - int[] standardLocations = new int[clss.Functions.Count]; - int[] windowsLocations = new int[clss.Functions.Count]; - - for ( int i = 0; i < clss.Functions.Count; i++ ) - { - windowsLocations[i] = i * 8; - standardLocations[i] = i * 8; - } - - // - // MSVC switches the order in the vtable of overloaded functions - // I'm not going to try to try to work out how to order shit - // so lets just manually fix shit here - // - if ( clss.Name == "ISteamUserStats" ) - { - Swap( clss, "GetStat1", "GetStat2", windowsLocations ); - Swap( clss, "SetStat1", "SetStat2", windowsLocations ); - Swap( clss, "GetUserStat1", "GetUserStat2", windowsLocations ); - Swap( clss, "GetGlobalStat1", "GetGlobalStat2", windowsLocations ); - Swap( clss, "GetGlobalStatHistory1", "GetGlobalStatHistory2", windowsLocations ); - } - - if ( clss.Name == "ISteamGameServerStats" ) - { - Swap( clss, "GetUserStat1", "GetUserStat2", windowsLocations ); - Swap( clss, "SetUserStat1", "SetUserStat2", windowsLocations ); - } - - if ( clss.Name == "ISteamUGC" ) - { - Swap( clss, "CreateQueryAllUGCRequest1", "CreateQueryAllUGCRequest2", windowsLocations ); - } - - - StartBlock( $"public override void InitInternals()" ); - { - var different = new List(); - - for ( int i = 0; i < clss.Functions.Count; i++ ) - { - var func = clss.Functions[i]; - - if ( Cleanup.IsDeprecated( $"{clss.Name}.{func.Name}" ) ) - { - WriteLine( $" // {func.Name} is deprecated" ); - } - else - { - if ( standardLocations[i] != windowsLocations[i] ) - { - different.Add( i ); - continue; - } - - WriteLine( $"_{func.Name} = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( {standardLocations[i]} ) ) );" ); - } - } - - if ( different.Count > 0 ) - { - WriteLine( "" ); - WriteLine( "#if PLATFORM_WIN" ); - foreach ( var i in different ) - { - var func = clss.Functions[i]; - WriteLine( $"_{func.Name} = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( {windowsLocations[i]} ) ) );" ); - } - WriteLine( "#else" ); - foreach ( var i in different ) - { - var func = clss.Functions[i]; - WriteLine( $"_{func.Name} = Marshal.GetDelegateForFunctionPointer( Marshal.ReadIntPtr( VTable, Platform.MemoryOffset( {standardLocations[i]} ) ) );" ); - } - WriteLine( "#endif" ); - } - - } - EndBlock(); - - StartBlock( $"internal override void Shutdown()" ); - { - WriteLine( $"base.Shutdown();" ); - WriteLine( "" ); - - for ( int i = 0; i < clss.Functions.Count; i++ ) - { - var func = clss.Functions[i]; - var returnType = BaseType.Parse( func.ReturnType ); - var args = func.Arguments.Select( x => BaseType.Parse( x.Value, x.Key ) ).ToArray(); - var windowsSpecific = NeedsWindowsSpecificFunction( func, returnType, args ); - - if ( Cleanup.IsDeprecated( $"{clss.Name}.{func.Name}" ) ) - continue; - - WriteLine( $"_{func.Name} = null;" ); - } - } - EndBlock(); - } - - private bool NeedsWindowsSpecificFunction( CodeParser.Class.Function func, BaseType returnType, BaseType[] args ) - { - if ( returnType.IsReturnedWeird ) return true; - if ( returnType.WindowsSpecific ) return true; - if ( args.Any( x => x.WindowsSpecific ) ) return true; - - return false; - } - - - private void Swap( CodeParser.Class clss, string v1, string v2, int[] locations ) - { - var a = clss.Functions.IndexOf( clss.Functions.Single( x => x.Name == v1 ) ); - var b = clss.Functions.IndexOf( clss.Functions.Single( x => x.Name == v2 ) ); - - var s = locations[a]; - locations[a] = locations[b]; - locations[b] = s; - } - - private void WriteFunction( CodeParser.Class clss, CodeParser.Class.Function func ) - { - var returnType = BaseType.Parse( func.ReturnType ); - returnType.Func = func.Name; - - var args = func.Arguments.Select( x => - { - var bt = BaseType.Parse( x.Value, x.Key ); - bt.Func = func.Name; - return bt; - } ).ToArray(); - - for( int i=0; i !x.ShouldSkipAsArgument ).Select( x => x.AsArgument() ) ); ; - var delegateargstr = string.Join( ", ", args.Select( x => x.AsNativeArgument() ) ); - - var windowsSpecific = NeedsWindowsSpecificFunction( func, returnType, args ); - - if ( returnType is SteamApiCallType sap ) - { - sap.CallResult = func.CallResult; - - argstr = string.Join( ", ", args.Select( x => x.AsArgument().Replace( "ref ", " /* ref */ " ) ) ); - } - - WriteLine( $"#region FunctionMeta" ); - - WriteLine( $"[UnmanagedFunctionPointer( Platform.MemberConvention )]" ); - - if ( returnType.ReturnAttribute != null) - WriteLine( returnType.ReturnAttribute ); - - if ( returnType.IsReturnedWeird ) - { - WriteLine( "#if PLATFORM_WIN" ); - WriteLine( $"private delegate void F{func.Name}( IntPtr self, ref {returnType.TypeName} retVal, {delegateargstr} );".Replace( " retVal, )", " retVal )" ) ); - WriteLine( "#else" ); - } - - WriteLine( $"private delegate {returnType.TypeNameFrom} F{func.Name}( IntPtr self, {delegateargstr} );".Replace( "( IntPtr self, )", "( IntPtr self )" ) ); - - if ( returnType.IsReturnedWeird ) - { - WriteLine( "#endif" ); - } - - WriteLine( $"private F{func.Name} _{func.Name};" ); - - WriteLine(); - WriteLine( $"#endregion" ); - - StartBlock( $"internal {returnType.ReturnType} {func.Name}( {argstr} )".Replace( "( )", "()" ) ); - { - var callargs = string.Join( ", ", args.Select( x => x.AsCallArgument() ) ); - - // - // Code before any calls - // - foreach ( var arg in args ) - { - if ( arg is StringType sb ) - { - WriteLine( $"IntPtr mem{sb.VarName} = Helpers.TakeMemory();" ); - } - } - - // - // The actual call - // - if ( returnType.IsReturnedWeird ) - { - WriteLine( "#if PLATFORM_WIN" ); - { - WriteLine( $"var retVal = default( {returnType.TypeName} );" ); - WriteLine( $"_{func.Name}( Self, ref retVal, {callargs} );".Replace( ", );", " );" ) ); - WriteLine( $"{returnType.Return( "retVal" )}" ); - } - WriteLine( "#else" ); - } - - if ( returnType.IsVoid ) - { - WriteLine( $"_{func.Name}( Self, {callargs} );".Replace( "( Self, )", "( Self )" ) ); - } - else - { - WriteLine( $"var returnValue = _{func.Name}( Self, {callargs} );".Replace( "( Self, )", "( Self )" ) ); - } - - // - // Code after the call - // - foreach ( var arg in args ) - { - if ( arg is StringType sb ) - { - WriteLine( $"{sb.VarName} = Helpers.MemoryToString( mem{sb.VarName} );" ); - } - } - - // - // Return - // - if ( !returnType.IsVoid ) - { - WriteLine( returnType.Return( "returnValue" ) ); - } - - if ( returnType.IsReturnedWeird ) - { - WriteLine( "#endif" ); - } - } - EndBlock(); - } - } -} diff --git a/Generator/CodeWriter/CodeWriter.cs b/Generator/CodeWriter/CodeWriter.cs index f1c8c23..5f4aa2f 100644 --- a/Generator/CodeWriter/CodeWriter.cs +++ b/Generator/CodeWriter/CodeWriter.cs @@ -10,14 +10,14 @@ namespace Generator { public partial class CodeWriter { + public static CodeWriter Current { get; private set; } + private SteamApiDefinition def; - public CodeParser Parser; - public CodeWriter( CodeParser parser, SteamApiDefinition def ) + public CodeWriter( SteamApiDefinition def ) { - Parser = parser; - this.def = def; + Current = this; WorkoutTypes(); } @@ -29,6 +29,14 @@ namespace Generator Enums(); Footer(); System.IO.File.WriteAllText( $"{folder}SteamEnums.cs", sb.ToString() ); + } + + { + sb = new StringBuilder(); + Header(); + CustomEnums(); + Footer(); + System.IO.File.WriteAllText( $"{folder}CustomEnums.cs", sb.ToString() ); } { @@ -39,6 +47,14 @@ namespace Generator System.IO.File.WriteAllText( $"{folder}SteamTypes.cs", sb.ToString() ); } + { + sb = new StringBuilder(); + Header( "Steamworks.Data" ); + Callbacks(); + Footer(); + System.IO.File.WriteAllText( $"{folder}SteamCallbacks.cs", sb.ToString() ); + } + { sb = new StringBuilder(); Header( "Steamworks.Data" ); @@ -53,37 +69,26 @@ namespace Generator Constants(); Footer(); System.IO.File.WriteAllText( $"{folder}SteamConstants.cs", sb.ToString() ); + } + + { + sb = new StringBuilder(); + Header( "Steamworks.Data" ); + StructFunctions(); + Footer(); + System.IO.File.WriteAllText( $"{folder}SteamStructFunctions.cs", sb.ToString() ); } { - GenerateGlobalFunctions( "SteamAPI", $"{folder}../Generated/SteamAPI.cs" ); - GenerateGlobalFunctions( "SteamGameServer", $"{folder}../Generated/SteamGameServer.cs" ); - GenerateGlobalFunctions( "SteamInternal", $"{folder}../Generated/SteamInternal.cs" ); + // GenerateGlobalFunctions( "SteamAPI", $"{folder}../Generated/SteamAPI.cs" ); + // GenerateGlobalFunctions( "SteamGameServer", $"{folder}../Generated/SteamGameServer.cs" ); + // GenerateGlobalFunctions( "SteamInternal", $"{folder}../Generated/SteamInternal.cs" ); } - { - GenerateVTableClass( "ISteamApps", $"{folder}../Generated/Interfaces/ISteamApps.cs" ); - GenerateVTableClass( "ISteamUtils", $"{folder}../Generated/Interfaces/ISteamUtils.cs" ); - GenerateVTableClass( "ISteamParentalSettings", $"{folder}../Generated/Interfaces/ISteamParentalSettings.cs" ); - GenerateVTableClass( "ISteamMusic", $"{folder}../Generated/Interfaces/ISteamMusic.cs" ); - GenerateVTableClass( "ISteamVideo", $"{folder}../Generated/Interfaces/ISteamVideo.cs" ); - GenerateVTableClass( "ISteamUser", $"{folder}../Generated/Interfaces/ISteamUser.cs" ); - GenerateVTableClass( "ISteamMatchmakingServers", $"{folder}../Generated/Interfaces/ISteamMatchmakingServers.cs" ); - GenerateVTableClass( "ISteamFriends", $"{folder}../Generated/Interfaces/ISteamFriends.cs" ); - GenerateVTableClass( "ISteamGameServer", $"{folder}../Generated/Interfaces/ISteamGameServer.cs" ); - GenerateVTableClass( "ISteamScreenshots", $"{folder}../Generated/Interfaces/ISteamScreenshots.cs" ); - GenerateVTableClass( "ISteamUserStats", $"{folder}../Generated/Interfaces/ISteamUserStats.cs" ); - GenerateVTableClass( "ISteamUGC", $"{folder}../Generated/Interfaces/ISteamUGC.cs" ); - GenerateVTableClass( "ISteamRemoteStorage", $"{folder}../Generated/Interfaces/ISteamRemoteStorage.cs" ); - GenerateVTableClass( "ISteamInventory", $"{folder}../Generated/Interfaces/ISteamInventory.cs" ); - GenerateVTableClass( "ISteamNetworking", $"{folder}../Generated/Interfaces/ISteamNetworking.cs" ); - GenerateVTableClass( "ISteamMatchmaking", $"{folder}../Generated/Interfaces/ISteamMatchmaking.cs" ); - GenerateVTableClass( "ISteamParties", $"{folder}../Generated/Interfaces/ISteamParties.cs" ); - GenerateVTableClass( "ISteamNetworkingUtils", $"{folder}../Generated/Interfaces/ISteamNetworkingUtils.cs" ); - GenerateVTableClass( "ISteamNetworkingSockets", $"{folder}../Generated/Interfaces/ISteamNetworkingSockets.cs" ); - GenerateVTableClass( "ISteamGameServerStats", $"{folder}../Generated/Interfaces/ISteamGameServerStats.cs" ); - GenerateVTableClass( "ISteamInput", $"{folder}../Generated/Interfaces/ISteamInput.cs" ); - } + foreach ( var iface in def.Interfaces ) + { + GenerateInterface( iface, $"{folder}../Generated/Interfaces/" ); + } } void WorkoutTypes() @@ -125,5 +130,37 @@ namespace Generator { EndBlock(); } + + public bool IsStruct( string name ) + { + if ( def.structs.Any( x => x.Name == name || Cleanup.ConvertType( x.Name ) == name ) ) + return true; + + return false; + } + + public bool IsTypeDef( string name ) + { + if ( def.typedefs.Any( x => x.Name == name || Cleanup.ConvertType( x.Name ) == name ) ) + return true; + + return false; + } + + public bool IsCallback( string name ) + { + if ( def.callback_structs.Any( x => x.Name == name || Cleanup.ConvertType( x.Name ) == name ) ) + return true; + + return false; + } + + public bool IsEnum( string name ) + { + if ( def.enums.Any( x => x.Name == name || Cleanup.ConvertType( x.Name ) == name ) ) + return true; + + return false; + } } } diff --git a/Generator/CodeWriter/Constants.cs b/Generator/CodeWriter/Constants.cs index 3f31841..3aa6126 100644 --- a/Generator/CodeWriter/Constants.cs +++ b/Generator/CodeWriter/Constants.cs @@ -10,17 +10,31 @@ namespace Generator { private void Constants() { - StartBlock( "internal static class CallbackIdentifiers" ); - foreach ( var o in def.CallbackIds ) - { - WriteLine( $"public const int {o.Key} = {o.Value};" ); - } - EndBlock(); - StartBlock( "internal static class Defines" ); - foreach ( var o in def.Defines ) + foreach ( var o in def.Consts ) { - WriteLine( $"internal const string {o.Key} = \"{o.Value}\";" ); + var type = o.Type; + type = Cleanup.ConvertType( type ); + + var val = o.Val; + + // Don't need to ull in c# + if ( val.EndsWith( "ull" ) ) + val = val.Replace( "ull", "" ); + + val = val.Replace( "uint32", "uint" ); + val = val.Replace( "16U", "16" ); + val = val.Replace( "8U", "8" ); + + // we're not an actual typedef so can't cast like this + val = val.Replace( "( SteamItemInstanceID_t ) ~ 0", "~default(ulong)" ); + + // This is defined as 0xffffffff - which is too big for an int + // It seems like the loop around is required, so we just hard code it + if ( o.Name == "HSERVERQUERY_INVALID" && val == "0xffffffff" ) + val = "-1"; + + WriteLine( $"internal static readonly {type} {o.Name} = {val};" ); } EndBlock(); } diff --git a/Generator/CodeWriter/CustomEnums.cs b/Generator/CodeWriter/CustomEnums.cs new file mode 100644 index 0000000..55e5844 --- /dev/null +++ b/Generator/CodeWriter/CustomEnums.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Generator +{ + public partial class CodeWriter + { + void CustomEnums() + { + StartBlock( "public enum CallbackType" ); + foreach ( var c in def.callback_structs.OrderBy( x => x.CallbackId ) ) + { + if ( Cleanup.IsDeprecated( c.Name ) ) + Write( "// " ); + + WriteLine( $"{c.Name.Replace( "_t", "" ) } = {c.CallbackId}," ); + } + EndBlock(); + + int last = -1; + + StartBlock( "internal static partial class CallbackTypeFactory" ); + StartBlock( "internal static System.Collections.Generic.Dictionary All = new System.Collections.Generic.Dictionary" ); + foreach ( var c in def.callback_structs.OrderBy( x => x.CallbackId ) ) + { + if ( Cleanup.IsDeprecated( c.Name ) ) + continue; + + if ( last == c.CallbackId ) + Write( "// " ); + + WriteLine( $"{{ CallbackType.{c.Name.Replace( "_t", "" ) }, typeof( {Cleanup.ConvertType(c.Name)} )}}," ); + + last = c.CallbackId; + } + EndBlock( ";" ); + EndBlock(); + } + } +} diff --git a/Generator/CodeWriter/Enums.cs b/Generator/CodeWriter/Enums.cs index cc5c6be..5f7e0f2 100644 --- a/Generator/CodeWriter/Enums.cs +++ b/Generator/CodeWriter/Enums.cs @@ -25,55 +25,81 @@ namespace Generator if ( name[0] == 'E' ) name = name.Substring( 1 ); - name = Cleanup.ConvertType( name ); + name = Cleanup.ConvertType( name ); - if ( !Cleanup.ShouldCreate( name ) ) - continue; + if ( !Cleanup.ShouldCreate( name ) ) + continue; - StartBlock( $"{Cleanup.Expose( name )} enum {name} : int" ); + var lowest = o.Values.Min( x => long.Parse( x.Value ) ); + var highest = o.Values.Max( x => long.Parse( x.Value ) ); + + var t = "int"; + + if ( highest > int.MaxValue ) + t = "uint"; + + WriteEnum( o, name, t ); + } + } + + private void WriteEnum( SteamApiDefinition.EnumDef o, string name, string t = "int" ) + { + StartBlock( $"{Cleanup.Expose( name )} enum {name} : {t}" ); + { + // + // If all the enum values start with the same + // string, remove it. This converts + // "k_EUserHasLicenseResultHasLicense" to "HasLicense" etc + // + int iFinished = int.MaxValue; + for ( int i = 0; i < 4096; i++ ) { - // - // If all the enum values start with the same - // string, remove it. This converts - // "k_EUserHasLicenseResultHasLicense" to "HasLicense" etc - // - int iFinished = int.MaxValue; - for ( int i = 0; i < 4096; i++ ) - { - var c = o.Values.First().Name[i]; - foreach ( var entry in o.Values ) - { - if ( entry.Name[i] != c ) - { - iFinished = i; - break; - } - } - - if ( iFinished != int.MaxValue ) - break; - } - + var c = o.Values.First().Name[i]; foreach ( var entry in o.Values ) { - var ename = entry.Name; - - if ( iFinished != int.MaxValue ) - ename = ename.Substring( iFinished ); - - // - // Names aren't allowed to start with a number - // So just stick the enum name on the front - // - if ( char.IsNumber( ename[0] ) ) - ename = name + ename; - - WriteLine( $"{ename} = {entry.Value}," ); + if ( entry.Name[i] != c ) + { + iFinished = i; + break; + } } + + if ( iFinished != int.MaxValue ) + break; + } + + foreach ( var entry in o.Values ) + { + var ename = entry.Name; + + if ( ename.Contains( "Force32Bit" ) ) + continue; + + if ( iFinished != int.MaxValue ) + ename = ename.Substring( iFinished ); + + // + // Names aren't allowed to start with a number + // So just stick the enum name on the front + // + if ( char.IsNumber( ename[0] ) ) + { + var p = name; + + if ( p == "HTTPStatusCode" ) p = "Code"; + if ( p == "SteamIPType" ) p = "Type"; + + ename = p + ename; + } + + if (ename.StartsWith( $"k_E{name}" )) + ename = ename[(name.Length + 3)..]; + + WriteLine( $"{ename.Trim( ' ', '_' )} = {entry.Value}," ); } - EndBlock(); - WriteLine(); } + EndBlock(); + WriteLine(); } } } diff --git a/Generator/CodeWriter/GlobalFunctions.cs b/Generator/CodeWriter/GlobalFunctions.cs deleted file mode 100644 index 3f4224f..0000000 --- a/Generator/CodeWriter/GlobalFunctions.cs +++ /dev/null @@ -1,128 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Generator -{ - public partial class CodeWriter - { - public void GenerateGlobalFunctions( string startingWith, string filename ) - { - var functions = def.methods.Where( x => x.Name.StartsWith( startingWith ) ); - - sb = new StringBuilder(); - - WriteLine( $"using System;" ); - WriteLine( $"using System.Runtime.InteropServices;" ); - WriteLine( $"using System.Text;" ); - WriteLine( $"using System.Threading.Tasks;" ); - WriteLine( $"using Steamworks.Data;" ); - WriteLine(); - - WriteLine(); - - StartBlock( $"namespace Steamworks" ); - { - StartBlock( $"internal static class {startingWith}" ); - { - StartBlock( $"internal static class Native" ); - { - foreach ( var func in functions ) - { - WriteMarshalledFunction( func ); - } - } - EndBlock(); - - foreach ( var func in functions ) - { - WriteGlobalFunction( startingWith, func ); - WriteLine(); - } - - } - EndBlock(); - } - EndBlock(); - - System.IO.File.WriteAllText( $"{filename}", sb.ToString().Replace( "( )", "()" ) ); - } - - private void WriteGlobalFunction( string cname, SteamApiDefinition.MethodDef func ) - { - var cleanName = func.Name.Substring( cname.Length ).Trim( '_' ); - - var returnType = BaseType.Parse( func.ReturnType ); - returnType.Func = func.Name; - - if ( func.Params == null ) - func.Params = new SteamApiDefinition.MethodDef.ParamType[0]; - - var args = func.Params.Select( x => - { - var bt = BaseType.Parse( x.Type, x.Name ); - bt.Func = func.Name; - return bt; - } ).ToArray(); - var argstr = string.Join( ", ", args.Select( x => x.AsArgument() ) ); - var delegateargstr = string.Join( ", ", args.Select( x => x.AsArgument() ) ); - - if ( returnType.IsReturnedWeird ) - { - throw new System.Exception( "TODO" ); - } - - StartBlock( $"static internal {returnType.ReturnType} {cleanName}( {argstr} )" ); - { - var callargs = string.Join( ", ", args.Select( x => x.AsCallArgument() ) ); - - if ( returnType.IsReturnedWeird ) - { - WriteLine( $"var retVal = default( {returnType.TypeName} );" ); - WriteLine( $"Native.{func.Name}( ref retVal, {callargs} );" ); - WriteLine( $"{returnType.Return( "retVal" )}" ); - } - else if ( returnType.IsVoid ) - { - WriteLine( $"Native.{func.Name}( {callargs} );" ); - } - else - { - var v = $"Native.{func.Name}( {callargs} )"; - - WriteLine( returnType.Return( v ) ); - } - } - EndBlock(); - - } - - private void WriteMarshalledFunction( SteamApiDefinition.MethodDef func ) - { - var returnType = BaseType.Parse( func.ReturnType ); - returnType.Func = func.Name; - - if ( func.Params == null ) - func.Params = new SteamApiDefinition.MethodDef.ParamType[0]; - - var args = func.Params.Select( x => - { - var bt = BaseType.Parse( x.Type, x.Name ); - bt.Func = func.Name; - return bt; - } ).ToArray(); - var argstr = string.Join( ", ", args.Select( x => x.AsArgument() ) ); - var delegateargstr = string.Join( ", ", args.Select( x => x.AsArgument() ) ); - - WriteLine( $"[DllImport( Platform.LibraryName, EntryPoint = \"{func.Name}\", CallingConvention = CallingConvention.Cdecl )]" ); - - if ( returnType.ReturnAttribute != null ) - WriteLine( returnType.ReturnAttribute ); - - WriteLine( $"public static extern {(returnType.IsReturnedWeird ? "void" : returnType.TypeNameFrom)} {func.Name}( {delegateargstr} );" ); - WriteLine(); - } - } -} diff --git a/Generator/CodeWriter/Interface.cs b/Generator/CodeWriter/Interface.cs new file mode 100644 index 0000000..790ec4c --- /dev/null +++ b/Generator/CodeWriter/Interface.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Generator +{ + public partial class CodeWriter + { + public void GenerateInterface( SteamApiDefinition.Interface iface, string folder ) + { + sb = new StringBuilder(); + + WriteLine( $"using System;" ); + WriteLine( $"using System.Runtime.InteropServices;" ); + WriteLine( $"using System.Text;" ); + WriteLine( $"using System.Threading.Tasks;" ); + WriteLine( $"using Steamworks.Data;" ); + WriteLine(); + + WriteLine(); + + StartBlock( $"namespace Steamworks" ); + { + StartBlock( $"internal unsafe class {iface.Name} : SteamInterface" ); + { + WriteLine(); + StartBlock( $"internal {iface.Name}( bool IsGameServer )" ); + { + WriteLine( $"SetupInterface( IsGameServer );" ); + } + EndBlock(); + WriteLine(); + + if ( iface.Accessors != null ) + { + foreach ( var func in iface.Accessors ) + { + WriteLine( $"[DllImport( Platform.LibraryName, EntryPoint = \"{func.Name_Flat}\", CallingConvention = Platform.CC)]" ); + WriteLine( $"internal static extern IntPtr {func.Name_Flat}();" ); + + if ( func.Kind == "user" ) + { + WriteLine( $"public override IntPtr GetUserInterfacePointer() => {func.Name_Flat}();" ); + } + else if ( func.Kind == "gameserver" ) + { + WriteLine( $"public override IntPtr GetServerInterfacePointer() => {func.Name_Flat}();" ); + } + else if ( func.Kind == "global" ) + { + WriteLine( $"public override IntPtr GetGlobalInterfacePointer() => {func.Name_Flat}();" ); + } + else + { + throw new Exception( $"unknown Kind {func.Kind}" ); + } + } + + WriteLine(); + WriteLine(); + } + + foreach ( var func in iface.Methods ) + { + if ( Cleanup.IsDeprecated( $"{iface.Name}.{func.Name}" ) ) + continue; + + WriteFunction( iface, func ); + WriteLine(); + } + + } + EndBlock(); + } + EndBlock(); + + System.IO.File.WriteAllText( $"{folder}{iface.Name}.cs", sb.ToString() ); + } + + private void WriteFunction( SteamApiDefinition.Interface iface, SteamApiDefinition.Interface.Method func ) + { + var returnType = BaseType.Parse( func.ReturnType, null, func.CallResult ); + returnType.Func = func.Name; + + if ( func.Params == null ) + func.Params = new SteamApiDefinition.Interface.Method.Param[0]; + + var args = func.Params.Select( x => + { + var bt = BaseType.Parse( x.ParamType, x.ParamName ); + bt.Func = func.Name; + return bt; + } ).ToArray(); + + for( int i=0; i !x.ShouldSkipAsArgument ).Select( x => x.AsArgument() ) ); ; + var delegateargstr = string.Join( ", ", args.Select( x => x.AsNativeArgument() ) ); + + if ( returnType is SteamApiCallType sap ) + { + sap.CallResult = func.CallResult; + argstr = string.Join( ", ", args.Select( x => x.AsArgument().Replace( "ref ", " /* ref */ " ) ) ); + } + + WriteLine( $"#region FunctionMeta" ); + + WriteLine( $"[DllImport( Platform.LibraryName, EntryPoint = \"{func.FlatName}\", CallingConvention = Platform.CC)]" ); + + if ( returnType.ReturnAttribute != null ) + WriteLine( returnType.ReturnAttribute ); + + WriteLine( $"private static extern {returnType.TypeNameFrom} _{func.Name}( IntPtr self, {delegateargstr} );".Replace( "( IntPtr self, )", "( IntPtr self )" ) ); + + WriteLine(); + WriteLine( $"#endregion" ); + + + if ( !string.IsNullOrEmpty( func.Desc ) ) + { + WriteLine( "/// " ); + WriteLine( $"/// {func.Desc}" ); + WriteLine( "/// " ); + } + + StartBlock( $"internal {returnType.ReturnType} {func.Name}( {argstr} )".Replace( "( )", "()" ) ); + { + var callargs = string.Join( ", ", args.Select( x => x.AsCallArgument() ) ); + + // + // Code before any calls + // + foreach ( var arg in args ) + { + if ( arg is FetchStringType sb ) + { + WriteLine( $"using var mem{sb.VarName} = Helpers.TakeMemory();" ); + } + } + + if ( returnType.IsVoid ) + { + WriteLine( $"_{func.Name}( Self, {callargs} );".Replace( "( Self, )", "( Self )" ) ); + } + else + { + WriteLine( $"var returnValue = _{func.Name}( Self, {callargs} );".Replace( "( Self, )", "( Self )" ) ); + } + + // + // Code after the call + // + foreach ( var arg in args ) + { + if ( arg is FetchStringType sb ) + { + WriteLine( $"{sb.VarName} = Helpers.MemoryToString( mem{sb.VarName} );" ); + } + } + + // + // Return + // + if ( !returnType.IsVoid ) + { + WriteLine( returnType.Return( "returnValue" ) ); + } + } + EndBlock(); + } + } +} diff --git a/Generator/CodeWriter/Struct.cs b/Generator/CodeWriter/Struct.cs index 69059f4..a879948 100644 --- a/Generator/CodeWriter/Struct.cs +++ b/Generator/CodeWriter/Struct.cs @@ -15,53 +15,28 @@ namespace Generator public string ManagedType; } - private Dictionary TypeDefs = new Dictionary(); - - // - // Don't give a fuck about these classes, they just cause us trouble - // - public readonly static string[] SkipStructs = new string[] - { - "CSteamID", - "CSteamAPIContext", - "CCallResult", - "CCallback", - "ValvePackingSentinel_t", - "CCallbackBase", - "CSteamGameServerAPIContext" - }; - - public readonly static string[] ForceLargePackStructs = new string[] - { - "LeaderboardEntry_t" - }; + private readonly Dictionary TypeDefs = new Dictionary(); void Structs() { - var callbackList = new List(); - foreach ( var c in def.structs ) { var name = Cleanup.ConvertType( c.Name ); - if ( SkipStructs.Contains( c.Name ) ) - continue; - if ( !Cleanup.ShouldCreate( name ) ) continue; if ( name.Contains( "::" ) ) continue; - int defaultPack = c.IsPack4OnWindows ? 4 : 8; + var partial = ""; + if ( c.Methods != null ) partial = " partial"; - var isCallback = !string.IsNullOrEmpty( c.CallbackId ); - - // - // Main struct - // - WriteLine( $"[StructLayout( LayoutKind.Sequential, Pack = Platform.{(c.IsPack4OnWindows?"StructPackSize": "StructPlatformPackSize")} )]" ); - StartBlock( $"{Cleanup.Expose( name )} struct {name}" ); + // + // Main struct + // + WriteLine( $"[StructLayout( LayoutKind.Sequential, Pack = Platform.{(c.IsPack4OnWindows?"StructPackSize": "StructPlatformPackSize")} )]" ); + StartBlock( $"{Cleanup.Expose( name )}{partial} struct {name}" ); { // // The fields @@ -69,80 +44,12 @@ namespace Generator StructFields( c.Fields ); WriteLine(); - if ( isCallback ) + if ( c.Enums != null ) { - WriteLine( "#region SteamCallback" ); - { - - WriteLine( $"internal static readonly int StructSize = System.Runtime.InteropServices.Marshal.SizeOf( typeof({name}) );" ); - WriteLine( $"internal static {name} Fill( IntPtr p ) => (({name})({name}) Marshal.PtrToStructure( p, typeof({name}) ) );" ); - WriteLine(); - WriteLine( $"static Action<{name}> actionClient;" ); - WriteLine( $"[MonoPInvokeCallback] static void OnClient( IntPtr thisptr, IntPtr pvParam ) => actionClient?.Invoke( Fill( pvParam ) );" ); - - WriteLine( $"static Action<{name}> actionServer;" ); - WriteLine( $"[MonoPInvokeCallback] static void OnServer( IntPtr thisptr, IntPtr pvParam ) => actionServer?.Invoke( Fill( pvParam ) );" ); - - StartBlock( $"public static void Install( Action<{name}> action, bool server = false )" ); - { - StartBlock( "if ( server )" ); - { - WriteLine( $"Event.Register( OnServer, StructSize, {c.CallbackId}, true );" ); - WriteLine( $"actionServer = action;" ); - } - Else(); - { - WriteLine( $"Event.Register( OnClient, StructSize, {c.CallbackId}, false );" ); - WriteLine( $"actionClient = action;" ); - } - EndBlock(); - - } - EndBlock(); - - StartBlock( $"public static async Task<{name}?> GetResultAsync( SteamAPICall_t handle )" ); - { - WriteLine( $"bool failed = false;" ); - WriteLine(); - StartBlock( $"while ( !SteamUtils.IsCallComplete( handle, out failed ) )" ); - { - WriteLine( $"await Task.Delay( 1 );" ); - WriteLine( $"if ( !SteamClient.IsValid && !SteamServer.IsValid ) return null;" ); - } - EndBlock(); - - WriteLine( $"if ( failed ) return null;" ); - WriteLine( $"" ); - WriteLine( $"var ptr = Marshal.AllocHGlobal( StructSize );" ); - WriteLine( $"" ); - WriteLine( $"try" ); - WriteLine( $"{{" ); - WriteLine( $" if ( !SteamUtils.Internal.GetAPICallResult( handle, ptr, StructSize, {c.CallbackId}, ref failed ) || failed )" ); - WriteLine( $" return null;" ); - WriteLine( $"" ); - WriteLine( $" return Fill( ptr );" ); - WriteLine( $"}}" ); - WriteLine( $"finally" ); - WriteLine( $"{{" ); - WriteLine( $" Marshal.FreeHGlobal( ptr );" ); - WriteLine( $"}}" ); - } - EndBlock(); - } - WriteLine( "#endregion" ); - } - else - { - WriteLine( "#region Marshalling" ); - { - WriteLine( $"internal static {name} Fill( IntPtr p ) => (({name})({name}) Marshal.PtrToStructure( p, typeof({name}) ) );" ); - } - WriteLine( "#endregion" ); - } - - if ( !string.IsNullOrEmpty( c.CallbackId ) ) - { - callbackList.Add( c ); + foreach ( var e in c.Enums ) + { + WriteEnum( e, e.Name ); + } } } @@ -185,6 +92,13 @@ namespace Generator WriteLine( $"[MarshalAs(UnmanagedType.ByValArray, SizeConst = {num})] // {m.Name}" ); } + if ( t.StartsWith( "ushort " ) && t.Contains( "[" ) ) + { + var num = t.Replace( "ushort", "" ).Trim( '[', ']', ' ' ); + t = $"ushort[]"; + WriteLine( $"[MarshalAs(UnmanagedType.ByValArray, SizeConst = {num}, ArraySubType = UnmanagedType.U2)]" ); + } + if ( t.StartsWith( "SteamId" ) && t.Contains( "[" ) ) { var num = t.Replace( "SteamId", "" ).Trim( '[', ']', ' ' ); @@ -206,6 +120,13 @@ namespace Generator WriteLine( $"[MarshalAs(UnmanagedType.ByValArray, SizeConst = {num}, ArraySubType = UnmanagedType.U4)]" ); } + if ( t.StartsWith( "uint " ) && t.Contains( "[" ) ) + { + var num = t.Replace( "uint", "" ).Trim( '[', ']', ' ' ); + t = $"uint[]"; + WriteLine( $"[MarshalAs(UnmanagedType.ByValArray, SizeConst = {num}, ArraySubType = UnmanagedType.U4)]" ); + } + if ( t.StartsWith( "float " ) && t.Contains( "[" ) ) { var num = t.Replace( "float", "" ).Trim( '[', ']', ' ' ); @@ -225,6 +146,11 @@ namespace Generator WriteLine($"[MarshalAs(UnmanagedType.ByValArray, SizeConst = {num}, ArraySubType = UnmanagedType.U4)]"); } + if ( t == "SteamInputActionEvent_t.AnalogAction_t" ) + { + Write( "// " ); + } + WriteLine( $"internal {t} {CleanMemberName( m.Name )}; // {m.Name} {m.Type}" ); } } diff --git a/Generator/CodeWriter/StructFunctions.cs b/Generator/CodeWriter/StructFunctions.cs new file mode 100644 index 0000000..7613430 --- /dev/null +++ b/Generator/CodeWriter/StructFunctions.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Generator +{ + public partial class CodeWriter + { + void StructFunctions() + { + foreach ( var c in def.structs.Union( def.callback_structs.Select( x => x as SteamApiDefinition.StructDef ) ).OrderBy( x => x.Name ) ) + { + var name = Cleanup.ConvertType( c.Name ); + + if ( name.Contains( "::" ) ) + continue; + + if ( c.Methods == null || c.Methods.Length == 0 ) + continue; + + // + // Main struct + // + StartBlock( $"{Cleanup.Expose( name )} partial struct {name}" ); + { + foreach ( var func in c.Methods ) + { + if ( func.Name.Contains( "operator" ) ) + func.Name = func.FlatName.Substring( func.FlatName.LastIndexOf( '_' ) + 1 ); + + var returnType = BaseType.Parse( func.ReturnType, null, func.CallResult ); + returnType.Func = func.Name; + + var args = func.Params.Select( x => + { + var bt = BaseType.Parse( x.ParamType, x.ParamName ); + bt.Func = func.Name; + return bt; + } ).ToArray(); + + for ( int i = 0; i < args.Length; i++ ) + { + if ( args[i] is FetchStringType ) + { + if ( args[i + 1] is IntType || args[i + 1] is UIntType || args[i + 1] is UIntPtrType ) + { + if ( string.IsNullOrEmpty( args[i + 1].Ref ) ) + { + args[i + 1] = new LiteralType( args[i + 1], "(1024 * 32)" ); + } + } + else + { + throw new System.Exception( $"String Builder Next Type Is {args[i + 1].GetType()}" ); + } + } + } + + var delegateargstr = string.Join( ", ", args.Select( x => x.AsNativeArgument() ) ); + + if ( !string.IsNullOrEmpty( func.Desc ) ) + { + WriteLine( "/// " ); + WriteLine( $"/// {func.Desc}" ); + WriteLine( "/// " ); + } + + if ( returnType.ReturnAttribute != null ) + WriteLine( returnType.ReturnAttribute ); + + var _unsafe = ""; + var firstArg = $"ref {name} self"; + + // + // If this is NetMsg then the ORIGINAL pointer address is important + // because we need to pass in the original pointer - not just the data + // + if ( name == "NetMsg" ) + { + firstArg = $"{name}* self"; + _unsafe = " unsafe"; + } + + WriteLine( $"[DllImport( Platform.LibraryName, EntryPoint = \"{func.FlatName}\", CallingConvention = Platform.CC)]" ); + WriteLine( $"internal static{_unsafe} extern {returnType.TypeNameFrom} Internal{func.Name}( {firstArg}, {delegateargstr} );".Replace( $"( {firstArg}, )", $"( {firstArg} )" ) ); + WriteLine(); + + } + + + } + EndBlock(); + WriteLine(); + } + } + } +} diff --git a/Generator/CodeWriter/Types.cs b/Generator/CodeWriter/Types.cs index a4f2b1b..9b8123f 100644 --- a/Generator/CodeWriter/Types.cs +++ b/Generator/CodeWriter/Types.cs @@ -37,7 +37,10 @@ namespace Generator { foreach ( var o in def.typedefs.Where( x => !x.Name.Contains( "::" ) ) ) { - var typeName = Cleanup.ConvertType( o.Name ); + if ( !Cleanup.ShouldCreate( o.Name ) ) + continue; + + var typeName = Cleanup.ConvertType( o.Name ); if ( !Cleanup.ShouldCreate( typeName ) ) continue; @@ -50,7 +53,16 @@ namespace Generator StartBlock( $"{Cleanup.Expose( typeName )} struct {typeName} : IEquatable<{typeName}>, IComparable<{typeName}>" ); { - WriteLine( $"public {ToManagedType( o.Type )} Value;" ); + WriteLine( $"// Name: {o.Name}, Type: {o.Type}" ); + + if ( o.Type == "char [1024]" ) + { + WriteLine( $"public fixed char[1024] Value;" ); + } + else + { + WriteLine( $"public {ToManagedType( o.Type )} Value;" ); + } WriteLine(); WriteLine( $"public static implicit operator {typeName}( {ToManagedType( o.Type )} value ) => new {typeName}(){{ Value = value }};" ); WriteLine( $"public static implicit operator {ToManagedType( o.Type )}( {typeName} value ) => value.Value;" ); diff --git a/Generator/CodeWriter/Types/BaseType.cs b/Generator/CodeWriter/Types/BaseType.cs deleted file mode 100644 index 1e03c50..0000000 --- a/Generator/CodeWriter/Types/BaseType.cs +++ /dev/null @@ -1,268 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -internal class BaseType -{ - public string VarName; - public string NativeType; - public virtual string TypeName => $"{NativeType}"; - public virtual string TypeNameFrom => TypeName; - - public string Func; - - public virtual bool WindowsSpecific => false; - - public static BaseType Parse( string type, string varname = null ) - { - type = Cleanup.ConvertType( type ); - - if ( varname == "ppOutMessages" ) return new PointerType { NativeType = "void *", VarName = varname }; - if ( type == "SteamAPIWarningMessageHook_t" ) return new PointerType { NativeType = type, VarName = varname }; - - if ( type == "SteamAPICall_t" ) return new SteamApiCallType { NativeType = type, VarName = varname }; - - if ( type == "void" ) return new VoidType { NativeType = type, VarName = varname }; - if ( type.Replace( " ", "" ).StartsWith( "constchar*" ) ) return new ConstCharType { NativeType = type, VarName = varname }; - if ( type == "char *" ) return new StringType { NativeType = type, VarName = varname }; - - var basicType = type.Replace( "const ", "" ).Trim( ' ', '*', '&' ); - - if ( basicType == "void" ) return new PointerType { NativeType = type, VarName = varname }; - if ( basicType.StartsWith( "ISteam" ) ) return new PointerType { NativeType = type, VarName = varname }; - if ( basicType == "const void" ) return new PointerType { NativeType = type, VarName = varname }; - if ( basicType == "int32" || basicType == "int" ) return new IntType { NativeType = type, VarName = varname }; - if ( basicType == "uint32" ) return new UIntType { NativeType = type, VarName = varname }; - if ( basicType == "unsigned int" ) return new UIntType { NativeType = type, VarName = varname }; - if ( basicType == "uint8" ) return new UInt8Type { NativeType = type, VarName = varname }; - if ( basicType == "uint16" ) return new UInt16Type { NativeType = type, VarName = varname }; - if ( basicType == "unsigned short" ) return new UInt16Type { NativeType = type, VarName = varname }; - if ( basicType == "SteamId" ) return new CSteamIdType { NativeType = type, VarName = varname }; - - // DANGER DANGER Danger - if ( basicType == "size_t" ) return new ULongType { NativeType = type, VarName = varname }; - if ( basicType == "intptr_t" ) return new LongType { NativeType = type, VarName = varname }; - if ( basicType == "ptrdiff_t" ) return new LongType { NativeType = type, VarName = varname }; - - if ( basicType == "uint64" ) return new ULongType { NativeType = type, VarName = varname }; - if ( basicType == "int64" ) return new LongType { NativeType = type, VarName = varname }; - if ( basicType == "bool" ) return new BoolType { NativeType = type, VarName = varname }; - - if ( basicType.EndsWith( "_t" ) ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "InventoryItemId" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "InventoryDefId" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "PingLocation" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "NetIdentity" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "NetAddress" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "ConnectionInfo" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "DigitalState" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "AnalogState" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType == "MotionState" ) return new StructType { NativeType = type, VarName = varname, StructName = basicType }; - if ( basicType.StartsWith( "E" ) && char.IsUpper( basicType[1] ) ) return new EnumType { NativeType = type.Substring( 1 ), VarName = varname }; - - return new BaseType { NativeType = type, VarName = varname }; - } - - public virtual bool ShouldSkipAsArgument => false; - - public virtual string AsNativeArgument() => AsArgument(); - public virtual string AsArgument() => IsVector ? $"[In,Out] {Ref}{TypeName.Trim( '*', ' ' )}[] {VarName}" : $"{Ref}{TypeName.Trim( '*', ' ' )} {VarName}"; - public virtual string AsCallArgument() => $"{Ref}{VarName}"; - - public virtual string Return( string varname ) => $"return {varname};"; - public virtual string ReturnAttribute => null; - - public virtual string ReturnType => TypeName; - - public virtual string Ref => !IsVector && NativeType.EndsWith( "*" ) || NativeType.EndsWith( "**" ) || NativeType.Contains( "&" ) ? "ref " : ""; - public virtual bool IsVector - { - get - { - if ( Func == "ReadP2PPacket" ) return false; - if ( Func == "SendP2PPacket" ) return false; - - if ( VarName == "pOut" ) return false; - if ( VarName == "pOutBuffer" ) return false; - if ( VarName == "pubRGB" ) return false; - if ( VarName == "pOutResultHandle" ) return false; - if ( VarName == "pOutDataType" ) return false; - - if ( VarName == "psteamIDClans" ) return true; - if ( VarName == "pScoreDetails" ) return true; - if ( VarName == "prgUsers" ) return true; - if ( VarName == "pBasePrices" ) return true; - if ( VarName == "pCurrentPrices" ) return true; - if ( VarName == "pItemDefIDs" ) return true; - if ( VarName == "handlesOut" ) return true; - if ( VarName == "pDetails" && Func == "GetDownloadedLeaderboardEntry" ) return true; - if ( VarName == "pData" && NativeType.EndsWith( "*" ) && Func.StartsWith( "GetGlobalStatHistory" ) ) return true; - if ( NativeType.EndsWith( "**" ) ) return true; - if ( VarName.StartsWith( "pArray" ) ) return true; - if ( VarName.StartsWith( "punArray" ) ) return true; - - if ( NativeType.EndsWith( "*" ) ) - { - if ( VarName.StartsWith( "pvec" ) ) return true; - if ( VarName.StartsWith( "pub" ) ) return true; - if ( VarName.StartsWith( "pOut" ) ) return true; - } - - return false; - } - } - - - public virtual bool IsVoid => false; - public virtual bool IsReturnedWeird => false; -} - - -internal class BoolType : BaseType -{ - public override string TypeName => $"bool"; - public override string AsArgument() => $"[MarshalAs( UnmanagedType.U1 )] {Ref}{TypeName} {VarName}"; - public override string ReturnAttribute => "[return: MarshalAs( UnmanagedType.I1 )]"; - -} - -internal class StructType : BaseType -{ - public string StructName; - - public override string TypeName => StructName; - - public override string TypeNameFrom => NativeType.EndsWith( "*" ) ? "IntPtr" : base.ReturnType; - - public override string Return( string varname ) - { - if ( NativeType.EndsWith( "*" ) ) - { - return $"return {TypeName}.Fill( {varname} );"; - } - - return base.Return( varname ); - } - - public override bool WindowsSpecific - { - get - { - var s = Generator.Program.Definitions.structs.FirstOrDefault( x => x.Name == StructName ); - if ( s == null ) return false; - - return !s.IsPack4OnWindows; - } - } - - - static string[] SpecialTypes = new string[] - { - "DigitalState", - "AnalogState", - "MotionState", - }; - - public override bool IsReturnedWeird => SpecialTypes.Contains( StructName ); -} - -internal class SteamApiCallType : BaseType -{ - public string CallResult; - public override string TypeName => "SteamAPICall_t"; - public override string Return( string varname ) => $"return await {CallResult}.GetResultAsync( {varname} );"; - public override string ReturnType => $"async Task<{CallResult}?>"; -} - -internal class CSteamIdType : BaseType -{ - public override bool IsReturnedWeird => true; -} - -internal class IntType : BaseType -{ - public override string TypeName => $"int"; -} - -internal class UIntType : BaseType -{ - public override string TypeName => $"uint"; -} -internal class UInt8Type : BaseType -{ - public override string TypeName => $"byte"; -} - -internal class UInt16Type : BaseType -{ - public override string TypeName => $"ushort"; -} - -internal class PointerType : BaseType -{ - public override string TypeName => $"IntPtr"; - public override string Ref => ""; -} - -internal class ULongType : BaseType -{ - public override string TypeName => $"ulong"; -} - -internal class LongType : BaseType -{ - public override string TypeName => $"long"; -} - -internal class ConstCharType : BaseType -{ - public override string TypeName => $"string"; - public override string TypeNameFrom => $"Utf8StringPointer"; - public override string AsArgument() => $"[MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] {Ref}{TypeName} {VarName}"; - public override string Ref => ""; -} - -internal class StringType : BaseType -{ - public override string TypeName => $"string"; - public override string AsArgument() => $"out string {VarName}"; - - public override string AsNativeArgument() => $"IntPtr {VarName}"; - - public override string AsCallArgument() => $"mem{VarName}"; - public override string Ref => ""; -} - -internal class VoidType : BaseType -{ - public override string TypeName => $"void"; - public override string TypeNameFrom => $"void"; - public override string Return( string varname ) => $""; - public override bool IsVoid => true; -} - -internal class EnumType : BaseType -{ - -} - -internal class ConstValueType : BaseType -{ - private string Value; - BaseType basetype; - - public ConstValueType( BaseType basetype, string value ) - { - this.basetype = basetype; - this.Value = value; - } - - public override bool ShouldSkipAsArgument => true; - - public override string Ref => ""; - public override bool IsVector => false; - public override string AsArgument() => basetype.AsArgument(); - public override string AsCallArgument() => Value; -} \ No newline at end of file diff --git a/Generator/CodeWriter/Utility.cs b/Generator/CodeWriter/Utility.cs index 308b209..9a7efff 100644 --- a/Generator/CodeWriter/Utility.cs +++ b/Generator/CodeWriter/Utility.cs @@ -57,7 +57,9 @@ namespace Generator case "uint64": return "ulong"; case "uint32": return "uint"; case "int32": return "int"; + case "int32_t": return "int"; case "int64": return "long"; + case "int64_t": return "long"; case "void *": return "IntPtr"; case "uint8 *": return "IntPtr"; case "int16": return "short"; diff --git a/Generator/Generator.csproj b/Generator/Generator.csproj index 009fd46..e1199b0 100644 --- a/Generator/Generator.csproj +++ b/Generator/Generator.csproj @@ -1,80 +1,13 @@ - - - + - Debug - AnyCPU - {B7225D11-2AAA-49D6-AE93-A73696EA35FE} + net6.0 Exe - Properties - Generator - Generator - v4.5.2 - 512 - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 + false + 10 - - ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - True - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Generator/Program.cs b/Generator/Program.cs index 57f9790..1a23c56 100644 --- a/Generator/Program.cs +++ b/Generator/Program.cs @@ -16,33 +16,12 @@ namespace Generator var content = System.IO.File.ReadAllText( "steam_sdk/steam_api.json" ); var def = Newtonsoft.Json.JsonConvert.DeserializeObject( content ); - AddMissing( def ); - - var parser = new CodeParser( @"steam_sdk" ); - - parser.ParseClasses(); - parser.ExtendDefinition( def ); - Definitions = def; - var generator = new CodeWriter( parser, def ); + var generator = new CodeWriter( def ); generator.ToFolder( "../Facepunch.Steamworks/Generated/" ); } - - private static void AddMissing( SteamApiDefinition output ) - { - var content = System.IO.File.ReadAllText( "steam_api_missing.json" ); - var missing = Newtonsoft.Json.JsonConvert.DeserializeObject( content ); - - output.structs.AddRange( missing.structs ); - output.methods.AddRange( missing.methods ); - - foreach ( var s in output.structs ) - { - if ( s.Fields == null ) s.Fields = new SteamApiDefinition.StructDef.StructFields[0]; - } - } } } diff --git a/Generator/SteamApiDefinition.cs b/Generator/SteamApiDefinition.cs index fa159df..ee59ca4 100644 --- a/Generator/SteamApiDefinition.cs +++ b/Generator/SteamApiDefinition.cs @@ -9,15 +9,50 @@ namespace Generator { public class SteamApiDefinition { - public class TypeDef + public class Interface { - [JsonProperty( PropertyName = "typedef" )] + [JsonProperty( PropertyName = "classname" )] public string Name { get; set; } - [JsonProperty( PropertyName = "type" )] - public string Type { get; set; } + + [JsonProperty( PropertyName = "version_string" )] + public string VersionString { get; set; } + + public class Method + { + public string Desc { get; set; } + public string ReturnType { get; set; } + public string CallResult { get; set; } + + public class Param + { + public string ParamType { get; set; } + public string ParamName { get; set; } + } + + public Param[] Params { get; set; } + [JsonProperty( PropertyName = "methodname" )] + public string Name { get; set; } + [JsonProperty( PropertyName = "methodname_flat" )] + public string FlatName { get; set; } + + } + + public Method[] Methods { get; set; } + + + public class Accessor + { + public string Kind { get; set; } + public string Name { get; set; } + public string Name_Flat { get; set; } + } + + public Accessor[] Accessors { get; set; } + } - public List typedefs { get; set; } + public Interface[] Interfaces { get; set; } + public class EnumDef { @@ -37,6 +72,17 @@ namespace Generator public EnumDef[] enums { get; set; } + + public class TypeDef + { + [JsonProperty( PropertyName = "typedef" )] + public string Name { get; set; } + [JsonProperty( PropertyName = "type" )] + public string Type { get; set; } + } + + public List typedefs { get; set; } + public class StructDef { public class StructFields @@ -51,58 +97,54 @@ namespace Generator public string Name { get; set; } [JsonProperty( PropertyName = "fields" )] public StructFields[] Fields { get; set; } + public Interface.Method[] Methods { get; set; } - public string CallbackId { get; set; } - public bool IsCallResult { get; set; } + public bool IsPack4OnWindows + { + get + { + // 4/8 packing is irrevant to these classes + if ( Name.Contains( "MatchMakingKeyValuePair_t" ) ) return true; + if ( Fields.Skip( 1 ).Any( x => x.Type.Contains( "CSteamID" ) ) ) + return true; - public bool IsPack4OnWindows - { - get - { - // 4/8 packing is irrevant to these classes - if ( Name.Contains( "MatchMakingKeyValuePair_t" ) ) return true; + if ( Fields.Skip( 1 ).Any( x => x.Type.Contains( "CGameID" ) ) ) + return true; - if ( Fields.Any( x => x.Type.Contains( "CSteamID" ) ) ) - return true; + return false; + } + } - return false; - } - } + public EnumDef[] Enums { get; set; } } public List structs { get; set; } - public class MethodDef + public class CallbackStructDef : StructDef { - public class ParamType - { - [JsonProperty( PropertyName = "paramname" )] - public string Name { get; set; } - [JsonProperty( PropertyName = "paramtype" )] - public string Type { get; set; } - } - - [JsonProperty( PropertyName = "classname" )] - public string ClassName { get; set; } - [JsonProperty( PropertyName = "methodname" )] - public string Name { get; set; } - [JsonProperty( PropertyName = "returntype" )] - public string ReturnType { get; set; } - [JsonProperty( PropertyName = "params" )] - public ParamType[] Params { get; set; } - - [JsonProperty( PropertyName = "callresult" )] - public string CallResult { get; set; } - - public bool NeedsSelfPointer = true; + [JsonProperty( PropertyName = "callback_id" )] + public int CallbackId { get; set; } } - public List methods { get; set; } + public List callback_structs { get; set; } + + public class Const + { + [JsonProperty( PropertyName = "consttype" )] + public string Type { get; set; } + + [JsonProperty( PropertyName = "constname" )] + public string Name { get; set; } - public Dictionary CallbackIds { get; internal set; } - public Dictionary Defines { get; internal set; } + [JsonProperty( PropertyName = "constval" )] + public string Val { get; set; } + } + + public List Consts { get; set; } } + + } diff --git a/Generator/Types/BaseType.cs b/Generator/Types/BaseType.cs new file mode 100644 index 0000000..e4c3f81 --- /dev/null +++ b/Generator/Types/BaseType.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +internal class BaseType +{ + public string VarName; + public string NativeType; + public virtual string TypeName => $"{NativeType}"; + public virtual string TypeNameFrom => TypeName; + + public string Func; + + public static BaseType Parse( string type, string varname = null, string callresult = null ) + { + type = Cleanup.ConvertType( type ); + + if ( varname == "ppOutMessages" ) return new PointerType { NativeType = "void *", VarName = varname }; + if ( type == "SteamAPIWarningMessageHook_t" ) return new PointerType { NativeType = type, VarName = varname }; + + if ( type == "SteamAPICall_t" ) return new SteamApiCallType { NativeType = type, VarName = varname, CallResult = callresult }; + + if ( type == "void" ) return new VoidType { NativeType = type, VarName = varname }; + if ( type.Replace( " ", "" ).StartsWith( "constchar*" ) ) return new ConstCharType { NativeType = type, VarName = varname }; + if ( type == "char *" ) return new FetchStringType { NativeType = type, VarName = varname }; + + var basicType = type.Replace( "const ", "" ).Trim( ' ', '*', '&' ); + + if ( basicType == "void" ) return new PointerType { NativeType = type, VarName = varname }; + if ( basicType.StartsWith( "ISteam" ) ) return new PointerType { NativeType = type, VarName = varname }; + if ( basicType == "const void" ) return new PointerType { NativeType = type, VarName = varname }; + if ( basicType == "int32" || basicType == "int" ) return new IntType { NativeType = type, VarName = varname }; + if ( basicType == "uint" ) return new UIntType { NativeType = type, VarName = varname }; + if ( basicType == "uint8" ) return new UInt8Type { NativeType = type, VarName = varname }; + if ( basicType == "uint16" ) return new UInt16Type { NativeType = type, VarName = varname }; + if ( basicType == "unsigned short" ) return new UInt16Type { NativeType = type, VarName = varname }; + + // DANGER DANGER Danger + if ( basicType == "intptr_t" ) return new PointerType { NativeType = type, VarName = varname }; + if ( basicType == "size_t" ) return new UIntPtrType { NativeType = type, VarName = varname }; + + if ( basicType == "uint64" ) return new ULongType { NativeType = type, VarName = varname }; + if ( basicType == "int64" ) return new LongType { NativeType = type, VarName = varname }; + if ( basicType == "bool" ) return new BoolType { NativeType = type, VarName = varname }; + + // + // Enum types are handled in a generic way, but we do need to clean up the name + // + if ( Generator.CodeWriter.Current.IsEnum( basicType ) ) + { + return new BaseType { NativeType = Cleanup.CleanEnum( type ), VarName = varname }; + } + + // + // Structs are generally sent as plain old data, but need marshalling if they're expected as a pointer + // + if ( Generator.CodeWriter.Current.IsStruct( basicType ) ) + { + return new StructType { NativeType = type, VarName = varname, StructName = basicType }; + } + + // + // c# doesn't really have typerdefs, so we convert things like HSteamUser into structs + // which from a memory point of view behave in the same way. + // + if ( Generator.CodeWriter.Current.IsTypeDef( basicType ) ) + { + return new StructType { NativeType = type, VarName = varname, StructName = basicType }; + } + + return new BaseType { NativeType = type, VarName = varname }; + } + + public virtual bool ShouldSkipAsArgument => false; + + public virtual string AsNativeArgument() => AsArgument(); + public virtual string AsArgument() + { + if (IsVector) + { + return $"[In,Out] {Ref}{TypeName.Trim('*', ' ', '&')}[] {VarName}"; + } + + return TreatAsPointer + ? $"{Ref}{TypeName}{new string('*', NativeType.Count(c => c == '*'))} {VarName}" + : $"{Ref}{TypeName.Trim('*', ' ', '&')} {VarName}"; + } + + public virtual string AsCallArgument() => $"{Ref}{VarName}"; + + public virtual string Return( string varname ) => $"return {varname};"; + public virtual string ReturnAttribute => null; + + public virtual string ReturnType => TypeName; + + public virtual string Ref => !TreatAsPointer && !IsVector && NativeType.EndsWith( "*" ) || NativeType.EndsWith( "**" ) || NativeType.Contains( "&" ) ? "ref " : ""; + + public virtual bool IsVector + { + get + { + if ( TreatAsPointer ) return false; + + if ( Func == "ReadP2PPacket" ) return false; + if ( Func == "SendP2PPacket" ) return false; + if ( VarName == "pOutMessageNumber" ) return false; + if ( VarName == "pOptions" ) return true; + if ( VarName == "pLanes" ) return true; + if ( VarName == "pLanePriorities" ) return true; + if ( VarName == "pLaneWeights" ) return true; + + if ( VarName == "pOut" ) return false; + if ( VarName == "pOutBuffer" ) return false; + if ( VarName == "pubRGB" ) return false; + if ( VarName == "pOutResultHandle" ) return false; + if ( VarName == "pOutDataType" ) return false; + + if ( VarName == "psteamIDClans" ) return true; + if ( VarName == "pScoreDetails" ) return true; + if ( VarName == "prgUsers" ) return true; + if ( VarName == "pBasePrices" ) return true; + if ( VarName == "pCurrentPrices" ) return true; + if ( VarName == "pItemDefIDs" ) return true; + if ( VarName == "handlesOut" ) return true; + if ( VarName == "pDetails" && Func == "GetDownloadedLeaderboardEntry" ) return true; + if ( VarName == "pData" && NativeType.EndsWith( "*" ) && Func.StartsWith( "GetGlobalStatHistory" ) ) return true; + if ( NativeType.EndsWith( "**" ) ) return true; + if ( VarName.StartsWith( "pArray" ) ) return true; + if ( VarName.StartsWith( "punArray" ) ) return true; + + if ( NativeType.EndsWith( "*" ) ) + { + if ( VarName.StartsWith( "pvec" ) ) return true; + if ( VarName.StartsWith( "pub" ) ) return true; + if ( VarName.StartsWith( "pOut" ) ) return true; + } + + return false; + } + } + + public virtual bool TreatAsPointer => VarName == "pOutMessageNumberOrResult"; + + public virtual bool IsVoid => false; +} + +internal class IntType : BaseType +{ + public override string TypeName => $"int"; +} + +internal class UIntType : BaseType +{ + public override string TypeName => $"uint"; +} +internal class UInt8Type : BaseType +{ + public override string TypeName => $"byte"; +} + +internal class UInt16Type : BaseType +{ + public override string TypeName => $"ushort"; +} + +internal class UIntPtrType : BaseType +{ + public override string TypeName => $"UIntPtr"; +} + +internal class PointerType : BaseType +{ + public override string TypeName => $"IntPtr"; + public override string Ref => ""; +} + +internal class ULongType : BaseType +{ + public override string TypeName => $"ulong"; +} + +internal class LongType : BaseType +{ + public override string TypeName => $"long"; +} diff --git a/Generator/Types/BoolType.cs b/Generator/Types/BoolType.cs new file mode 100644 index 0000000..9a13141 --- /dev/null +++ b/Generator/Types/BoolType.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +/// +/// Special care needs to be taken with bool types. Apparently BOOL in WINDOWS.H are 4 bytes. +/// But in reality and in native c++ they're 1 byte. +/// Of course marshalling by default expects them to be 4 bytes - because why not eh. So we have +/// to add a few attributes to make sure we don't get fucked over by bill gates again. +/// +internal class BoolType : BaseType +{ + public override string TypeName => $"bool"; + public override string AsArgument() => $"[MarshalAs( UnmanagedType.U1 )] {Ref}{TypeName} {VarName}"; + public override string ReturnAttribute => "[return: MarshalAs( UnmanagedType.I1 )]"; + +} \ No newline at end of file diff --git a/Generator/Types/ConstCharType.cs b/Generator/Types/ConstCharType.cs new file mode 100644 index 0000000..493d8cf --- /dev/null +++ b/Generator/Types/ConstCharType.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +/// +/// To pass a string we use a custom marshaller (Utf8StringToNative) to convert it +/// from a utf8 string to a pointer. If we just pass it as a string it won't be utf8 encoded. +/// +/// To receive we have a special struct called Utf8StringPointer which can implicitly change +/// the pointer to a utf8 string. +/// +internal class ConstCharType : BaseType +{ + public override string TypeName => $"string"; + public override string TypeNameFrom => $"Utf8StringPointer"; + public override string AsArgument() => $"[MarshalAs( UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof( Utf8StringToNative ) )] {Ref}{TypeName} {VarName}"; + public override string Ref => ""; +} \ No newline at end of file diff --git a/Generator/Types/FetchStringType.cs b/Generator/Types/FetchStringType.cs new file mode 100644 index 0000000..207ae76 --- /dev/null +++ b/Generator/Types/FetchStringType.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +/// +/// Passes a pointer to a buffer as an argument, then converts +/// it into a string which is returned via an out param. +/// +/// This is used of "char *" parameters which expect you to pass in +/// a buffer to retrieve the text. Usually \0 terminated. +/// + +internal class FetchStringType : BaseType +{ + public override string TypeName => $"string"; + public override string AsArgument() => $"out string {VarName}"; + + public override string AsNativeArgument() => $"IntPtr {VarName}"; + + public override string AsCallArgument() => $"mem{VarName}"; + public override string Ref => ""; +} \ No newline at end of file diff --git a/Generator/Types/LiteralType.cs b/Generator/Types/LiteralType.cs new file mode 100644 index 0000000..bec4d2f --- /dev/null +++ b/Generator/Types/LiteralType.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +/// +/// Used to replace a variable with a literal. +/// +/// This is used when we can determine a parameter ourselves. For example +/// if you're passing a buffer and a paramter is the buffer length +/// + +internal class LiteralType : BaseType +{ + private string Value; + BaseType basetype; + + public LiteralType( BaseType basetype, string value ) + { + this.basetype = basetype; + this.Value = value; + } + + public override bool ShouldSkipAsArgument => true; + + public override string Ref => ""; + public override bool IsVector => false; + public override string AsArgument() => basetype.AsArgument(); + public override string AsCallArgument() => Value; +} \ No newline at end of file diff --git a/Generator/Types/SteamApiCallType.cs b/Generator/Types/SteamApiCallType.cs new file mode 100644 index 0000000..e34677d --- /dev/null +++ b/Generator/Types/SteamApiCallType.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +/// +/// Functions returning SteamAPICall_t are converted to be asyncronhous +/// and return a generic CallResult struct with the T of the result type. +/// +internal class SteamApiCallType : BaseType +{ + public string CallResult; + public override string TypeName => "SteamAPICall_t"; + public override string Return( string varname ) + { + return $"return new CallResult<{CallResult}>( {varname}, IsServer );"; + } + + public override string ReturnType + { + get + { + if ( !string.IsNullOrEmpty( CallResult ) ) + return $"CallResult<{CallResult}>"; + + return $"CallResult"; + } + } +} \ No newline at end of file diff --git a/Generator/Types/StructType.cs b/Generator/Types/StructType.cs new file mode 100644 index 0000000..d694f0d --- /dev/null +++ b/Generator/Types/StructType.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +/// +/// The struct can be passed as a pointer or as plain old data. +/// If it's a pointer we need to marshal it back to our type +/// (this only happens in a couple of places in the sdk) +/// + +internal class StructType : BaseType +{ + public string StructName; + + public override string TypeName => IsPointer && TreatAsPointer ? StructName + PointerSuffix : StructName; + + public override string TypeNameFrom => IsPointer && !TreatAsPointer ? "IntPtr" : TypeName; + + public override string AsArgument() => IsPointer && TreatAsPointer ? $"{TypeName} {VarName}" : base.AsArgument(); + + public override string AsCallArgument() => IsPointer && TreatAsPointer ? VarName : base.AsCallArgument(); + + public override bool TreatAsPointer => StructName == "NetMsg"; + + public bool IsPointer => NativeType.EndsWith( "*" ); + + public override string Return( string varname ) + { + if ( IsPointer && !TreatAsPointer ) + { + return $"return {varname}.ToType<{TypeName}>();"; + } + + return base.Return( varname ); + } + + private string PointerSuffix => new string( '*', NativeType.Count( c => c == '*' ) ); +} \ No newline at end of file diff --git a/Generator/Types/VoidType.cs b/Generator/Types/VoidType.cs new file mode 100644 index 0000000..57d4926 --- /dev/null +++ b/Generator/Types/VoidType.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +/// +/// Nothing - just priny void +/// +internal class VoidType : BaseType +{ + public override string TypeName => $"void"; + public override string TypeNameFrom => $"void"; + public override string Return( string varname ) => ""; + public override bool IsVoid => true; +} \ No newline at end of file diff --git a/Generator/steam_api_missing.json b/Generator/steam_api_missing.json deleted file mode 100644 index c058d0d..0000000 --- a/Generator/steam_api_missing.json +++ /dev/null @@ -1,450 +0,0 @@ -{ - "structs": [ - - - - { - "struct": "AvailableBeaconLocationsUpdated_t", - "fields": [ ] - }, - - { - "struct": "ActiveBeaconsUpdated_t", - "fields": [ ] - }, - - { - "struct": "PlaybackStatusHasChanged_t", - "fields": [ ] - }, - - { - "struct": "BroadcastUploadStart_t", - "fields": [ ] - }, - - { - "struct": "NewUrlLaunchParameters_t", - "fields": [ ] - }, - - { - "struct": "ItemInstalled_t", - "fields": [ - { - "fieldname": "m_unAppID", - "fieldtype": "AppId_t" - }, - { - "fieldname": "m_nPublishedFileId", - "fieldtype": "PublishedFileId_t" - } - ] - }, - - { - "struct": "SteamNetConnectionStatusChangedCallback_t", - "fields": [ - { - "fieldname": "m_hConn", - "fieldtype": "HSteamNetConnection" - }, - { - "fieldname": "m_info", - "fieldtype": "SteamNetConnectionInfo_t" - }, - { - "fieldname": "m_eOldState", - "fieldtype": "ESteamNetworkingConnectionState" - } - ] - }, - - { - "struct": "InputAnalogActionData_t", - "fields": [ - { - "fieldname": "eMode", - "fieldtype": "EInputSourceMode" - }, - { - "fieldname": "x", - "fieldtype": "float" - }, - { - "fieldname": "y", - "fieldtype": "float" - }, - { - "fieldname": "bActive", - "fieldtype": "bool" - } - ] - }, - - { - "struct": "InputMotionData_t", - "fields": [ - { - "fieldname": "rotQuatX", - "fieldtype": "float" - }, - - { - "fieldname": "rotQuatY", - "fieldtype": "float" - }, - - { - "fieldname": "rotQuatZ", - "fieldtype": "float" - }, - - { - "fieldname": "rotQuatW", - "fieldtype": "float" - }, - - { - "fieldname": "posAccelX", - "fieldtype": "float" - }, - - { - "fieldname": "posAccelY", - "fieldtype": "float" - }, - - { - "fieldname": "posAccelZ", - "fieldtype": "float" - }, - - { - "fieldname": "rotVelX", - "fieldtype": "float" - }, - - { - "fieldname": "rotVelY", - "fieldtype": "float" - }, - - { - "fieldname": "rotVelZ", - "fieldtype": "float" - } - - ] - }, - - { - "struct": "InputDigitalActionData_t", - "fields": [ - { - "fieldname": "bState", - "fieldtype": "bool" - }, - { - "fieldname": "bActive", - "fieldtype": "bool" - } - ] - }, - - { - "struct": "SteamInventoryDefinitionUpdate_t" - }, - - { - "struct": "SteamParentalSettingsChanged_t" - }, - - { - "struct": "SteamServersConnected_t" - }, - { - "struct": "NewLaunchQueryParameters_t" - }, - - { - "struct": "GCMessageAvailable_t", - "fields": [ - { - "fieldname": "m_nMessageSize", - "fieldtype": "uint32" - } - ] - }, - { - "struct": "GCMessageFailed_t" - }, - { - "struct": "ScreenshotRequested_t" - }, - { - "struct": "LicensesUpdated_t" - }, - { - "struct": "SteamShutdown_t" - }, - { - "struct": "IPCountry_t" - }, - { - "struct": "IPCFailure_t", - "fields": [ - { - "fieldname": "m_eFailureType", - "fieldtype": "uint8" - } - ] - } - ], - - "methods": - [ - { - "classname": "SteamApi", - "methodname": "SteamAPI_Init", - "returntype": "bool", - "NeedsSelfPointer": false - }, - - { - "classname": "SteamApi", - "methodname": "SteamAPI_RunCallbacks", - "returntype": "void", - "NeedsSelfPointer": false - }, - - - { - "classname": "SteamApi", - "methodname": "SteamGameServer_RunCallbacks", - "returntype": "void", - "NeedsSelfPointer": false - }, - - - { - "classname": "SteamApi", - "methodname": "SteamAPI_RegisterCallback", - "returntype": "void", - "NeedsSelfPointer": false, - "params": - [ - { - "paramname": "pCallback", - "paramtype": "void *" - }, - - { - "paramname": "callback", - "paramtype": "int" - } - ] - }, - - - { - "classname": "SteamApi", - "methodname": "SteamAPI_UnregisterCallback", - "returntype": "void", - "NeedsSelfPointer": false, - "params": - [ - { - "paramname": "pCallback", - "paramtype": "void *" - } - ] - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamAPI_RegisterCallResult", - "returntype": "void", - "params": - [ - { - "paramname": "pCallback", - "paramtype": "void *" - }, - { - "paramname": "callback", - "paramtype": "SteamAPICall_t" - } - ] - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamAPI_UnregisterCallResult", - "returntype": "void", - "params": - [ - { - "paramname": "pCallback", - "paramtype": "void *" - }, - { - "paramname": "callback", - "paramtype": "SteamAPICall_t" - } - ] - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamInternal_GameServer_Init", - "returntype": "bool", - "params": - [ - { - "paramname": "unIP", - "paramtype": "uint32" - }, - { - "paramname": "usPort", - "paramtype": "uint16" - }, - { - "paramname": "usGamePort", - "paramtype": "uint16" - }, - { - "paramname": "usQueryPort", - "paramtype": "uint16" - }, - { - "paramname": "eServerMode", - "paramtype": "int" - }, - { - "paramname": "pchVersionString", - "paramtype": "const char *" - } - ] - }, - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamInternal_FindOrCreateUserInterface", - "returntype": "void *", - "params": - [ - { - "paramname": "steamuser", - "paramtype": "int32" - }, - { - "paramname": "versionname", - "paramtype": "const char *" - } - ] - }, - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamInternal_FindOrCreateGameServerInterface", - "returntype": "void *", - "params": - [ - { - "paramname": "steamuser", - "paramtype": "int32" - }, - { - "paramname": "versionname", - "paramtype": "const char *" - } - ] - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamAPI_Shutdown", - "returntype": "void" - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamGameServer_Shutdown", - "returntype": "void" - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamAPI_GetHSteamUser", - "returntype": "HSteamUser" - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamAPI_GetHSteamPipe", - "returntype": "HSteamPipe" - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamGameServer_GetHSteamUser", - "returntype": "HSteamUser" - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamGameServer_GetHSteamPipe", - "returntype": "HSteamPipe" - }, - - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamInternal_CreateInterface", - "returntype": "void *", - "params": - [ - { - "paramname": "version", - "paramtype": "const char *" - } - ] - }, - - { - "NeedsSelfPointer": false, - "classname": "SteamApi", - "methodname": "SteamAPI_RestartAppIfNecessary", - "returntype": "bool", - "params": - [ - { - "paramname": "unOwnAppID", - "paramtype": "uint32" - } - ] - } - ] - } \ No newline at end of file diff --git a/Generator/steam_sdk/isteamapplist.h b/Generator/steam_sdk/isteamapplist.h index 45441bb..91de832 100644 --- a/Generator/steam_sdk/isteamapplist.h +++ b/Generator/steam_sdk/isteamapplist.h @@ -11,7 +11,6 @@ #endif #include "steam_api_common.h" -#include "steamtypes.h" //----------------------------------------------------------------------------- // Purpose: This is a restricted interface that can only be used by previously approved apps, @@ -50,17 +49,19 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamAppList *, SteamAppList, STEAMAPPLIS //--------------------------------------------------------------------------------- // Purpose: Sent when a new app is installed //--------------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ); - STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_END(1) +STEAM_CALLBACK_BEGIN( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ) +STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +STEAM_CALLBACK_MEMBER( 1, int, m_iInstallFolderIndex ) // library folder the app is installed +STEAM_CALLBACK_END( 2 ) //--------------------------------------------------------------------------------- // Purpose: Sent when an app is uninstalled //--------------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ); - STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_END(1) +STEAM_CALLBACK_BEGIN( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ) +STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +STEAM_CALLBACK_MEMBER( 1, int, m_iInstallFolderIndex ) // library folder the app was installed +STEAM_CALLBACK_END(2) #pragma pack( pop ) diff --git a/Generator/steam_sdk/isteamapps.h b/Generator/steam_sdk/isteamapps.h index 550cb8f..fd6b334 100644 --- a/Generator/steam_sdk/isteamapps.h +++ b/Generator/steam_sdk/isteamapps.h @@ -105,6 +105,12 @@ public: // Check if user borrowed this game via Family Sharing, If true, call GetAppOwner() to get the lender SteamID virtual bool BIsSubscribedFromFamilySharing() = 0; + + // check if game is a timed trial with limited playtime + virtual bool BIsTimedTrial( uint32* punSecondsAllowed, uint32* punSecondsPlayed ) = 0; + + // set current DLC AppID being played (or 0 if none). Allows Steam to track usage of major DLC extensions + virtual bool SetDlcContext( AppId_t nAppID ) = 0; }; #define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" @@ -113,10 +119,6 @@ public: inline ISteamApps *SteamApps(); STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamApps *, SteamApps, STEAMAPPS_INTERFACE_VERSION ); -// Global accessor for the gameserver client -inline ISteamApps *SteamGameServerApps(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamApps *, SteamGameServerApps, STEAMAPPS_INTERFACE_VERSION ); - // callbacks #if defined( VALVE_CALLBACK_PACK_SMALL ) #pragma pack( push, 4 ) @@ -198,5 +200,17 @@ struct FileDetailsResult_t }; +//----------------------------------------------------------------------------- +// Purpose: called for games in Timed Trial mode +//----------------------------------------------------------------------------- +struct TimedTrialStatus_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 30 }; + AppId_t m_unAppID; // appID + bool m_bIsOffline; // if true, time allowed / played refers to offline time, not total time + uint32 m_unSecondsAllowed; // how many seconds the app can be played in total + uint32 m_unSecondsPlayed; // how many seconds the app was already played +}; + #pragma pack( pop ) #endif // ISTEAMAPPS_H diff --git a/Generator/steam_sdk/isteamclient.h b/Generator/steam_sdk/isteamclient.h index 72115b9..8cd4589 100644 --- a/Generator/steam_sdk/isteamclient.h +++ b/Generator/steam_sdk/isteamclient.h @@ -56,7 +56,7 @@ public: // set the local IP and Port to bind to // this must be set before CreateLocalUser() - virtual void SetLocalIPBinding( uint32 unIP, uint16 usPort ) = 0; + virtual void SetLocalIPBinding( const SteamIPAddress_t &unIP, uint16 usPort ) = 0; // returns the ISteamFriends interface virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; @@ -156,14 +156,19 @@ public: // Steam Parties interface virtual ISteamParties *GetISteamParties( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + // Steam Remote Play interface + virtual ISteamRemotePlay *GetISteamRemotePlay( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + STEAM_PRIVATE_API( virtual void DestroyAllInterfaces() = 0; ) + }; -#define STEAMCLIENT_INTERFACE_VERSION "SteamClient018" +#define STEAMCLIENT_INTERFACE_VERSION "SteamClient020" #ifndef STEAM_API_EXPORTS // Global ISteamClient interface accessor inline ISteamClient *SteamClient(); -STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamClient *, SteamClient, SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ) ); +STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamClient *, SteamClient, SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ), "global", STEAMCLIENT_INTERFACE_VERSION ); // The internal ISteamClient used for the gameserver interface. // (This is actually the same thing. You really shouldn't need to access any of this stuff directly.) diff --git a/Generator/steam_sdk/isteamcontroller.h b/Generator/steam_sdk/isteamcontroller.h index 1b1ed78..53a49e6 100644 --- a/Generator/steam_sdk/isteamcontroller.h +++ b/Generator/steam_sdk/isteamcontroller.h @@ -27,6 +27,8 @@ #define STEAM_CONTROLLER_MAX_ORIGINS 8 +#define STEAM_CONTROLLER_MAX_ACTIVE_LAYERS 16 + // When sending an option to a specific controller handle, you can send to all controllers via this command #define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX @@ -41,49 +43,6 @@ enum ESteamControllerPad }; #endif -enum EControllerSource -{ - k_EControllerSource_None, - k_EControllerSource_LeftTrackpad, - k_EControllerSource_RightTrackpad, - k_EControllerSource_Joystick, - k_EControllerSource_ABXY, - k_EControllerSource_Switch, - k_EControllerSource_LeftTrigger, - k_EControllerSource_RightTrigger, - k_EControllerSource_LeftBumper, - k_EControllerSource_RightBumper, - k_EControllerSource_Gyro, - k_EControllerSource_CenterTrackpad, // PS4 - k_EControllerSource_RightJoystick, // Traditional Controllers - k_EControllerSource_DPad, // Traditional Controllers - k_EControllerSource_Key, // Keyboards with scan codes - Unused - k_EControllerSource_Mouse, // Traditional mouse - Unused - k_EControllerSource_LeftGyro, // Secondary Gyro - Switch - Unused - k_EControllerSource_Count -}; - -enum EControllerSourceMode -{ - k_EControllerSourceMode_None, - k_EControllerSourceMode_Dpad, - k_EControllerSourceMode_Buttons, - k_EControllerSourceMode_FourButtons, - k_EControllerSourceMode_AbsoluteMouse, - k_EControllerSourceMode_RelativeMouse, - k_EControllerSourceMode_JoystickMove, - k_EControllerSourceMode_JoystickMouse, - k_EControllerSourceMode_JoystickCamera, - k_EControllerSourceMode_ScrollWheel, - k_EControllerSourceMode_Trigger, - k_EControllerSourceMode_TouchMenu, - k_EControllerSourceMode_MouseJoystick, - k_EControllerSourceMode_MouseRegion, - k_EControllerSourceMode_RadialMenu, - k_EControllerSourceMode_SingleButton, - k_EControllerSourceMode_Switches -}; - // Note: Please do not use action origins as a way to identify controller types. There is no // guarantee that they will be added in a contiguous manner - use GetInputTypeForHandle instead // Versions of Steam that add new controller types in the future will extend this enum if you're @@ -345,6 +304,150 @@ enum EControllerActionOrigin k_EControllerActionOrigin_Switch_RightGrip_Lower, // Right JoyCon SL Button k_EControllerActionOrigin_Switch_RightGrip_Upper, // Right JoyCon SR Button + // Added in SDK 1.45 + k_EControllerActionOrigin_PS4_DPad_Move, + k_EControllerActionOrigin_XBoxOne_DPad_Move, + k_EControllerActionOrigin_XBox360_DPad_Move, + k_EControllerActionOrigin_Switch_DPad_Move, + + // Added in SDK 1.51 + k_EControllerActionOrigin_PS5_X, + k_EControllerActionOrigin_PS5_Circle, + k_EControllerActionOrigin_PS5_Triangle, + k_EControllerActionOrigin_PS5_Square, + k_EControllerActionOrigin_PS5_LeftBumper, + k_EControllerActionOrigin_PS5_RightBumper, + k_EControllerActionOrigin_PS5_Option, //Start + k_EControllerActionOrigin_PS5_Create, //Back + k_EControllerActionOrigin_PS5_Mute, + k_EControllerActionOrigin_PS5_LeftPad_Touch, + k_EControllerActionOrigin_PS5_LeftPad_Swipe, + k_EControllerActionOrigin_PS5_LeftPad_Click, + k_EControllerActionOrigin_PS5_LeftPad_DPadNorth, + k_EControllerActionOrigin_PS5_LeftPad_DPadSouth, + k_EControllerActionOrigin_PS5_LeftPad_DPadWest, + k_EControllerActionOrigin_PS5_LeftPad_DPadEast, + k_EControllerActionOrigin_PS5_RightPad_Touch, + k_EControllerActionOrigin_PS5_RightPad_Swipe, + k_EControllerActionOrigin_PS5_RightPad_Click, + k_EControllerActionOrigin_PS5_RightPad_DPadNorth, + k_EControllerActionOrigin_PS5_RightPad_DPadSouth, + k_EControllerActionOrigin_PS5_RightPad_DPadWest, + k_EControllerActionOrigin_PS5_RightPad_DPadEast, + k_EControllerActionOrigin_PS5_CenterPad_Touch, + k_EControllerActionOrigin_PS5_CenterPad_Swipe, + k_EControllerActionOrigin_PS5_CenterPad_Click, + k_EControllerActionOrigin_PS5_CenterPad_DPadNorth, + k_EControllerActionOrigin_PS5_CenterPad_DPadSouth, + k_EControllerActionOrigin_PS5_CenterPad_DPadWest, + k_EControllerActionOrigin_PS5_CenterPad_DPadEast, + k_EControllerActionOrigin_PS5_LeftTrigger_Pull, + k_EControllerActionOrigin_PS5_LeftTrigger_Click, + k_EControllerActionOrigin_PS5_RightTrigger_Pull, + k_EControllerActionOrigin_PS5_RightTrigger_Click, + k_EControllerActionOrigin_PS5_LeftStick_Move, + k_EControllerActionOrigin_PS5_LeftStick_Click, + k_EControllerActionOrigin_PS5_LeftStick_DPadNorth, + k_EControllerActionOrigin_PS5_LeftStick_DPadSouth, + k_EControllerActionOrigin_PS5_LeftStick_DPadWest, + k_EControllerActionOrigin_PS5_LeftStick_DPadEast, + k_EControllerActionOrigin_PS5_RightStick_Move, + k_EControllerActionOrigin_PS5_RightStick_Click, + k_EControllerActionOrigin_PS5_RightStick_DPadNorth, + k_EControllerActionOrigin_PS5_RightStick_DPadSouth, + k_EControllerActionOrigin_PS5_RightStick_DPadWest, + k_EControllerActionOrigin_PS5_RightStick_DPadEast, + k_EControllerActionOrigin_PS5_DPad_Move, + k_EControllerActionOrigin_PS5_DPad_North, + k_EControllerActionOrigin_PS5_DPad_South, + k_EControllerActionOrigin_PS5_DPad_West, + k_EControllerActionOrigin_PS5_DPad_East, + k_EControllerActionOrigin_PS5_Gyro_Move, + k_EControllerActionOrigin_PS5_Gyro_Pitch, + k_EControllerActionOrigin_PS5_Gyro_Yaw, + k_EControllerActionOrigin_PS5_Gyro_Roll, + + k_EControllerActionOrigin_XBoxOne_LeftGrip_Lower, + k_EControllerActionOrigin_XBoxOne_LeftGrip_Upper, + k_EControllerActionOrigin_XBoxOne_RightGrip_Lower, + k_EControllerActionOrigin_XBoxOne_RightGrip_Upper, + k_EControllerActionOrigin_XBoxOne_Share, + + // Added in SDK 1.53 + k_EControllerActionOrigin_SteamDeck_A, + k_EControllerActionOrigin_SteamDeck_B, + k_EControllerActionOrigin_SteamDeck_X, + k_EControllerActionOrigin_SteamDeck_Y, + k_EControllerActionOrigin_SteamDeck_L1, + k_EControllerActionOrigin_SteamDeck_R1, + k_EControllerActionOrigin_SteamDeck_Menu, + k_EControllerActionOrigin_SteamDeck_View, + k_EControllerActionOrigin_SteamDeck_LeftPad_Touch, + k_EControllerActionOrigin_SteamDeck_LeftPad_Swipe, + k_EControllerActionOrigin_SteamDeck_LeftPad_Click, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadNorth, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadSouth, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadWest, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadEast, + k_EControllerActionOrigin_SteamDeck_RightPad_Touch, + k_EControllerActionOrigin_SteamDeck_RightPad_Swipe, + k_EControllerActionOrigin_SteamDeck_RightPad_Click, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadNorth, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadSouth, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadWest, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadEast, + k_EControllerActionOrigin_SteamDeck_L2_SoftPull, + k_EControllerActionOrigin_SteamDeck_L2, + k_EControllerActionOrigin_SteamDeck_R2_SoftPull, + k_EControllerActionOrigin_SteamDeck_R2, + k_EControllerActionOrigin_SteamDeck_LeftStick_Move, + k_EControllerActionOrigin_SteamDeck_L3, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadNorth, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadSouth, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadWest, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadEast, + k_EControllerActionOrigin_SteamDeck_LeftStick_Touch, + k_EControllerActionOrigin_SteamDeck_RightStick_Move, + k_EControllerActionOrigin_SteamDeck_R3, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadNorth, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadSouth, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadWest, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadEast, + k_EControllerActionOrigin_SteamDeck_RightStick_Touch, + k_EControllerActionOrigin_SteamDeck_L4, + k_EControllerActionOrigin_SteamDeck_R4, + k_EControllerActionOrigin_SteamDeck_L5, + k_EControllerActionOrigin_SteamDeck_R5, + k_EControllerActionOrigin_SteamDeck_DPad_Move, + k_EControllerActionOrigin_SteamDeck_DPad_North, + k_EControllerActionOrigin_SteamDeck_DPad_South, + k_EControllerActionOrigin_SteamDeck_DPad_West, + k_EControllerActionOrigin_SteamDeck_DPad_East, + k_EControllerActionOrigin_SteamDeck_Gyro_Move, + k_EControllerActionOrigin_SteamDeck_Gyro_Pitch, + k_EControllerActionOrigin_SteamDeck_Gyro_Yaw, + k_EControllerActionOrigin_SteamDeck_Gyro_Roll, + k_EControllerActionOrigin_SteamDeck_Reserved1, + k_EControllerActionOrigin_SteamDeck_Reserved2, + k_EControllerActionOrigin_SteamDeck_Reserved3, + k_EControllerActionOrigin_SteamDeck_Reserved4, + k_EControllerActionOrigin_SteamDeck_Reserved5, + k_EControllerActionOrigin_SteamDeck_Reserved6, + k_EControllerActionOrigin_SteamDeck_Reserved7, + k_EControllerActionOrigin_SteamDeck_Reserved8, + k_EControllerActionOrigin_SteamDeck_Reserved9, + k_EControllerActionOrigin_SteamDeck_Reserved10, + k_EControllerActionOrigin_SteamDeck_Reserved11, + k_EControllerActionOrigin_SteamDeck_Reserved12, + k_EControllerActionOrigin_SteamDeck_Reserved13, + k_EControllerActionOrigin_SteamDeck_Reserved14, + k_EControllerActionOrigin_SteamDeck_Reserved15, + k_EControllerActionOrigin_SteamDeck_Reserved16, + k_EControllerActionOrigin_SteamDeck_Reserved17, + k_EControllerActionOrigin_SteamDeck_Reserved18, + k_EControllerActionOrigin_SteamDeck_Reserved19, + k_EControllerActionOrigin_SteamDeck_Reserved20, + k_EControllerActionOrigin_Count, // If Steam has added support for new controllers origins will go here. k_EControllerActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. }; @@ -397,6 +500,7 @@ enum ESteamInputType k_ESteamInputType_SwitchProController, k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins + k_ESteamInputType_PS5Controller, // Added in SDK 151 k_ESteamInputType_Count, k_ESteamInputType_MaximumPossibleValue = 255, }; @@ -489,7 +593,7 @@ public: // Enumerate currently connected controllers // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles // Returns the number of handles written to handlesOut - virtual int GetConnectedControllers( ControllerHandle_t *handlesOut ) = 0; + virtual int GetConnectedControllers( STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_COUNT, Receives list of connected controllers ) ControllerHandle_t *handlesOut ) = 0; //----------------------------------------------------------------------------- // ACTION SETS @@ -508,7 +612,10 @@ public: virtual void ActivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) = 0; virtual void DeactivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) = 0; virtual void DeactivateAllActionSetLayers( ControllerHandle_t controllerHandle ) = 0; - virtual int GetActiveActionSetLayers( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t *handlesOut ) = 0; + // Enumerate currently active layers + // handlesOut should point to a STEAM_CONTROLLER_MAX_ACTIVE_LAYERS sized array of ControllerActionSetHandle_t handles. + // Returns the number of handles written to handlesOut + virtual int GetActiveActionSetLayers( ControllerHandle_t controllerHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ACTIVE_LAYERS, Receives list of active layers ) ControllerActionSetHandle_t *handlesOut ) = 0; //----------------------------------------------------------------------------- // ACTIONS @@ -523,7 +630,7 @@ public: // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles. The EControllerActionOrigin enum will get extended as support for new controller controllers gets added to // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut ) = 0; + virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ORIGINS, Receives list of aciton origins ) EControllerActionOrigin *originsOut ) = 0; // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; @@ -534,7 +641,7 @@ public: // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles. The EControllerActionOrigin enum will get extended as support for new controller controllers gets added to // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut ) = 0; + virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ORIGINS, Receives list of action origins ) EControllerActionOrigin *originsOut ) = 0; // Get a local path to art for on-screen glyph for a particular origin - this call is cheap virtual const char *GetGlyphForActionOrigin( EControllerActionOrigin eOrigin ) = 0; @@ -565,14 +672,15 @@ public: virtual void SetLEDColor( ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; //----------------------------------------------------------------------------- - // Utility functions availible without using the rest of Steam Input API + // Utility functions available without using the rest of Steam Input API //----------------------------------------------------------------------------- // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode // If the user is not in Big Picture Mode it will open up the binding in a new window virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0; - // Returns the input type for a particular handle + // Returns the input type for a particular handle - unlike EControllerActionOrigin which update with Steam and may return unrecognized values + // ESteamInputType will remain static and only return valid values from your SDK version virtual ESteamInputType GetInputTypeForHandle( ControllerHandle_t controllerHandle ) = 0; // Returns the associated controller handle for the specified emulated gamepad - can be used with the above 2 functions @@ -582,10 +690,10 @@ public: // Returns the associated gamepad index for the specified controller, if emulating a gamepad or -1 if not associated with an Xinput index virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0; - // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. This function is cheap. + // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. virtual const char *GetStringForXboxOrigin( EXboxOrigin eOrigin ) = 0; - // Get a local path to art for on-screen glyph for a particular Xbox controller origin. This function is serialized. + // Get a local path to art for on-screen glyph for a particular Xbox controller origin. virtual const char *GetGlyphForXboxOrigin( EXboxOrigin eOrigin ) = 0; // Get the equivalent ActionOrigin for a given Xbox controller origin this can be chained with GetGlyphForActionOrigin to provide future proof glyphs for @@ -594,9 +702,12 @@ public: // Convert an origin to another controller type - for inputs not present on the other controller type this will return k_EControllerActionOrigin_None virtual EControllerActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin ) = 0; + + // Get the binding revision for a given device. Returns false if the handle was not valid or if a mapping is not yet loaded for the device + virtual bool GetControllerBindingRevision( ControllerHandle_t controllerHandle, int *pMajor, int *pMinor ) = 0; }; -#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController007" +#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController008" // Global interface accessor inline ISteamController *SteamController(); diff --git a/Generator/steam_sdk/isteamdualsense.h b/Generator/steam_sdk/isteamdualsense.h new file mode 100644 index 0000000..5acc857 --- /dev/null +++ b/Generator/steam_sdk/isteamdualsense.h @@ -0,0 +1,169 @@ +/* SIE CONFIDENTIAL + * $PSLibId$ + * Copyright (C) 2019 Sony Interactive Entertainment Inc. + * All Rights Reserved. + */ + + +#ifndef _SCE_PAD_TRIGGER_EFFECT_H +#define _SCE_PAD_TRIGGER_EFFECT_H + + +#define SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_L2 0x01 +#define SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_R2 0x02 + +#define SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_L2 0 +#define SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2 1 + +#define SCE_PAD_TRIGGER_EFFECT_TRIGGER_NUM 2 + +/* Definition of control point num */ +#define SCE_PAD_TRIGGER_EFFECT_CONTROL_POINT_NUM 10 + +typedef enum ScePadTriggerEffectMode{ + SCE_PAD_TRIGGER_EFFECT_MODE_OFF, + SCE_PAD_TRIGGER_EFFECT_MODE_FEEDBACK, + SCE_PAD_TRIGGER_EFFECT_MODE_WEAPON, + SCE_PAD_TRIGGER_EFFECT_MODE_VIBRATION, + SCE_PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_FEEDBACK, + SCE_PAD_TRIGGER_EFFECT_MODE_SLOPE_FEEDBACK, + SCE_PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_VIBRATION, +} ScePadTriggerEffectMode; + +/** + *E + * @brief parameter for setting the trigger effect to off mode. + * Off Mode: Stop trigger effect. + **/ +typedef struct ScePadTriggerEffectOffParam{ + uint8_t padding[48]; +} ScePadTriggerEffectOffParam; + +/** + *E + * @brief parameter for setting the trigger effect to Feedback mode. + * Feedback Mode: The motor arm pushes back trigger. + * Trigger obtains stiffness at specified position. + **/ +typedef struct ScePadTriggerEffectFeedbackParam{ + uint8_t position; /*E position where the strength of target trigger start changing(0~9). */ + uint8_t strength; /*E strength that the motor arm pushes back target trigger(0~8 (0: Same as Off mode)). */ + uint8_t padding[46]; +} ScePadTriggerEffectFeedbackParam; + +/** + *E + * @brief parameter for setting the trigger effect to Weapon mode. + * Weapon Mode: Emulate weapon like gun trigger. + **/ +typedef struct ScePadTriggerEffectWeaponParam{ + uint8_t startPosition; /*E position where the stiffness of trigger start changing(2~7). */ + uint8_t endPosition; /*E position where the stiffness of trigger finish changing(startPosition+1~8). */ + uint8_t strength; /*E strength of gun trigger(0~8 (0: Same as Off mode)). */ + uint8_t padding[45]; +} ScePadTriggerEffectWeaponParam; + +/** + *E + * @brief parameter for setting the trigger effect to Vibration mode. + * Vibration Mode: Vibrates motor arm around specified position. + **/ +typedef struct ScePadTriggerEffectVibrationParam{ + uint8_t position; /*E position where the motor arm start vibrating(0~9). */ + uint8_t amplitude; /*E vibration amplitude(0~8 (0: Same as Off mode)). */ + uint8_t frequency; /*E vibration frequency(0~255[Hz] (0: Same as Off mode)). */ + uint8_t padding[45]; +} ScePadTriggerEffectVibrationParam; + +/** + *E + * @brief parameter for setting the trigger effect to ScePadTriggerEffectMultiplePositionFeedbackParam mode. + * Multi Position Feedback Mode: The motor arm pushes back trigger. + * Trigger obtains specified stiffness at each control point. + **/ +typedef struct ScePadTriggerEffectMultiplePositionFeedbackParam{ + uint8_t strength[SCE_PAD_TRIGGER_EFFECT_CONTROL_POINT_NUM]; /*E strength that the motor arm pushes back target trigger at position(0~8 (0: Same as Off mode)). + * strength[0] means strength of motor arm at position0. + * strength[1] means strength of motor arm at position1. + * ... + * */ + uint8_t padding[38]; +} ScePadTriggerEffectMultiplePositionFeedbackParam; + +/** + *E + * @brief parameter for setting the trigger effect to Feedback3 mode. + * Slope Feedback Mode: The motor arm pushes back trigger between two spedified control points. + * Stiffness of the trigger is changing depending on the set place. + **/ +typedef struct ScePadTriggerEffectSlopeFeedbackParam{ + + uint8_t startPosition; /*E position where the strength of target trigger start changing(0~endPosition). */ + uint8_t endPosition; /*E position where the strength of target trigger finish changing(startPosition+1~9). */ + uint8_t startStrength; /*E strength when trigger's position is startPosition(1~8) */ + uint8_t endStrength; /*E strength when trigger's position is endPosition(1~8) */ + uint8_t padding[44]; +} ScePadTriggerEffectSlopeFeedbackParam; + +/** + *E + * @brief parameter for setting the trigger effect to Vibration2 mode. + * Multi Position Vibration Mode: Vibrates motor arm around specified control point. + * Trigger vibrates specified amplitude at each control point. + **/ +typedef struct ScePadTriggerEffectMultiplePositionVibrationParam{ + uint8_t frequency; /*E vibration frequency(0~255 (0: Same as Off mode)) */ + uint8_t amplitude[SCE_PAD_TRIGGER_EFFECT_CONTROL_POINT_NUM]; /*E vibration amplitude at position(0~8 (0: Same as Off mode)). + * amplitude[0] means amplitude of vibration at position0. + * amplitude[1] means amplitude of vibration at position1. + * ... + * */ + uint8_t padding[37]; +} ScePadTriggerEffectMultiplePositionVibrationParam; + +/** + *E + * @brief parameter for setting the trigger effect mode. + **/ +typedef union ScePadTriggerEffectCommandData{ + ScePadTriggerEffectOffParam offParam; + ScePadTriggerEffectFeedbackParam feedbackParam; + ScePadTriggerEffectWeaponParam weaponParam; + ScePadTriggerEffectVibrationParam vibrationParam; + ScePadTriggerEffectMultiplePositionFeedbackParam multiplePositionFeedbackParam; + ScePadTriggerEffectSlopeFeedbackParam slopeFeedbackParam; + ScePadTriggerEffectMultiplePositionVibrationParam multiplePositionVibrationParam; +} ScePadTriggerEffectCommandData; + +/** + *E + * @brief parameter for setting the trigger effect. + **/ +typedef struct ScePadTriggerEffectCommand{ + ScePadTriggerEffectMode mode; + uint8_t padding[4]; + ScePadTriggerEffectCommandData commandData; +} ScePadTriggerEffectCommand; + +/** + *E + * @brief parameter for the scePadSetTriggerEffect function. + **/ +typedef struct ScePadTriggerEffectParam{ + + uint8_t triggerMask; /*E Set trigger mask to activate trigger effect commands. + * SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_L2 : 0x01 + * SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_R2 : 0x02 + * */ + uint8_t padding[7]; + + ScePadTriggerEffectCommand command[SCE_PAD_TRIGGER_EFFECT_TRIGGER_NUM]; /*E command[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_L2] is for L2 trigger setting + * and param[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2] is for R2 trgger setting. + * */ +} ScePadTriggerEffectParam; + +#if defined(__cplusplus) && __cplusplus >= 201103L +static_assert( sizeof( ScePadTriggerEffectParam ) == 120, "ScePadTriggerEffectParam has incorrect size" ); +#endif + +#endif /* _SCE_PAD_TRIGGER_EFFECT_H */ diff --git a/Generator/steam_sdk/isteamfriends.h b/Generator/steam_sdk/isteamfriends.h index 8a280c3..4ac4293 100644 --- a/Generator/steam_sdk/isteamfriends.h +++ b/Generator/steam_sdk/isteamfriends.h @@ -127,17 +127,6 @@ enum EUserRestriction k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) }; -//----------------------------------------------------------------------------- -// Purpose: information about user sessions -//----------------------------------------------------------------------------- -struct FriendSessionStateInfo_t -{ - uint32 m_uiOnlineSessionInstances; - uint8 m_uiPublishedToFriendsSessionInstance; -}; - - - // size limit on chat room or member metadata const uint32 k_cubChatMetadataMax = 8192; @@ -168,6 +157,32 @@ enum EActivateGameOverlayToWebPageMode // will also close. When the user closes the browser window, the overlay will automatically close. }; +//----------------------------------------------------------------------------- +// Purpose: See GetProfileItemPropertyString and GetProfileItemPropertyUint +//----------------------------------------------------------------------------- +enum ECommunityProfileItemType +{ + k_ECommunityProfileItemType_AnimatedAvatar = 0, + k_ECommunityProfileItemType_AvatarFrame = 1, + k_ECommunityProfileItemType_ProfileModifier = 2, + k_ECommunityProfileItemType_ProfileBackground = 3, + k_ECommunityProfileItemType_MiniProfileBackground = 4, +}; +enum ECommunityProfileItemProperty +{ + k_ECommunityProfileItemProperty_ImageSmall = 0, // string + k_ECommunityProfileItemProperty_ImageLarge = 1, // string + k_ECommunityProfileItemProperty_InternalName = 2, // string + k_ECommunityProfileItemProperty_Title = 3, // string + k_ECommunityProfileItemProperty_Description = 4, // string + k_ECommunityProfileItemProperty_AppID = 5, // uint32 + k_ECommunityProfileItemProperty_TypeID = 6, // uint32 + k_ECommunityProfileItemProperty_Class = 7, // uint32 + k_ECommunityProfileItemProperty_MovieWebM = 8, // string + k_ECommunityProfileItemProperty_MovieMP4 = 9, // string + k_ECommunityProfileItemProperty_MovieWebMSmall = 10, // string + k_ECommunityProfileItemProperty_MovieMP4Small = 11, // string +}; //----------------------------------------------------------------------------- // Purpose: interface to accessing information about individual users, @@ -254,7 +269,9 @@ public: virtual const char *GetClanTag( CSteamID steamIDClan ) = 0; // returns the most recent information we have about what's happening in a clan virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0; + // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest + STEAM_CALL_RESULT( DownloadClanActivityCountsResult_t ) virtual SteamAPICall_t DownloadClanActivityCounts( STEAM_ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0; // iterators for getting users in a chat room, lobby, game server or clan @@ -344,9 +361,15 @@ public: // Rich Presence data is automatically shared between friends who are in the same game // Each user has a set of Key/Value pairs // Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength - // There are two magic keys: + // There are five magic keys: // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list // "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game + // "steam_display" - Names a rich presence localization token that will be displayed in the viewing user's selected language + // in the Steam client UI. For more info: https://partner.steamgames.com/doc/api/ISteamFriends#richpresencelocalization + // "steam_player_group" - When set, indicates to the Steam client that the player is a member of a particular group. Players in the same group + // may be organized together in various places in the Steam UI. + // "steam_player_group_size" - When set, indicates the total number of players in the steam_player_group. The Steam client may use this number to + // display additional information about a group when all of the members are not part of a user's friends list. // GetFriendRichPresence() returns an empty string "" if no value is set // SetRichPresence() to a NULL or an empty string deletes the key // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() @@ -361,8 +384,7 @@ public: // Rich invite support. // If the target accepts the invite, a GameRichPresenceJoinRequested_t callback is posted containing the connect string. - // (Or you can configure yout game so that it is passed on the command line instead. This is a deprecated path; ask us if you really need this.) - // Invites can only be sent to friends. + // (Or you can configure your game so that it is passed on the command line instead. This is a deprecated path; ask us if you really need this.) virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0; // recently-played-with friends iteration @@ -415,6 +437,25 @@ public: /// You can register for UnreadChatMessagesChanged_t callbacks to know when this /// has potentially changed. virtual int GetNumChatsWithUnreadPriorityMessages() = 0; + + // activates game overlay to open the remote play together invite dialog. Invitations will be sent for remote play together + virtual void ActivateGameOverlayRemotePlayTogetherInviteDialog( CSteamID steamIDLobby ) = 0; + + // Call this before calling ActivateGameOverlayToWebPage() to have the Steam Overlay Browser block navigations + // to your specified protocol (scheme) uris and instead dispatch a OverlayBrowserProtocolNavigation_t callback to your game. + // ActivateGameOverlayToWebPage() must have been called with k_EActivateGameOverlayToWebPageMode_Modal + virtual bool RegisterProtocolInOverlayBrowser( const char *pchProtocol ) = 0; + + // Activates the game overlay to open an invite dialog that will send the provided Rich Presence connect string to selected friends + virtual void ActivateGameOverlayInviteDialogConnectString( const char *pchConnectString ) = 0; + + // Steam Community items equipped by a user on their profile + // You can register for EquippedProfileItemsChanged_t to know when a friend has changed their equipped profile items + STEAM_CALL_RESULT( EquippedProfileItems_t ) + virtual SteamAPICall_t RequestEquippedProfileItems( CSteamID steamID ) = 0; + virtual bool BHasEquippedProfileItem( CSteamID steamID, ECommunityProfileItemType itemType ) = 0; + virtual const char *GetProfileItemPropertyString( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ) = 0; + virtual uint32 GetProfileItemPropertyUint( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ) = 0; }; #define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends017" @@ -670,6 +711,40 @@ struct UnreadChatMessagesChanged_t enum { k_iCallback = k_iSteamFriendsCallbacks + 48 }; }; + +//----------------------------------------------------------------------------- +// Purpose: Dispatched when an overlay browser instance is navigated to a protocol/scheme registered by RegisterProtocolInOverlayBrowser() +//----------------------------------------------------------------------------- +struct OverlayBrowserProtocolNavigation_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 49 }; + char rgchURI[ 1024 ]; +}; + +//----------------------------------------------------------------------------- +// Purpose: A user's equipped profile items have changed +//----------------------------------------------------------------------------- +struct EquippedProfileItemsChanged_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 50 }; + CSteamID m_steamID; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +struct EquippedProfileItems_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 51 }; + EResult m_eResult; + CSteamID m_steamID; + bool m_bHasAnimatedAvatar; + bool m_bHasAvatarFrame; + bool m_bHasProfileModifier; + bool m_bHasProfileBackground; + bool m_bHasMiniProfileBackground; +}; + #pragma pack( pop ) #endif // ISTEAMFRIENDS_H diff --git a/Generator/steam_sdk/isteamgameserver.h b/Generator/steam_sdk/isteamgameserver.h index 6a0aada..386e7fa 100644 --- a/Generator/steam_sdk/isteamgameserver.h +++ b/Generator/steam_sdk/isteamgameserver.h @@ -12,8 +12,6 @@ #include "steam_api_common.h" -#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) - //----------------------------------------------------------------------------- // Purpose: Functions for authenticating users via Steam to play on a game server //----------------------------------------------------------------------------- @@ -27,7 +25,7 @@ public: // /// This is called by SteamGameServer_Init, and you will usually not need to call it directly - virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; + STEAM_PRIVATE_API( virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; ) /// Game product identifier. This is currently used by the master server for version checking purposes. /// It's a required field, but will eventually will go away, and the AppID will be used for this purpose. @@ -93,14 +91,23 @@ public: /// Set name of map to report in the server browser /// - /// @see k_cbMaxGameServerName + /// @see k_cbMaxGameServerMapName virtual void SetMapName( const char *pszMapName ) = 0; /// Let people know if your server will require a password virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; - /// Spectator server. The default value is zero, meaning the service - /// is not used. + /// Spectator server port to advertise. The default value is zero, meaning the + /// service is not used. If your server receives any info requests on the LAN, + /// this is the value that will be placed into the reply for such local queries. + /// + /// This is also the value that will be advertised by the master server. + /// The only exception is if your server is using a FakeIP. Then then the second + /// fake port number (index 1) assigned to your server will be listed on the master + /// server as the spectator port, if you set this value to any nonzero value. + /// + /// This function merely controls the values that are advertised -- it's up to you to + /// configure the server to actually listen on this port and handle any spectator traffic virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; /// Name of the spectator server. (Only used if spectator port is nonzero.) @@ -122,8 +129,6 @@ public: /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set /// it allows users to filter in the matchmaking/server-browser interfaces based on the value - /// don't set this unless it actually changes, its only uploaded to the master once (when - /// acknowledged) /// /// @see k_cbMaxGameServerGameData virtual void SetGameData( const char *pchGameData ) = 0; @@ -131,42 +136,20 @@ public: /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region virtual void SetRegion( const char *pszRegion ) = 0; + /// Indicate whether you wish to be listed on the master server list + /// and/or respond to server browser / LAN discovery packets. + /// The server starts with this value set to false. You should set all + /// relevant server parameters before enabling advertisement on the server. + /// + /// (This function used to be named EnableHeartbeats, so if you are wondering + /// where that function went, it's right here. It does the same thing as before, + /// the old name was just confusing.) + virtual void SetAdvertiseServerActive( bool bActive ) = 0; + // -// Player list management / authentication +// Player list management / authentication. // - // Handles receiving a new connection from a Steam user. This call will ask the Steam - // servers to validate the users identity, app ownership, and VAC status. If the Steam servers - // are off-line, then it will validate the cached ticket itself which will validate app ownership - // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() - // and must then be sent up to the game server for authentication. - // - // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL - // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication - // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) - virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; - - // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. - // - // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() - // when this user leaves the server just like you would for a real user. - virtual CSteamID CreateUnauthenticatedUserConnection() = 0; - - // Should be called whenever a user leaves our game server, this lets Steam internally - // track which users are currently on which servers for the purposes of preventing a single - // account being logged into multiple servers, showing who is currently on a server, etc. - virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; - - // Update the data to be displayed in the server browser and matchmaking interfaces for a user - // currently connected to the server. For regular users you must call this after you receive a - // GSUserValidationSuccess callback. - // - // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) - virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; - - // New auth system APIs - do not mix with the old auth system APIs. - // ---------------------------------------------------------------- - // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). // pcbTicket retrieves the length of the actual ticket. virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; @@ -199,15 +182,12 @@ public: // Returns the public IP of the server according to Steam, useful when the server is // behind NAT and you want to advertise its IP in a lobby for other clients to directly // connect to - virtual uint32 GetPublicIP() = 0; + virtual SteamIPAddress_t GetPublicIP() = 0; + +// Server browser related query packet processing for shared socket mode. These are used +// when you pass STEAMGAMESERVER_QUERY_PORT_SHARED as the query port to SteamGameServer_Init. +// IP address and port are in host order, i.e 127.0.0.1 == 0x7f000001 -// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own -// socket to talk to the master server on, it lets the game use its socket to forward messages -// back and forth. This prevents us from requiring server ops to open up yet another port -// in their firewalls. -// -// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 - // These are used when you've elected to multiplex the game server's UDP socket // rather than having the master server updater use its own sockets. // @@ -225,21 +205,9 @@ public: virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; // -// Control heartbeats / advertisement with master server +// Server clan association // - // Call this as often as you like to tell the master server updater whether or not - // you want it to be active (default: off). - virtual void EnableHeartbeats( bool bActive ) = 0; - - // You usually don't need to modify this. - // Pass -1 to use the default value for iHeartbeatInterval. - // Some mods change this. - virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; - - // Force a heartbeat to steam at the next opportunity - virtual void ForceHeartbeat() = 0; - // associate this game server with this clan for the purposes of computing player compat STEAM_CALL_RESULT( AssociateWithClanResult_t ) virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; @@ -248,27 +216,60 @@ public: STEAM_CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; + + + + // Handles receiving a new connection from a Steam user. This call will ask the Steam + // servers to validate the users identity, app ownership, and VAC status. If the Steam servers + // are off-line, then it will validate the cached ticket itself which will validate app ownership + // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + // and must then be sent up to the game server for authentication. + // + // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual bool SendUserConnectAndAuthenticate_DEPRECATED( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; + + // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + // + // Return Value: Returns a SteamID for the user to be tracked with, you should call EndAuthSession() + // when this user leaves the server just like you would for a real user. + virtual CSteamID CreateUnauthenticatedUserConnection() = 0; + + // Should be called whenever a user leaves our game server, this lets Steam internally + // track which users are currently on which servers for the purposes of preventing a single + // account being logged into multiple servers, showing who is currently on a server, etc. + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual void SendUserDisconnect_DEPRECATED( CSteamID steamIDUser ) = 0; + + // Update the data to be displayed in the server browser and matchmaking interfaces for a user + // currently connected to the server. For regular users you must call this after you receive a + // GSUserValidationSuccess callback. + // + // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; + +// Deprecated functions. These will be removed in a future version of the SDK. +// If you really need these, please contact us and help us understand what you are +// using them for. + + STEAM_PRIVATE_API( + virtual void SetMasterServerHeartbeatInterval_DEPRECATED( int iHeartbeatInterval ) = 0; + virtual void ForceMasterServerHeartbeat_DEPRECATED() = 0; + ) }; -#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer012" +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer014" // Global accessor inline ISteamGameServer *SteamGameServer(); STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamGameServer *, SteamGameServer, STEAMGAMESERVER_INTERFACE_VERSION ); -// game server flags -const uint32 k_unServerFlagNone = 0x00; -const uint32 k_unServerFlagActive = 0x01; // server has users playing -const uint32 k_unServerFlagSecure = 0x02; // server wants to be secure -const uint32 k_unServerFlagDedicated = 0x04; // server is dedicated -const uint32 k_unServerFlagLinux = 0x08; // linux build -const uint32 k_unServerFlagPassworded = 0x10; // password protected -const uint32 k_unServerFlagPrivate = 0x20; // server shouldn't list on master server and - // won't enforce authentication of users that connect to the server. - // Useful when you run a server where the clients may not - // be connected to the internet but you want them to play (i.e LANs) - - // callbacks #if defined( VALVE_CALLBACK_PACK_SMALL ) #pragma pack( push, 4 ) diff --git a/Generator/steam_sdk/isteamgameserverstats.h b/Generator/steam_sdk/isteamgameserverstats.h index aacac4b..5019279 100644 --- a/Generator/steam_sdk/isteamgameserverstats.h +++ b/Generator/steam_sdk/isteamgameserverstats.h @@ -27,16 +27,25 @@ public: virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; // requests stat information for a user, usable after a successful call to RequestUserStats() + STEAM_FLAT_NAME( GetUserStatInt32 ) virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + + STEAM_FLAT_NAME( GetUserStatFloat ) virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; // Set / update stats and achievements. // Note: These updates will work only on stats game servers are allowed to edit and only for // game servers that have been declared as officially controlled by the game creators. // Set the IP range of your official servers on the Steamworks page + + STEAM_FLAT_NAME( SetUserStatInt32 ) virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; + + STEAM_FLAT_NAME( SetUserStatFloat ) virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; + virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; diff --git a/Generator/steam_sdk/isteamhtmlsurface.h b/Generator/steam_sdk/isteamhtmlsurface.h index 086a842..dd30fe2 100644 --- a/Generator/steam_sdk/isteamhtmlsurface.h +++ b/Generator/steam_sdk/isteamhtmlsurface.h @@ -201,7 +201,6 @@ public: virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; // You MUST call this in response to a HTML_FileOpenDialog_t callback - STEAM_IGNOREATTR() virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; }; diff --git a/Generator/steam_sdk/isteamhttp.h b/Generator/steam_sdk/isteamhttp.h index 26a02b3..fb034ca 100644 --- a/Generator/steam_sdk/isteamhttp.h +++ b/Generator/steam_sdk/isteamhttp.h @@ -161,7 +161,7 @@ STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamHTTP *, SteamGameServerHTTP, S struct HTTPRequestCompleted_t { - enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; + enum { k_iCallback = k_iSteamHTTPCallbacks + 1 }; // Handle value for the request that has completed. HTTPRequestHandle m_hRequest; @@ -184,7 +184,7 @@ struct HTTPRequestCompleted_t struct HTTPRequestHeadersReceived_t { - enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; + enum { k_iCallback = k_iSteamHTTPCallbacks + 2 }; // Handle value for the request that has received headers. HTTPRequestHandle m_hRequest; @@ -196,7 +196,7 @@ struct HTTPRequestHeadersReceived_t struct HTTPRequestDataReceived_t { - enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; + enum { k_iCallback = k_iSteamHTTPCallbacks + 3 }; // Handle value for the request that has received data. HTTPRequestHandle m_hRequest; diff --git a/Generator/steam_sdk/isteaminput.h b/Generator/steam_sdk/isteaminput.h index dfd3980..e28f274 100644 --- a/Generator/steam_sdk/isteaminput.h +++ b/Generator/steam_sdk/isteaminput.h @@ -23,34 +23,14 @@ #define STEAM_INPUT_MAX_ORIGINS 8 +#define STEAM_INPUT_MAX_ACTIVE_LAYERS 16 + // When sending an option to a specific controller handle, you can send to all devices via this command #define STEAM_INPUT_HANDLE_ALL_CONTROLLERS UINT64_MAX #define STEAM_INPUT_MIN_ANALOG_ACTION_DATA -1.0f #define STEAM_INPUT_MAX_ANALOG_ACTION_DATA 1.0f -enum EInputSource -{ - k_EInputSource_None, - k_EInputSource_LeftTrackpad, - k_EInputSource_RightTrackpad, - k_EInputSource_Joystick, - k_EInputSource_ABXY, - k_EInputSource_Switch, - k_EInputSource_LeftTrigger, - k_EInputSource_RightTrigger, - k_EInputSource_LeftBumper, - k_EInputSource_RightBumper, - k_EInputSource_Gyro, - k_EInputSource_CenterTrackpad, // PS4 - k_EInputSource_RightJoystick, // Traditional Controllers - k_EInputSource_DPad, // Traditional Controllers - k_EInputSource_Key, // Keyboards with scan codes - Unused - k_EInputSource_Mouse, // Traditional mouse - Unused - k_EInputSource_LeftGyro, // Secondary Gyro - Switch - Unused - k_EInputSource_Count -}; - enum EInputSourceMode { k_EInputSourceMode_None, @@ -184,7 +164,7 @@ enum EInputActionOrigin k_EInputActionOrigin_PS4_Gyro_Pitch, k_EInputActionOrigin_PS4_Gyro_Yaw, k_EInputActionOrigin_PS4_Gyro_Roll, - k_EInputActionOrigin_PS4_Reserved0, + k_EInputActionOrigin_PS4_DPad_Move, k_EInputActionOrigin_PS4_Reserved1, k_EInputActionOrigin_PS4_Reserved2, k_EInputActionOrigin_PS4_Reserved3, @@ -225,12 +205,12 @@ enum EInputActionOrigin k_EInputActionOrigin_XBoxOne_DPad_South, k_EInputActionOrigin_XBoxOne_DPad_West, k_EInputActionOrigin_XBoxOne_DPad_East, - k_EInputActionOrigin_XBoxOne_Reserved0, - k_EInputActionOrigin_XBoxOne_Reserved1, - k_EInputActionOrigin_XBoxOne_Reserved2, - k_EInputActionOrigin_XBoxOne_Reserved3, - k_EInputActionOrigin_XBoxOne_Reserved4, - k_EInputActionOrigin_XBoxOne_Reserved5, + k_EInputActionOrigin_XBoxOne_DPad_Move, + k_EInputActionOrigin_XBoxOne_LeftGrip_Lower, + k_EInputActionOrigin_XBoxOne_LeftGrip_Upper, + k_EInputActionOrigin_XBoxOne_RightGrip_Lower, + k_EInputActionOrigin_XBoxOne_RightGrip_Upper, + k_EInputActionOrigin_XBoxOne_Share, // Xbox Series X controllers only k_EInputActionOrigin_XBoxOne_Reserved6, k_EInputActionOrigin_XBoxOne_Reserved7, k_EInputActionOrigin_XBoxOne_Reserved8, @@ -266,7 +246,7 @@ enum EInputActionOrigin k_EInputActionOrigin_XBox360_DPad_South, k_EInputActionOrigin_XBox360_DPad_West, k_EInputActionOrigin_XBox360_DPad_East, - k_EInputActionOrigin_XBox360_Reserved0, + k_EInputActionOrigin_XBox360_DPad_Move, k_EInputActionOrigin_XBox360_Reserved1, k_EInputActionOrigin_XBox360_Reserved2, k_EInputActionOrigin_XBox360_Reserved3, @@ -314,7 +294,7 @@ enum EInputActionOrigin k_EInputActionOrigin_Switch_ProGyro_Pitch, // Primary Gyro in Pro Controller, or Right JoyCon k_EInputActionOrigin_Switch_ProGyro_Yaw, // Primary Gyro in Pro Controller, or Right JoyCon k_EInputActionOrigin_Switch_ProGyro_Roll, // Primary Gyro in Pro Controller, or Right JoyCon - k_EInputActionOrigin_Switch_Reserved0, + k_EInputActionOrigin_Switch_DPad_Move, k_EInputActionOrigin_Switch_Reserved1, k_EInputActionOrigin_Switch_Reserved2, k_EInputActionOrigin_Switch_Reserved3, @@ -349,6 +329,158 @@ enum EInputActionOrigin k_EInputActionOrigin_Switch_Reserved18, k_EInputActionOrigin_Switch_Reserved19, k_EInputActionOrigin_Switch_Reserved20, + + // Added in SDK 1.51 + k_EInputActionOrigin_PS5_X, + k_EInputActionOrigin_PS5_Circle, + k_EInputActionOrigin_PS5_Triangle, + k_EInputActionOrigin_PS5_Square, + k_EInputActionOrigin_PS5_LeftBumper, + k_EInputActionOrigin_PS5_RightBumper, + k_EInputActionOrigin_PS5_Option, //Start + k_EInputActionOrigin_PS5_Create, //Back + k_EInputActionOrigin_PS5_Mute, + k_EInputActionOrigin_PS5_LeftPad_Touch, + k_EInputActionOrigin_PS5_LeftPad_Swipe, + k_EInputActionOrigin_PS5_LeftPad_Click, + k_EInputActionOrigin_PS5_LeftPad_DPadNorth, + k_EInputActionOrigin_PS5_LeftPad_DPadSouth, + k_EInputActionOrigin_PS5_LeftPad_DPadWest, + k_EInputActionOrigin_PS5_LeftPad_DPadEast, + k_EInputActionOrigin_PS5_RightPad_Touch, + k_EInputActionOrigin_PS5_RightPad_Swipe, + k_EInputActionOrigin_PS5_RightPad_Click, + k_EInputActionOrigin_PS5_RightPad_DPadNorth, + k_EInputActionOrigin_PS5_RightPad_DPadSouth, + k_EInputActionOrigin_PS5_RightPad_DPadWest, + k_EInputActionOrigin_PS5_RightPad_DPadEast, + k_EInputActionOrigin_PS5_CenterPad_Touch, + k_EInputActionOrigin_PS5_CenterPad_Swipe, + k_EInputActionOrigin_PS5_CenterPad_Click, + k_EInputActionOrigin_PS5_CenterPad_DPadNorth, + k_EInputActionOrigin_PS5_CenterPad_DPadSouth, + k_EInputActionOrigin_PS5_CenterPad_DPadWest, + k_EInputActionOrigin_PS5_CenterPad_DPadEast, + k_EInputActionOrigin_PS5_LeftTrigger_Pull, + k_EInputActionOrigin_PS5_LeftTrigger_Click, + k_EInputActionOrigin_PS5_RightTrigger_Pull, + k_EInputActionOrigin_PS5_RightTrigger_Click, + k_EInputActionOrigin_PS5_LeftStick_Move, + k_EInputActionOrigin_PS5_LeftStick_Click, + k_EInputActionOrigin_PS5_LeftStick_DPadNorth, + k_EInputActionOrigin_PS5_LeftStick_DPadSouth, + k_EInputActionOrigin_PS5_LeftStick_DPadWest, + k_EInputActionOrigin_PS5_LeftStick_DPadEast, + k_EInputActionOrigin_PS5_RightStick_Move, + k_EInputActionOrigin_PS5_RightStick_Click, + k_EInputActionOrigin_PS5_RightStick_DPadNorth, + k_EInputActionOrigin_PS5_RightStick_DPadSouth, + k_EInputActionOrigin_PS5_RightStick_DPadWest, + k_EInputActionOrigin_PS5_RightStick_DPadEast, + k_EInputActionOrigin_PS5_DPad_North, + k_EInputActionOrigin_PS5_DPad_South, + k_EInputActionOrigin_PS5_DPad_West, + k_EInputActionOrigin_PS5_DPad_East, + k_EInputActionOrigin_PS5_Gyro_Move, + k_EInputActionOrigin_PS5_Gyro_Pitch, + k_EInputActionOrigin_PS5_Gyro_Yaw, + k_EInputActionOrigin_PS5_Gyro_Roll, + k_EInputActionOrigin_PS5_DPad_Move, + k_EInputActionOrigin_PS5_Reserved1, + k_EInputActionOrigin_PS5_Reserved2, + k_EInputActionOrigin_PS5_Reserved3, + k_EInputActionOrigin_PS5_Reserved4, + k_EInputActionOrigin_PS5_Reserved5, + k_EInputActionOrigin_PS5_Reserved6, + k_EInputActionOrigin_PS5_Reserved7, + k_EInputActionOrigin_PS5_Reserved8, + k_EInputActionOrigin_PS5_Reserved9, + k_EInputActionOrigin_PS5_Reserved10, + k_EInputActionOrigin_PS5_Reserved11, + k_EInputActionOrigin_PS5_Reserved12, + k_EInputActionOrigin_PS5_Reserved13, + k_EInputActionOrigin_PS5_Reserved14, + k_EInputActionOrigin_PS5_Reserved15, + k_EInputActionOrigin_PS5_Reserved16, + k_EInputActionOrigin_PS5_Reserved17, + k_EInputActionOrigin_PS5_Reserved18, + k_EInputActionOrigin_PS5_Reserved19, + k_EInputActionOrigin_PS5_Reserved20, + + // Added in SDK 1.53 + k_EInputActionOrigin_SteamDeck_A, + k_EInputActionOrigin_SteamDeck_B, + k_EInputActionOrigin_SteamDeck_X, + k_EInputActionOrigin_SteamDeck_Y, + k_EInputActionOrigin_SteamDeck_L1, + k_EInputActionOrigin_SteamDeck_R1, + k_EInputActionOrigin_SteamDeck_Menu, + k_EInputActionOrigin_SteamDeck_View, + k_EInputActionOrigin_SteamDeck_LeftPad_Touch, + k_EInputActionOrigin_SteamDeck_LeftPad_Swipe, + k_EInputActionOrigin_SteamDeck_LeftPad_Click, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadNorth, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadSouth, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadWest, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadEast, + k_EInputActionOrigin_SteamDeck_RightPad_Touch, + k_EInputActionOrigin_SteamDeck_RightPad_Swipe, + k_EInputActionOrigin_SteamDeck_RightPad_Click, + k_EInputActionOrigin_SteamDeck_RightPad_DPadNorth, + k_EInputActionOrigin_SteamDeck_RightPad_DPadSouth, + k_EInputActionOrigin_SteamDeck_RightPad_DPadWest, + k_EInputActionOrigin_SteamDeck_RightPad_DPadEast, + k_EInputActionOrigin_SteamDeck_L2_SoftPull, + k_EInputActionOrigin_SteamDeck_L2, + k_EInputActionOrigin_SteamDeck_R2_SoftPull, + k_EInputActionOrigin_SteamDeck_R2, + k_EInputActionOrigin_SteamDeck_LeftStick_Move, + k_EInputActionOrigin_SteamDeck_L3, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadNorth, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadSouth, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadWest, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadEast, + k_EInputActionOrigin_SteamDeck_LeftStick_Touch, + k_EInputActionOrigin_SteamDeck_RightStick_Move, + k_EInputActionOrigin_SteamDeck_R3, + k_EInputActionOrigin_SteamDeck_RightStick_DPadNorth, + k_EInputActionOrigin_SteamDeck_RightStick_DPadSouth, + k_EInputActionOrigin_SteamDeck_RightStick_DPadWest, + k_EInputActionOrigin_SteamDeck_RightStick_DPadEast, + k_EInputActionOrigin_SteamDeck_RightStick_Touch, + k_EInputActionOrigin_SteamDeck_L4, + k_EInputActionOrigin_SteamDeck_R4, + k_EInputActionOrigin_SteamDeck_L5, + k_EInputActionOrigin_SteamDeck_R5, + k_EInputActionOrigin_SteamDeck_DPad_Move, + k_EInputActionOrigin_SteamDeck_DPad_North, + k_EInputActionOrigin_SteamDeck_DPad_South, + k_EInputActionOrigin_SteamDeck_DPad_West, + k_EInputActionOrigin_SteamDeck_DPad_East, + k_EInputActionOrigin_SteamDeck_Gyro_Move, + k_EInputActionOrigin_SteamDeck_Gyro_Pitch, + k_EInputActionOrigin_SteamDeck_Gyro_Yaw, + k_EInputActionOrigin_SteamDeck_Gyro_Roll, + k_EInputActionOrigin_SteamDeck_Reserved1, + k_EInputActionOrigin_SteamDeck_Reserved2, + k_EInputActionOrigin_SteamDeck_Reserved3, + k_EInputActionOrigin_SteamDeck_Reserved4, + k_EInputActionOrigin_SteamDeck_Reserved5, + k_EInputActionOrigin_SteamDeck_Reserved6, + k_EInputActionOrigin_SteamDeck_Reserved7, + k_EInputActionOrigin_SteamDeck_Reserved8, + k_EInputActionOrigin_SteamDeck_Reserved9, + k_EInputActionOrigin_SteamDeck_Reserved10, + k_EInputActionOrigin_SteamDeck_Reserved11, + k_EInputActionOrigin_SteamDeck_Reserved12, + k_EInputActionOrigin_SteamDeck_Reserved13, + k_EInputActionOrigin_SteamDeck_Reserved14, + k_EInputActionOrigin_SteamDeck_Reserved15, + k_EInputActionOrigin_SteamDeck_Reserved16, + k_EInputActionOrigin_SteamDeck_Reserved17, + k_EInputActionOrigin_SteamDeck_Reserved18, + k_EInputActionOrigin_SteamDeck_Reserved19, + k_EInputActionOrigin_SteamDeck_Reserved20, k_EInputActionOrigin_Count, // If Steam has added support for new controllers origins will go here. k_EInputActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. @@ -393,6 +525,20 @@ enum ESteamControllerPad k_ESteamControllerPad_Right }; +enum EControllerHapticLocation +{ + k_EControllerHapticLocation_Left = ( 1 << k_ESteamControllerPad_Left ), + k_EControllerHapticLocation_Right = ( 1 << k_ESteamControllerPad_Right ), + k_EControllerHapticLocation_Both = ( 1 << k_ESteamControllerPad_Left | 1 << k_ESteamControllerPad_Right ), +}; + +enum EControllerHapticType +{ + k_EControllerHapticType_Off, + k_EControllerHapticType_Tick, + k_EControllerHapticType_Click, +}; + enum ESteamInputType { k_ESteamInputType_Unknown, @@ -408,10 +554,22 @@ enum ESteamInputType k_ESteamInputType_SwitchProController, k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins + k_ESteamInputType_PS5Controller, // Added in SDK 151 + k_ESteamInputType_SteamDeckController, // Added in SDK 153 k_ESteamInputType_Count, k_ESteamInputType_MaximumPossibleValue = 255, }; +// Individual values are used by the GetSessionInputConfigurationSettings bitmask +enum ESteamInputConfigurationEnableType +{ + k_ESteamInputConfigurationEnableType_None = 0x0000, + k_ESteamInputConfigurationEnableType_Playstation = 0x0001, + k_ESteamInputConfigurationEnableType_Xbox = 0x0002, + k_ESteamInputConfigurationEnableType_Generic = 0x0004, + k_ESteamInputConfigurationEnableType_Switch = 0x0008, +}; + // These values are passed into SetLEDColor enum ESteamInputLEDFlag { @@ -421,11 +579,39 @@ enum ESteamInputLEDFlag k_ESteamInputLEDFlag_RestoreUserDefault }; +// These values are passed into GetGlyphPNGForActionOrigin +enum ESteamInputGlyphSize +{ + k_ESteamInputGlyphSize_Small, // 32x32 pixels + k_ESteamInputGlyphSize_Medium, // 128x128 pixels + k_ESteamInputGlyphSize_Large, // 256x256 pixels + k_ESteamInputGlyphSize_Count, +}; + +enum ESteamInputGlyphStyle +{ + // Base-styles - cannot mix + ESteamInputGlyphStyle_Knockout = 0x0, // Face buttons will have colored labels/outlines on a knocked out background + // Rest of inputs will have white detail/borders on a knocked out background + ESteamInputGlyphStyle_Light = 0x1, // Black detail/borders on a white background + ESteamInputGlyphStyle_Dark = 0x2, // White detail/borders on a black background + + // Modifiers + // Default ABXY/PS equivalent glyphs have a solid fill w/ color matching the physical buttons on the device + ESteamInputGlyphStyle_NeutralColorABXY = 0x10, // ABXY Buttons will match the base style color instead of their normal associated color + ESteamInputGlyphStyle_SolidABXY = 0x20, // ABXY Buttons will have a solid fill +}; + +enum ESteamInputActionEventType +{ + ESteamInputActionEventType_DigitalAction, + ESteamInputActionEventType_AnalogAction, +}; + // InputHandle_t is used to refer to a specific controller. // This handle will consistently identify a controller, even if it is disconnected and re-connected typedef uint64 InputHandle_t; - // These handles are used to refer to a specific in-game action or action set // All action handles should be queried during initialization for performance reasons typedef uint64 InputActionSetHandle_t; @@ -474,8 +660,36 @@ struct InputMotionData_t float rotVelZ; }; +//----------------------------------------------------------------------------- +// Purpose: when callbacks are enabled this fires each time a controller action +// state changes +//----------------------------------------------------------------------------- +struct SteamInputActionEvent_t +{ + InputHandle_t controllerHandle; + ESteamInputActionEventType eEventType; + struct AnalogAction_t { + InputAnalogActionHandle_t actionHandle; + InputAnalogActionData_t analogActionData; + }; + struct DigitalAction_t { + InputDigitalActionHandle_t actionHandle; + InputDigitalActionData_t digitalActionData; + }; + union { + AnalogAction_t analogAction; + DigitalAction_t digitalAction; + }; +}; + +//----------------------------------------------------------------------------- +// Forward declaration for ScePadTriggerEffectParam, defined in isteamdualsense.h +//----------------------------------------------------------------------------- +struct ScePadTriggerEffectParam; + #pragma pack( pop ) +typedef void ( *SteamInputActionEventCallbackPointer )( SteamInputActionEvent_t * ); //----------------------------------------------------------------------------- // Purpose: Steam Input API @@ -484,22 +698,66 @@ class ISteamInput { public: - // Init and Shutdown must be called when starting/ending use of this interface - virtual bool Init() = 0; + // Init and Shutdown must be called when starting/ending use of this interface. + // if bExplicitlyCallRunFrame is called then you will need to manually call RunFrame + // each frame, otherwise Steam Input will updated when SteamAPI_RunCallbacks() is called + virtual bool Init( bool bExplicitlyCallRunFrame ) = 0; virtual bool Shutdown() = 0; - // Synchronize API state with the latest Steam Controller inputs available. This + // Set the absolute path to the Input Action Manifest file containing the in-game actions + // and file paths to the official configurations. Used in games that bundle Steam Input + // configurations inside of the game depot instead of using the Steam Workshop + virtual bool SetInputActionManifestFilePath( const char *pchInputActionManifestAbsolutePath ) = 0; + + // Synchronize API state with the latest Steam Input action data available. This // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest - // possible latency, you call this directly before reading controller state. This must - // be called from somewhere before GetConnectedControllers will return any handles - virtual void RunFrame() = 0; + // possible latency, you call this directly before reading controller state. + // Note: This must be called from somewhere before GetConnectedControllers will + // return any handles + virtual void RunFrame( bool bReservedValue = true ) = 0; + + // Waits on an IPC event from Steam sent when there is new data to be fetched from + // the data drop. Returns true when data was recievied before the timeout expires. + // Useful for games with a dedicated input thread + virtual bool BWaitForData( bool bWaitForever, uint32 unTimeout ) = 0; + + // Returns true if new data has been received since the last time action data was accessed + // via GetDigitalActionData or GetAnalogActionData. The game will still need to call + // SteamInput()->RunFrame() or SteamAPI_RunCallbacks() before this to update the data stream + virtual bool BNewDataAvailable() = 0; // Enumerate currently connected Steam Input enabled devices - developers can opt in controller by type (ex: Xbox/Playstation/etc) via // the Steam Input settings in the Steamworks site or users can opt-in in their controller settings in Steam. // handlesOut should point to a STEAM_INPUT_MAX_COUNT sized array of InputHandle_t handles // Returns the number of handles written to handlesOut - virtual int GetConnectedControllers( InputHandle_t *handlesOut ) = 0; + virtual int GetConnectedControllers( STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_COUNT, Receives list of connected controllers ) InputHandle_t *handlesOut ) = 0; + //----------------------------------------------------------------------------- + // CALLBACKS + //----------------------------------------------------------------------------- + + // Controller configuration loaded - these callbacks will always fire if you have + // a handler. Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + STEAM_CALL_BACK( SteamInputConfigurationLoaded_t ) + + // Enable SteamInputDeviceConnected_t and SteamInputDeviceDisconnected_t callbacks. + // Each controller that is already connected will generate a device connected + // callback when you enable them + virtual void EnableDeviceCallbacks() = 0; + + // Controller Connected - provides info about a single newly connected controller + // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + STEAM_CALL_BACK( SteamInputDeviceConnected_t ) + + // Controller Disconnected - provides info about a single disconnected controller + // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + STEAM_CALL_BACK( SteamInputDeviceDisconnected_t ) + + // Enable SteamInputActionEvent_t callbacks. Directly calls your callback function + // for lower latency than standard Steam callbacks. Supports one callback at a time. + // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + virtual void EnableActionEventCallbacks( SteamInputActionEventCallbackPointer pCallback ) = 0; + //----------------------------------------------------------------------------- // ACTION SETS //----------------------------------------------------------------------------- @@ -517,7 +775,11 @@ public: virtual void ActivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; virtual void DeactivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; virtual void DeactivateAllActionSetLayers( InputHandle_t inputHandle ) = 0; - virtual int GetActiveActionSetLayers( InputHandle_t inputHandle, InputActionSetHandle_t *handlesOut ) = 0; + + // Enumerate currently active layers. + // handlesOut should point to a STEAM_INPUT_MAX_ACTIVE_LAYERS sized array of InputActionSetHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetActiveActionSetLayers( InputHandle_t inputHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ACTIVE_LAYERS, Receives list of active layers ) InputActionSetHandle_t *handlesOut ) = 0; //----------------------------------------------------------------------------- // ACTIONS @@ -532,8 +794,11 @@ public: // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. // originsOut should point to a STEAM_INPUT_MAX_ORIGINS sized array of EInputActionOrigin handles. The EInputActionOrigin enum will get extended as support for new controller controllers gets added to // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin *originsOut ) = 0; + virtual int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; + // Returns a localized string (from Steam's language setting) for the user-facing action name corresponding to the specified handle + virtual const char *GetStringForDigitalActionName( InputDigitalActionHandle_t eActionHandle ) = 0; + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. virtual InputAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; @@ -543,14 +808,23 @@ public: // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. // originsOut should point to a STEAM_INPUT_MAX_ORIGINS sized array of EInputActionOrigin handles. The EInputActionOrigin enum will get extended as support for new controller controllers gets added to // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin *originsOut ) = 0; + virtual int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; + + // Get a local path to a PNG file for the provided origin's glyph. + virtual const char *GetGlyphPNGForActionOrigin( EInputActionOrigin eOrigin, ESteamInputGlyphSize eSize, uint32 unFlags ) = 0; + + // Get a local path to a SVG file for the provided origin's glyph. + virtual const char *GetGlyphSVGForActionOrigin( EInputActionOrigin eOrigin, uint32 unFlags ) = 0; + + // Get a local path to an older, Big Picture Mode-style PNG file for a particular origin + virtual const char *GetGlyphForActionOrigin_Legacy( EInputActionOrigin eOrigin ) = 0; - // Get a local path to art for on-screen glyph for a particular origin - this call is cheap - virtual const char *GetGlyphForActionOrigin( EInputActionOrigin eOrigin ) = 0; - - // Returns a localized string (from Steam's language setting) for the specified origin - this call is serialized + // Returns a localized string (from Steam's language setting) for the specified origin. virtual const char *GetStringForActionOrigin( EInputActionOrigin eOrigin ) = 0; + // Returns a localized string (from Steam's language setting) for the user-facing action name corresponding to the specified handle + virtual const char *GetStringForAnalogActionName( InputAnalogActionHandle_t eActionHandle ) = 0; + // Stop analog momentum for the action if it is a mouse action in trackball mode virtual void StopAnalogActionMomentum( InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ) = 0; @@ -564,27 +838,34 @@ public: // Trigger a vibration event on supported controllers - Steam will translate these commands into haptic pulses for Steam Controllers virtual void TriggerVibration( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ) = 0; + // Trigger a vibration event on supported controllers including Xbox trigger impulse rumble - Steam will translate these commands into haptic pulses for Steam Controllers + virtual void TriggerVibrationExtended( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed, unsigned short usLeftTriggerSpeed, unsigned short usRightTriggerSpeed ) = 0; + + // Send a haptic pulse, works on Steam Deck and Steam Controller devices + virtual void TriggerSimpleHapticEvent( InputHandle_t inputHandle, EControllerHapticLocation eHapticLocation, uint8 nIntensity, char nGainDB, uint8 nOtherIntensity, char nOtherGainDB ) = 0; + // Set the controller LED color on supported controllers. nFlags is a bitmask of values from ESteamInputLEDFlag - 0 will default to setting a color. Steam will handle // the behavior on exit of your program so you don't need to try restore the default as you are shutting down virtual void SetLEDColor( InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; // Trigger a haptic pulse on a Steam Controller - if you are approximating rumble you may want to use TriggerVibration instead. // Good uses for Haptic pulses include chimes, noises, or directional gameplay feedback (taking damage, footstep locations, etc). - virtual void TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + virtual void Legacy_TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; // Trigger a haptic pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. If you are approximating rumble you may want to use TriggerVibration instead. // nFlags is currently unused and reserved for future use. - virtual void TriggerRepeatedHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + virtual void Legacy_TriggerRepeatedHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; //----------------------------------------------------------------------------- - // Utility functions availible without using the rest of Steam Input API + // Utility functions available without using the rest of Steam Input API //----------------------------------------------------------------------------- // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode // If the user is not in Big Picture Mode it will open up the binding in a new window virtual bool ShowBindingPanel( InputHandle_t inputHandle ) = 0; - // Returns the input type for a particular handle + // Returns the input type for a particular handle - unlike EInputActionOrigin which update with Steam and may return unrecognized values + // ESteamInputType will remain static and only return valid values from your SDK version virtual ESteamInputType GetInputTypeForHandle( InputHandle_t inputHandle ) = 0; // Returns the associated controller handle for the specified emulated gamepad - can be used with the above 2 functions @@ -594,10 +875,10 @@ public: // Returns the associated gamepad index for the specified controller, if emulating a gamepad or -1 if not associated with an Xinput index virtual int GetGamepadIndexForController( InputHandle_t ulinputHandle ) = 0; - // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. This function is cheap. + // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. virtual const char *GetStringForXboxOrigin( EXboxOrigin eOrigin ) = 0; - // Get a local path to art for on-screen glyph for a particular Xbox controller origin. This function is serialized. + // Get a local path to art for on-screen glyph for a particular Xbox controller origin virtual const char *GetGlyphForXboxOrigin( EXboxOrigin eOrigin ) = 0; // Get the equivalent ActionOrigin for a given Xbox controller origin this can be chained with GetGlyphForActionOrigin to provide future proof glyphs for @@ -605,15 +886,77 @@ public: virtual EInputActionOrigin GetActionOriginFromXboxOrigin( InputHandle_t inputHandle, EXboxOrigin eOrigin ) = 0; // Convert an origin to another controller type - for inputs not present on the other controller type this will return k_EInputActionOrigin_None - // When a new input type is added you will be able to pass in k_ESteamInputType_Unknown amd the closest origin that your version of the SDK regonized will be returned + // When a new input type is added you will be able to pass in k_ESteamInputType_Unknown and the closest origin that your version of the SDK recognized will be returned // ex: if a Playstation 5 controller was released this function would return Playstation 4 origins. virtual EInputActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ) = 0; + + // Get the binding revision for a given device. Returns false if the handle was not valid or if a mapping is not yet loaded for the device + virtual bool GetDeviceBindingRevision( InputHandle_t inputHandle, int *pMajor, int *pMinor ) = 0; + + // Get the Steam Remote Play session ID associated with a device, or 0 if there is no session associated with it + // See isteamremoteplay.h for more information on Steam Remote Play sessions + virtual uint32 GetRemotePlaySessionID( InputHandle_t inputHandle ) = 0; + + // Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values.? + // Note: user can override the settings from the Steamworks Partner site so the returned values may not exactly match your default configuration + virtual uint16 GetSessionInputConfigurationSettings() = 0; + + // Set the trigger effect for a DualSense controller + virtual void SetDualSenseTriggerEffect( InputHandle_t inputHandle, const ScePadTriggerEffectParam *pParam ) = 0; }; -#define STEAMINPUT_INTERFACE_VERSION "SteamInput001" +#define STEAMINPUT_INTERFACE_VERSION "SteamInput006" // Global interface accessor inline ISteamInput *SteamInput(); STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamInput *, SteamInput, STEAMINPUT_INTERFACE_VERSION ); -#endif // ISTEAMINPUT_H +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a new controller has been connected, will fire once +// per controller if multiple new controllers connect in the same frame +//----------------------------------------------------------------------------- +struct SteamInputDeviceConnected_t +{ + enum { k_iCallback = k_iSteamControllerCallbacks + 1 }; + InputHandle_t m_ulConnectedDeviceHandle; // Handle for device +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a new controller has been connected, will fire once +// per controller if multiple new controllers connect in the same frame +//----------------------------------------------------------------------------- +struct SteamInputDeviceDisconnected_t +{ + enum { k_iCallback = k_iSteamControllerCallbacks + 2 }; + InputHandle_t m_ulDisconnectedDeviceHandle; // Handle for device +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a controller configuration has been loaded, will fire once +// per controller per focus change for Steam Input enabled controllers +//----------------------------------------------------------------------------- +struct SteamInputConfigurationLoaded_t +{ + enum { k_iCallback = k_iSteamControllerCallbacks + 3 }; + AppId_t m_unAppID; + InputHandle_t m_ulDeviceHandle; // Handle for device + CSteamID m_ulMappingCreator; // May differ from local user when using + // an unmodified community or official config + uint32 m_unMajorRevision; // Binding revision from In-game Action File. + // Same value as queried by GetDeviceBindingRevision + uint32 m_unMinorRevision; + bool m_bUsesSteamInputAPI; // Does the configuration contain any Analog/Digital actions? + bool m_bUsesGamepadAPI; // Does the configuration contain any Xinput bindings? +}; + +#pragma pack( pop ) + +#endif // ISTEAMINPUT_H \ No newline at end of file diff --git a/Generator/steam_sdk/isteaminventory.h b/Generator/steam_sdk/isteaminventory.h index 1cd21b8..7066592 100644 --- a/Generator/steam_sdk/isteaminventory.h +++ b/Generator/steam_sdk/isteaminventory.h @@ -86,12 +86,10 @@ public: // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits // k_EResultFail - ERROR: unknown / generic error - STEAM_METHOD_DESC(Find out the status of an asynchronous inventory result handle.) virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; // Copies the contents of a result set into a flat array. The specific // contents of the result set depend on which query which was used. - STEAM_METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) virtual bool GetResultItems( SteamInventoryResult_t resultHandle, STEAM_OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize ) = 0; @@ -115,17 +113,14 @@ public: // Returns the server time at which the result was generated. Compare against // the value of IClientUtils::GetServerRealTime() to determine age. - STEAM_METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; // Returns true if the result belongs to the target steam ID, false if the // result does not. This is important when using DeserializeResult, to verify // that a remote player is not pretending to have a different user's inventory. - STEAM_METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; // Destroys a result handle and frees all associated memory. - STEAM_METHOD_DESC(Destroys a result handle and frees all associated memory.) virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; @@ -139,7 +134,6 @@ public: // cached results if called too frequently. It is suggested that you call // this function only when you are about to display the user's full inventory, // or if you expect that the inventory may have changed. - STEAM_METHOD_DESC(Captures the entire state of the current users Steam inventory.) virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; @@ -150,7 +144,6 @@ public: // For example, you could call GetItemsByID with the IDs of the user's // currently equipped cosmetic items and serialize this to a buffer, and // then transmit this buffer to other players upon joining a game. - STEAM_METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; @@ -205,7 +198,6 @@ public: // and grants the items (one time only). On success, the result set will include items which // were granted, if any. If no items were granted because the user isn't eligible for any // promotions, this is still considered a success. - STEAM_METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of @@ -218,7 +210,6 @@ public: // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. // Not for the faint of heart - if your game implements item removal at all, a high-friction // UI confirmation process is highly recommended. - STEAM_METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; // ExchangeItems() is an atomic combination of item generation and consumption. @@ -245,7 +236,6 @@ public: // // Deprecated. Calling this method is not required for proper playtime accounting. - STEAM_METHOD_DESC( Deprecated method. Playtime accounting is performed on the Steam servers. ) virtual void SendItemDropHeartbeat() = 0; // Playtime credit must be consumed and turned into item drops by your game. Only item @@ -257,7 +247,6 @@ public: // to directly control rarity. // See your Steamworks configuration to set playtime drop rates for individual itemdefs. // The client library will suppress too-frequent calls to this method. - STEAM_METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; @@ -281,7 +270,6 @@ public: // Every time new item definitions are available (eg, from the dynamic addition of new // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t // callback will be fired. - STEAM_METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) virtual bool LoadItemDefinitions() = 0; // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are @@ -350,13 +338,23 @@ public: // Remove the property on the item virtual bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName ) = 0; // Accessor methods to set properties on items + + STEAM_FLAT_NAME( SetPropertyString ) virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, const char *pchPropertyValue ) = 0; + + STEAM_FLAT_NAME( SetPropertyBool ) virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, bool bValue ) = 0; + + STEAM_FLAT_NAME( SetPropertyInt64 ) virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, int64 nValue ) = 0; + + STEAM_FLAT_NAME( SetPropertyFloat ) virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, float flValue ) = 0; + // Submit the update request by handle virtual bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ) = 0; + virtual bool InspectItem( SteamInventoryResult_t *pResultHandle, const char *pchItemToken ) = 0; }; #define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V003" @@ -374,7 +372,7 @@ STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamInventory *, SteamGameServerIn // always be exactly one callback per handle. struct SteamInventoryResultReady_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 0 }; SteamInventoryResult_t m_handle; EResult m_result; }; @@ -389,7 +387,7 @@ struct SteamInventoryResultReady_t // afterwards; this is an additional notification for your convenience. struct SteamInventoryFullUpdate_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 1 }; SteamInventoryResult_t m_handle; }; @@ -400,13 +398,13 @@ struct SteamInventoryFullUpdate_t // a definition update in order to process results from the server. struct SteamInventoryDefinitionUpdate_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 2 }; }; // Returned struct SteamInventoryEligiblePromoItemDefIDs_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 3 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 3 }; EResult m_result; CSteamID m_steamID; int m_numEligiblePromoItemDefs; @@ -416,7 +414,7 @@ struct SteamInventoryEligiblePromoItemDefIDs_t // Triggered from StartPurchase call struct SteamInventoryStartPurchaseResult_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 4 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 4 }; EResult m_result; uint64 m_ulOrderID; uint64 m_ulTransID; @@ -426,7 +424,7 @@ struct SteamInventoryStartPurchaseResult_t // Triggered from RequestPrices struct SteamInventoryRequestPricesResult_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 5 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 5 }; EResult m_result; char m_rgchCurrency[4]; }; diff --git a/Generator/steam_sdk/isteammasterserverupdater.h b/Generator/steam_sdk/isteammasterserverupdater.h deleted file mode 100644 index 4be0ca5..0000000 --- a/Generator/steam_sdk/isteammasterserverupdater.h +++ /dev/null @@ -1 +0,0 @@ -#error "This file isn't used any more" diff --git a/Generator/steam_sdk/isteammatchmaking.h b/Generator/steam_sdk/isteammatchmaking.h index d0c0cea..12189c7 100644 --- a/Generator/steam_sdk/isteammatchmaking.h +++ b/Generator/steam_sdk/isteammatchmaking.h @@ -23,6 +23,8 @@ enum ELobbyType k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends // useful if you want a user in two lobbies, for example matching groups together // a user can be in only one regular lobby, and up to two invisible lobbies + k_ELobbyTypePrivateUnique = 4, // private, unique and does not delete when empty - only one of these may exist per unique keypair set + // can only create from webapi }; // lobby search filter tools @@ -254,7 +256,6 @@ public: // after completion, the local user will no longer be the owner virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; #endif - STEAM_CALL_BACK( LobbyChatUpdate_t ) }; #define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" diff --git a/Generator/steam_sdk/isteamnetworking.h b/Generator/steam_sdk/isteamnetworking.h index b1bf5fa..b7e077a 100644 --- a/Generator/steam_sdk/isteamnetworking.h +++ b/Generator/steam_sdk/isteamnetworking.h @@ -17,12 +17,16 @@ enum EP2PSessionError { k_EP2PSessionErrorNone = 0, - k_EP2PSessionErrorNotRunningApp = 1, // target is not running the same game k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running - k_EP2PSessionErrorDestinationNotLoggedIn = 3, // target user isn't connected to Steam k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() // corporate firewalls can also block this (NAT traversal is not firewall traversal) // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction + + // The following error codes were removed and will never be sent. + // For privacy reasons, there is no reply if the user is offline or playing another game. + k_EP2PSessionErrorNotRunningApp_DELETED = 1, + k_EP2PSessionErrorDestinationNotLoggedIn_DELETED = 3, + k_EP2PSessionErrorMax = 5 }; @@ -120,6 +124,10 @@ enum ESNetSocketConnectionType //----------------------------------------------------------------------------- // Purpose: Functions for making connections and sending data between clients, // traversing NAT's where possible +// +// NOTE: This interface is deprecated and may be removed in a future release of +/// the Steamworks SDK. Please see ISteamNetworkingSockets and +/// ISteamNetworkingMessages //----------------------------------------------------------------------------- class ISteamNetworking { @@ -133,6 +141,9 @@ public: // Both interface styles can send both reliable and unreliable messages. // // Automatically establishes NAT-traversing or Relay server connections + // + // These APIs are deprecated, and may be removed in a future version of the Steamworks + // SDK. See ISteamNetworkingMessages. // Sends a P2P packet to the specified user // UDP-like, unreliable and a max packet size of 1200 bytes @@ -181,6 +192,10 @@ public: // or to existing connections that need to automatically reconnect after this value is set. // // P2P packet relay is allowed by default + // + // NOTE: This function is deprecated and may be removed in a future version of the SDK. For + // security purposes, we may decide to relay the traffic to certain peers, even if you pass false + // to this function, to prevent revealing the client's IP address top another peer. virtual bool AllowP2PPacketRelay( bool bAllow ) = 0; @@ -198,6 +213,9 @@ public: // // Both methods can send both reliable and unreliable methods. // + // These APIs are deprecated, and may be removed in a future version of the Steamworks + // SDK. See ISteamNetworkingSockets. + // //////////////////////////////////////////////////////////////////////////////////////////// @@ -209,14 +227,14 @@ public: // pass in 0 if you just want the default local IP // unPort is the port to use // pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only - virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; + virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, SteamIPAddress_t nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; // creates a socket and begin connection to a remote destination // can connect via a known steamID (client or game server), or directly to an IP // on success will trigger a SocketStatusCallback_t callback // on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState virtual SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ) = 0; - virtual SNetSocket_t CreateConnectionSocket( uint32 nIP, uint16 nPort, int nTimeoutSec ) = 0; + virtual SNetSocket_t CreateConnectionSocket( SteamIPAddress_t nIP, uint16 nPort, int nTimeoutSec ) = 0; // disconnects the connection to the socket, if any, and invalidates the handle // any unread data on the socket will be thrown away @@ -258,11 +276,11 @@ public: virtual bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; // returns information about the specified socket, filling out the contents of the pointers - virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, uint32 *punIPRemote, uint16 *punPortRemote ) = 0; + virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, SteamIPAddress_t *punIPRemote, uint16 *punPortRemote ) = 0; // returns which local port the listen socket is bound to // *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only - virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, uint32 *pnIP, uint16 *pnPort ) = 0; + virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, SteamIPAddress_t *pnIP, uint16 *pnPort ) = 0; // returns true to describe how the socket ended up connecting virtual ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) = 0; @@ -270,7 +288,7 @@ public: // max packet size, in bytes virtual int GetMaxPacketSize( SNetSocket_t hSocket ) = 0; }; -#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking005" +#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking006" // Global interface accessor inline ISteamNetworking *SteamNetworking(); diff --git a/Generator/steam_sdk/isteamnetworkingmessages.h b/Generator/steam_sdk/isteamnetworkingmessages.h new file mode 100644 index 0000000..b7a2cd0 --- /dev/null +++ b/Generator/steam_sdk/isteamnetworkingmessages.h @@ -0,0 +1,198 @@ +//====== Copyright Valve Corporation, All rights reserved. ==================== + +#ifndef ISTEAMNETWORKINGMESSAGES +#define ISTEAMNETWORKINGMESSAGES +#pragma once + +#include "steamnetworkingtypes.h" +#include "steam_api_common.h" + +//----------------------------------------------------------------------------- +/// The non-connection-oriented interface to send and receive messages +/// (whether they be "clients" or "servers"). +/// +/// ISteamNetworkingSockets is connection-oriented (like TCP), meaning you +/// need to listen and connect, and then you send messages using a connection +/// handle. ISteamNetworkingMessages is more like UDP, in that you can just send +/// messages to arbitrary peers at any time. The underlying connections are +/// established implicitly. +/// +/// Under the hood ISteamNetworkingMessages works on top of the ISteamNetworkingSockets +/// code, so you get the same routing and messaging efficiency. The difference is +/// mainly in your responsibility to explicitly establish a connection and +/// the type of feedback you get about the state of the connection. Both +/// interfaces can do "P2P" communications, and both support both unreliable +/// and reliable messages, fragmentation and reassembly. +/// +/// The primary purpose of this interface is to be "like UDP", so that UDP-based code +/// can be ported easily to take advantage of relayed connections. If you find +/// yourself needing more low level information or control, or to be able to better +/// handle failure, then you probably need to use ISteamNetworkingSockets directly. +/// Also, note that if your main goal is to obtain a connection between two peers +/// without concerning yourself with assigning roles of "client" and "server", +/// you may find the symmetric connection mode of ISteamNetworkingSockets useful. +/// (See k_ESteamNetworkingConfig_SymmetricConnect.) +/// +class ISteamNetworkingMessages +{ +public: + /// Sends a message to the specified host. If we don't already have a session with that user, + /// a session is implicitly created. There might be some handshaking that needs to happen + /// before we can actually begin sending message data. If this handshaking fails and we can't + /// get through, an error will be posted via the callback SteamNetworkingMessagesSessionFailed_t. + /// There is no notification when the operation succeeds. (You should have the peer send a reply + /// for this purpose.) + /// + /// Sending a message to a host will also implicitly accept any incoming connection from that host. + /// + /// nSendFlags is a bitmask of k_nSteamNetworkingSend_xxx options + /// + /// nRemoteChannel is a routing number you can use to help route message to different systems. + /// You'll have to call ReceiveMessagesOnChannel() with the same channel number in order to retrieve + /// the data on the other end. + /// + /// Using different channels to talk to the same user will still use the same underlying + /// connection, saving on resources. If you don't need this feature, use 0. + /// Otherwise, small integers are the most efficient. + /// + /// It is guaranteed that reliable messages to the same host on the same channel + /// will be be received by the remote host (if they are received at all) exactly once, + /// and in the same order that they were sent. + /// + /// NO other order guarantees exist! In particular, unreliable messages may be dropped, + /// received out of order with respect to each other and with respect to reliable data, + /// or may be received multiple times. Messages on different channels are *not* guaranteed + /// to be received in the order they were sent. + /// + /// A note for those familiar with TCP/IP ports, or converting an existing codebase that + /// opened multiple sockets: You might notice that there is only one channel, and with + /// TCP/IP each endpoint has a port number. You can think of the channel number as the + /// *destination* port. If you need each message to also include a "source port" (so the + /// recipient can route the reply), then just put that in your message. That is essentially + /// how UDP works! + /// + /// Returns: + /// - k_EREsultOK on success. + /// - k_EResultNoConnection, if the session has failed or was closed by the peer and + /// k_nSteamNetworkingSend_AutoRestartBrokenSession was not specified. (You can + /// use GetSessionConnectionInfo to get the details.) In order to acknowledge the + /// broken session and start a new one, you must call CloseSessionWithUser, or you may + /// repeat the call with k_nSteamNetworkingSend_AutoRestartBrokenSession. See + /// k_nSteamNetworkingSend_AutoRestartBrokenSession for more details. + /// - See ISteamNetworkingSockets::SendMessageToConnection for more possible return values + virtual EResult SendMessageToUser( const SteamNetworkingIdentity &identityRemote, const void *pubData, uint32 cubData, int nSendFlags, int nRemoteChannel ) = 0; + + /// Reads the next message that has been sent from another user via SendMessageToUser() on the given channel. + /// Returns number of messages returned into your list. (0 if no message are available on that channel.) + /// + /// When you're done with the message object(s), make sure and call SteamNetworkingMessage_t::Release()! + virtual int ReceiveMessagesOnChannel( int nLocalChannel, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages ) = 0; + + /// Call this in response to a SteamNetworkingMessagesSessionRequest_t callback. + /// SteamNetworkingMessagesSessionRequest_t are posted when a user tries to send you a message, + /// and you haven't tried to talk to them first. If you don't want to talk to them, just ignore + /// the request. If the user continues to send you messages, SteamNetworkingMessagesSessionRequest_t + /// callbacks will continue to be posted periodically. + /// + /// Returns false if there is no session with the user pending or otherwise. If there is an + /// existing active session, this function will return true, even if it is not pending. + /// + /// Calling SendMessageToUser() will implicitly accepts any pending session request to that user. + virtual bool AcceptSessionWithUser( const SteamNetworkingIdentity &identityRemote ) = 0; + + /// Call this when you're done talking to a user to immediately free up resources under-the-hood. + /// If the remote user tries to send data to you again, another SteamNetworkingMessagesSessionRequest_t + /// callback will be posted. + /// + /// Note that sessions that go unused for a few minutes are automatically timed out. + virtual bool CloseSessionWithUser( const SteamNetworkingIdentity &identityRemote ) = 0; + + /// Call this when you're done talking to a user on a specific channel. Once all + /// open channels to a user have been closed, the open session to the user will be + /// closed, and any new data from this user will trigger a + /// SteamSteamNetworkingMessagesSessionRequest_t callback + virtual bool CloseChannelWithUser( const SteamNetworkingIdentity &identityRemote, int nLocalChannel ) = 0; + + /// Returns information about the latest state of a connection, if any, with the given peer. + /// Primarily intended for debugging purposes, but can also be used to get more detailed + /// failure information. (See SendMessageToUser and k_nSteamNetworkingSend_AutoRestartBrokenSession.) + /// + /// Returns the value of SteamNetConnectionInfo_t::m_eState, or k_ESteamNetworkingConnectionState_None + /// if no connection exists with specified peer. You may pass nullptr for either parameter if + /// you do not need the corresponding details. Note that sessions time out after a while, + /// so if a connection fails, or SendMessageToUser returns k_EResultNoConnection, you cannot wait + /// indefinitely to obtain the reason for failure. + virtual ESteamNetworkingConnectionState GetSessionConnectionInfo( const SteamNetworkingIdentity &identityRemote, SteamNetConnectionInfo_t *pConnectionInfo, SteamNetConnectionRealTimeStatus_t *pQuickStatus ) = 0; +}; +#define STEAMNETWORKINGMESSAGES_INTERFACE_VERSION "SteamNetworkingMessages002" + +// +// Callbacks +// + +#pragma pack( push, 1 ) + +/// Posted when a remote host is sending us a message, and we do not already have a session with them +struct SteamNetworkingMessagesSessionRequest_t +{ + enum { k_iCallback = k_iSteamNetworkingMessagesCallbacks + 1 }; + SteamNetworkingIdentity m_identityRemote; // user who wants to talk to us +}; + +/// Posted when we fail to establish a connection, or we detect that communications +/// have been disrupted it an unusual way. There is no notification when a peer proactively +/// closes the session. ("Closed by peer" is not a concept of UDP-style communications, and +/// SteamNetworkingMessages is primarily intended to make porting UDP code easy.) +/// +/// Remember: callbacks are asynchronous. See notes on SendMessageToUser, +/// and k_nSteamNetworkingSend_AutoRestartBrokenSession in particular. +/// +/// Also, if a session times out due to inactivity, no callbacks will be posted. The only +/// way to detect that this is happening is that querying the session state may return +/// none, connecting, and findingroute again. +struct SteamNetworkingMessagesSessionFailed_t +{ + enum { k_iCallback = k_iSteamNetworkingMessagesCallbacks + 2 }; + + /// Detailed info about the session that failed. + /// SteamNetConnectionInfo_t::m_identityRemote indicates who this session + /// was with. + SteamNetConnectionInfo_t m_info; +}; + +#pragma pack(pop) + +// Global accessors + +// Using standalone lib +#ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB + + static_assert( STEAMNETWORKINGMESSAGES_INTERFACE_VERSION[25] == '2', "Version mismatch" ); + + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingMessages *SteamNetworkingMessages_LibV2(); + inline ISteamNetworkingMessages *SteamNetworkingMessages_Lib() { return SteamNetworkingMessages_LibV2(); } + + // If running in context of steam, we also define a gameserver instance. + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingMessages *SteamGameServerNetworkingMessages_LibV2(); + inline ISteamNetworkingMessages *SteamGameServerNetworkingMessages_Lib() { return SteamGameServerNetworkingMessages_LibV2(); } + + #ifndef STEAMNETWORKINGSOCKETS_STEAMAPI + inline ISteamNetworkingMessages *SteamNetworkingMessages() { return SteamNetworkingMessages_LibV2(); } + inline ISteamNetworkingMessages *SteamGameServerNetworkingMessages() { return SteamGameServerNetworkingMessages_LibV2(); } + #endif +#endif + +// Using Steamworks SDK +#ifdef STEAMNETWORKINGSOCKETS_STEAMAPI + + // Steamworks SDK + STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamNetworkingMessages *, SteamNetworkingMessages_SteamAPI, STEAMNETWORKINGMESSAGES_INTERFACE_VERSION ); + STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamNetworkingMessages *, SteamGameServerNetworkingMessages_SteamAPI, STEAMNETWORKINGMESSAGES_INTERFACE_VERSION ); + + #ifndef STEAMNETWORKINGSOCKETS_STANDALONELIB + inline ISteamNetworkingMessages *SteamNetworkingMessages() { return SteamNetworkingMessages_SteamAPI(); } + inline ISteamNetworkingMessages *SteamGameServerNetworkingMessages() { return SteamGameServerNetworkingMessages_SteamAPI(); } + #endif +#endif + +#endif // ISTEAMNETWORKINGMESSAGES diff --git a/Generator/steam_sdk/isteamnetworkingsockets.h b/Generator/steam_sdk/isteamnetworkingsockets.h index e12e5e7..b4e9ec3 100644 --- a/Generator/steam_sdk/isteamnetworkingsockets.h +++ b/Generator/steam_sdk/isteamnetworkingsockets.h @@ -1,40 +1,44 @@ //====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Networking API similar to Berkeley sockets, but for games. -// - connection-oriented API (like TCP, not UDP) -// - but unlike TCP, it's message-oriented, not stream-oriented -// - mix of reliable and unreliable messages -// - fragmentation and reassembly -// - Supports connectivity over plain UDPv4 -// - Also supports SDR ("Steam Datagram Relay") connections, which are -// addressed by SteamID. There is a "P2P" use case and also a "hosted -// dedicated server" use case. -// -//============================================================================= #ifndef ISTEAMNETWORKINGSOCKETS #define ISTEAMNETWORKINGSOCKETS -#ifdef _WIN32 #pragma once -#endif #include "steamnetworkingtypes.h" +#include "steam_api_common.h" -class ISteamNetworkingSocketsCallbacks; +struct SteamNetAuthenticationStatus_t; +struct SteamNetworkingFakeIPResult_t; +class ISteamNetworkingConnectionSignaling; +class ISteamNetworkingSignalingRecvContext; +class ISteamNetworkingFakeUDPPort; //----------------------------------------------------------------------------- -/// Lower level networking interface that more closely mirrors the standard -/// Berkeley sockets model. Sockets are hard! You should probably only use -/// this interface under the existing circumstances: +/// Lower level networking API. /// -/// - You have an existing socket-based codebase you want to port, or coexist with. -/// - You want to be able to connect based on IP address, rather than (just) Steam ID. -/// - You need low-level control of bandwidth utilization, when to drop packets, etc. +/// - Connection-oriented API (like TCP, not UDP). When sending and receiving +/// messages, a connection handle is used. (For a UDP-style interface, where +/// the peer is identified by their address with each send/recv call, see +/// ISteamNetworkingMessages.) The typical pattern is for a "server" to "listen" +/// on a "listen socket." A "client" will "connect" to the server, and the +/// server will "accept" the connection. If you have a symmetric situation +/// where either peer may initiate the connection and server/client roles are +/// not clearly defined, check out k_ESteamNetworkingConfig_SymmetricConnect. +/// - But unlike TCP, it's message-oriented, not stream-oriented. +/// - Mix of reliable and unreliable messages +/// - Fragmentation and reassembly +/// - Supports connectivity over plain UDP +/// - Also supports SDR ("Steam Datagram Relay") connections, which are +/// addressed by the identity of the peer. There is a "P2P" use case and +/// a "hosted dedicated server" use case. /// -/// Note that neither of the terms "connection" and "socket" will correspond +/// Note that neither of the terms "connection" nor "socket" necessarily correspond /// one-to-one with an underlying UDP socket. An attempt has been made to /// keep the semantics as similar to the standard socket model when appropriate, /// but some deviations do exist. +/// +/// See also: ISteamNetworkingMessages, the UDP-style interface. This API might be +/// easier to use, especially when porting existing UDP code. class ISteamNetworkingSockets { public: @@ -45,15 +49,20 @@ public: /// You must select a specific local port to listen on and set it /// the port field of the local address. /// - /// Usually you wil set the IP portion of the address to zero, (SteamNetworkingIPAddr::Clear()). - /// This means that you will not bind to any particular local interface. In addition, - /// if possible the socket will be bound in "dual stack" mode, which means that it can - /// accept both IPv4 and IPv6 clients. If you wish to bind a particular interface, then - /// set the local address to the appropriate IPv4 or IPv6 IP. + /// Usually you will set the IP portion of the address to zero (SteamNetworkingIPAddr::Clear()). + /// This means that you will not bind to any particular local interface (i.e. the same + /// as INADDR_ANY in plain socket code). Furthermore, if possible the socket will be bound + /// in "dual stack" mode, which means that it can accept both IPv4 and IPv6 client connections. + /// If you really do wish to bind a particular interface, then set the local address to the + /// appropriate IPv4 or IPv6 IP. + /// + /// If you need to set any initial config options, pass them here. See + /// SteamNetworkingConfigValue_t for more about why this is preferable to + /// setting the options "immediately" after creation. /// /// When a client attempts to connect, a SteamNetConnectionStatusChangedCallback_t /// will be posted. The connection will be in the connecting state. - virtual HSteamListenSocket CreateListenSocketIP( const SteamNetworkingIPAddr &localAddress ) = 0; + virtual HSteamListenSocket CreateListenSocketIP( const SteamNetworkingIPAddr &localAddress, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; /// Creates a connection and begins talking to a "server" over UDP at the /// given IPv4 or IPv6 address. The remote host must be listening with a @@ -73,34 +82,49 @@ public: /// distributed through some other out-of-band mechanism), you don't have any /// way of knowing who is actually on the other end, and thus are vulnerable to /// man-in-the-middle attacks. - virtual HSteamNetConnection ConnectByIPAddress( const SteamNetworkingIPAddr &address ) = 0; - -#ifdef STEAMNETWORKINGSOCKETS_ENABLE_SDR - /// Like CreateListenSocketIP, but clients will connect using ConnectP2P /// - /// nVirtualPort specifies how clients can connect to this socket using + /// If you need to set any initial config options, pass them here. See + /// SteamNetworkingConfigValue_t for more about why this is preferable to + /// setting the options "immediately" after creation. + virtual HSteamNetConnection ConnectByIPAddress( const SteamNetworkingIPAddr &address, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; + + /// Like CreateListenSocketIP, but clients will connect using ConnectP2P. + /// + /// nLocalVirtualPort specifies how clients can connect to this socket using /// ConnectP2P. It's very common for applications to only have one listening socket; /// in that case, use zero. If you need to open multiple listen sockets and have clients - /// be able to connect to one or the other, then nVirtualPort should be a small integer (<1000) - /// unique to each listen socket you create. + /// be able to connect to one or the other, then nLocalVirtualPort should be a small + /// integer (<1000) unique to each listen socket you create. /// - /// If you use this, you probably want to call ISteamNetworkingUtils::InitializeRelayNetworkAccess() - /// when your app initializes - virtual HSteamListenSocket CreateListenSocketP2P( int nVirtualPort ) = 0; + /// If you use this, you probably want to call ISteamNetworkingUtils::InitRelayNetworkAccess() + /// when your app initializes. + /// + /// If you are listening on a dedicated servers in known data center, + /// then you can listen using this function instead of CreateHostedDedicatedServerListenSocket, + /// to allow clients to connect without a ticket. Any user that owns + /// the app and is signed into Steam will be able to attempt to connect to + /// your server. Also, a connection attempt may require the client to + /// be connected to Steam, which is one more moving part that may fail. When + /// tickets are used, then once a ticket is obtained, a client can connect to + /// your server even if they got disconnected from Steam or Steam is offline. + /// + /// If you need to set any initial config options, pass them here. See + /// SteamNetworkingConfigValue_t for more about why this is preferable to + /// setting the options "immediately" after creation. + virtual HSteamListenSocket CreateListenSocketP2P( int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; - /// Begin connecting to a server that is identified using a platform-specific identifier. - /// This requires some sort of third party rendezvous service, and will depend on the - /// platform and what other libraries and services you are integrating with. + /// Begin connecting to a peer that is identified using a platform-specific identifier. + /// This uses the default rendezvous service, which depends on the platform and library + /// configuration. (E.g. on Steam, it goes through the steam backend.) /// - /// At the time of this writing, there is only one supported rendezvous service: Steam. - /// Set the SteamID (whether "user" or "gameserver") and Steam will determine if the - /// client is online and facilitate a relay connection. Note that all P2P connections on - /// Steam are currently relayed. + /// If you need to set any initial config options, pass them here. See + /// SteamNetworkingConfigValue_t for more about why this is preferable to + /// setting the options "immediately" after creation. /// - /// If you use this, you probably want to call ISteamNetworkingUtils::InitializeRelayNetworkAccess() - /// when your app initializes - virtual HSteamNetConnection ConnectP2P( const SteamNetworkingIdentity &identityRemote, int nVirtualPort ) = 0; -#endif + /// To use your own signaling service, see: + /// - ConnectP2PCustomSignaling + /// - k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling + virtual HSteamNetConnection ConnectP2P( const SteamNetworkingIdentity &identityRemote, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; /// Accept an incoming connection that has been received on a listen socket. /// @@ -135,6 +159,12 @@ public: /// Returns k_EResultInvalidState if the connection is not in the appropriate state. /// (Remember that the connection state could change in between the time that the /// notification being posted to the queue and when it is received by the application.) + /// + /// A note about connection configuration options. If you need to set any configuration + /// options that are common to all connections accepted through a particular listen + /// socket, consider setting the options on the listen socket, since such options are + /// inherited automatically. If you really do need to set options that are connection + /// specific, it is safe to set them on the connection before accepting the connection. virtual EResult AcceptConnection( HSteamNetConnection hConn ) = 0; /// Disconnects from the remote host and invalidates the connection handle. @@ -167,7 +197,23 @@ public: /// Set connection user data. the data is returned in the following places /// - You can query it using GetConnectionUserData. /// - The SteamNetworkingmessage_t structure. - /// - The SteamNetConnectionInfo_t structure. (Which is a member of SteamNetConnectionStatusChangedCallback_t.) + /// - The SteamNetConnectionInfo_t structure. + /// (Which is a member of SteamNetConnectionStatusChangedCallback_t -- but see WARNINGS below!!!!) + /// + /// Do you need to set this atomically when the connection is created? + /// See k_ESteamNetworkingConfig_ConnectionUserData. + /// + /// WARNING: Be *very careful* when using the value provided in callbacks structs. + /// Callbacks are queued, and the value that you will receive in your + /// callback is the userdata that was effective at the time the callback + /// was queued. There are subtle race conditions that can hapen if you + /// don't understand this! + /// + /// If any incoming messages for this connection are queued, the userdata + /// field is updated, so that when when you receive messages (e.g. with + /// ReceiveMessagesOnConnection), they will always have the very latest + /// userdata. So the tricky race conditions that can happen with callbacks + /// do not apply to retrieving messages. /// /// Returns false if the handle is invalid. virtual bool SetConnectionUserData( HSteamNetConnection hPeer, int64 nUserData ) = 0; @@ -207,6 +253,9 @@ public: /// sockets that does not write excessively small chunks will /// work without any changes. /// + /// The pOutMessageNumber is an optional pointer to receive the + /// message number assigned to the message, if sending was successful. + /// /// Returns: /// - k_EResultInvalidParam: invalid connection handle, or the individual message is too big. /// (See k_cbMaxSteamNetworkingSocketsMessageSizeSend) @@ -216,7 +265,41 @@ public: /// we were not ready to send it. /// - k_EResultLimitExceeded: there was already too much data queued to be sent. /// (See k_ESteamNetworkingConfig_SendBufferSize) - virtual EResult SendMessageToConnection( HSteamNetConnection hConn, const void *pData, uint32 cbData, int nSendFlags ) = 0; + virtual EResult SendMessageToConnection( HSteamNetConnection hConn, const void *pData, uint32 cbData, int nSendFlags, int64 *pOutMessageNumber ) = 0; + + /// Send one or more messages without copying the message payload. + /// This is the most efficient way to send messages. To use this + /// function, you must first allocate a message object using + /// ISteamNetworkingUtils::AllocateMessage. (Do not declare one + /// on the stack or allocate your own.) + /// + /// You should fill in the message payload. You can either let + /// it allocate the buffer for you and then fill in the payload, + /// or if you already have a buffer allocated, you can just point + /// m_pData at your buffer and set the callback to the appropriate function + /// to free it. Note that if you use your own buffer, it MUST remain valid + /// until the callback is executed. And also note that your callback can be + /// invoked at any time from any thread (perhaps even before SendMessages + /// returns!), so it MUST be fast and threadsafe. + /// + /// You MUST also fill in: + /// - m_conn - the handle of the connection to send the message to + /// - m_nFlags - bitmask of k_nSteamNetworkingSend_xxx flags. + /// + /// All other fields are currently reserved and should not be modified. + /// + /// The library will take ownership of the message structures. They may + /// be modified or become invalid at any time, so you must not read them + /// after passing them to this function. + /// + /// pOutMessageNumberOrResult is an optional array that will receive, + /// for each message, the message number that was assigned to the message + /// if sending was successful. If sending failed, then a negative EResult + /// value is placed into the array. For example, the array will hold + /// -k_EResultInvalidState if the connection was in an invalid state. + /// See ISteamNetworkingSockets::SendMessageToConnection for possible + /// failure codes. + virtual void SendMessages( int nMessages, SteamNetworkingMessage_t *const *pMessages, int64 *pOutMessageNumberOrResult ) = 0; /// Flush any messages waiting on the Nagle timer and send them /// at the next transmission opportunity (often that means right now). @@ -241,7 +324,7 @@ public: /// Reliable messages will be received in the order they were sent (and with the /// same sizes --- see SendMessageToConnection for on this subtle difference from a stream socket). /// - /// Unreliable messages may be dropped, or delivered out of order withrespect to + /// Unreliable messages may be dropped, or delivered out of order with respect to /// each other or with respect to reliable messages. The same unreliable message /// may be received multiple times. /// @@ -250,22 +333,25 @@ public: /// a little while (put it into some queue, etc), and you may call Release() from any thread. virtual int ReceiveMessagesOnConnection( HSteamNetConnection hConn, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages ) = 0; - /// Same as ReceiveMessagesOnConnection, but will return the next message available - /// on any connection that was accepted through the specified listen socket. Examine - /// SteamNetworkingMessage_t::m_conn to know which client connection. - /// - /// Delivery order of messages among different clients is not defined. They may - /// be returned in an order different from what they were actually received. (Delivery - /// order of messages from the same client is well defined, and thus the order of the - /// messages is relevant!) - virtual int ReceiveMessagesOnListenSocket( HSteamListenSocket hSocket, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages ) = 0; - /// Returns basic information about the high-level state of the connection. virtual bool GetConnectionInfo( HSteamNetConnection hConn, SteamNetConnectionInfo_t *pInfo ) = 0; /// Returns a small set of information about the real-time state of the connection - /// Returns false if the connection handle is invalid, or the connection has ended. - virtual bool GetQuickConnectionStatus( HSteamNetConnection hConn, SteamNetworkingQuickConnectionStatus *pStats ) = 0; + /// and the queue status of each lane. + /// + /// - pStatus may be NULL if the information is not desired. (E.g. you are only interested + /// in the lane information.) + /// - On entry, nLanes specifies the length of the pLanes array. This may be 0 + /// if you do not wish to receive any lane data. It's OK for this to be smaller than + /// the total number of configured lanes. + /// - pLanes points to an array that will receive lane-specific info. It can be NULL + /// if this is not needed. + /// + /// Return value: + /// - k_EResultNoConnection - connection handle is invalid or connection has been closed. + /// - k_EResultInvalidParam - nLanes is bad + virtual EResult GetConnectionRealTimeStatus( HSteamNetConnection hConn, SteamNetConnectionRealTimeStatus_t *pStatus, + int nLanes, SteamNetConnectionRealTimeLaneStatus_t *pLanes ) = 0; /// Returns detailed connection stats in text format. Useful /// for dumping to a log, etc. @@ -305,6 +391,80 @@ public: /// actual bound loopback port. Otherwise, the port will be zero. virtual bool CreateSocketPair( HSteamNetConnection *pOutConnection1, HSteamNetConnection *pOutConnection2, bool bUseNetworkLoopback, const SteamNetworkingIdentity *pIdentity1, const SteamNetworkingIdentity *pIdentity2 ) = 0; + /// Configure multiple outbound messages streams ("lanes") on a connection, and + /// control head-of-line blocking between them. Messages within a given lane + /// are always sent in the order they are queued, but messages from different + /// lanes may be sent out of order. Each lane has its own message number + /// sequence. The first message sent on each lane will be assigned the number 1. + /// + /// Each lane has a "priority". Lower priority lanes will only be processed + /// when all higher-priority lanes are empty. The magnitudes of the priority + /// values are not relevant, only their sort order. Higher numeric values + /// take priority over lower numeric values. + /// + /// Each lane also is assigned a weight, which controls the approximate proportion + /// of the bandwidth that will be consumed by the lane, relative to other lanes + /// of the same priority. (This is assuming the lane stays busy. An idle lane + /// does not build up "credits" to be be spent once a message is queued.) + /// This value is only meaningful as a proportion, relative to other lanes with + /// the same priority. For lanes with different priorities, the strict priority + /// order will prevail, and their weights relative to each other are not relevant. + /// Thus, if a lane has a unique priority value, the weight value for that lane is + /// not relevant. + /// + /// Example: 3 lanes, with priorities [ 0, 10, 10 ] and weights [ (NA), 20, 5 ]. + /// Messages sent on the first will always be sent first, before messages in the + /// other two lanes. Its weight value is irrelevant, since there are no other + /// lanes with priority=0. The other two lanes will share bandwidth, with the second + /// and third lanes sharing bandwidth using a ratio of approximately 4:1. + /// (The weights [ NA, 4, 1 ] would be equivalent.) + /// + /// Notes: + /// - At the time of this writing, some code has performance cost that is linear + /// in the number of lanes, so keep the number of lanes to an absolute minimum. + /// 3 or so is fine; >8 is a lot. The max number of lanes on Steam is 255, + /// which is a very large number and not recommended! If you are compiling this + /// library from source, see STEAMNETWORKINGSOCKETS_MAX_LANES.) + /// - Lane priority values may be any int. Their absolute value is not relevant, + /// only the order matters. + /// - Weights must be positive, and due to implementation details, they are restricted + /// to 16-bit values. The absolute magnitudes don't matter, just the proportions. + /// - Messages sent on a lane index other than 0 have a small overhead on the wire, + /// so for maximum wire efficiency, lane 0 should be the "most common" lane, regardless + /// of priorities or weights. + /// - A connection has a single lane by default. Calling this function with + /// nNumLanes=1 is legal, but pointless, since the priority and weight values are + /// irrelevant in that case. + /// - You may reconfigure connection lanes at any time, however reducing the number of + /// lanes is not allowed. + /// - Reconfiguring lanes might restart any bandwidth sharing balancing. Usually you + /// will call this function once, near the start of the connection, perhaps after + /// exchanging a few messages. + /// - To assign all lanes the same priority, you may use pLanePriorities=NULL. + /// - If you wish all lanes with the same priority to share bandwidth equally (or + /// if no two lanes have the same priority value, and thus priority values are + /// irrelevant), you may use pLaneWeights=NULL + /// - Priorities and weights determine the order that messages are SENT on the wire. + /// There are NO GUARANTEES on the order that messages are RECEIVED! Due to packet + /// loss, out-of-order delivery, and subtle details of packet serialization, messages + /// might still be received slightly out-of-order! The *only* strong guarantee is that + /// *reliable* messages on the *same lane* will be delivered in the order they are sent. + /// - Each host configures the lanes for the packets they send; the lanes for the flow + /// in one direction are completely unrelated to the lanes in the opposite direction. + /// + /// Return value: + /// - k_EResultNoConnection - bad hConn + /// - k_EResultInvalidParam - Invalid number of lanes, bad weights, or you tried to reduce the number of lanes + /// - k_EResultInvalidState - Connection is already dead, etc + /// + /// See also: + /// SteamNetworkingMessage_t::m_idxLane + virtual EResult ConfigureConnectionLanes( HSteamNetConnection hConn, int nNumLanes, const int *pLanePriorities, const uint16 *pLaneWeights ) = 0; + + // + // Identity and authentication + // + /// Get the identity assigned to this interface. /// E.g. on Steam, this is the user's SteamID, or for the gameserver interface, the SteamID assigned /// to the gameserver. Returns false and sets the result to an invalid identity if we don't know @@ -312,11 +472,96 @@ public: /// even if they are not signed into Steam.) virtual bool GetIdentity( SteamNetworkingIdentity *pIdentity ) = 0; -#ifdef STEAMNETWORKINGSOCKETS_ENABLE_SDR + /// Indicate our desire to be ready participate in authenticated communications. + /// If we are currently not ready, then steps will be taken to obtain the necessary + /// certificates. (This includes a certificate for us, as well as any CA certificates + /// needed to authenticate peers.) + /// + /// You can call this at program init time if you know that you are going to + /// be making authenticated connections, so that we will be ready immediately when + /// those connections are attempted. (Note that essentially all connections require + /// authentication, with the exception of ordinary UDP connections with authentication + /// disabled using k_ESteamNetworkingConfig_IP_AllowWithoutAuth.) If you don't call + /// this function, we will wait until a feature is utilized that that necessitates + /// these resources. + /// + /// You can also call this function to force a retry, if failure has occurred. + /// Once we make an attempt and fail, we will not automatically retry. + /// In this respect, the behavior of the system after trying and failing is the same + /// as before the first attempt: attempting authenticated communication or calling + /// this function will call the system to attempt to acquire the necessary resources. + /// + /// You can use GetAuthenticationStatus or listen for SteamNetAuthenticationStatus_t + /// to monitor the status. + /// + /// Returns the current value that would be returned from GetAuthenticationStatus. + virtual ESteamNetworkingAvailability InitAuthentication() = 0; + + /// Query our readiness to participate in authenticated communications. A + /// SteamNetAuthenticationStatus_t callback is posted any time this status changes, + /// but you can use this function to query it at any time. + /// + /// The value of SteamNetAuthenticationStatus_t::m_eAvail is returned. If you only + /// want this high level status, you can pass NULL for pDetails. If you want further + /// details, pass non-NULL to receive them. + virtual ESteamNetworkingAvailability GetAuthenticationStatus( SteamNetAuthenticationStatus_t *pDetails ) = 0; + + // + // Poll groups. A poll group is a set of connections that can be polled efficiently. + // (In our API, to "poll" a connection means to retrieve all pending messages. We + // actually don't have an API to "poll" the connection *state*, like BSD sockets.) + // + + /// Create a new poll group. + /// + /// You should destroy the poll group when you are done using DestroyPollGroup + virtual HSteamNetPollGroup CreatePollGroup() = 0; + + /// Destroy a poll group created with CreatePollGroup(). + /// + /// If there are any connections in the poll group, they are removed from the group, + /// and left in a state where they are not part of any poll group. + /// Returns false if passed an invalid poll group handle. + virtual bool DestroyPollGroup( HSteamNetPollGroup hPollGroup ) = 0; + + /// Assign a connection to a poll group. Note that a connection may only belong to a + /// single poll group. Adding a connection to a poll group implicitly removes it from + /// any other poll group it is in. + /// + /// You can pass k_HSteamNetPollGroup_Invalid to remove a connection from its current + /// poll group without adding it to a new poll group. + /// + /// If there are received messages currently pending on the connection, an attempt + /// is made to add them to the queue of messages for the poll group in approximately + /// the order that would have applied if the connection was already part of the poll + /// group at the time that the messages were received. + /// + /// Returns false if the connection handle is invalid, or if the poll group handle + /// is invalid (and not k_HSteamNetPollGroup_Invalid). + virtual bool SetConnectionPollGroup( HSteamNetConnection hConn, HSteamNetPollGroup hPollGroup ) = 0; + + /// Same as ReceiveMessagesOnConnection, but will return the next messages available + /// on any connection in the poll group. Examine SteamNetworkingMessage_t::m_conn + /// to know which connection. (SteamNetworkingMessage_t::m_nConnUserData might also + /// be useful.) + /// + /// Delivery order of messages among different connections will usually match the + /// order that the last packet was received which completed the message. But this + /// is not a strong guarantee, especially for packets received right as a connection + /// is being assigned to poll group. + /// + /// Delivery order of messages on the same connection is well defined and the + /// same guarantees are present as mentioned in ReceiveMessagesOnConnection. + /// (But the messages are not grouped by connection, so they will not necessarily + /// appear consecutively in the list; they may be interleaved with messages for + /// other connections.) + virtual int ReceiveMessagesOnPollGroup( HSteamNetPollGroup hPollGroup, SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages ) = 0; // // Clients connecting to dedicated servers hosted in a data center, - // using central-authority-granted tickets. + // using tickets issued by your game coordinator. If you are not + // issuing your own tickets to restrict who can attempt to connect + // to your server, then you won't use these functions. // /// Call this when you receive a ticket from your backend / matchmaking system. Puts the @@ -331,98 +576,376 @@ public: /// /// Typically this is useful just to confirm that you have a ticket, before you /// call ConnectToHostedDedicatedServer to connect to the server. - virtual int FindRelayAuthTicketForServer( const SteamNetworkingIdentity &identityGameServer, int nVirtualPort, SteamDatagramRelayAuthTicket *pOutParsedTicket ) = 0; + virtual int FindRelayAuthTicketForServer( const SteamNetworkingIdentity &identityGameServer, int nRemoteVirtualPort, SteamDatagramRelayAuthTicket *pOutParsedTicket ) = 0; /// Client call to connect to a server hosted in a Valve data center, on the specified virtual - /// port. You must have placed a ticket for this server into the cache, or else this connect attempt will fail! + /// port. You must have placed a ticket for this server into the cache, or else this connect + /// attempt will fail! If you are not issuing your own tickets, then to connect to a dedicated + /// server via SDR in auto-ticket mode, use ConnectP2P. (The server must be configured to allow + /// this type of connection by listening using CreateListenSocketP2P.) /// /// You may wonder why tickets are stored in a cache, instead of simply being passed as an argument /// here. The reason is to make reconnection to a gameserver robust, even if the client computer loses /// connection to Steam or the central backend, or the app is restarted or crashes, etc. /// - /// If you use this, you probably want to call ISteamNetworkingUtils::InitializeRelayNetworkAccess() + /// If you use this, you probably want to call ISteamNetworkingUtils::InitRelayNetworkAccess() /// when your app initializes - virtual HSteamNetConnection ConnectToHostedDedicatedServer( const SteamNetworkingIdentity &identityTarget, int nVirtualPort ) = 0; + /// + /// If you need to set any initial config options, pass them here. See + /// SteamNetworkingConfigValue_t for more about why this is preferable to + /// setting the options "immediately" after creation. + virtual HSteamNetConnection ConnectToHostedDedicatedServer( const SteamNetworkingIdentity &identityTarget, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; // - // Servers hosted in Valve data centers + // Servers hosted in data centers known to the Valve relay network // /// Returns the value of the SDR_LISTEN_PORT environment variable. This /// is the UDP server your server will be listening on. This will - /// configured automatically for you in production environments. (You - /// should set it yourself for testing.) + /// configured automatically for you in production environments. + /// + /// In development, you'll need to set it yourself. See + /// https://partner.steamgames.com/doc/api/ISteamNetworkingSockets + /// for more information on how to configure dev environments. virtual uint16 GetHostedDedicatedServerPort() = 0; - /// If you are running in a production data center, this will return the data - /// center code. Returns 0 otherwise. + /// Returns 0 if SDR_LISTEN_PORT is not set. Otherwise, returns the data center the server + /// is running in. This will be k_SteamDatagramPOPID_dev in non-production environment. virtual SteamNetworkingPOPID GetHostedDedicatedServerPOPID() = 0; - /// Return info about the hosted server. You will need to send this information to your - /// backend, and put it in tickets, so that the relays will know how to forward traffic from + /// Return info about the hosted server. This contains the PoPID of the server, + /// and opaque routing information that can be used by the relays to send traffic + /// to your server. + /// + /// You will need to send this information to your backend, and put it in tickets, + /// so that the relays will know how to forward traffic from /// clients to your server. See SteamDatagramRelayAuthTicket for more info. /// - /// NOTE ABOUT DEVELOPMENT ENVIRONMENTS: - /// In production in our data centers, these parameters are configured via environment variables. - /// In development, the only one you need to set is SDR_LISTEN_PORT, which is the local port you - /// want to listen on. Furthermore, if you are running your server behind a corporate firewall, - /// you probably will not be able to put the routing information returned by this function into - /// tickets. Instead, it should be a public internet address that the relays can use to send - /// data to your server. So you might just end up hardcoding a public address and setup port - /// forwarding on your corporate firewall. In that case, the port you put into the ticket - /// needs to be the public-facing port opened on your firewall, if it is different from the - /// actual server port. + /// Also, note that the routing information is contained in SteamDatagramGameCoordinatorServerLogin, + /// so if possible, it's preferred to use GetGameCoordinatorServerLogin to send this info + /// to your game coordinator service, and also login securely at the same time. /// - /// This function will fail if SteamDatagramServer_Init has not been called. + /// On a successful exit, k_EResultOK is returned /// - /// Returns false if the SDR_LISTEN_PORT environment variable is not set. - virtual bool GetHostedDedicatedServerAddress( SteamDatagramHostedAddress *pRouting ) = 0; + /// Unsuccessful exit: + /// - Something other than k_EResultOK is returned. + /// - k_EResultInvalidState: We are not configured to listen for SDR (SDR_LISTEN_SOCKET + /// is not set.) + /// - k_EResultPending: we do not (yet) have the authentication information needed. + /// (See GetAuthenticationStatus.) If you use environment variables to pre-fetch + /// the network config, this data should always be available immediately. + /// - A non-localized diagnostic debug message will be placed in m_data that describes + /// the cause of the failure. + /// + /// NOTE: The returned blob is not encrypted. Send it to your backend, but don't + /// directly share it with clients. + virtual EResult GetHostedDedicatedServerAddress( SteamDatagramHostedAddress *pRouting ) = 0; /// Create a listen socket on the specified virtual port. The physical UDP port to use /// will be determined by the SDR_LISTEN_PORT environment variable. If a UDP port is not /// configured, this call will fail. /// - /// Note that this call MUST be made through the SteamGameServerNetworkingSockets() interface - virtual HSteamListenSocket CreateHostedDedicatedServerListenSocket( int nVirtualPort ) = 0; + /// This call MUST be made through the SteamGameServerNetworkingSockets() interface. + /// + /// This function should be used when you are using the ticket generator library + /// to issue your own tickets. Clients connecting to the server on this virtual + /// port will need a ticket, and they must connect using ConnectToHostedDedicatedServer. + /// + /// If you need to set any initial config options, pass them here. See + /// SteamNetworkingConfigValue_t for more about why this is preferable to + /// setting the options "immediately" after creation. + virtual HSteamListenSocket CreateHostedDedicatedServerListenSocket( int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; -#endif // #ifndef STEAMNETWORKINGSOCKETS_ENABLE_SDR + /// Generate an authentication blob that can be used to securely login with + /// your backend, using SteamDatagram_ParseHostedServerLogin. (See + /// steamdatagram_gamecoordinator.h) + /// + /// Before calling the function: + /// - Populate the app data in pLoginInfo (m_cbAppData and m_appData). You can leave + /// all other fields uninitialized. + /// - *pcbSignedBlob contains the size of the buffer at pBlob. (It should be + /// at least k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized.) + /// + /// On a successful exit: + /// - k_EResultOK is returned + /// - All of the remaining fields of pLoginInfo will be filled out. + /// - *pcbSignedBlob contains the size of the serialized blob that has been + /// placed into pBlob. + /// + /// Unsuccessful exit: + /// - Something other than k_EResultOK is returned. + /// - k_EResultNotLoggedOn: you are not logged in (yet) + /// - See GetHostedDedicatedServerAddress for more potential failure return values. + /// - A non-localized diagnostic debug message will be placed in pBlob that describes + /// the cause of the failure. + /// + /// This works by signing the contents of the SteamDatagramGameCoordinatorServerLogin + /// with the cert that is issued to this server. In dev environments, it's OK if you do + /// not have a cert. (You will need to enable insecure dev login in SteamDatagram_ParseHostedServerLogin.) + /// Otherwise, you will need a signed cert. + /// + /// NOTE: The routing blob returned here is not encrypted. Send it to your backend + /// and don't share it directly with clients. + virtual EResult GetGameCoordinatorServerLogin( SteamDatagramGameCoordinatorServerLogin *pLoginInfo, int *pcbSignedBlob, void *pBlob ) = 0; + + + // + // Relayed connections using custom signaling protocol + // + // This is used if you have your own method of sending out-of-band + // signaling / rendezvous messages through a mutually trusted channel. + // + + /// Create a P2P "client" connection that does signaling over a custom + /// rendezvous/signaling channel. + /// + /// pSignaling points to a new object that you create just for this connection. + /// It must stay valid until Release() is called. Once you pass the + /// object to this function, it assumes ownership. Release() will be called + /// from within the function call if the call fails. Furthermore, until Release() + /// is called, you should be prepared for methods to be invoked on your + /// object from any thread! You need to make sure your object is threadsafe! + /// Furthermore, you should make sure that dispatching the methods is done + /// as quickly as possible. + /// + /// This function will immediately construct a connection in the "connecting" + /// state. Soon after (perhaps before this function returns, perhaps in another thread), + /// the connection will begin sending signaling messages by calling + /// ISteamNetworkingConnectionSignaling::SendSignal. + /// + /// When the remote peer accepts the connection (See + /// ISteamNetworkingSignalingRecvContext::OnConnectRequest), + /// it will begin sending signaling messages. When these messages are received, + /// you can pass them to the connection using ReceivedP2PCustomSignal. + /// + /// If you know the identity of the peer that you expect to be on the other end, + /// you can pass their identity to improve debug output or just detect bugs. + /// If you don't know their identity yet, you can pass NULL, and their + /// identity will be established in the connection handshake. + /// + /// If you use this, you probably want to call ISteamNetworkingUtils::InitRelayNetworkAccess() + /// when your app initializes + /// + /// If you need to set any initial config options, pass them here. See + /// SteamNetworkingConfigValue_t for more about why this is preferable to + /// setting the options "immediately" after creation. + virtual HSteamNetConnection ConnectP2PCustomSignaling( ISteamNetworkingConnectionSignaling *pSignaling, const SteamNetworkingIdentity *pPeerIdentity, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; + + /// Called when custom signaling has received a message. When your + /// signaling channel receives a message, it should save off whatever + /// routing information was in the envelope into the context object, + /// and then pass the payload to this function. + /// + /// A few different things can happen next, depending on the message: + /// + /// - If the signal is associated with existing connection, it is dealt + /// with immediately. If any replies need to be sent, they will be + /// dispatched using the ISteamNetworkingConnectionSignaling + /// associated with the connection. + /// - If the message represents a connection request (and the request + /// is not redundant for an existing connection), a new connection + /// will be created, and ReceivedConnectRequest will be called on your + /// context object to determine how to proceed. + /// - Otherwise, the message is for a connection that does not + /// exist (anymore). In this case, we *may* call SendRejectionReply + /// on your context object. + /// + /// In any case, we will not save off pContext or access it after this + /// function returns. + /// + /// Returns true if the message was parsed and dispatched without anything + /// unusual or suspicious happening. Returns false if there was some problem + /// with the message that prevented ordinary handling. (Debug output will + /// usually have more information.) + /// + /// If you expect to be using relayed connections, then you probably want + /// to call ISteamNetworkingUtils::InitRelayNetworkAccess() when your app initializes + virtual bool ReceivedP2PCustomSignal( const void *pMsg, int cbMsg, ISteamNetworkingSignalingRecvContext *pContext ) = 0; + + // + // Certificate provision by the application. On Steam, we normally handle all this automatically + // and you will not need to use these advanced functions. + // + + /// Get blob that describes a certificate request. You can send this to your game coordinator. + /// Upon entry, *pcbBlob should contain the size of the buffer. On successful exit, it will + /// return the number of bytes that were populated. You can pass pBlob=NULL to query for the required + /// size. (512 bytes is a conservative estimate.) + /// + /// Pass this blob to your game coordinator and call SteamDatagram_CreateCert. + virtual bool GetCertificateRequest( int *pcbBlob, void *pBlob, SteamNetworkingErrMsg &errMsg ) = 0; + + /// Set the certificate. The certificate blob should be the output of + /// SteamDatagram_CreateCert. + virtual bool SetCertificate( const void *pCertificate, int cbCertificate, SteamNetworkingErrMsg &errMsg ) = 0; + + /// Reset the identity associated with this instance. + /// Any open connections are closed. Any previous certificates, etc are discarded. + /// You can pass a specific identity that you want to use, or you can pass NULL, + /// in which case the identity will be invalid until you set it using SetCertificate + /// + /// NOTE: This function is not actually supported on Steam! It is included + /// for use on other platforms where the active user can sign out and + /// a new user can sign in. + virtual void ResetIdentity( const SteamNetworkingIdentity *pIdentity ) = 0; + + // + // Misc + // + + /// Invoke all callback functions queued for this interface. + /// See k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, etc + /// + /// You don't need to call this if you are using Steam's callback dispatch + /// mechanism (SteamAPI_RunCallbacks and SteamGameserver_RunCallbacks). + virtual void RunCallbacks() = 0; + + // + // "FakeIP" system. + // + // A FakeIP is essentially a temporary, arbitrary identifier that + // happens to be a valid IPv4 address. The purpose of this system is to make it + // easy to integrate with existing code that identifies hosts using IPv4 addresses. + // The FakeIP address will never actually be used to send or receive any packets + // on the Internet, it is strictly an identifier. + // + // FakeIP addresses are designed to (hopefully) pass through existing code as + // transparently as possible, while conflicting with "real" addresses that might + // be in use on networks (both the Internet and LANs) in the same code as little + // as possible. At the time this comment is being written, they come from the + // 169.254.0.0/16 range, and the port number will always be >1024. HOWEVER, + // this is subject to change! Do not make assumptions about these addresses, + // or your code might break in the future. In particular, you should use + // functions such as ISteamNetworkingUtils::IsFakeIP to determine if an IP + // address is a "fake" one used by this system. + // + + /// Begin asynchronous process of allocating a fake IPv4 address that other + /// peers can use to contact us via P2P. IP addresses returned by this + /// function are globally unique for a given appid. + /// + /// nNumPorts is the numbers of ports you wish to reserve. This is useful + /// for the same reason that listening on multiple UDP ports is useful for + /// different types of traffic. Because these allocations come from a global + /// namespace, there is a relatively strict limit on the maximum number of + /// ports you may request. (At the time of this writing, the limit is 4.) + /// The Port assignments are *not* guaranteed to have any particular order + /// or relationship! Do *not* assume they are contiguous, even though that + /// may often occur in practice. + /// + /// Returns false if a request was already in progress, true if a new request + /// was started. A SteamNetworkingFakeIPResult_t will be posted when the request + /// completes. + /// + /// For gameservers, you *must* call this after initializing the SDK but before + /// beginning login. Steam needs to know in advance that FakeIP will be used. + /// Everywhere your public IP would normally appear (such as the server browser) will be + /// replaced by the FakeIP, and the fake port at index 0. The request is actually queued + /// until the logon completes, so you must not wait until the allocation completes + /// before logging in. Except for trivial failures that can be detected locally + /// (e.g. invalid parameter), a SteamNetworkingFakeIPResult_t callback (whether success or + /// failure) will not be posted until after we have logged in. Furthermore, it is assumed + /// that FakeIP allocation is essential for your application to function, and so failure + /// will not be reported until *several* retries have been attempted. This process may + /// last several minutes. It is *highly* recommended to treat failure as fatal. + /// + /// To communicate using a connection-oriented (TCP-style) API: + /// - Server creates a listen socket using CreateListenSocketP2PFakeIP + /// - Client connects using ConnectByIPAddress, passing in the FakeIP address. + /// - The connection will behave mostly like a P2P connection. The identities + /// that appear in SteamNetConnectionInfo_t will be the FakeIP identity until + /// we know the real identity. Then it will be the real identity. If the + /// SteamNetConnectionInfo_t::m_addrRemote is valid, it will be a real IPv4 + /// address of a NAT-punched connection. Otherwise, it will not be valid. + /// + /// To communicate using an ad-hoc sendto/recv from (UDP-style) API, + /// use CreateFakeUDPPort. + virtual bool BeginAsyncRequestFakeIP( int nNumPorts ) = 0; + + /// Return info about the FakeIP and port(s) that we have been assigned, + /// if any. idxFirstPort is currently reserved and must be zero. + /// Make sure and check SteamNetworkingFakeIPResult_t::m_eResult + virtual void GetFakeIP( int idxFirstPort, SteamNetworkingFakeIPResult_t *pInfo ) = 0; + + /// Create a listen socket that will listen for P2P connections sent + /// to our FakeIP. A peer can initiate connections to this listen + /// socket by calling ConnectByIPAddress. + /// + /// idxFakePort refers to the *index* of the fake port requested, + /// not the actual port number. For example, pass 0 to refer to the + /// first port in the reservation. You must call this only after calling + /// BeginAsyncRequestFakeIP. However, you do not need to wait for the + /// request to complete before creating the listen socket. + virtual HSteamListenSocket CreateListenSocketP2PFakeIP( int idxFakePort, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; + + /// If the connection was initiated using the "FakeIP" system, then we + /// we can get an IP address for the remote host. If the remote host had + /// a global FakeIP at the time the connection was established, this + /// function will return that global IP. Otherwise, a FakeIP that is + /// unique locally will be allocated from the local FakeIP address space, + /// and that will be returned. + /// + /// The allocation of local FakeIPs attempts to assign addresses in + /// a consistent manner. If multiple connections are made to the + /// same remote host, they *probably* will return the same FakeIP. + /// However, since the namespace is limited, this cannot be guaranteed. + /// + /// On failure, returns: + /// - k_EResultInvalidParam: invalid connection handle + /// - k_EResultIPNotFound: This connection wasn't made using FakeIP system + virtual EResult GetRemoteFakeIPForConnection( HSteamNetConnection hConn, SteamNetworkingIPAddr *pOutAddr ) = 0; + + /// Get an interface that can be used like a UDP port to send/receive + /// datagrams to a FakeIP address. This is intended to make it easy + /// to port existing UDP-based code to take advantage of SDR. + /// + /// idxFakeServerPort refers to the *index* of the port allocated using + /// BeginAsyncRequestFakeIP and is used to create "server" ports. You may + /// call this before the allocation has completed. However, any attempts + /// to send packets will fail until the allocation has succeeded. When + /// the peer receives packets sent from this interface, the from address + /// of the packet will be the globally-unique FakeIP. If you call this + /// function multiple times and pass the same (nonnegative) fake port index, + /// the same object will be returned, and this object is not reference counted. + /// + /// To create a "client" port (e.g. the equivalent of an ephemeral UDP port) + /// pass -1. In this case, a distinct object will be returned for each call. + /// When the peer receives packets sent from this interface, the peer will + /// assign a FakeIP from its own locally-controlled namespace. + virtual ISteamNetworkingFakeUDPPort *CreateFakeUDPPort( int idxFakeServerPort ) = 0; - // Invoke all callbacks queued for this interface. - // On Steam, callbacks are dispatched via the ordinary Steamworks callbacks mechanism. - // So if you have code that is also targeting Steam, you should call this at about the - // same time you would call SteamAPI_RunCallbacks and SteamGameServer_RunCallbacks. -#ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB - virtual void RunCallbacks( ISteamNetworkingSocketsCallbacks *pCallbacks ) = 0; -#endif protected: ~ISteamNetworkingSockets(); // Silence some warnings }; -#define STEAMNETWORKINGSOCKETS_INTERFACE_VERSION "SteamNetworkingSockets002" +#define STEAMNETWORKINGSOCKETS_INTERFACE_VERSION "SteamNetworkingSockets012" -extern "C" { +// Global accessors -// Global accessor. -#if defined( STEAMNETWORKINGSOCKETS_PARTNER ) +// Using standalone lib +#ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB - // Standalone lib. Use different symbol name, so that we can dynamically switch between steamclient.dll - // and the standalone lib - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamNetworkingSockets_Lib(); - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamGameServerNetworkingSockets_Lib(); - inline ISteamNetworkingSockets *SteamNetworkingSockets() { return SteamNetworkingSockets_Lib(); } - inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets() { return SteamGameServerNetworkingSockets_Lib(); } + static_assert( STEAMNETWORKINGSOCKETS_INTERFACE_VERSION[24] == '2', "Version mismatch" ); + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamNetworkingSockets_LibV12(); + inline ISteamNetworkingSockets *SteamNetworkingSockets_Lib() { return SteamNetworkingSockets_LibV12(); } -#elif defined( STEAMNETWORKINGSOCKETS_OPENSOURCE ) + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamGameServerNetworkingSockets_LibV12(); + inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets_Lib() { return SteamGameServerNetworkingSockets_LibV12(); } - // Opensource GameNetworkingSockets - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamNetworkingSockets(); + #ifndef STEAMNETWORKINGSOCKETS_STEAMAPI + inline ISteamNetworkingSockets *SteamNetworkingSockets() { return SteamNetworkingSockets_LibV12(); } + inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets() { return SteamGameServerNetworkingSockets_LibV12(); } + #endif +#endif -#else +// Using Steamworks SDK +#ifdef STEAMNETWORKINGSOCKETS_STEAMAPI + STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamNetworkingSockets *, SteamNetworkingSockets_SteamAPI, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION ); + STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamNetworkingSockets *, SteamGameServerNetworkingSockets_SteamAPI, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION ); - // Steamworks SDK - inline ISteamNetworkingSockets *SteamNetworkingSockets(); - STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamNetworkingSockets *, SteamNetworkingSockets, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION ); - inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets(); - STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamNetworkingSockets *, SteamGameServerNetworkingSockets, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION ); + #ifndef STEAMNETWORKINGSOCKETS_STANDALONELIB + inline ISteamNetworkingSockets *SteamNetworkingSockets() { return SteamNetworkingSockets_SteamAPI(); } + inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets() { return SteamGameServerNetworkingSockets_SteamAPI(); } + #endif #endif /// Callback struct used to notify when a connection has changed state @@ -482,8 +1005,27 @@ struct SteamNetConnectionStatusChangedCallback_t /// Previous state. (Current state is in m_info.m_eState) ESteamNetworkingConnectionState m_eOldState; }; + +/// A struct used to describe our readiness to participate in authenticated, +/// encrypted communication. In order to do this we need: +/// +/// - The list of trusted CA certificates that might be relevant for this +/// app. +/// - A valid certificate issued by a CA. +/// +/// This callback is posted whenever the state of our readiness changes. +struct SteamNetAuthenticationStatus_t +{ + enum { k_iCallback = k_iSteamNetworkingSocketsCallbacks + 2 }; + + /// Status + ESteamNetworkingAvailability m_eAvail; + + /// Non-localized English language status. For diagnostic/debugging + /// purposes only. + char m_debugMsg[ 256 ]; +}; + #pragma pack( pop ) -} - #endif // ISTEAMNETWORKINGSOCKETS diff --git a/Generator/steam_sdk/isteamnetworkingutils.h b/Generator/steam_sdk/isteamnetworkingutils.h index 5597be2..626efed 100644 --- a/Generator/steam_sdk/isteamnetworkingutils.h +++ b/Generator/steam_sdk/isteamnetworkingutils.h @@ -6,14 +6,13 @@ #ifndef ISTEAMNETWORKINGUTILS #define ISTEAMNETWORKINGUTILS -#ifdef _WIN32 #pragma once -#endif - -#include #include "steamnetworkingtypes.h" +#include "steam_api_common.h" + struct SteamDatagramRelayAuthTicket; +struct SteamRelayNetworkStatus_t; //----------------------------------------------------------------------------- /// Misc networking utilities for checking the local networking environment @@ -21,28 +20,65 @@ struct SteamDatagramRelayAuthTicket; class ISteamNetworkingUtils { public: -#ifdef STEAMNETWORKINGSOCKETS_ENABLE_SDR - // - // Initialization + // Efficient message sending // - /// If you know that you are going to be using the relay network, call - /// this to initialize the relay network or check if that initialization - /// has completed. If you do not call this, the initialization will - /// happen the first time you use a feature that requires access to the - /// relay network, and that use will be delayed. + /// Allocate and initialize a message object. Usually the reason + /// you call this is to pass it to ISteamNetworkingSockets::SendMessages. + /// The returned object will have all of the relevant fields cleared to zero. /// - /// Returns true if initialization has completed successfully. - /// (It will probably return false on the first call.) + /// Optionally you can also request that this system allocate space to + /// hold the payload itself. If cbAllocateBuffer is nonzero, the system + /// will allocate memory to hold a payload of at least cbAllocateBuffer bytes. + /// m_pData will point to the allocated buffer, m_cbSize will be set to the + /// size, and m_pfnFreeData will be set to the proper function to free up + /// the buffer. /// + /// If cbAllocateBuffer=0, then no buffer is allocated. m_pData will be NULL, + /// m_cbSize will be zero, and m_pfnFreeData will be NULL. You will need to + /// set each of these. + virtual SteamNetworkingMessage_t *AllocateMessage( int cbAllocateBuffer ) = 0; + + // + // Access to Steam Datagram Relay (SDR) network + // + + // + // Initialization and status check + // + + /// If you know that you are going to be using the relay network (for example, + /// because you anticipate making P2P connections), call this to initialize the + /// relay network. If you do not call this, the initialization will + /// be delayed until the first time you use a feature that requires access + /// to the relay network, which will delay that first access. + /// + /// You can also call this to force a retry if the previous attempt has failed. + /// Performing any action that requires access to the relay network will also + /// trigger a retry, and so calling this function is never strictly necessary, + /// but it can be useful to call it a program launch time, if access to the + /// relay network is anticipated. + /// + /// Use GetRelayNetworkStatus or listen for SteamRelayNetworkStatus_t + /// callbacks to know when initialization has completed. /// Typically initialization completes in a few seconds. /// - /// Note: dedicated servers hosted with Valve do *not* need to call - /// this, since they do not make routing decisions. However, if the - /// dedicated server will be using P2P functionality, it will act as + /// Note: dedicated servers hosted in known data centers do *not* need + /// to call this, since they do not make routing decisions. However, if + /// the dedicated server will be using P2P functionality, it will act as /// a "client" and this should be called. - inline bool InitializeRelayNetworkAccess(); + inline void InitRelayNetworkAccess(); + + /// Fetch current status of the relay network. + /// + /// SteamRelayNetworkStatus_t is also a callback. It will be triggered on + /// both the user and gameserver interfaces any time the status changes, or + /// ping measurement starts or stops. + /// + /// SteamRelayNetworkStatus_t::m_eAvail is returned. If you want + /// more details, you can pass a non-NULL value. + virtual ESteamNetworkingAvailability GetRelayNetworkStatus( SteamRelayNetworkStatus_t *pDetails ) = 0; // // "Ping location" functions @@ -59,14 +95,14 @@ public: // This is extremely useful to select peers for matchmaking! // // The markers can also be converted to a string, so they can be transmitted. - // We have a separate library you can use on your backend to manipulate - // these objects. (See steamdatagram_ticketgen.h) + // We have a separate library you can use on your app's matchmaking/coordinating + // server to manipulate these objects. (See steamdatagram_gamecoordinator.h) /// Return location info for the current host. Returns the approximate /// age of the data, in seconds, or -1 if no data is available. /// /// It takes a few seconds to initialize access to the relay network. If - /// you call this very soon after calling InitializeRelayNetworkAccess, + /// you call this very soon after calling InitRelayNetworkAccess, /// the data may not be available yet. /// /// This always return the most up-to-date information we have available @@ -94,7 +130,7 @@ public: /// currently answer the question for some other reason. /// /// Do you need to be able to do this from a backend/matchmaking server? - /// You are looking for the "ticketgen" library. + /// You are looking for the "game coordinator" library. virtual int EstimatePingTimeBetweenTwoLocations( const SteamNetworkPingLocation_t &location1, const SteamNetworkPingLocation_t &location2 ) = 0; /// Same as EstimatePingTime, but assumes that one location is the local host. @@ -117,10 +153,6 @@ public: /// the string. virtual bool ParsePingLocationString( const char *pszString, SteamNetworkPingLocation_t &result ) = 0; - // - // Initialization / ping measurement status - // - /// Check if the ping data of sufficient recency is available, and if /// it's too old, start refreshing it. /// @@ -136,13 +168,11 @@ public: /// Returns false if sufficiently recent data is not available. In this /// case, ping measurement is initiated, if it is not already active. /// (You cannot restart a measurement already in progress.) + /// + /// You can use GetRelayNetworkStatus or listen for SteamRelayNetworkStatus_t + /// to know when ping measurement completes. virtual bool CheckPingDataUpToDate( float flMaxAgeSeconds ) = 0; - /// Return true if we are taking ping measurements to update our ping - /// location or select optimal routing. Ping measurement typically takes - /// a few seconds, perhaps up to 10 seconds. - virtual bool IsPingMeasurementInProgress() = 0; - // // List of Valve data centers, and ping times to them. This might // be useful to you if you are use our hosting, or just need to measure @@ -162,7 +192,6 @@ public: /// Get list of all POP IDs. Returns the number of entries that were filled into /// your list. virtual int GetPOPList( SteamNetworkingPOPID *list, int nListSz ) = 0; -#endif // #ifdef STEAMNETWORKINGSOCKETS_ENABLE_SDR // // Misc @@ -197,16 +226,47 @@ public: /// value means more important, and the value you pass is the lowest priority (highest /// numeric value) you wish to receive callbacks for. /// + /// The value here controls the detail level for most messages. You can control the + /// detail level for various subsystems (perhaps only for certain connections) by + /// adjusting the configuration values k_ESteamNetworkingConfig_LogLevel_Xxxxx. + /// /// Except when debugging, you should only use k_ESteamNetworkingSocketsDebugOutputType_Msg /// or k_ESteamNetworkingSocketsDebugOutputType_Warning. For best performance, do NOT - /// request a high detail level and then filter out messages in your callback. Instead, - /// call function function to adjust the desired level of detail. + /// request a high detail level and then filter out messages in your callback. This incurs + /// all of the expense of formatting the messages, which are then discarded. Setting a high + /// priority value (low numeric value) here allows the library to avoid doing this work. /// /// IMPORTANT: This may be called from a service thread, while we own a mutex, etc. /// Your output function must be threadsafe and fast! Do not make any other /// Steamworks calls from within the handler. virtual void SetDebugOutputFunction( ESteamNetworkingSocketsDebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ) = 0; + // + // Fake IP + // + // Useful for interfacing with code that assumes peers are identified using an IPv4 address + // + + /// Return true if an IPv4 address is one that might be used as a "fake" one. + /// This function is fast; it just does some logical tests on the IP and does + /// not need to do any lookup operations. + inline bool IsFakeIPv4( uint32 nIPv4 ) { return GetIPv4FakeIPType( nIPv4 ) > k_ESteamNetworkingFakeIPType_NotFake; } + virtual ESteamNetworkingFakeIPType GetIPv4FakeIPType( uint32 nIPv4 ) = 0; + + /// Get the real identity associated with a given FakeIP. + /// + /// On failure, returns: + /// - k_EResultInvalidParam: the IP is not a FakeIP. + /// - k_EResultNoMatch: we don't recognize that FakeIP and don't know the corresponding identity. + /// + /// FakeIP's used by active connections, or the FakeIPs assigned to local identities, + /// will always work. FakeIPs for recently destroyed connections will continue to + /// return results for a little while, but not forever. At some point, we will forget + /// FakeIPs to save space. It's reasonably safe to assume that you can read back the + /// real identity of a connection very soon after it is destroyed. But do not wait + /// indefinitely. + virtual EResult GetRealIdentityForFakeIP( const SteamNetworkingIPAddr &fakeIP, SteamNetworkingIdentity *pOutRealIdentity ) = 0; + // // Set and get configuration values, see ESteamNetworkingConfigValue for individual descriptions. // @@ -215,23 +275,43 @@ public: bool SetGlobalConfigValueInt32( ESteamNetworkingConfigValue eValue, int32 val ); bool SetGlobalConfigValueFloat( ESteamNetworkingConfigValue eValue, float val ); bool SetGlobalConfigValueString( ESteamNetworkingConfigValue eValue, const char *val ); + bool SetGlobalConfigValuePtr( ESteamNetworkingConfigValue eValue, void *val ); bool SetConnectionConfigValueInt32( HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, int32 val ); bool SetConnectionConfigValueFloat( HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, float val ); bool SetConnectionConfigValueString( HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, const char *val ); + // + // Set global callbacks. If you do not want to use Steam's callback dispatch mechanism and you + // want to use the same callback on all (or most) listen sockets and connections, then + // simply install these callbacks first thing, and you are good to go. + // See ISteamNetworkingSockets::RunCallbacks + // + bool SetGlobalCallback_SteamNetConnectionStatusChanged( FnSteamNetConnectionStatusChanged fnCallback ); + bool SetGlobalCallback_SteamNetAuthenticationStatusChanged( FnSteamNetAuthenticationStatusChanged fnCallback ); + bool SetGlobalCallback_SteamRelayNetworkStatusChanged( FnSteamRelayNetworkStatusChanged fnCallback ); + bool SetGlobalCallback_FakeIPResult( FnSteamNetworkingFakeIPResult fnCallback ); + bool SetGlobalCallback_MessagesSessionRequest( FnSteamNetworkingMessagesSessionRequest fnCallback ); + bool SetGlobalCallback_MessagesSessionFailed( FnSteamNetworkingMessagesSessionFailed fnCallback ); + /// Set a configuration value. /// - eValue: which value is being set /// - eScope: Onto what type of object are you applying the setting? /// - scopeArg: Which object you want to change? (Ignored for global scope). E.g. connection handle, listen socket handle, interface pointer, etc. /// - eDataType: What type of data is in the buffer at pValue? This must match the type of the variable exactly! - /// - pArg: Value to set it to. You can pass NULL to remove a non-global sett at this scope, + /// - pArg: Value to set it to. You can pass NULL to remove a non-global setting at this scope, /// causing the value for that object to use global defaults. Or at global scope, passing NULL /// will reset any custom value and restore it to the system default. - /// NOTE: When setting callback functions, do not pass the function pointer directly. + /// NOTE: When setting pointers (e.g. callback functions), do not pass the function pointer directly. /// Your argument should be a pointer to a function pointer. virtual bool SetConfigValue( ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void *pArg ) = 0; + /// Set a configuration value, using a struct to pass the value. + /// (This is just a convenience shortcut; see below for the implementation and + /// a little insight into how SteamNetworkingConfigValue_t is used when + /// setting config options during listen socket and connection creation.) + bool SetConfigValueStruct( const SteamNetworkingConfigValue_t &opt, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj ); + /// Get a configuration value. /// - eValue: which value to fetch /// - eScopeType: query setting on what type of object @@ -242,61 +322,179 @@ public: virtual ESteamNetworkingGetConfigValueResult GetConfigValue( ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType *pOutDataType, void *pResult, size_t *cbResult ) = 0; - /// Returns info about a configuration value. Returns false if the value does not exist. - /// pOutNextValue can be used to iterate through all of the known configuration values. - /// (Use GetFirstConfigValue() to begin the iteration, will be k_ESteamNetworkingConfig_Invalid on the last value) - /// Any of the output parameters can be NULL if you do not need that information. - virtual bool GetConfigValueInfo( ESteamNetworkingConfigValue eValue, const char **pOutName, ESteamNetworkingConfigDataType *pOutDataType, ESteamNetworkingConfigScope *pOutScope, ESteamNetworkingConfigValue *pOutNextValue ) = 0; + /// Get info about a configuration value. Returns the name of the value, + /// or NULL if the value doesn't exist. Other output parameters can be NULL + /// if you do not need them. + virtual const char *GetConfigValueInfo( ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigDataType *pOutDataType, + ESteamNetworkingConfigScope *pOutScope ) = 0; - /// Return the lowest numbered configuration value available in the current environment. - virtual ESteamNetworkingConfigValue GetFirstConfigValue() = 0; + /// Iterate the list of all configuration values in the current environment that it might + /// be possible to display or edit using a generic UI. To get the first iterable value, + /// pass k_ESteamNetworkingConfig_Invalid. Returns k_ESteamNetworkingConfig_Invalid + /// to signal end of list. + /// + /// The bEnumerateDevVars argument can be used to include "dev" vars. These are vars that + /// are recommended to only be editable in "debug" or "dev" mode and typically should not be + /// shown in a retail environment where a malicious local user might use this to cheat. + virtual ESteamNetworkingConfigValue IterateGenericEditableConfigValues( ESteamNetworkingConfigValue eCurrent, bool bEnumerateDevVars ) = 0; + // // String conversions. You'll usually access these using the respective // inline methods. + // virtual void SteamNetworkingIPAddr_ToString( const SteamNetworkingIPAddr &addr, char *buf, size_t cbBuf, bool bWithPort ) = 0; virtual bool SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr *pAddr, const char *pszStr ) = 0; + virtual ESteamNetworkingFakeIPType SteamNetworkingIPAddr_GetFakeIPType( const SteamNetworkingIPAddr &addr ) = 0; virtual void SteamNetworkingIdentity_ToString( const SteamNetworkingIdentity &identity, char *buf, size_t cbBuf ) = 0; virtual bool SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity *pIdentity, const char *pszStr ) = 0; protected: ~ISteamNetworkingUtils(); // Silence some warnings }; -#define STEAMNETWORKINGUTILS_INTERFACE_VERSION "SteamNetworkingUtils001" +#define STEAMNETWORKINGUTILS_INTERFACE_VERSION "SteamNetworkingUtils004" -// Global accessor. +// Global accessors +// Using standalone lib #ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB // Standalone lib - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingUtils *SteamNetworkingUtils_Lib(); - inline ISteamNetworkingUtils *SteamNetworkingUtils() { return SteamNetworkingUtils_Lib(); } + static_assert( STEAMNETWORKINGUTILS_INTERFACE_VERSION[22] == '4', "Version mismatch" ); + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingUtils *SteamNetworkingUtils_LibV4(); + inline ISteamNetworkingUtils *SteamNetworkingUtils_Lib() { return SteamNetworkingUtils_LibV4(); } -#else + #ifndef STEAMNETWORKINGSOCKETS_STEAMAPI + inline ISteamNetworkingUtils *SteamNetworkingUtils() { return SteamNetworkingUtils_LibV4(); } + #endif +#endif + +// Using Steamworks SDK +#ifdef STEAMNETWORKINGSOCKETS_STEAMAPI + STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamNetworkingUtils *, SteamNetworkingUtils_SteamAPI, + /* Prefer user version of the interface. But if it isn't found, then use + gameserver one. Yes, this is a completely terrible hack */ + SteamInternal_FindOrCreateUserInterface( 0, STEAMNETWORKINGUTILS_INTERFACE_VERSION ) ? + SteamInternal_FindOrCreateUserInterface( 0, STEAMNETWORKINGUTILS_INTERFACE_VERSION ) : + SteamInternal_FindOrCreateGameServerInterface( 0, STEAMNETWORKINGUTILS_INTERFACE_VERSION ), + "global", + STEAMNETWORKINGUTILS_INTERFACE_VERSION + ) + + #ifndef STEAMNETWORKINGSOCKETS_STANDALONELIB + inline ISteamNetworkingUtils *SteamNetworkingUtils() { return SteamNetworkingUtils_SteamAPI(); } + #endif +#endif + +/// A struct used to describe our readiness to use the relay network. +/// To do this we first need to fetch the network configuration, +/// which describes what POPs are available. +struct SteamRelayNetworkStatus_t +{ + enum { k_iCallback = k_iSteamNetworkingUtilsCallbacks + 1 }; + + /// Summary status. When this is "current", initialization has + /// completed. Anything else means you are not ready yet, or + /// there is a significant problem. + ESteamNetworkingAvailability m_eAvail; + + /// Nonzero if latency measurement is in progress (or pending, + /// awaiting a prerequisite). + int m_bPingMeasurementInProgress; + + /// Status obtaining the network config. This is a prerequisite + /// for relay network access. + /// + /// Failure to obtain the network config almost always indicates + /// a problem with the local internet connection. + ESteamNetworkingAvailability m_eAvailNetworkConfig; + + /// Current ability to communicate with ANY relay. Note that + /// the complete failure to communicate with any relays almost + /// always indicates a problem with the local Internet connection. + /// (However, just because you can reach a single relay doesn't + /// mean that the local connection is in perfect health.) + ESteamNetworkingAvailability m_eAvailAnyRelay; + + /// Non-localized English language status. For diagnostic/debugging + /// purposes only. + char m_debugMsg[ 256 ]; +}; + +#ifndef API_GEN + +/// Utility class for printing a SteamNetworkingIdentity. +/// E.g. printf( "Identity is '%s'\n", SteamNetworkingIdentityRender( identity ).c_str() ); +struct SteamNetworkingIdentityRender +{ + SteamNetworkingIdentityRender( const SteamNetworkingIdentity &x ) { x.ToString( buf, sizeof(buf) ); } + inline const char *c_str() const { return buf; } +private: + char buf[ SteamNetworkingIdentity::k_cchMaxString ]; +}; + +/// Utility class for printing a SteamNetworkingIPAddrRender. +struct SteamNetworkingIPAddrRender +{ + SteamNetworkingIPAddrRender( const SteamNetworkingIPAddr &x, bool bWithPort = true ) { x.ToString( buf, sizeof(buf), bWithPort ); } + inline const char *c_str() const { return buf; } +private: + char buf[ SteamNetworkingIPAddr::k_cchMaxString ]; +}; - // Steamworks SDK - inline ISteamNetworkingUtils *SteamNetworkingUtils(); - STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamNetworkingUtils *, SteamNetworkingUtils, SteamInternal_FindOrCreateUserInterface( 0, STEAMNETWORKINGUTILS_INTERFACE_VERSION ) ); #endif /////////////////////////////////////////////////////////////////////////////// // // Internal stuff -#ifdef STEAMNETWORKINGSOCKETS_ENABLE_SDR -inline bool ISteamNetworkingUtils::InitializeRelayNetworkAccess() { return CheckPingDataUpToDate( 1e10f ); } -#endif - +inline void ISteamNetworkingUtils::InitRelayNetworkAccess() { CheckPingDataUpToDate( 1e10f ); } inline bool ISteamNetworkingUtils::SetGlobalConfigValueInt32( ESteamNetworkingConfigValue eValue, int32 val ) { return SetConfigValue( eValue, k_ESteamNetworkingConfig_Global, 0, k_ESteamNetworkingConfig_Int32, &val ); } inline bool ISteamNetworkingUtils::SetGlobalConfigValueFloat( ESteamNetworkingConfigValue eValue, float val ) { return SetConfigValue( eValue, k_ESteamNetworkingConfig_Global, 0, k_ESteamNetworkingConfig_Float, &val ); } inline bool ISteamNetworkingUtils::SetGlobalConfigValueString( ESteamNetworkingConfigValue eValue, const char *val ) { return SetConfigValue( eValue, k_ESteamNetworkingConfig_Global, 0, k_ESteamNetworkingConfig_String, val ); } +inline bool ISteamNetworkingUtils::SetGlobalConfigValuePtr( ESteamNetworkingConfigValue eValue, void *val ) { return SetConfigValue( eValue, k_ESteamNetworkingConfig_Global, 0, k_ESteamNetworkingConfig_Ptr, &val ); } // Note: passing pointer to pointer. inline bool ISteamNetworkingUtils::SetConnectionConfigValueInt32( HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, int32 val ) { return SetConfigValue( eValue, k_ESteamNetworkingConfig_Connection, hConn, k_ESteamNetworkingConfig_Int32, &val ); } inline bool ISteamNetworkingUtils::SetConnectionConfigValueFloat( HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, float val ) { return SetConfigValue( eValue, k_ESteamNetworkingConfig_Connection, hConn, k_ESteamNetworkingConfig_Float, &val ); } inline bool ISteamNetworkingUtils::SetConnectionConfigValueString( HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, const char *val ) { return SetConfigValue( eValue, k_ESteamNetworkingConfig_Connection, hConn, k_ESteamNetworkingConfig_String, val ); } +inline bool ISteamNetworkingUtils::SetGlobalCallback_SteamNetConnectionStatusChanged( FnSteamNetConnectionStatusChanged fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, (void*)fnCallback ); } +inline bool ISteamNetworkingUtils::SetGlobalCallback_SteamNetAuthenticationStatusChanged( FnSteamNetAuthenticationStatusChanged fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_AuthStatusChanged, (void*)fnCallback ); } +inline bool ISteamNetworkingUtils::SetGlobalCallback_SteamRelayNetworkStatusChanged( FnSteamRelayNetworkStatusChanged fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged, (void*)fnCallback ); } +inline bool ISteamNetworkingUtils::SetGlobalCallback_FakeIPResult( FnSteamNetworkingFakeIPResult fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_FakeIPResult, (void*)fnCallback ); } +inline bool ISteamNetworkingUtils::SetGlobalCallback_MessagesSessionRequest( FnSteamNetworkingMessagesSessionRequest fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_MessagesSessionRequest, (void*)fnCallback ); } +inline bool ISteamNetworkingUtils::SetGlobalCallback_MessagesSessionFailed( FnSteamNetworkingMessagesSessionFailed fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_MessagesSessionFailed, (void*)fnCallback ); } -#if !defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) && defined( STEAMNETWORKINGSOCKETS_STEAM ) -inline void SteamNetworkingIPAddr::ToString( char *buf, size_t cbBuf, bool bWithPort ) const { SteamNetworkingUtils()->SteamNetworkingIPAddr_ToString( *this, buf, cbBuf, bWithPort ); } -inline bool SteamNetworkingIPAddr::ParseString( const char *pszStr ) { return SteamNetworkingUtils()->SteamNetworkingIPAddr_ParseString( this, pszStr ); } -inline void SteamNetworkingIdentity::ToString( char *buf, size_t cbBuf ) const { SteamNetworkingUtils()->SteamNetworkingIdentity_ToString( *this, buf, cbBuf ); } -inline bool SteamNetworkingIdentity::ParseString( const char *pszStr ) { return SteamNetworkingUtils()->SteamNetworkingIdentity_ParseString( this, pszStr ); } +inline bool ISteamNetworkingUtils::SetConfigValueStruct( const SteamNetworkingConfigValue_t &opt, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj ) +{ + // Locate the argument. Strings are a special case, since the + // "value" (the whole string buffer) doesn't fit in the struct + // NOTE: for pointer values, we pass a pointer to the pointer, + // we do not pass the pointer directly. + const void *pVal = ( opt.m_eDataType == k_ESteamNetworkingConfig_String ) ? (const void *)opt.m_val.m_string : (const void *)&opt.m_val; + return SetConfigValue( opt.m_eValue, eScopeType, scopeObj, opt.m_eDataType, pVal ); +} + +// How to get helper functions. +#if defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) || defined(STEAMNETWORKINGSOCKETS_FOREXPORT) || defined( STEAMNETWORKINGSOCKETS_STANDALONELIB ) + + // Call direct to static functions + STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingIPAddr_ToString( const SteamNetworkingIPAddr *pAddr, char *buf, size_t cbBuf, bool bWithPort ); + STEAMNETWORKINGSOCKETS_INTERFACE bool SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr *pAddr, const char *pszStr ); + STEAMNETWORKINGSOCKETS_INTERFACE ESteamNetworkingFakeIPType SteamNetworkingIPAddr_GetFakeIPType( const SteamNetworkingIPAddr *pAddr ); + STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingIdentity_ToString( const SteamNetworkingIdentity *pIdentity, char *buf, size_t cbBuf ); + STEAMNETWORKINGSOCKETS_INTERFACE bool SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity *pIdentity, size_t sizeofIdentity, const char *pszStr ); + inline void SteamNetworkingIPAddr::ToString( char *buf, size_t cbBuf, bool bWithPort ) const { SteamNetworkingIPAddr_ToString( this, buf, cbBuf, bWithPort ); } + inline bool SteamNetworkingIPAddr::ParseString( const char *pszStr ) { return SteamNetworkingIPAddr_ParseString( this, pszStr ); } + inline ESteamNetworkingFakeIPType SteamNetworkingIPAddr::GetFakeIPType() const { return SteamNetworkingIPAddr_GetFakeIPType( this ); } + inline void SteamNetworkingIdentity::ToString( char *buf, size_t cbBuf ) const { SteamNetworkingIdentity_ToString( this, buf, cbBuf ); } + inline bool SteamNetworkingIdentity::ParseString( const char *pszStr ) { return SteamNetworkingIdentity_ParseString( this, sizeof(*this), pszStr ); } + +#elif defined( STEAMNETWORKINGSOCKETS_STEAMAPI ) + // Using steamworks SDK - go through SteamNetworkingUtils() + inline void SteamNetworkingIPAddr::ToString( char *buf, size_t cbBuf, bool bWithPort ) const { SteamNetworkingUtils()->SteamNetworkingIPAddr_ToString( *this, buf, cbBuf, bWithPort ); } + inline bool SteamNetworkingIPAddr::ParseString( const char *pszStr ) { return SteamNetworkingUtils()->SteamNetworkingIPAddr_ParseString( this, pszStr ); } + inline ESteamNetworkingFakeIPType SteamNetworkingIPAddr::GetFakeIPType() const { return SteamNetworkingUtils()->SteamNetworkingIPAddr_GetFakeIPType( *this ); } + inline void SteamNetworkingIdentity::ToString( char *buf, size_t cbBuf ) const { SteamNetworkingUtils()->SteamNetworkingIdentity_ToString( *this, buf, cbBuf ); } + inline bool SteamNetworkingIdentity::ParseString( const char *pszStr ) { return SteamNetworkingUtils()->SteamNetworkingIdentity_ParseString( this, pszStr ); } +#else + #error "Invalid config" #endif #endif // ISTEAMNETWORKINGUTILS diff --git a/Generator/steam_sdk/isteamparentalsettings.h b/Generator/steam_sdk/isteamparentalsettings.h index c965e32..2a22b01 100644 --- a/Generator/steam_sdk/isteamparentalsettings.h +++ b/Generator/steam_sdk/isteamparentalsettings.h @@ -28,6 +28,7 @@ enum EParentalFeature k_EFeatureParentalSetup = 10, k_EFeatureLibrary = 11, k_EFeatureTest = 12, + k_EFeatureSiteLicense = 13, k_EFeatureMax }; diff --git a/Generator/steam_sdk/isteamremoteplay.h b/Generator/steam_sdk/isteamremoteplay.h new file mode 100644 index 0000000..9c2dafb --- /dev/null +++ b/Generator/steam_sdk/isteamremoteplay.h @@ -0,0 +1,88 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMREMOTEPLAY_H +#define ISTEAMREMOTEPLAY_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + + +//----------------------------------------------------------------------------- +// Purpose: The form factor of a device +//----------------------------------------------------------------------------- +enum ESteamDeviceFormFactor +{ + k_ESteamDeviceFormFactorUnknown = 0, + k_ESteamDeviceFormFactorPhone = 1, + k_ESteamDeviceFormFactorTablet = 2, + k_ESteamDeviceFormFactorComputer = 3, + k_ESteamDeviceFormFactorTV = 4, +}; + +// Steam Remote Play session ID +typedef uint32 RemotePlaySessionID_t; + + +//----------------------------------------------------------------------------- +// Purpose: Functions to provide information about Steam Remote Play sessions +//----------------------------------------------------------------------------- +class ISteamRemotePlay +{ +public: + // Get the number of currently connected Steam Remote Play sessions + virtual uint32 GetSessionCount() = 0; + + // Get the currently connected Steam Remote Play session ID at the specified index. Returns zero if index is out of bounds. + virtual RemotePlaySessionID_t GetSessionID( int iSessionIndex ) = 0; + + // Get the SteamID of the connected user + virtual CSteamID GetSessionSteamID( RemotePlaySessionID_t unSessionID ) = 0; + + // Get the name of the session client device + // This returns NULL if the sessionID is not valid + virtual const char *GetSessionClientName( RemotePlaySessionID_t unSessionID ) = 0; + + // Get the form factor of the session client device + virtual ESteamDeviceFormFactor GetSessionClientFormFactor( RemotePlaySessionID_t unSessionID ) = 0; + + // Get the resolution, in pixels, of the session client device + // This is set to 0x0 if the resolution is not available + virtual bool BGetSessionClientResolution( RemotePlaySessionID_t unSessionID, int *pnResolutionX, int *pnResolutionY ) = 0; + + // Invite a friend to Remote Play Together + // This returns false if the invite can't be sent + virtual bool BSendRemotePlayTogetherInvite( CSteamID steamIDFriend ) = 0; +}; + +#define STEAMREMOTEPLAY_INTERFACE_VERSION "STEAMREMOTEPLAY_INTERFACE_VERSION001" + +// Global interface accessor +inline ISteamRemotePlay *SteamRemotePlay(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamRemotePlay *, SteamRemotePlay, STEAMREMOTEPLAY_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +STEAM_CALLBACK_BEGIN( SteamRemotePlaySessionConnected_t, k_iSteamRemotePlayCallbacks + 1 ) + STEAM_CALLBACK_MEMBER( 0, RemotePlaySessionID_t, m_unSessionID ) +STEAM_CALLBACK_END( 0 ) + + +STEAM_CALLBACK_BEGIN( SteamRemotePlaySessionDisconnected_t, k_iSteamRemotePlayCallbacks + 2 ) + STEAM_CALLBACK_MEMBER( 0, RemotePlaySessionID_t, m_unSessionID ) +STEAM_CALLBACK_END( 0 ) + + +#pragma pack( pop ) + + +#endif // #define ISTEAMREMOTEPLAY_H diff --git a/Generator/steam_sdk/isteamremotestorage.h b/Generator/steam_sdk/isteamremotestorage.h index 0fed2af..01b8dae 100644 --- a/Generator/steam_sdk/isteamremotestorage.h +++ b/Generator/steam_sdk/isteamremotestorage.h @@ -65,8 +65,10 @@ enum ERemoteStoragePlatform k_ERemoteStoragePlatformOSX = (1 << 1), k_ERemoteStoragePlatformPS3 = (1 << 2), k_ERemoteStoragePlatformLinux = (1 << 3), - k_ERemoteStoragePlatformReserved2 = (1 << 4), + k_ERemoteStoragePlatformSwitch = (1 << 4), k_ERemoteStoragePlatformAndroid = (1 << 5), + k_ERemoteStoragePlatformIOS = (1 << 6), + // NB we get one more before we need to widen some things k_ERemoteStoragePlatformAll = 0xffffffff }; @@ -76,6 +78,7 @@ enum ERemoteStoragePublishedFileVisibility k_ERemoteStoragePublishedFileVisibilityPublic = 0, k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, k_ERemoteStoragePublishedFileVisibilityPrivate = 2, + k_ERemoteStoragePublishedFileVisibilityUnlisted = 3, }; @@ -153,6 +156,28 @@ enum EUGCReadAction k_EUGCRead_Close = 2, }; +enum ERemoteStorageLocalFileChange +{ + k_ERemoteStorageLocalFileChange_Invalid = 0, + + // The file was updated from another device + k_ERemoteStorageLocalFileChange_FileUpdated = 1, + + // The file was deleted by another device + k_ERemoteStorageLocalFileChange_FileDeleted = 2, +}; + +enum ERemoteStorageFilePathType +{ + k_ERemoteStorageFilePathType_Invalid = 0, + + // The file is directly accessed by the game and this is the full path + k_ERemoteStorageFilePathType_Absolute = 1, + + // The file is accessed via the ISteamRemoteStorage API and this is the filename + k_ERemoteStorageFilePathType_APIFilename = 2, +}; + //----------------------------------------------------------------------------- // Purpose: Functions for accessing, reading and writing files stored remotely @@ -235,24 +260,6 @@ class ISteamRemoteStorage virtual int32 GetCachedUGCCount() = 0; virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; - // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you - // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. - -#if defined(_PS3) || defined(_SERVER) - // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback - virtual void GetFileListFromServer() = 0; - // Indicate this file should be downloaded in the next sync - virtual bool FileFetch( const char *pchFile ) = 0; - // Indicate this file should be persisted in the next sync - virtual bool FilePersist( const char *pchFile ) = 0; - // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback - virtual bool SynchronizeToClient() = 0; - // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback - virtual bool SynchronizeToServer() = 0; - // Reset any fetch/persist/etc requests - virtual bool ResetFileRequestState() = 0; -#endif - // publishing UGC STEAM_CALL_RESULT( RemoteStoragePublishFileProgress_t ) virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; @@ -302,9 +309,18 @@ class ISteamRemoteStorage STEAM_CALL_RESULT( RemoteStorageDownloadUGCResult_t ) virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; + + // Cloud dynamic state change notification + virtual int32 GetLocalFileChangeCount() = 0; + virtual const char *GetLocalFileChange( int iFile, ERemoteStorageLocalFileChange *pEChangeType, ERemoteStorageFilePathType *pEFilePathType ) = 0; + + // Indicate to Steam the beginning / end of a set of local file + // operations - for example, writing a game save that requires updating two files. + virtual bool BeginFileWriteBatch() = 0; + virtual bool EndFileWriteBatch() = 0; }; -#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" +#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION016" // Global interface accessor inline ISteamRemoteStorage *SteamRemoteStorage(); @@ -319,59 +335,7 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamRemoteStorage *, SteamRemoteStorage, #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx #endif -//----------------------------------------------------------------------------- -// Purpose: sent when the local file cache is fully synced with the server for an app -// That means that an application can be started and has all latest files -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncedClient_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; - AppId_t m_nAppID; - EResult m_eResult; - int m_unNumDownloads; -}; -//----------------------------------------------------------------------------- -// Purpose: sent when the server is fully synced with the local file cache for an app -// That means that we can shutdown Steam and our data is stored on the server -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncedServer_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; - AppId_t m_nAppID; - EResult m_eResult; - int m_unNumUploads; -}; - -//----------------------------------------------------------------------------- -// Purpose: Status of up and downloads during a sync session -// -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncProgress_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; - char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred - AppId_t m_nAppID; // App this info relates to - uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk - double m_dAppPercentComplete; // Percent complete that this app's transfers are - bool m_bUploading; // if false, downloading -}; - -// -// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h -// - - -//----------------------------------------------------------------------------- -// Purpose: Sent after we've determined the list of files that are out of sync -// with the server. -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncStatusCheck_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; - AppId_t m_nAppID; - EResult m_eResult; -}; //----------------------------------------------------------------------------- @@ -379,14 +343,14 @@ struct RemoteStorageAppSyncStatusCheck_t //----------------------------------------------------------------------------- struct RemoteStorageFileShareResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 7 }; EResult m_eResult; // The result of the operation UGCHandle_t m_hFile; // The handle that can be shared with users and features char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared }; -// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse +// k_iSteamRemoteStorageCallbacks + 8 is deprecated! Do not reuse //----------------------------------------------------------------------------- @@ -394,19 +358,22 @@ struct RemoteStorageFileShareResult_t //----------------------------------------------------------------------------- struct RemoteStoragePublishFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 9 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; bool m_bUserNeedsToAcceptWorkshopLegalAgreement; }; +// k_iSteamRemoteStorageCallbacks + 10 is deprecated! Do not reuse + + //----------------------------------------------------------------------------- // Purpose: The result of a call to DeletePublishedFile() //----------------------------------------------------------------------------- struct RemoteStorageDeletePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 11 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; }; @@ -417,7 +384,7 @@ struct RemoteStorageDeletePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageEnumerateUserPublishedFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 12 }; EResult m_eResult; // The result of the operation. int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -430,7 +397,7 @@ struct RemoteStorageEnumerateUserPublishedFilesResult_t //----------------------------------------------------------------------------- struct RemoteStorageSubscribePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 13 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; }; @@ -441,7 +408,7 @@ struct RemoteStorageSubscribePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageEnumerateUserSubscribedFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 14 }; EResult m_eResult; // The result of the operation. int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -462,7 +429,7 @@ struct RemoteStorageEnumerateUserSubscribedFilesResult_t //----------------------------------------------------------------------------- struct RemoteStorageUnsubscribePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 15 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; }; @@ -473,7 +440,7 @@ struct RemoteStorageUnsubscribePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageUpdatePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 16 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; bool m_bUserNeedsToAcceptWorkshopLegalAgreement; @@ -485,7 +452,7 @@ struct RemoteStorageUpdatePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageDownloadUGCResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 17 }; EResult m_eResult; // The result of the operation. UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. AppId_t m_nAppID; // ID of the app that created this file. @@ -500,7 +467,7 @@ struct RemoteStorageDownloadUGCResult_t //----------------------------------------------------------------------------- struct RemoteStorageGetPublishedFileDetailsResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 18 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; AppId_t m_nCreatorAppID; // ID of the app that created this file. @@ -527,7 +494,7 @@ struct RemoteStorageGetPublishedFileDetailsResult_t struct RemoteStorageEnumerateWorkshopFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 19 }; EResult m_eResult; int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -543,7 +510,7 @@ struct RemoteStorageEnumerateWorkshopFilesResult_t //----------------------------------------------------------------------------- struct RemoteStorageGetPublishedItemVoteDetailsResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 20 }; EResult m_eResult; PublishedFileId_t m_unPublishedFileId; int32 m_nVotesFor; @@ -558,7 +525,7 @@ struct RemoteStorageGetPublishedItemVoteDetailsResult_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileSubscribed_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 21 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. }; @@ -568,7 +535,7 @@ struct RemoteStoragePublishedFileSubscribed_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileUnsubscribed_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 22 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. }; @@ -579,7 +546,7 @@ struct RemoteStoragePublishedFileUnsubscribed_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileDeleted_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 23 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. }; @@ -590,7 +557,7 @@ struct RemoteStoragePublishedFileDeleted_t //----------------------------------------------------------------------------- struct RemoteStorageUpdateUserPublishedItemVoteResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 24 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; // The published file id }; @@ -601,7 +568,7 @@ struct RemoteStorageUpdateUserPublishedItemVoteResult_t //----------------------------------------------------------------------------- struct RemoteStorageUserVoteDetails_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 25 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; // The published file id EWorkshopVote m_eVote; // what the user voted @@ -609,7 +576,7 @@ struct RemoteStorageUserVoteDetails_t struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 26 }; EResult m_eResult; // The result of the operation. int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -618,7 +585,7 @@ struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t struct RemoteStorageSetUserPublishedFileActionResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 27 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; // The published file id EWorkshopFileAction m_eAction; // the action that was attempted @@ -626,7 +593,7 @@ struct RemoteStorageSetUserPublishedFileActionResult_t struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 28 }; EResult m_eResult; // The result of the operation. EWorkshopFileAction m_eAction; // the action that was filtered on int32 m_nResultsReturned; @@ -641,7 +608,7 @@ struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t //----------------------------------------------------------------------------- struct RemoteStoragePublishFileProgress_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 29 }; double m_dPercentFile; bool m_bPreview; }; @@ -652,7 +619,7 @@ struct RemoteStoragePublishFileProgress_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileUpdated_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 30 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. uint64 m_ulUnused; // not used anymore @@ -663,7 +630,7 @@ struct RemoteStoragePublishedFileUpdated_t //----------------------------------------------------------------------------- struct RemoteStorageFileWriteAsyncComplete_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 31 }; EResult m_eResult; // result }; @@ -672,13 +639,21 @@ struct RemoteStorageFileWriteAsyncComplete_t //----------------------------------------------------------------------------- struct RemoteStorageFileReadAsyncComplete_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 32 }; SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made EResult m_eResult; // result uint32 m_nOffset; // offset in the file this read was at uint32 m_cubRead; // amount read - will the <= the amount requested }; +//----------------------------------------------------------------------------- +// Purpose: one or more files for this app have changed locally after syncing +// to remote session changes +// Note: only posted if this happens DURING the local app session +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( RemoteStorageLocalFileChange_t, k_iSteamRemoteStorageCallbacks + 33 ) +STEAM_CALLBACK_END( 0 ) + #pragma pack( pop ) diff --git a/Generator/steam_sdk/isteamtv.h b/Generator/steam_sdk/isteamtv.h new file mode 100644 index 0000000..f638f30 --- /dev/null +++ b/Generator/steam_sdk/isteamtv.h @@ -0,0 +1,87 @@ +//====== Copyright 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Video +// +//============================================================================= + +#ifndef ISTEAMTV_H +#define ISTEAMTV_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +enum { k_cchBroadcastGameDataMax = 8 * 1024 }; + +// What the interaction behavior of the region is +enum ESteamTVRegionBehavior +{ + k_ESteamVideoRegionBehaviorInvalid = -1, + k_ESteamVideoRegionBehaviorHover = 0, + k_ESteamVideoRegionBehaviorClickPopup = 1, + k_ESteamVideoRegionBehaviorClickSurroundingRegion = 2, +}; + +// Size of the region, normalized to 1920x1080 +struct SteamTVRegion_t +{ + uint32 unMinX; + uint32 unMinY; + uint32 unMaxX; + uint32 unMaxY; +}; + +//----------------------------------------------------------------------------- +// Purpose: SteamTV API +//----------------------------------------------------------------------------- +class ISteamTV +{ +public: + + // Returns true if user is uploading a live broadcast + virtual bool IsBroadcasting( int *pnNumViewers ) = 0; + + // Broadcast game data + virtual void AddBroadcastGameData( const char *pchKey, const char *pchValue ) = 0; + virtual void RemoveBroadcastGameData( const char *pchKey ) = 0; + + // Timeline marker + virtual void AddTimelineMarker( const char *pchTemplateName, bool bPersistent, uint8 nColorR, uint8 nColorG, uint8 nColorB ) = 0; + virtual void RemoveTimelineMarker() = 0; + + // Regions + virtual uint32 AddRegion( const char *pchElementName, const char *pchTimelineDataSection, const SteamTVRegion_t *pSteamTVRegion, ESteamTVRegionBehavior eSteamTVRegionBehavior ) = 0; + virtual void RemoveRegion( uint32 unRegionHandle ) = 0; + + // App Cheers + virtual void SendAppCheer( uint64 unCheerTargetID, uint32 unCheerType, uint32 unCheerAmount ) = 0; +}; + +#define STEAMTV_INTERFACE_VERSION "STEAMTV_INTERFACE_V002" + +// Global interface accessor +inline ISteamTV *SteamTV(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamTV *, SteamTV, STEAMTV_INTERFACE_VERSION ); + +STEAM_CALLBACK_BEGIN( BroadcastUploadStart_t, k_iSteamVideoCallbacks + 4 ) + STEAM_CALLBACK_MEMBER( 0, bool, m_bIsRTMP ) +STEAM_CALLBACK_END(1) + +STEAM_CALLBACK_BEGIN( BroadcastUploadStop_t, k_iSteamVideoCallbacks + 5 ) + STEAM_CALLBACK_MEMBER( 0, EBroadcastUploadResult, m_eResult ) +STEAM_CALLBACK_END(1) + +#pragma pack( pop ) + +#endif // ISTEAMVIDEO_H diff --git a/Generator/steam_sdk/isteamugc.h b/Generator/steam_sdk/isteamugc.h index 750706d..f6e43a8 100644 --- a/Generator/steam_sdk/isteamugc.h +++ b/Generator/steam_sdk/isteamugc.h @@ -47,7 +47,7 @@ enum EUGCMatchingUGCType k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides k_EUGCMatchingUGCType_ControllerBindings = 11, k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) - k_EUGCMatchingUGCType_All = ~0, // return everything + k_EUGCMatchingUGCType_All = ~0, // @note: will only be valid for CreateQueryUserUGCRequest requests }; // Different lists of published UGC for a user. @@ -99,6 +99,7 @@ enum EUGCQuery k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, + k_EUGCQuery_RankedByLastUpdatedDate = 19, }; enum EItemUpdateStatus @@ -204,9 +205,11 @@ public: virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; // Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + STEAM_FLAT_NAME( CreateQueryAllUGCRequestPage ) virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; // Query for all matching UGC using the new deep paging interface. Creator app id or consumer app id must be valid and be set to the current running app. pchCursor should be set to NULL or "*" to get the first result set. + STEAM_FLAT_NAME( CreateQueryAllUGCRequestCursor ) virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char *pchCursor = NULL ) = 0; // Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) @@ -218,6 +221,9 @@ public: // Retrieve an individual result after receiving the callback for querying UGC virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0; + virtual uint32 GetQueryUGCNumTags( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCTag( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0; + virtual bool GetQueryUGCTagDisplayName( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0; virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0; virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0; virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; @@ -227,11 +233,16 @@ public: virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, STEAM_OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + // Return the first value matching the pchKey. Note that a key may map to multiple values. Returns false if there was an error or no matching value was found. + STEAM_FLAT_NAME( GetQueryFirstUGCKeyValueTag ) + virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, const char *pchKey, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + // Release the request to free up memory, after retrieving results virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; // Options to set for querying UGC virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool AddRequiredTagGroup( UGCQueryHandle_t handle, const SteamParamStringArray_t *pTagGroups ) = 0; // match any of the tags in this group virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0; virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0; @@ -251,9 +262,12 @@ public: virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool SetTimeCreatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) = 0; + virtual bool SetTimeUpdatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) = 0; virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + STEAM_CALL_RESULT( SteamUGCRequestUGCDetailsResult_t ) virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0; // Steam Workshop Creator API @@ -271,6 +285,7 @@ public: virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size virtual bool SetAllowLegacyUpload( UGCUpdateHandle_t handle, bool bAllowLegacyUpload ) = 0; // use legacy upload for a single small file. The parameter to SetItemContent() should either be a directory with one file or the full path to the file. The file must also be less than 10MB in size. + virtual bool RemoveAllItemKeyValueTags( UGCUpdateHandle_t handle ) = 0; // remove all existing key-value tags (you can add new ones via the AddItemKeyValueTag function) virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size @@ -348,9 +363,15 @@ public: // delete the item without prompting the user STEAM_CALL_RESULT( DeleteItemResult_t ) virtual SteamAPICall_t DeleteItem( PublishedFileId_t nPublishedFileID ) = 0; + + // Show the app's latest Workshop EULA to the user in an overlay window, where they can accept it or not + virtual bool ShowWorkshopEULA() = 0; + // Retrieve information related to the user's acceptance or not of the app's specific Workshop EULA + STEAM_CALL_RESULT( WorkshopEULAStatus_t ) + virtual SteamAPICall_t GetWorkshopEULAStatus() = 0; }; -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION012" +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION016" // Global interface accessor inline ISteamUGC *SteamUGC(); @@ -365,7 +386,7 @@ STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamUGC *, SteamGameServerUGC, STE //----------------------------------------------------------------------------- struct SteamUGCQueryCompleted_t { - enum { k_iCallback = k_iClientUGCCallbacks + 1 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 1 }; UGCQueryHandle_t m_handle; EResult m_eResult; uint32 m_unNumResultsReturned; @@ -380,7 +401,7 @@ struct SteamUGCQueryCompleted_t //----------------------------------------------------------------------------- struct SteamUGCRequestUGCDetailsResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 2 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 2 }; SteamUGCDetails_t m_details; bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache }; @@ -391,7 +412,7 @@ struct SteamUGCRequestUGCDetailsResult_t //----------------------------------------------------------------------------- struct CreateItemResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 3 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 3 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID bool m_bUserNeedsToAcceptWorkshopLegalAgreement; @@ -403,7 +424,7 @@ struct CreateItemResult_t //----------------------------------------------------------------------------- struct SubmitItemUpdateResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 4 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 4 }; EResult m_eResult; bool m_bUserNeedsToAcceptWorkshopLegalAgreement; PublishedFileId_t m_nPublishedFileId; @@ -415,7 +436,7 @@ struct SubmitItemUpdateResult_t //----------------------------------------------------------------------------- struct ItemInstalled_t { - enum { k_iCallback = k_iClientUGCCallbacks + 5 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 5 }; AppId_t m_unAppID; PublishedFileId_t m_nPublishedFileId; }; @@ -426,7 +447,7 @@ struct ItemInstalled_t //----------------------------------------------------------------------------- struct DownloadItemResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 6 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 6 }; AppId_t m_unAppID; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; @@ -437,7 +458,7 @@ struct DownloadItemResult_t //----------------------------------------------------------------------------- struct UserFavoriteItemsListChanged_t { - enum { k_iCallback = k_iClientUGCCallbacks + 7 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 7 }; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; bool m_bWasAddRequest; @@ -448,7 +469,7 @@ struct UserFavoriteItemsListChanged_t //----------------------------------------------------------------------------- struct SetUserItemVoteResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 8 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 8 }; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; bool m_bVoteUp; @@ -459,7 +480,7 @@ struct SetUserItemVoteResult_t //----------------------------------------------------------------------------- struct GetUserItemVoteResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 9 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 9 }; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; bool m_bVotedUp; @@ -472,7 +493,7 @@ struct GetUserItemVoteResult_t //----------------------------------------------------------------------------- struct StartPlaytimeTrackingResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 10 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 10 }; EResult m_eResult; }; @@ -481,7 +502,7 @@ struct StartPlaytimeTrackingResult_t //----------------------------------------------------------------------------- struct StopPlaytimeTrackingResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 11 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 11 }; EResult m_eResult; }; @@ -490,7 +511,7 @@ struct StopPlaytimeTrackingResult_t //----------------------------------------------------------------------------- struct AddUGCDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 12 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 12 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; PublishedFileId_t m_nChildPublishedFileId; @@ -501,7 +522,7 @@ struct AddUGCDependencyResult_t //----------------------------------------------------------------------------- struct RemoveUGCDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 13 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 13 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; PublishedFileId_t m_nChildPublishedFileId; @@ -513,7 +534,7 @@ struct RemoveUGCDependencyResult_t //----------------------------------------------------------------------------- struct AddAppDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 14 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 14 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; AppId_t m_nAppID; @@ -524,7 +545,7 @@ struct AddAppDependencyResult_t //----------------------------------------------------------------------------- struct RemoveAppDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 15 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 15 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; AppId_t m_nAppID; @@ -536,7 +557,7 @@ struct RemoveAppDependencyResult_t //----------------------------------------------------------------------------- struct GetAppDependenciesResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 16 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 16 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; AppId_t m_rgAppIDs[32]; @@ -549,11 +570,36 @@ struct GetAppDependenciesResult_t //----------------------------------------------------------------------------- struct DeleteItemResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 17 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 17 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; }; + +//----------------------------------------------------------------------------- +// Purpose: signal that the list of subscribed items changed +//----------------------------------------------------------------------------- +struct UserSubscribedItemsListChanged_t +{ + enum { k_iCallback = k_iSteamUGCCallbacks + 18 }; + AppId_t m_nAppID; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Status of the user's acceptable/rejection of the app's specific Workshop EULA +//----------------------------------------------------------------------------- +struct WorkshopEULAStatus_t +{ + enum { k_iCallback = k_iSteamUGCCallbacks + 20 }; + EResult m_eResult; + AppId_t m_nAppID; + uint32 m_unVersion; + RTime32 m_rtAction; + bool m_bAccepted; + bool m_bNeedsAction; +}; + #pragma pack( pop ) #endif // ISTEAMUGC_H diff --git a/Generator/steam_sdk/isteamuser.h b/Generator/steam_sdk/isteamuser.h index 7ed0fac..82625da 100644 --- a/Generator/steam_sdk/isteamuser.h +++ b/Generator/steam_sdk/isteamuser.h @@ -12,25 +12,6 @@ #include "steam_api_common.h" -// structure that contains client callback data -// see callbacks documentation for more details -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif -struct CallbackMsg_t -{ - HSteamUser m_hSteamUser; - int m_iCallback; - uint8 *m_pubParam; - int m_cubParam; -}; -#pragma pack( pop ) - - //----------------------------------------------------------------------------- // Purpose: Functions for accessing and manipulating a steam account // associated with one client instance @@ -66,11 +47,17 @@ public: // // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. - virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual int InitiateGameConnection_DEPRECATED( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; // notify of disconnect // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call - virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual void TerminateGameConnection_DEPRECATED( uint32 unIPServer, uint16 usPortServer ) = 0; // Legacy functions @@ -168,7 +155,12 @@ public: STEAM_CALL_RESULT( EncryptedAppTicketResponse_t ) virtual SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude ) = 0; - // retrieve a finished ticket + // Retrieves a finished ticket. + // If no ticket is available, or your buffer is too small, returns false. + // Upon exit, *pcbTicket will be either the size of the ticket copied into your buffer + // (if true was returned), or the size needed (if false was returned). To determine the + // proper size of the ticket, you can pass pTicket=NULL and cbMaxTicket=0; if a ticket + // is available, *pcbTicket will contain the size needed, otherwise it will be zero. virtual bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; // Trading Card badges data access @@ -206,9 +198,19 @@ public: STEAM_CALL_RESULT( MarketEligibilityResponse_t ) virtual SteamAPICall_t GetMarketEligibility() = 0; + + // Retrieves anti indulgence / duration control for current user + STEAM_CALL_RESULT( DurationControl_t ) + virtual SteamAPICall_t GetDurationControl() = 0; + + // Advise steam china duration control system about the online state of the game. + // This will prevent offline gameplay time from counting against a user's + // playtime limits. + virtual bool BSetDurationControlOnlineState( EDurationControlOnlineState eNewState ) = 0; + }; -#define STEAMUSER_INTERFACE_VERSION "SteamUser020" +#define STEAMUSER_INTERFACE_VERSION "SteamUser021" // Global interface accessor inline ISteamUser *SteamUser(); @@ -383,6 +385,31 @@ struct MarketEligibilityResponse_t }; +//----------------------------------------------------------------------------- +// Purpose: sent for games with enabled anti indulgence / duration control, for +// enabled users. Lets the game know whether the user can keep playing or +// whether the game should exit, and returns info about remaining gameplay time. +// +// This callback is fired asynchronously in response to timers triggering. +// It is also fired in response to calls to GetDurationControl(). +//----------------------------------------------------------------------------- +struct DurationControl_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 67 }; + + EResult m_eResult; // result of call (always k_EResultOK for asynchronous timer-based notifications) + AppId_t m_appid; // appid generating playtime + + bool m_bApplicable; // is duration control applicable to user + game combination + int32 m_csecsLast5h; // playtime since most recent 5 hour gap in playtime, only counting up to regulatory limit of playtime, in seconds + + EDurationControlProgress m_progress; // recommended progress (either everything is fine, or please exit game) + EDurationControlNotification m_notification; // notification to show, if any (always k_EDurationControlNotification_None for API calls) + + int32 m_csecsToday; // playtime on current calendar day + int32 m_csecsRemaining; // playtime remaining until the user hits a regulatory limit +}; + #pragma pack( pop ) diff --git a/Generator/steam_sdk/isteamuserstats.h b/Generator/steam_sdk/isteamuserstats.h index d8daa04..8bb0c90 100644 --- a/Generator/steam_sdk/isteamuserstats.h +++ b/Generator/steam_sdk/isteamuserstats.h @@ -93,12 +93,19 @@ public: virtual bool RequestCurrentStats() = 0; // Data accessors + STEAM_FLAT_NAME( GetStatInt32 ) virtual bool GetStat( const char *pchName, int32 *pData ) = 0; + + STEAM_FLAT_NAME( GetStatFloat ) virtual bool GetStat( const char *pchName, float *pData ) = 0; // Set / update data + STEAM_FLAT_NAME( SetStatInt32 ) virtual bool SetStat( const char *pchName, int32 nData ) = 0; + + STEAM_FLAT_NAME( SetStatFloat ) virtual bool SetStat( const char *pchName, float fData ) = 0; + virtual bool UpdateAvgRateStat( const char *pchName, float flCountThisSession, double dSessionLength ) = 0; // Achievement flag accessors @@ -153,8 +160,12 @@ public: virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; // requests stat information for a user, usable after a successful call to RequestUserStats() + STEAM_FLAT_NAME( GetUserStatInt32 ) virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + + STEAM_FLAT_NAME( GetUserStatFloat ) virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; // See notes for GetAchievementAndUnlockTime above virtual bool GetUserAchievementAndUnlockTime( CSteamID steamIDUser, const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; @@ -199,8 +210,7 @@ public: // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers // if a user doesn't have a leaderboard entry, they won't be included in the result // a max of 100 users can be downloaded at a time, with only one outstanding call at a time - STEAM_METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) - STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) + STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, STEAM_ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; @@ -265,38 +275,35 @@ public: virtual SteamAPICall_t RequestGlobalStats( int nHistoryDays ) = 0; // Gets the lifetime totals for an aggregated stat + STEAM_FLAT_NAME( GetGlobalStatInt64 ) virtual bool GetGlobalStat( const char *pchStatName, int64 *pData ) = 0; + + STEAM_FLAT_NAME( GetGlobalStatDouble ) virtual bool GetGlobalStat( const char *pchStatName, double *pData ) = 0; // Gets history for an aggregated stat. pData will be filled with daily values, starting with today. // So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, // etc. cubData is the size in bytes of the pubData buffer. Returns the number of // elements actually set. + + STEAM_FLAT_NAME( GetGlobalStatHistoryInt64 ) virtual int32 GetGlobalStatHistory( const char *pchStatName, STEAM_ARRAY_COUNT(cubData) int64 *pData, uint32 cubData ) = 0; + + STEAM_FLAT_NAME( GetGlobalStatHistoryDouble ) virtual int32 GetGlobalStatHistory( const char *pchStatName, STEAM_ARRAY_COUNT(cubData) double *pData, uint32 cubData ) = 0; -#ifdef _PS3 - // Call to kick off installation of the PS3 trophies. This call is asynchronous, and the results will be returned in a PS3TrophiesInstalled_t - // callback. - virtual bool InstallPS3Trophies() = 0; + // For achievements that have related Progress stats, use this to query what the bounds of that progress are. + // You may want this info to selectively call IndicateAchievementProgress when appropriate milestones of progress + // have been made, to show a progress notification to the user. + STEAM_FLAT_NAME( GetAchievementProgressLimitsInt32 ) + virtual bool GetAchievementProgressLimits( const char *pchName, int32 *pnMinProgress, int32 *pnMaxProgress ) = 0; - // Returns the amount of space required at boot to install trophies. This value can be used when comparing the amount of space needed - // by the game to the available space value passed to the game at boot. The value is set during InstallPS3Trophies(). - virtual uint64 GetTrophySpaceRequiredBeforeInstall() = 0; + STEAM_FLAT_NAME( GetAchievementProgressLimitsFloat ) + virtual bool GetAchievementProgressLimits( const char *pchName, float *pfMinProgress, float *pfMaxProgress ) = 0; - // On PS3, user stats & achievement progress through Steam must be stored with the user's saved game data. - // At startup, before calling RequestCurrentStats(), you must pass the user's stats data to Steam via this method. - // If you do not have any user data, call this function with pvData = NULL and cubData = 0 - virtual bool SetUserStatsData( const void *pvData, uint32 cubData ) = 0; - - // Call to get the user's current stats data. You should retrieve this data after receiving successful UserStatsReceived_t & UserStatsStored_t - // callbacks, and store the data with the user's save game data. You can call this method with pvData = NULL and cubData = 0 to get the required - // buffer size. - virtual bool GetUserStatsData( void *pvData, uint32 cubData, uint32 *pcubWritten ) = 0; -#endif }; -#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION011" +#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION012" // Global interface accessor inline ISteamUserStats *SteamUserStats(); diff --git a/Generator/steam_sdk/isteamutils.h b/Generator/steam_sdk/isteamutils.h index 809682b..5f56d8d 100644 --- a/Generator/steam_sdk/isteamutils.h +++ b/Generator/steam_sdk/isteamutils.h @@ -41,6 +41,24 @@ enum EGamepadTextInputLineMode k_EGamepadTextInputLineModeMultipleLines = 1 }; +enum EFloatingGamepadTextInputMode +{ + k_EFloatingGamepadTextInputModeModeSingleLine = 0, // Enter dismisses the keyboard + k_EFloatingGamepadTextInputModeModeMultipleLines = 1, // User needs to explictly close the keyboard + k_EFloatingGamepadTextInputModeModeEmail = 2, // Keyboard layout is email, enter dismisses the keyboard + k_EFloatingGamepadTextInputModeModeNumeric = 3, // Keyboard layout is numeric, enter dismisses the keyboard + +}; + +// The context where text filtering is being done +enum ETextFilteringContext +{ + k_ETextFilteringContextUnknown = 0, // Unknown context + k_ETextFilteringContextGameContent = 1, // Game content, only legally required filtering is performed + k_ETextFilteringContextChat = 2, // Chat from another player + k_ETextFilteringContextName = 3, // Character or item name +}; + // function prototype for warning message hook #if defined( POSIX ) @@ -76,8 +94,8 @@ public: // the destination buffer size should be 4 * height * width * sizeof(char) virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0; - // returns the IP of the reporting server for valve - currently only used in Source engine games - virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; + // Deprecated. Do not call this. + STEAM_PRIVATE_API( virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; ) // return the amount of battery power left in the current system in % [0..100], 255 for being on AC power virtual uint8 GetCurrentBatteryPower() = 0; @@ -136,7 +154,7 @@ public: STEAM_CALL_RESULT( CheckFileSignature_t ) virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; - // Activates the Big Picture text input dialog which only supports gamepad input + // Activates the full-screen text input dialog which takes a initial text string and returns the text the user has typed virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; // Returns previously entered text & length @@ -160,26 +178,63 @@ public: // ask SteamUI to create and render its OpenVR dashboard virtual void StartVRDashboard() = 0; - // Returns true if the HMD content will be streamed via Steam In-Home Streaming + // Returns true if the HMD content will be streamed via Steam Remote Play virtual bool IsVRHeadsetStreamingEnabled() = 0; - // Set whether the HMD content will be streamed via Steam In-Home Streaming + // Set whether the HMD content will be streamed via Steam Remote Play // If this is set to true, then the scene in the HMD headset will be streamed, and remote input will not be allowed. // If this is set to false, then the application window will be streamed instead, and remote input will be allowed. // The default is true unless "VRHeadsetStreaming" "0" is in the extended appinfo for a game. // (this is useful for games that have asymmetric multiplayer gameplay) virtual void SetVRHeadsetStreamingEnabled( bool bEnabled ) = 0; + + // Returns whether this steam client is a Steam China specific client, vs the global client. + virtual bool IsSteamChinaLauncher() = 0; + + // Initializes text filtering, loading dictionaries for the language the game is running in. + // unFilterOptions are reserved for future use and should be set to 0 + // Returns false if filtering is unavailable for the game's language, in which case FilterText() will act as a passthrough. + // + // Users can customize the text filter behavior in their Steam Account preferences: + // https://store.steampowered.com/account/preferences#CommunityContentPreferences + virtual bool InitFilterText( uint32 unFilterOptions = 0 ) = 0; + + // Filters the provided input message and places the filtered result into pchOutFilteredText, using legally required filtering and additional filtering based on the context and user settings + // eContext is the type of content in the input string + // sourceSteamID is the Steam ID that is the source of the input string (e.g. the player with the name, or who said the chat text) + // pchInputText is the input string that should be filtered, which can be ASCII or UTF-8 + // pchOutFilteredText is where the output will be placed, even if no filtering is performed + // nByteSizeOutFilteredText is the size (in bytes) of pchOutFilteredText, should be at least strlen(pchInputText)+1 + // Returns the number of characters (not bytes) filtered + virtual int FilterText( ETextFilteringContext eContext, CSteamID sourceSteamID, const char *pchInputMessage, char *pchOutFilteredText, uint32 nByteSizeOutFilteredText ) = 0; + + // Return what we believe your current ipv6 connectivity to "the internet" is on the specified protocol. + // This does NOT tell you if the Steam client is currently connected to Steam via ipv6. + virtual ESteamIPv6ConnectivityState GetIPv6ConnectivityState( ESteamIPv6ConnectivityProtocol eProtocol ) = 0; + + // returns true if currently running on the Steam Deck device + virtual bool IsSteamRunningOnSteamDeck() = 0; + + // Opens a floating keyboard over the game content and sends OS keyboard keys directly to the game. + // The text field position is specified in pixels relative the origin of the game window and is used to position the floating keyboard in a way that doesn't cover the text field + virtual bool ShowFloatingGamepadTextInput( EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight ) = 0; + + // In game launchers that don't have controller support you can call this to have Steam Input translate the controller input into mouse/kb to navigate the launcher + virtual void SetGameLauncherMode( bool bLauncherMode ) = 0; + + // Dismisses the floating keyboard. + virtual bool DismissFloatingGamepadTextInput() = 0; }; -#define STEAMUTILS_INTERFACE_VERSION "SteamUtils009" +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils010" // Global interface accessor inline ISteamUtils *SteamUtils(); -STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamUtils, SteamInternal_FindOrCreateUserInterface( 0, STEAMUTILS_INTERFACE_VERSION ) ); +STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamUtils, SteamInternal_FindOrCreateUserInterface( 0, STEAMUTILS_INTERFACE_VERSION ), "user", STEAMUTILS_INTERFACE_VERSION ); // Global accessor for the gameserver client inline ISteamUtils *SteamGameServerUtils(); -STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamGameServerUtils, SteamInternal_FindOrCreateGameServerInterface( 0, STEAMUTILS_INTERFACE_VERSION ) ); +STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamGameServerUtils, SteamInternal_FindOrCreateGameServerInterface( 0, STEAMUTILS_INTERFACE_VERSION ), "gameserver", STEAMUTILS_INTERFACE_VERSION ); // callbacks #if defined( VALVE_CALLBACK_PACK_SMALL ) @@ -255,7 +310,7 @@ struct CheckFileSignature_t //----------------------------------------------------------------------------- -// Big Picture gamepad text input has been closed +// Full Screen gamepad text input has been closed //----------------------------------------------------------------------------- struct GamepadTextInputDismissed_t { @@ -264,7 +319,20 @@ struct GamepadTextInputDismissed_t uint32 m_unSubmittedText; }; -// k_iSteamUtilsCallbacks + 15 is taken +// k_iSteamUtilsCallbacks + 15 through 35 are taken + +STEAM_CALLBACK_BEGIN( AppResumingFromSuspend_t, k_iSteamUtilsCallbacks + 36 ) +STEAM_CALLBACK_END(0) + +// k_iSteamUtilsCallbacks + 37 is taken + +//----------------------------------------------------------------------------- +// The floating on-screen keyboard has been closed +//----------------------------------------------------------------------------- +struct FloatingGamepadTextInputDismissed_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 38 }; +}; #pragma pack( pop ) diff --git a/Generator/steam_sdk/isteamvideo.h b/Generator/steam_sdk/isteamvideo.h index efd7740..4832d7b 100644 --- a/Generator/steam_sdk/isteamvideo.h +++ b/Generator/steam_sdk/isteamvideo.h @@ -49,21 +49,14 @@ public: inline ISteamVideo *SteamVideo(); STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamVideo *, SteamVideo, STEAMVIDEO_INTERFACE_VERSION ); -STEAM_CALLBACK_BEGIN( BroadcastUploadStart_t, k_iClientVideoCallbacks + 4 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( BroadcastUploadStop_t, k_iClientVideoCallbacks + 5 ) - STEAM_CALLBACK_MEMBER( 0, EBroadcastUploadResult, m_eResult ) -STEAM_CALLBACK_END(1) - -STEAM_CALLBACK_BEGIN( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) +STEAM_CALLBACK_BEGIN( GetVideoURLResult_t, k_iSteamVideoCallbacks + 11 ) STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) STEAM_CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) STEAM_CALLBACK_END(3) -STEAM_CALLBACK_BEGIN( GetOPFSettingsResult_t, k_iClientVideoCallbacks + 24 ) +STEAM_CALLBACK_BEGIN( GetOPFSettingsResult_t, k_iSteamVideoCallbacks + 24 ) STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) STEAM_CALLBACK_END(2) diff --git a/Generator/steam_sdk/matchmakingtypes.h b/Generator/steam_sdk/matchmakingtypes.h index e52cfc6..0ae70c7 100644 --- a/Generator/steam_sdk/matchmakingtypes.h +++ b/Generator/steam_sdk/matchmakingtypes.h @@ -82,7 +82,7 @@ public: // Access the IP uint32 GetIP() const; - void SetIP( uint32 ); + void SetIP( uint32 unIP ); // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). const char *GetConnectionAddressString() const; diff --git a/Generator/steam_sdk/steam_api.h b/Generator/steam_sdk/steam_api.h index cb7e5dc..494f1dd 100644 --- a/Generator/steam_sdk/steam_api.h +++ b/Generator/steam_sdk/steam_api.h @@ -42,6 +42,10 @@ #include "isteamvideo.h" #include "isteamparentalsettings.h" #include "isteaminput.h" +#include "isteamremoteplay.h" +#include "isteamnetworkingmessages.h" +#include "isteamnetworkingsockets.h" +#include "isteamnetworkingutils.h" //----------------------------------------------------------------------------------------------------------------------------------------------------------// @@ -91,28 +95,14 @@ S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); // SteamAPI_IsSteamRunning() returns true if Steam is currently running S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); -// Pumps out all the steam messages, calling registered callbacks. -// NOT THREADSAFE - do not call from multiple threads simultaneously. -S_API void Steam_RunCallbacks( HSteamPipe hSteamPipe, bool bGameServerCallbacks ); - -// register the callback funcs to use to interact with the steam dll -S_API void Steam_RegisterInterfaceFuncs( void *hModule ); - -// returns the HSteamUser of the last user to dispatch a callback -S_API HSteamUser Steam_GetHSteamUserCurrent(); - // returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. // DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs S_API const char *SteamAPI_GetSteamInstallPath(); // sets whether or not Steam_RunCallbacks() should do a try {} catch (...) {} around calls to issuing callbacks +// This is ignored if you are using the manual callback dispatch method S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); -// backwards compat export, passes through to SteamAPI_ variants -S_API HSteamPipe GetHSteamPipe(); -S_API HSteamUser GetHSteamUser(); - - #if defined( VERSION_SAFE_STEAM_API_INTERFACES ) // exists only for backwards compat with code written against older SDKs S_API bool S_CALLTYPE SteamAPI_InitSafe(); @@ -129,16 +119,78 @@ S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); #endif +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// +// Manual callback loop +// +// An alternative method for dispatching callbacks. Similar to a windows message loop. +// +// If you use the manual callback dispatch, you must NOT use: +// +// - SteamAPI_RunCallbacks or SteamGameServer_RunCallbacks +// - STEAM_CALLBACK, CCallResult, CCallback, or CCallbackManual +// +// Here is the basic template for replacing SteamAPI_RunCallbacks() with manual dispatch +/* + + HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); // See also SteamGameServer_GetHSteamPipe() + SteamAPI_ManualDispatch_RunFrame( hSteamPipe ) + CallbackMsg_t callback; + while ( SteamAPI_ManualDispatch_GetNextCallback( hSteamPipe, &callback ) ) + { + // Check for dispatching API call results + if ( callback.m_iCallback == SteamAPICallCompleted_t::k_iCallback ) + { + SteamAPICallCompleted_t *pCallCompleted = (SteamAPICallCompleted_t *)callback. + void *pTmpCallResult = malloc( pCallback->m_cubParam ); + bool bFailed; + if ( SteamAPI_ManualDispatch_GetAPICallResult( hSteamPipe, pCallCompleted->m_hAsyncCall, pTmpCallResult, pCallback->m_cubParam, pCallback->m_iCallback, &bFailed ) ) + { + // Dispatch the call result to the registered handler(s) for the + // call identified by pCallCompleted->m_hAsyncCall + } + free( pTmpCallResult ); + } + else + { + // Look at callback.m_iCallback to see what kind of callback it is, + // and dispatch to appropriate handler(s) + } + SteamAPI_ManualDispatch_FreeLastCallback( hSteamPipe ); + } + +*/ +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +/// Inform the API that you wish to use manual event dispatch. This must be called after SteamAPI_Init, but before +/// you use any of the other manual dispatch functions below. +S_API void S_CALLTYPE SteamAPI_ManualDispatch_Init(); + +/// Perform certain periodic actions that need to be performed. +S_API void S_CALLTYPE SteamAPI_ManualDispatch_RunFrame( HSteamPipe hSteamPipe ); + +/// Fetch the next pending callback on the given pipe, if any. If a callback is available, true is returned +/// and the structure is populated. In this case, you MUST call SteamAPI_ManualDispatch_FreeLastCallback +/// (after dispatching the callback) before calling SteamAPI_ManualDispatch_GetNextCallback again. +S_API bool S_CALLTYPE SteamAPI_ManualDispatch_GetNextCallback( HSteamPipe hSteamPipe, CallbackMsg_t *pCallbackMsg ); + +/// You must call this after dispatching the callback, if SteamAPI_ManualDispatch_GetNextCallback returns true. +S_API void S_CALLTYPE SteamAPI_ManualDispatch_FreeLastCallback( HSteamPipe hSteamPipe ); + +/// Return the call result for the specified call on the specified pipe. You really should +/// only call this in a handler for SteamAPICallCompleted_t callback. +S_API bool S_CALLTYPE SteamAPI_ManualDispatch_GetAPICallResult( HSteamPipe hSteamPipe, SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ); //----------------------------------------------------------------------------------------------------------------------------------------------------------// // -// CSteamAPIContext +// CSteamAPIContext +// +// Deprecated! This is not necessary any more. Please use the global accessors directly // //----------------------------------------------------------------------------------------------------------------------------------------------------------// #ifndef STEAM_API_EXPORTS -// Deprecated! Use the global accessors directly inline bool CSteamAPIContext::Init() { m_pSteamClient = ::SteamClient(); @@ -165,9 +217,11 @@ inline bool CSteamAPIContext::Init() if ( !m_pSteamGameSearch ) return false; +#if !defined( IOSALL) // Not yet supported on iOS. m_pSteamMatchmakingServers = ::SteamMatchmakingServers(); if ( !m_pSteamMatchmakingServers ) return false; +#endif m_pSteamUserStats = ::SteamUserStats(); if ( !m_pSteamUserStats ) @@ -213,10 +267,10 @@ inline bool CSteamAPIContext::Init() if ( !m_pSteamMusicRemote ) return false; -#ifndef ANDROID // Not yet supported on Android +#if !defined( ANDROID ) && !defined( IOSALL) // Not yet supported on Android or ios. m_pSteamHTMLSurface = ::SteamHTMLSurface(); if ( !m_pSteamHTMLSurface ) - return false; + return false; #endif m_pSteamInventory = ::SteamInventory(); diff --git a/Generator/steam_sdk/steam_api.json b/Generator/steam_sdk/steam_api.json index 163ad17..25e3e7e 100644 --- a/Generator/steam_sdk/steam_api.json +++ b/Generator/steam_sdk/steam_api.json @@ -1,9198 +1,14043 @@ -{"typedefs":[{"typedef": "uint8","type": "unsigned char"} -,{"typedef": "uint8","type": "unsigned char"} -,{"typedef": "int8","type": "signed char"} -,{"typedef": "int16","type": "short"} -,{"typedef": "uint16","type": "unsigned short"} -,{"typedef": "int32","type": "int"} -,{"typedef": "uint32","type": "unsigned int"} -,{"typedef": "int64","type": "long long"} -,{"typedef": "uint64","type": "unsigned long long"} -,{"typedef": "lint64","type": "int64"} -,{"typedef": "ulint64","type": "uint64"} -,{"typedef": "intp","type": "long long"} -,{"typedef": "uintp","type": "unsigned long long"} -,{"typedef": "Salt_t","type": "uint8 [8]"} -,{"typedef": "GID_t","type": "uint64"} -,{"typedef": "JobID_t","type": "uint64"} -,{"typedef": "TxnID_t","type": "GID_t"} -,{"typedef": "PackageId_t","type": "uint32"} -,{"typedef": "BundleId_t","type": "uint32"} -,{"typedef": "AppId_t","type": "uint32"} -,{"typedef": "AssetClassId_t","type": "uint64"} -,{"typedef": "PhysicalItemId_t","type": "uint32"} -,{"typedef": "DepotId_t","type": "uint32"} -,{"typedef": "RTime32","type": "uint32"} -,{"typedef": "CellID_t","type": "uint32"} -,{"typedef": "SteamAPICall_t","type": "uint64"} -,{"typedef": "AccountID_t","type": "uint32"} -,{"typedef": "PartnerId_t","type": "uint32"} -,{"typedef": "ManifestId_t","type": "uint64"} -,{"typedef": "SiteId_t","type": "uint64"} -,{"typedef": "PartyBeaconID_t","type": "uint64"} -,{"typedef": "HAuthTicket","type": "uint32"} -,{"typedef": "PFNLegacyKeyRegistration","type": "void (*)(const char *, const char *)"} -,{"typedef": "PFNLegacyKeyInstalled","type": "_Bool (*)(void)"} -,{"typedef": "PFNPreMinidumpCallback","type": "void (*)(void *)"} -,{"typedef": "BREAKPAD_HANDLE","type": "void *"} -,{"typedef": "ValvePackingSentinel_t","type": "struct ValvePackingSentinel_t"} -,{"typedef": "compile_time_assert_type","type": "char [1]"} -,{"typedef": "HSteamPipe","type": "int32"} -,{"typedef": "HSteamUser","type": "int32"} -,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} -,{"typedef": "SteamAPI_CheckCallbackRegistered_t","type": "uint32 (*)(int)"} -,{"typedef": "CCallResult::func_t","type": "void (T::*)(P *, _Bool)"} -,{"typedef": "CCallback::func_t","type": "void (T::*)(P *)"} -,{"typedef": "FriendsGroupID_t","type": "int16"} -,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} -,{"typedef": "HServerListRequest","type": "void *"} -,{"typedef": "HServerQuery","type": "int"} -,{"typedef": "UGCHandle_t","type": "uint64"} -,{"typedef": "PublishedFileUpdateHandle_t","type": "uint64"} -,{"typedef": "PublishedFileId_t","type": "uint64"} -,{"typedef": "UGCFileWriteStreamHandle_t","type": "uint64"} -,{"typedef": "compile_time_assert_type","type": "char [1]"} -,{"typedef": "SteamLeaderboard_t","type": "uint64"} -,{"typedef": "SteamLeaderboardEntries_t","type": "uint64"} -,{"typedef": "SNetSocket_t","type": "uint32"} -,{"typedef": "SNetListenSocket_t","type": "uint32"} -,{"typedef": "ScreenshotHandle","type": "uint32"} -,{"typedef": "HTTPRequestHandle","type": "uint32"} -,{"typedef": "HTTPCookieContainerHandle","type": "uint32"} -,{"typedef": "InputHandle_t","type": "uint64"} -,{"typedef": "InputActionSetHandle_t","type": "uint64"} -,{"typedef": "InputDigitalActionHandle_t","type": "uint64"} -,{"typedef": "InputAnalogActionHandle_t","type": "uint64"} -,{"typedef": "ControllerHandle_t","type": "uint64"} -,{"typedef": "ControllerActionSetHandle_t","type": "uint64"} -,{"typedef": "ControllerDigitalActionHandle_t","type": "uint64"} -,{"typedef": "ControllerAnalogActionHandle_t","type": "uint64"} -,{"typedef": "UGCQueryHandle_t","type": "uint64"} -,{"typedef": "UGCUpdateHandle_t","type": "uint64"} -,{"typedef": "HHTMLBrowser","type": "uint32"} -,{"typedef": "SteamItemInstanceID_t","type": "uint64"} -,{"typedef": "SteamItemDef_t","type": "int32"} -,{"typedef": "SteamInventoryResult_t","type": "int32"} -,{"typedef": "SteamInventoryUpdateHandle_t","type": "uint64"} -], -"enums":[ - {"enumname": "EUniverse","values": [ - {"name": "k_EUniverseInvalid","value": "0"} - ,{"name": "k_EUniversePublic","value": "1"} - ,{"name": "k_EUniverseBeta","value": "2"} - ,{"name": "k_EUniverseInternal","value": "3"} - ,{"name": "k_EUniverseDev","value": "4"} - ,{"name": "k_EUniverseMax","value": "5"} -]} -, {"enumname": "EResult","values": [ - {"name": "k_EResultOK","value": "1"} - ,{"name": "k_EResultFail","value": "2"} - ,{"name": "k_EResultNoConnection","value": "3"} - ,{"name": "k_EResultInvalidPassword","value": "5"} - ,{"name": "k_EResultLoggedInElsewhere","value": "6"} - ,{"name": "k_EResultInvalidProtocolVer","value": "7"} - ,{"name": "k_EResultInvalidParam","value": "8"} - ,{"name": "k_EResultFileNotFound","value": "9"} - ,{"name": "k_EResultBusy","value": "10"} - ,{"name": "k_EResultInvalidState","value": "11"} - ,{"name": "k_EResultInvalidName","value": "12"} - ,{"name": "k_EResultInvalidEmail","value": "13"} - ,{"name": "k_EResultDuplicateName","value": "14"} - ,{"name": "k_EResultAccessDenied","value": "15"} - ,{"name": "k_EResultTimeout","value": "16"} - ,{"name": "k_EResultBanned","value": "17"} - ,{"name": "k_EResultAccountNotFound","value": "18"} - ,{"name": "k_EResultInvalidSteamID","value": "19"} - ,{"name": "k_EResultServiceUnavailable","value": "20"} - ,{"name": "k_EResultNotLoggedOn","value": "21"} - ,{"name": "k_EResultPending","value": "22"} - ,{"name": "k_EResultEncryptionFailure","value": "23"} - ,{"name": "k_EResultInsufficientPrivilege","value": "24"} - ,{"name": "k_EResultLimitExceeded","value": "25"} - ,{"name": "k_EResultRevoked","value": "26"} - ,{"name": "k_EResultExpired","value": "27"} - ,{"name": "k_EResultAlreadyRedeemed","value": "28"} - ,{"name": "k_EResultDuplicateRequest","value": "29"} - ,{"name": "k_EResultAlreadyOwned","value": "30"} - ,{"name": "k_EResultIPNotFound","value": "31"} - ,{"name": "k_EResultPersistFailed","value": "32"} - ,{"name": "k_EResultLockingFailed","value": "33"} - ,{"name": "k_EResultLogonSessionReplaced","value": "34"} - ,{"name": "k_EResultConnectFailed","value": "35"} - ,{"name": "k_EResultHandshakeFailed","value": "36"} - ,{"name": "k_EResultIOFailure","value": "37"} - ,{"name": "k_EResultRemoteDisconnect","value": "38"} - ,{"name": "k_EResultShoppingCartNotFound","value": "39"} - ,{"name": "k_EResultBlocked","value": "40"} - ,{"name": "k_EResultIgnored","value": "41"} - ,{"name": "k_EResultNoMatch","value": "42"} - ,{"name": "k_EResultAccountDisabled","value": "43"} - ,{"name": "k_EResultServiceReadOnly","value": "44"} - ,{"name": "k_EResultAccountNotFeatured","value": "45"} - ,{"name": "k_EResultAdministratorOK","value": "46"} - ,{"name": "k_EResultContentVersion","value": "47"} - ,{"name": "k_EResultTryAnotherCM","value": "48"} - ,{"name": "k_EResultPasswordRequiredToKickSession","value": "49"} - ,{"name": "k_EResultAlreadyLoggedInElsewhere","value": "50"} - ,{"name": "k_EResultSuspended","value": "51"} - ,{"name": "k_EResultCancelled","value": "52"} - ,{"name": "k_EResultDataCorruption","value": "53"} - ,{"name": "k_EResultDiskFull","value": "54"} - ,{"name": "k_EResultRemoteCallFailed","value": "55"} - ,{"name": "k_EResultPasswordUnset","value": "56"} - ,{"name": "k_EResultExternalAccountUnlinked","value": "57"} - ,{"name": "k_EResultPSNTicketInvalid","value": "58"} - ,{"name": "k_EResultExternalAccountAlreadyLinked","value": "59"} - ,{"name": "k_EResultRemoteFileConflict","value": "60"} - ,{"name": "k_EResultIllegalPassword","value": "61"} - ,{"name": "k_EResultSameAsPreviousValue","value": "62"} - ,{"name": "k_EResultAccountLogonDenied","value": "63"} - ,{"name": "k_EResultCannotUseOldPassword","value": "64"} - ,{"name": "k_EResultInvalidLoginAuthCode","value": "65"} - ,{"name": "k_EResultAccountLogonDeniedNoMail","value": "66"} - ,{"name": "k_EResultHardwareNotCapableOfIPT","value": "67"} - ,{"name": "k_EResultIPTInitError","value": "68"} - ,{"name": "k_EResultParentalControlRestricted","value": "69"} - ,{"name": "k_EResultFacebookQueryError","value": "70"} - ,{"name": "k_EResultExpiredLoginAuthCode","value": "71"} - ,{"name": "k_EResultIPLoginRestrictionFailed","value": "72"} - ,{"name": "k_EResultAccountLockedDown","value": "73"} - ,{"name": "k_EResultAccountLogonDeniedVerifiedEmailRequired","value": "74"} - ,{"name": "k_EResultNoMatchingURL","value": "75"} - ,{"name": "k_EResultBadResponse","value": "76"} - ,{"name": "k_EResultRequirePasswordReEntry","value": "77"} - ,{"name": "k_EResultValueOutOfRange","value": "78"} - ,{"name": "k_EResultUnexpectedError","value": "79"} - ,{"name": "k_EResultDisabled","value": "80"} - ,{"name": "k_EResultInvalidCEGSubmission","value": "81"} - ,{"name": "k_EResultRestrictedDevice","value": "82"} - ,{"name": "k_EResultRegionLocked","value": "83"} - ,{"name": "k_EResultRateLimitExceeded","value": "84"} - ,{"name": "k_EResultAccountLoginDeniedNeedTwoFactor","value": "85"} - ,{"name": "k_EResultItemDeleted","value": "86"} - ,{"name": "k_EResultAccountLoginDeniedThrottle","value": "87"} - ,{"name": "k_EResultTwoFactorCodeMismatch","value": "88"} - ,{"name": "k_EResultTwoFactorActivationCodeMismatch","value": "89"} - ,{"name": "k_EResultAccountAssociatedToMultiplePartners","value": "90"} - ,{"name": "k_EResultNotModified","value": "91"} - ,{"name": "k_EResultNoMobileDevice","value": "92"} - ,{"name": "k_EResultTimeNotSynced","value": "93"} - ,{"name": "k_EResultSmsCodeFailed","value": "94"} - ,{"name": "k_EResultAccountLimitExceeded","value": "95"} - ,{"name": "k_EResultAccountActivityLimitExceeded","value": "96"} - ,{"name": "k_EResultPhoneActivityLimitExceeded","value": "97"} - ,{"name": "k_EResultRefundToWallet","value": "98"} - ,{"name": "k_EResultEmailSendFailure","value": "99"} - ,{"name": "k_EResultNotSettled","value": "100"} - ,{"name": "k_EResultNeedCaptcha","value": "101"} - ,{"name": "k_EResultGSLTDenied","value": "102"} - ,{"name": "k_EResultGSOwnerDenied","value": "103"} - ,{"name": "k_EResultInvalidItemType","value": "104"} - ,{"name": "k_EResultIPBanned","value": "105"} - ,{"name": "k_EResultGSLTExpired","value": "106"} - ,{"name": "k_EResultInsufficientFunds","value": "107"} - ,{"name": "k_EResultTooManyPending","value": "108"} - ,{"name": "k_EResultNoSiteLicensesFound","value": "109"} - ,{"name": "k_EResultWGNetworkSendExceeded","value": "110"} - ,{"name": "k_EResultAccountNotFriends","value": "111"} - ,{"name": "k_EResultLimitedUserAccount","value": "112"} - ,{"name": "k_EResultCantRemoveItem","value": "113"} -]} -, {"enumname": "EVoiceResult","values": [ - {"name": "k_EVoiceResultOK","value": "0"} - ,{"name": "k_EVoiceResultNotInitialized","value": "1"} - ,{"name": "k_EVoiceResultNotRecording","value": "2"} - ,{"name": "k_EVoiceResultNoData","value": "3"} - ,{"name": "k_EVoiceResultBufferTooSmall","value": "4"} - ,{"name": "k_EVoiceResultDataCorrupted","value": "5"} - ,{"name": "k_EVoiceResultRestricted","value": "6"} - ,{"name": "k_EVoiceResultUnsupportedCodec","value": "7"} - ,{"name": "k_EVoiceResultReceiverOutOfDate","value": "8"} - ,{"name": "k_EVoiceResultReceiverDidNotAnswer","value": "9"} -]} -, {"enumname": "EDenyReason","values": [ - {"name": "k_EDenyInvalid","value": "0"} - ,{"name": "k_EDenyInvalidVersion","value": "1"} - ,{"name": "k_EDenyGeneric","value": "2"} - ,{"name": "k_EDenyNotLoggedOn","value": "3"} - ,{"name": "k_EDenyNoLicense","value": "4"} - ,{"name": "k_EDenyCheater","value": "5"} - ,{"name": "k_EDenyLoggedInElseWhere","value": "6"} - ,{"name": "k_EDenyUnknownText","value": "7"} - ,{"name": "k_EDenyIncompatibleAnticheat","value": "8"} - ,{"name": "k_EDenyMemoryCorruption","value": "9"} - ,{"name": "k_EDenyIncompatibleSoftware","value": "10"} - ,{"name": "k_EDenySteamConnectionLost","value": "11"} - ,{"name": "k_EDenySteamConnectionError","value": "12"} - ,{"name": "k_EDenySteamResponseTimedOut","value": "13"} - ,{"name": "k_EDenySteamValidationStalled","value": "14"} - ,{"name": "k_EDenySteamOwnerLeftGuestUser","value": "15"} -]} -, {"enumname": "EBeginAuthSessionResult","values": [ - {"name": "k_EBeginAuthSessionResultOK","value": "0"} - ,{"name": "k_EBeginAuthSessionResultInvalidTicket","value": "1"} - ,{"name": "k_EBeginAuthSessionResultDuplicateRequest","value": "2"} - ,{"name": "k_EBeginAuthSessionResultInvalidVersion","value": "3"} - ,{"name": "k_EBeginAuthSessionResultGameMismatch","value": "4"} - ,{"name": "k_EBeginAuthSessionResultExpiredTicket","value": "5"} -]} -, {"enumname": "EAuthSessionResponse","values": [ - {"name": "k_EAuthSessionResponseOK","value": "0"} - ,{"name": "k_EAuthSessionResponseUserNotConnectedToSteam","value": "1"} - ,{"name": "k_EAuthSessionResponseNoLicenseOrExpired","value": "2"} - ,{"name": "k_EAuthSessionResponseVACBanned","value": "3"} - ,{"name": "k_EAuthSessionResponseLoggedInElseWhere","value": "4"} - ,{"name": "k_EAuthSessionResponseVACCheckTimedOut","value": "5"} - ,{"name": "k_EAuthSessionResponseAuthTicketCanceled","value": "6"} - ,{"name": "k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed","value": "7"} - ,{"name": "k_EAuthSessionResponseAuthTicketInvalid","value": "8"} - ,{"name": "k_EAuthSessionResponsePublisherIssuedBan","value": "9"} -]} -, {"enumname": "EUserHasLicenseForAppResult","values": [ - {"name": "k_EUserHasLicenseResultHasLicense","value": "0"} - ,{"name": "k_EUserHasLicenseResultDoesNotHaveLicense","value": "1"} - ,{"name": "k_EUserHasLicenseResultNoAuth","value": "2"} -]} -, {"enumname": "EAccountType","values": [ - {"name": "k_EAccountTypeInvalid","value": "0"} - ,{"name": "k_EAccountTypeIndividual","value": "1"} - ,{"name": "k_EAccountTypeMultiseat","value": "2"} - ,{"name": "k_EAccountTypeGameServer","value": "3"} - ,{"name": "k_EAccountTypeAnonGameServer","value": "4"} - ,{"name": "k_EAccountTypePending","value": "5"} - ,{"name": "k_EAccountTypeContentServer","value": "6"} - ,{"name": "k_EAccountTypeClan","value": "7"} - ,{"name": "k_EAccountTypeChat","value": "8"} - ,{"name": "k_EAccountTypeConsoleUser","value": "9"} - ,{"name": "k_EAccountTypeAnonUser","value": "10"} - ,{"name": "k_EAccountTypeMax","value": "11"} -]} -, {"enumname": "EAppReleaseState","values": [ - {"name": "k_EAppReleaseState_Unknown","value": "0"} - ,{"name": "k_EAppReleaseState_Unavailable","value": "1"} - ,{"name": "k_EAppReleaseState_Prerelease","value": "2"} - ,{"name": "k_EAppReleaseState_PreloadOnly","value": "3"} - ,{"name": "k_EAppReleaseState_Released","value": "4"} -]} -, {"enumname": "EAppOwnershipFlags","values": [ - {"name": "k_EAppOwnershipFlags_None","value": "0"} - ,{"name": "k_EAppOwnershipFlags_OwnsLicense","value": "1"} - ,{"name": "k_EAppOwnershipFlags_FreeLicense","value": "2"} - ,{"name": "k_EAppOwnershipFlags_RegionRestricted","value": "4"} - ,{"name": "k_EAppOwnershipFlags_LowViolence","value": "8"} - ,{"name": "k_EAppOwnershipFlags_InvalidPlatform","value": "16"} - ,{"name": "k_EAppOwnershipFlags_SharedLicense","value": "32"} - ,{"name": "k_EAppOwnershipFlags_FreeWeekend","value": "64"} - ,{"name": "k_EAppOwnershipFlags_RetailLicense","value": "128"} - ,{"name": "k_EAppOwnershipFlags_LicenseLocked","value": "256"} - ,{"name": "k_EAppOwnershipFlags_LicensePending","value": "512"} - ,{"name": "k_EAppOwnershipFlags_LicenseExpired","value": "1024"} - ,{"name": "k_EAppOwnershipFlags_LicensePermanent","value": "2048"} - ,{"name": "k_EAppOwnershipFlags_LicenseRecurring","value": "4096"} - ,{"name": "k_EAppOwnershipFlags_LicenseCanceled","value": "8192"} - ,{"name": "k_EAppOwnershipFlags_AutoGrant","value": "16384"} - ,{"name": "k_EAppOwnershipFlags_PendingGift","value": "32768"} - ,{"name": "k_EAppOwnershipFlags_RentalNotActivated","value": "65536"} - ,{"name": "k_EAppOwnershipFlags_Rental","value": "131072"} - ,{"name": "k_EAppOwnershipFlags_SiteLicense","value": "262144"} -]} -, {"enumname": "EAppType","values": [ - {"name": "k_EAppType_Invalid","value": "0"} - ,{"name": "k_EAppType_Game","value": "1"} - ,{"name": "k_EAppType_Application","value": "2"} - ,{"name": "k_EAppType_Tool","value": "4"} - ,{"name": "k_EAppType_Demo","value": "8"} - ,{"name": "k_EAppType_Media_DEPRECATED","value": "16"} - ,{"name": "k_EAppType_DLC","value": "32"} - ,{"name": "k_EAppType_Guide","value": "64"} - ,{"name": "k_EAppType_Driver","value": "128"} - ,{"name": "k_EAppType_Config","value": "256"} - ,{"name": "k_EAppType_Hardware","value": "512"} - ,{"name": "k_EAppType_Franchise","value": "1024"} - ,{"name": "k_EAppType_Video","value": "2048"} - ,{"name": "k_EAppType_Plugin","value": "4096"} - ,{"name": "k_EAppType_Music","value": "8192"} - ,{"name": "k_EAppType_Series","value": "16384"} - ,{"name": "k_EAppType_Comic","value": "32768"} - ,{"name": "k_EAppType_Shortcut","value": "1073741824"} - ,{"name": "k_EAppType_DepotOnly","value": "-2147483648"} -]} -, {"enumname": "ESteamUserStatType","values": [ - {"name": "k_ESteamUserStatTypeINVALID","value": "0"} - ,{"name": "k_ESteamUserStatTypeINT","value": "1"} - ,{"name": "k_ESteamUserStatTypeFLOAT","value": "2"} - ,{"name": "k_ESteamUserStatTypeAVGRATE","value": "3"} - ,{"name": "k_ESteamUserStatTypeACHIEVEMENTS","value": "4"} - ,{"name": "k_ESteamUserStatTypeGROUPACHIEVEMENTS","value": "5"} - ,{"name": "k_ESteamUserStatTypeMAX","value": "6"} -]} -, {"enumname": "EChatEntryType","values": [ - {"name": "k_EChatEntryTypeInvalid","value": "0"} - ,{"name": "k_EChatEntryTypeChatMsg","value": "1"} - ,{"name": "k_EChatEntryTypeTyping","value": "2"} - ,{"name": "k_EChatEntryTypeInviteGame","value": "3"} - ,{"name": "k_EChatEntryTypeEmote","value": "4"} - ,{"name": "k_EChatEntryTypeLeftConversation","value": "6"} - ,{"name": "k_EChatEntryTypeEntered","value": "7"} - ,{"name": "k_EChatEntryTypeWasKicked","value": "8"} - ,{"name": "k_EChatEntryTypeWasBanned","value": "9"} - ,{"name": "k_EChatEntryTypeDisconnected","value": "10"} - ,{"name": "k_EChatEntryTypeHistoricalChat","value": "11"} - ,{"name": "k_EChatEntryTypeLinkBlocked","value": "14"} -]} -, {"enumname": "EChatRoomEnterResponse","values": [ - {"name": "k_EChatRoomEnterResponseSuccess","value": "1"} - ,{"name": "k_EChatRoomEnterResponseDoesntExist","value": "2"} - ,{"name": "k_EChatRoomEnterResponseNotAllowed","value": "3"} - ,{"name": "k_EChatRoomEnterResponseFull","value": "4"} - ,{"name": "k_EChatRoomEnterResponseError","value": "5"} - ,{"name": "k_EChatRoomEnterResponseBanned","value": "6"} - ,{"name": "k_EChatRoomEnterResponseLimited","value": "7"} - ,{"name": "k_EChatRoomEnterResponseClanDisabled","value": "8"} - ,{"name": "k_EChatRoomEnterResponseCommunityBan","value": "9"} - ,{"name": "k_EChatRoomEnterResponseMemberBlockedYou","value": "10"} - ,{"name": "k_EChatRoomEnterResponseYouBlockedMember","value": "11"} - ,{"name": "k_EChatRoomEnterResponseRatelimitExceeded","value": "15"} -]} -, {"enumname": "EChatSteamIDInstanceFlags","values": [ - {"name": "k_EChatAccountInstanceMask","value": "4095"} - ,{"name": "k_EChatInstanceFlagClan","value": "524288"} - ,{"name": "k_EChatInstanceFlagLobby","value": "262144"} - ,{"name": "k_EChatInstanceFlagMMSLobby","value": "131072"} -]} -, {"enumname": "EMarketingMessageFlags","values": [ - {"name": "k_EMarketingMessageFlagsNone","value": "0"} - ,{"name": "k_EMarketingMessageFlagsHighPriority","value": "1"} - ,{"name": "k_EMarketingMessageFlagsPlatformWindows","value": "2"} - ,{"name": "k_EMarketingMessageFlagsPlatformMac","value": "4"} - ,{"name": "k_EMarketingMessageFlagsPlatformLinux","value": "8"} - ,{"name": "k_EMarketingMessageFlagsPlatformRestrictions","value": "14"} -]} -, {"enumname": "ENotificationPosition","values": [ - {"name": "k_EPositionTopLeft","value": "0"} - ,{"name": "k_EPositionTopRight","value": "1"} - ,{"name": "k_EPositionBottomLeft","value": "2"} - ,{"name": "k_EPositionBottomRight","value": "3"} -]} -, {"enumname": "EBroadcastUploadResult","values": [ - {"name": "k_EBroadcastUploadResultNone","value": "0"} - ,{"name": "k_EBroadcastUploadResultOK","value": "1"} - ,{"name": "k_EBroadcastUploadResultInitFailed","value": "2"} - ,{"name": "k_EBroadcastUploadResultFrameFailed","value": "3"} - ,{"name": "k_EBroadcastUploadResultTimeout","value": "4"} - ,{"name": "k_EBroadcastUploadResultBandwidthExceeded","value": "5"} - ,{"name": "k_EBroadcastUploadResultLowFPS","value": "6"} - ,{"name": "k_EBroadcastUploadResultMissingKeyFrames","value": "7"} - ,{"name": "k_EBroadcastUploadResultNoConnection","value": "8"} - ,{"name": "k_EBroadcastUploadResultRelayFailed","value": "9"} - ,{"name": "k_EBroadcastUploadResultSettingsChanged","value": "10"} - ,{"name": "k_EBroadcastUploadResultMissingAudio","value": "11"} - ,{"name": "k_EBroadcastUploadResultTooFarBehind","value": "12"} - ,{"name": "k_EBroadcastUploadResultTranscodeBehind","value": "13"} - ,{"name": "k_EBroadcastUploadResultNotAllowedToPlay","value": "14"} - ,{"name": "k_EBroadcastUploadResultBusy","value": "15"} - ,{"name": "k_EBroadcastUploadResultBanned","value": "16"} - ,{"name": "k_EBroadcastUploadResultAlreadyActive","value": "17"} - ,{"name": "k_EBroadcastUploadResultForcedOff","value": "18"} - ,{"name": "k_EBroadcastUploadResultAudioBehind","value": "19"} - ,{"name": "k_EBroadcastUploadResultShutdown","value": "20"} - ,{"name": "k_EBroadcastUploadResultDisconnect","value": "21"} - ,{"name": "k_EBroadcastUploadResultVideoInitFailed","value": "22"} - ,{"name": "k_EBroadcastUploadResultAudioInitFailed","value": "23"} -]} -, {"enumname": "ELaunchOptionType","values": [ - {"name": "k_ELaunchOptionType_None","value": "0"} - ,{"name": "k_ELaunchOptionType_Default","value": "1"} - ,{"name": "k_ELaunchOptionType_SafeMode","value": "2"} - ,{"name": "k_ELaunchOptionType_Multiplayer","value": "3"} - ,{"name": "k_ELaunchOptionType_Config","value": "4"} - ,{"name": "k_ELaunchOptionType_OpenVR","value": "5"} - ,{"name": "k_ELaunchOptionType_Server","value": "6"} - ,{"name": "k_ELaunchOptionType_Editor","value": "7"} - ,{"name": "k_ELaunchOptionType_Manual","value": "8"} - ,{"name": "k_ELaunchOptionType_Benchmark","value": "9"} - ,{"name": "k_ELaunchOptionType_Option1","value": "10"} - ,{"name": "k_ELaunchOptionType_Option2","value": "11"} - ,{"name": "k_ELaunchOptionType_Option3","value": "12"} - ,{"name": "k_ELaunchOptionType_OculusVR","value": "13"} - ,{"name": "k_ELaunchOptionType_OpenVROverlay","value": "14"} - ,{"name": "k_ELaunchOptionType_OSVR","value": "15"} - ,{"name": "k_ELaunchOptionType_Dialog","value": "1000"} -]} -, {"enumname": "EVRHMDType","values": [ - {"name": "k_eEVRHMDType_None","value": "-1"} - ,{"name": "k_eEVRHMDType_Unknown","value": "0"} - ,{"name": "k_eEVRHMDType_HTC_Dev","value": "1"} - ,{"name": "k_eEVRHMDType_HTC_VivePre","value": "2"} - ,{"name": "k_eEVRHMDType_HTC_Vive","value": "3"} - ,{"name": "k_eEVRHMDType_HTC_VivePro","value": "4"} - ,{"name": "k_eEVRHMDType_HTC_Unknown","value": "20"} - ,{"name": "k_eEVRHMDType_Oculus_DK1","value": "21"} - ,{"name": "k_eEVRHMDType_Oculus_DK2","value": "22"} - ,{"name": "k_eEVRHMDType_Oculus_Rift","value": "23"} - ,{"name": "k_eEVRHMDType_Oculus_Unknown","value": "40"} - ,{"name": "k_eEVRHMDType_Acer_Unknown","value": "50"} - ,{"name": "k_eEVRHMDType_Acer_WindowsMR","value": "51"} - ,{"name": "k_eEVRHMDType_Dell_Unknown","value": "60"} - ,{"name": "k_eEVRHMDType_Dell_Visor","value": "61"} - ,{"name": "k_eEVRHMDType_Lenovo_Unknown","value": "70"} - ,{"name": "k_eEVRHMDType_Lenovo_Explorer","value": "71"} - ,{"name": "k_eEVRHMDType_HP_Unknown","value": "80"} - ,{"name": "k_eEVRHMDType_HP_WindowsMR","value": "81"} - ,{"name": "k_eEVRHMDType_Samsung_Unknown","value": "90"} - ,{"name": "k_eEVRHMDType_Samsung_Odyssey","value": "91"} - ,{"name": "k_eEVRHMDType_Unannounced_Unknown","value": "100"} - ,{"name": "k_eEVRHMDType_Unannounced_WindowsMR","value": "101"} - ,{"name": "k_eEVRHMDType_vridge","value": "110"} - ,{"name": "k_eEVRHMDType_Huawei_Unknown","value": "120"} - ,{"name": "k_eEVRHMDType_Huawei_VR2","value": "121"} - ,{"name": "k_eEVRHMDType_Huawei_Unannounced","value": "129"} -]} -, {"enumname": "EMarketNotAllowedReasonFlags","values": [ - {"name": "k_EMarketNotAllowedReason_None","value": "0"} - ,{"name": "k_EMarketNotAllowedReason_TemporaryFailure","value": "1"} - ,{"name": "k_EMarketNotAllowedReason_AccountDisabled","value": "2"} - ,{"name": "k_EMarketNotAllowedReason_AccountLockedDown","value": "4"} - ,{"name": "k_EMarketNotAllowedReason_AccountLimited","value": "8"} - ,{"name": "k_EMarketNotAllowedReason_TradeBanned","value": "16"} - ,{"name": "k_EMarketNotAllowedReason_AccountNotTrusted","value": "32"} - ,{"name": "k_EMarketNotAllowedReason_SteamGuardNotEnabled","value": "64"} - ,{"name": "k_EMarketNotAllowedReason_SteamGuardOnlyRecentlyEnabled","value": "128"} - ,{"name": "k_EMarketNotAllowedReason_RecentPasswordReset","value": "256"} - ,{"name": "k_EMarketNotAllowedReason_NewPaymentMethod","value": "512"} - ,{"name": "k_EMarketNotAllowedReason_InvalidCookie","value": "1024"} - ,{"name": "k_EMarketNotAllowedReason_UsingNewDevice","value": "2048"} - ,{"name": "k_EMarketNotAllowedReason_RecentSelfRefund","value": "4096"} - ,{"name": "k_EMarketNotAllowedReason_NewPaymentMethodCannotBeVerified","value": "8192"} - ,{"name": "k_EMarketNotAllowedReason_NoRecentPurchases","value": "16384"} - ,{"name": "k_EMarketNotAllowedReason_AcceptedWalletGift","value": "32768"} -]} -, {"enumname": "CGameID::EGameIDType","values": [ - {"name": "k_EGameIDTypeApp","value": "0"} - ,{"name": "k_EGameIDTypeGameMod","value": "1"} - ,{"name": "k_EGameIDTypeShortcut","value": "2"} - ,{"name": "k_EGameIDTypeP2P","value": "3"} -]} -, {"enumname": "EGameSearchErrorCode_t","values": [ - {"name": "k_EGameSearchErrorCode_OK","value": "1"} - ,{"name": "k_EGameSearchErrorCode_Failed_Search_Already_In_Progress","value": "2"} - ,{"name": "k_EGameSearchErrorCode_Failed_No_Search_In_Progress","value": "3"} - ,{"name": "k_EGameSearchErrorCode_Failed_Not_Lobby_Leader","value": "4"} - ,{"name": "k_EGameSearchErrorCode_Failed_No_Host_Available","value": "5"} - ,{"name": "k_EGameSearchErrorCode_Failed_Search_Params_Invalid","value": "6"} - ,{"name": "k_EGameSearchErrorCode_Failed_Offline","value": "7"} - ,{"name": "k_EGameSearchErrorCode_Failed_NotAuthorized","value": "8"} - ,{"name": "k_EGameSearchErrorCode_Failed_Unknown_Error","value": "9"} -]} -, {"enumname": "EPlayerResult_t","values": [ - {"name": "k_EPlayerResultFailedToConnect","value": "1"} - ,{"name": "k_EPlayerResultAbandoned","value": "2"} - ,{"name": "k_EPlayerResultKicked","value": "3"} - ,{"name": "k_EPlayerResultIncomplete","value": "4"} - ,{"name": "k_EPlayerResultCompleted","value": "5"} -]} -, {"enumname": "IPCFailure_t::EFailureType","values": [ - {"name": "k_EFailureFlushedCallbackQueue","value": "0"} - ,{"name": "k_EFailurePipeFail","value": "1"} -]} -, {"enumname": "EFriendRelationship","values": [ - {"name": "k_EFriendRelationshipNone","value": "0"} - ,{"name": "k_EFriendRelationshipBlocked","value": "1"} - ,{"name": "k_EFriendRelationshipRequestRecipient","value": "2"} - ,{"name": "k_EFriendRelationshipFriend","value": "3"} - ,{"name": "k_EFriendRelationshipRequestInitiator","value": "4"} - ,{"name": "k_EFriendRelationshipIgnored","value": "5"} - ,{"name": "k_EFriendRelationshipIgnoredFriend","value": "6"} - ,{"name": "k_EFriendRelationshipSuggested_DEPRECATED","value": "7"} - ,{"name": "k_EFriendRelationshipMax","value": "8"} -]} -, {"enumname": "EPersonaState","values": [ - {"name": "k_EPersonaStateOffline","value": "0"} - ,{"name": "k_EPersonaStateOnline","value": "1"} - ,{"name": "k_EPersonaStateBusy","value": "2"} - ,{"name": "k_EPersonaStateAway","value": "3"} - ,{"name": "k_EPersonaStateSnooze","value": "4"} - ,{"name": "k_EPersonaStateLookingToTrade","value": "5"} - ,{"name": "k_EPersonaStateLookingToPlay","value": "6"} - ,{"name": "k_EPersonaStateInvisible","value": "7"} - ,{"name": "k_EPersonaStateMax","value": "8"} -]} -, {"enumname": "EFriendFlags","values": [ - {"name": "k_EFriendFlagNone","value": "0"} - ,{"name": "k_EFriendFlagBlocked","value": "1"} - ,{"name": "k_EFriendFlagFriendshipRequested","value": "2"} - ,{"name": "k_EFriendFlagImmediate","value": "4"} - ,{"name": "k_EFriendFlagClanMember","value": "8"} - ,{"name": "k_EFriendFlagOnGameServer","value": "16"} - ,{"name": "k_EFriendFlagRequestingFriendship","value": "128"} - ,{"name": "k_EFriendFlagRequestingInfo","value": "256"} - ,{"name": "k_EFriendFlagIgnored","value": "512"} - ,{"name": "k_EFriendFlagIgnoredFriend","value": "1024"} - ,{"name": "k_EFriendFlagChatMember","value": "4096"} - ,{"name": "k_EFriendFlagAll","value": "65535"} -]} -, {"enumname": "EUserRestriction","values": [ - {"name": "k_nUserRestrictionNone","value": "0"} - ,{"name": "k_nUserRestrictionUnknown","value": "1"} - ,{"name": "k_nUserRestrictionAnyChat","value": "2"} - ,{"name": "k_nUserRestrictionVoiceChat","value": "4"} - ,{"name": "k_nUserRestrictionGroupChat","value": "8"} - ,{"name": "k_nUserRestrictionRating","value": "16"} - ,{"name": "k_nUserRestrictionGameInvites","value": "32"} - ,{"name": "k_nUserRestrictionTrading","value": "64"} -]} -, {"enumname": "EOverlayToStoreFlag","values": [ - {"name": "k_EOverlayToStoreFlag_None","value": "0"} - ,{"name": "k_EOverlayToStoreFlag_AddToCart","value": "1"} - ,{"name": "k_EOverlayToStoreFlag_AddToCartAndShow","value": "2"} -]} -, {"enumname": "EActivateGameOverlayToWebPageMode","values": [ - {"name": "k_EActivateGameOverlayToWebPageMode_Default","value": "0"} - ,{"name": "k_EActivateGameOverlayToWebPageMode_Modal","value": "1"} -]} -, {"enumname": "EPersonaChange","values": [ - {"name": "k_EPersonaChangeName","value": "1"} - ,{"name": "k_EPersonaChangeStatus","value": "2"} - ,{"name": "k_EPersonaChangeComeOnline","value": "4"} - ,{"name": "k_EPersonaChangeGoneOffline","value": "8"} - ,{"name": "k_EPersonaChangeGamePlayed","value": "16"} - ,{"name": "k_EPersonaChangeGameServer","value": "32"} - ,{"name": "k_EPersonaChangeAvatar","value": "64"} - ,{"name": "k_EPersonaChangeJoinedSource","value": "128"} - ,{"name": "k_EPersonaChangeLeftSource","value": "256"} - ,{"name": "k_EPersonaChangeRelationshipChanged","value": "512"} - ,{"name": "k_EPersonaChangeNameFirstSet","value": "1024"} - ,{"name": "k_EPersonaChangeBroadcast","value": "2048"} - ,{"name": "k_EPersonaChangeNickname","value": "4096"} - ,{"name": "k_EPersonaChangeSteamLevel","value": "8192"} - ,{"name": "k_EPersonaChangeRichPresence","value": "16384"} -]} -, {"enumname": "ESteamAPICallFailure","values": [ - {"name": "k_ESteamAPICallFailureNone","value": "-1"} - ,{"name": "k_ESteamAPICallFailureSteamGone","value": "0"} - ,{"name": "k_ESteamAPICallFailureNetworkFailure","value": "1"} - ,{"name": "k_ESteamAPICallFailureInvalidHandle","value": "2"} - ,{"name": "k_ESteamAPICallFailureMismatchedCallback","value": "3"} -]} -, {"enumname": "EGamepadTextInputMode","values": [ - {"name": "k_EGamepadTextInputModeNormal","value": "0"} - ,{"name": "k_EGamepadTextInputModePassword","value": "1"} -]} -, {"enumname": "EGamepadTextInputLineMode","values": [ - {"name": "k_EGamepadTextInputLineModeSingleLine","value": "0"} - ,{"name": "k_EGamepadTextInputLineModeMultipleLines","value": "1"} -]} -, {"enumname": "ECheckFileSignature","values": [ - {"name": "k_ECheckFileSignatureInvalidSignature","value": "0"} - ,{"name": "k_ECheckFileSignatureValidSignature","value": "1"} - ,{"name": "k_ECheckFileSignatureFileNotFound","value": "2"} - ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisApp","value": "3"} - ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisFile","value": "4"} -]} -, {"enumname": "EMatchMakingServerResponse","values": [ - {"name": "eServerResponded","value": "0"} - ,{"name": "eServerFailedToRespond","value": "1"} - ,{"name": "eNoServersListedOnMasterServer","value": "2"} -]} -, {"enumname": "ELobbyType","values": [ - {"name": "k_ELobbyTypePrivate","value": "0"} - ,{"name": "k_ELobbyTypeFriendsOnly","value": "1"} - ,{"name": "k_ELobbyTypePublic","value": "2"} - ,{"name": "k_ELobbyTypeInvisible","value": "3"} -]} -, {"enumname": "ELobbyComparison","values": [ - {"name": "k_ELobbyComparisonEqualToOrLessThan","value": "-2"} - ,{"name": "k_ELobbyComparisonLessThan","value": "-1"} - ,{"name": "k_ELobbyComparisonEqual","value": "0"} - ,{"name": "k_ELobbyComparisonGreaterThan","value": "1"} - ,{"name": "k_ELobbyComparisonEqualToOrGreaterThan","value": "2"} - ,{"name": "k_ELobbyComparisonNotEqual","value": "3"} -]} -, {"enumname": "ELobbyDistanceFilter","values": [ - {"name": "k_ELobbyDistanceFilterClose","value": "0"} - ,{"name": "k_ELobbyDistanceFilterDefault","value": "1"} - ,{"name": "k_ELobbyDistanceFilterFar","value": "2"} - ,{"name": "k_ELobbyDistanceFilterWorldwide","value": "3"} -]} -, {"enumname": "EChatMemberStateChange","values": [ - {"name": "k_EChatMemberStateChangeEntered","value": "1"} - ,{"name": "k_EChatMemberStateChangeLeft","value": "2"} - ,{"name": "k_EChatMemberStateChangeDisconnected","value": "4"} - ,{"name": "k_EChatMemberStateChangeKicked","value": "8"} - ,{"name": "k_EChatMemberStateChangeBanned","value": "16"} -]} -, {"enumname": "ESteamPartyBeaconLocationType","values": [ - {"name": "k_ESteamPartyBeaconLocationType_Invalid","value": "0"} - ,{"name": "k_ESteamPartyBeaconLocationType_ChatGroup","value": "1"} - ,{"name": "k_ESteamPartyBeaconLocationType_Max","value": "2"} -]} -, {"enumname": "ESteamPartyBeaconLocationData","values": [ - {"name": "k_ESteamPartyBeaconLocationDataInvalid","value": "0"} - ,{"name": "k_ESteamPartyBeaconLocationDataName","value": "1"} - ,{"name": "k_ESteamPartyBeaconLocationDataIconURLSmall","value": "2"} - ,{"name": "k_ESteamPartyBeaconLocationDataIconURLMedium","value": "3"} - ,{"name": "k_ESteamPartyBeaconLocationDataIconURLLarge","value": "4"} -]} -, {"enumname": "RequestPlayersForGameResultCallback_t::PlayerAcceptState_t","values": [ - {"name": "k_EStateUnknown","value": "0"} - ,{"name": "k_EStatePlayerAccepted","value": "1"} - ,{"name": "k_EStatePlayerDeclined","value": "2"} -]} -, {"enumname": "ERemoteStoragePlatform","values": [ - {"name": "k_ERemoteStoragePlatformNone","value": "0"} - ,{"name": "k_ERemoteStoragePlatformWindows","value": "1"} - ,{"name": "k_ERemoteStoragePlatformOSX","value": "2"} - ,{"name": "k_ERemoteStoragePlatformPS3","value": "4"} - ,{"name": "k_ERemoteStoragePlatformLinux","value": "8"} - ,{"name": "k_ERemoteStoragePlatformReserved2","value": "16"} - ,{"name": "k_ERemoteStoragePlatformAndroid","value": "32"} - ,{"name": "k_ERemoteStoragePlatformAll","value": "-1"} -]} -, {"enumname": "ERemoteStoragePublishedFileVisibility","values": [ - {"name": "k_ERemoteStoragePublishedFileVisibilityPublic","value": "0"} - ,{"name": "k_ERemoteStoragePublishedFileVisibilityFriendsOnly","value": "1"} - ,{"name": "k_ERemoteStoragePublishedFileVisibilityPrivate","value": "2"} -]} -, {"enumname": "EWorkshopFileType","values": [ - {"name": "k_EWorkshopFileTypeFirst","value": "0"} - ,{"name": "k_EWorkshopFileTypeCommunity","value": "0"} - ,{"name": "k_EWorkshopFileTypeMicrotransaction","value": "1"} - ,{"name": "k_EWorkshopFileTypeCollection","value": "2"} - ,{"name": "k_EWorkshopFileTypeArt","value": "3"} - ,{"name": "k_EWorkshopFileTypeVideo","value": "4"} - ,{"name": "k_EWorkshopFileTypeScreenshot","value": "5"} - ,{"name": "k_EWorkshopFileTypeGame","value": "6"} - ,{"name": "k_EWorkshopFileTypeSoftware","value": "7"} - ,{"name": "k_EWorkshopFileTypeConcept","value": "8"} - ,{"name": "k_EWorkshopFileTypeWebGuide","value": "9"} - ,{"name": "k_EWorkshopFileTypeIntegratedGuide","value": "10"} - ,{"name": "k_EWorkshopFileTypeMerch","value": "11"} - ,{"name": "k_EWorkshopFileTypeControllerBinding","value": "12"} - ,{"name": "k_EWorkshopFileTypeSteamworksAccessInvite","value": "13"} - ,{"name": "k_EWorkshopFileTypeSteamVideo","value": "14"} - ,{"name": "k_EWorkshopFileTypeGameManagedItem","value": "15"} - ,{"name": "k_EWorkshopFileTypeMax","value": "16"} -]} -, {"enumname": "EWorkshopVote","values": [ - {"name": "k_EWorkshopVoteUnvoted","value": "0"} - ,{"name": "k_EWorkshopVoteFor","value": "1"} - ,{"name": "k_EWorkshopVoteAgainst","value": "2"} - ,{"name": "k_EWorkshopVoteLater","value": "3"} -]} -, {"enumname": "EWorkshopFileAction","values": [ - {"name": "k_EWorkshopFileActionPlayed","value": "0"} - ,{"name": "k_EWorkshopFileActionCompleted","value": "1"} -]} -, {"enumname": "EWorkshopEnumerationType","values": [ - {"name": "k_EWorkshopEnumerationTypeRankedByVote","value": "0"} - ,{"name": "k_EWorkshopEnumerationTypeRecent","value": "1"} - ,{"name": "k_EWorkshopEnumerationTypeTrending","value": "2"} - ,{"name": "k_EWorkshopEnumerationTypeFavoritesOfFriends","value": "3"} - ,{"name": "k_EWorkshopEnumerationTypeVotedByFriends","value": "4"} - ,{"name": "k_EWorkshopEnumerationTypeContentByFriends","value": "5"} - ,{"name": "k_EWorkshopEnumerationTypeRecentFromFollowedUsers","value": "6"} -]} -, {"enumname": "EWorkshopVideoProvider","values": [ - {"name": "k_EWorkshopVideoProviderNone","value": "0"} - ,{"name": "k_EWorkshopVideoProviderYoutube","value": "1"} -]} -, {"enumname": "EUGCReadAction","values": [ - {"name": "k_EUGCRead_ContinueReadingUntilFinished","value": "0"} - ,{"name": "k_EUGCRead_ContinueReading","value": "1"} - ,{"name": "k_EUGCRead_Close","value": "2"} -]} -, {"enumname": "ELeaderboardDataRequest","values": [ - {"name": "k_ELeaderboardDataRequestGlobal","value": "0"} - ,{"name": "k_ELeaderboardDataRequestGlobalAroundUser","value": "1"} - ,{"name": "k_ELeaderboardDataRequestFriends","value": "2"} - ,{"name": "k_ELeaderboardDataRequestUsers","value": "3"} -]} -, {"enumname": "ELeaderboardSortMethod","values": [ - {"name": "k_ELeaderboardSortMethodNone","value": "0"} - ,{"name": "k_ELeaderboardSortMethodAscending","value": "1"} - ,{"name": "k_ELeaderboardSortMethodDescending","value": "2"} -]} -, {"enumname": "ELeaderboardDisplayType","values": [ - {"name": "k_ELeaderboardDisplayTypeNone","value": "0"} - ,{"name": "k_ELeaderboardDisplayTypeNumeric","value": "1"} - ,{"name": "k_ELeaderboardDisplayTypeTimeSeconds","value": "2"} - ,{"name": "k_ELeaderboardDisplayTypeTimeMilliSeconds","value": "3"} -]} -, {"enumname": "ELeaderboardUploadScoreMethod","values": [ - {"name": "k_ELeaderboardUploadScoreMethodNone","value": "0"} - ,{"name": "k_ELeaderboardUploadScoreMethodKeepBest","value": "1"} - ,{"name": "k_ELeaderboardUploadScoreMethodForceUpdate","value": "2"} -]} -, {"enumname": "ERegisterActivationCodeResult","values": [ - {"name": "k_ERegisterActivationCodeResultOK","value": "0"} - ,{"name": "k_ERegisterActivationCodeResultFail","value": "1"} - ,{"name": "k_ERegisterActivationCodeResultAlreadyRegistered","value": "2"} - ,{"name": "k_ERegisterActivationCodeResultTimeout","value": "3"} - ,{"name": "k_ERegisterActivationCodeAlreadyOwned","value": "4"} -]} -, {"enumname": "EP2PSessionError","values": [ - {"name": "k_EP2PSessionErrorNone","value": "0"} - ,{"name": "k_EP2PSessionErrorNotRunningApp","value": "1"} - ,{"name": "k_EP2PSessionErrorNoRightsToApp","value": "2"} - ,{"name": "k_EP2PSessionErrorDestinationNotLoggedIn","value": "3"} - ,{"name": "k_EP2PSessionErrorTimeout","value": "4"} - ,{"name": "k_EP2PSessionErrorMax","value": "5"} -]} -, {"enumname": "EP2PSend","values": [ - {"name": "k_EP2PSendUnreliable","value": "0"} - ,{"name": "k_EP2PSendUnreliableNoDelay","value": "1"} - ,{"name": "k_EP2PSendReliable","value": "2"} - ,{"name": "k_EP2PSendReliableWithBuffering","value": "3"} -]} -, {"enumname": "ESNetSocketState","values": [ - {"name": "k_ESNetSocketStateInvalid","value": "0"} - ,{"name": "k_ESNetSocketStateConnected","value": "1"} - ,{"name": "k_ESNetSocketStateInitiated","value": "10"} - ,{"name": "k_ESNetSocketStateLocalCandidatesFound","value": "11"} - ,{"name": "k_ESNetSocketStateReceivedRemoteCandidates","value": "12"} - ,{"name": "k_ESNetSocketStateChallengeHandshake","value": "15"} - ,{"name": "k_ESNetSocketStateDisconnecting","value": "21"} - ,{"name": "k_ESNetSocketStateLocalDisconnect","value": "22"} - ,{"name": "k_ESNetSocketStateTimeoutDuringConnect","value": "23"} - ,{"name": "k_ESNetSocketStateRemoteEndDisconnected","value": "24"} - ,{"name": "k_ESNetSocketStateConnectionBroken","value": "25"} -]} -, {"enumname": "ESNetSocketConnectionType","values": [ - {"name": "k_ESNetSocketConnectionTypeNotConnected","value": "0"} - ,{"name": "k_ESNetSocketConnectionTypeUDP","value": "1"} - ,{"name": "k_ESNetSocketConnectionTypeUDPRelay","value": "2"} -]} -, {"enumname": "EVRScreenshotType","values": [ - {"name": "k_EVRScreenshotType_None","value": "0"} - ,{"name": "k_EVRScreenshotType_Mono","value": "1"} - ,{"name": "k_EVRScreenshotType_Stereo","value": "2"} - ,{"name": "k_EVRScreenshotType_MonoCubemap","value": "3"} - ,{"name": "k_EVRScreenshotType_MonoPanorama","value": "4"} - ,{"name": "k_EVRScreenshotType_StereoPanorama","value": "5"} -]} -, {"enumname": "AudioPlayback_Status","values": [ - {"name": "AudioPlayback_Undefined","value": "0"} - ,{"name": "AudioPlayback_Playing","value": "1"} - ,{"name": "AudioPlayback_Paused","value": "2"} - ,{"name": "AudioPlayback_Idle","value": "3"} -]} -, {"enumname": "EHTTPMethod","values": [ - {"name": "k_EHTTPMethodInvalid","value": "0"} - ,{"name": "k_EHTTPMethodGET","value": "1"} - ,{"name": "k_EHTTPMethodHEAD","value": "2"} - ,{"name": "k_EHTTPMethodPOST","value": "3"} - ,{"name": "k_EHTTPMethodPUT","value": "4"} - ,{"name": "k_EHTTPMethodDELETE","value": "5"} - ,{"name": "k_EHTTPMethodOPTIONS","value": "6"} - ,{"name": "k_EHTTPMethodPATCH","value": "7"} -]} -, {"enumname": "EHTTPStatusCode","values": [ - {"name": "k_EHTTPStatusCodeInvalid","value": "0"} - ,{"name": "k_EHTTPStatusCode100Continue","value": "100"} - ,{"name": "k_EHTTPStatusCode101SwitchingProtocols","value": "101"} - ,{"name": "k_EHTTPStatusCode200OK","value": "200"} - ,{"name": "k_EHTTPStatusCode201Created","value": "201"} - ,{"name": "k_EHTTPStatusCode202Accepted","value": "202"} - ,{"name": "k_EHTTPStatusCode203NonAuthoritative","value": "203"} - ,{"name": "k_EHTTPStatusCode204NoContent","value": "204"} - ,{"name": "k_EHTTPStatusCode205ResetContent","value": "205"} - ,{"name": "k_EHTTPStatusCode206PartialContent","value": "206"} - ,{"name": "k_EHTTPStatusCode300MultipleChoices","value": "300"} - ,{"name": "k_EHTTPStatusCode301MovedPermanently","value": "301"} - ,{"name": "k_EHTTPStatusCode302Found","value": "302"} - ,{"name": "k_EHTTPStatusCode303SeeOther","value": "303"} - ,{"name": "k_EHTTPStatusCode304NotModified","value": "304"} - ,{"name": "k_EHTTPStatusCode305UseProxy","value": "305"} - ,{"name": "k_EHTTPStatusCode307TemporaryRedirect","value": "307"} - ,{"name": "k_EHTTPStatusCode400BadRequest","value": "400"} - ,{"name": "k_EHTTPStatusCode401Unauthorized","value": "401"} - ,{"name": "k_EHTTPStatusCode402PaymentRequired","value": "402"} - ,{"name": "k_EHTTPStatusCode403Forbidden","value": "403"} - ,{"name": "k_EHTTPStatusCode404NotFound","value": "404"} - ,{"name": "k_EHTTPStatusCode405MethodNotAllowed","value": "405"} - ,{"name": "k_EHTTPStatusCode406NotAcceptable","value": "406"} - ,{"name": "k_EHTTPStatusCode407ProxyAuthRequired","value": "407"} - ,{"name": "k_EHTTPStatusCode408RequestTimeout","value": "408"} - ,{"name": "k_EHTTPStatusCode409Conflict","value": "409"} - ,{"name": "k_EHTTPStatusCode410Gone","value": "410"} - ,{"name": "k_EHTTPStatusCode411LengthRequired","value": "411"} - ,{"name": "k_EHTTPStatusCode412PreconditionFailed","value": "412"} - ,{"name": "k_EHTTPStatusCode413RequestEntityTooLarge","value": "413"} - ,{"name": "k_EHTTPStatusCode414RequestURITooLong","value": "414"} - ,{"name": "k_EHTTPStatusCode415UnsupportedMediaType","value": "415"} - ,{"name": "k_EHTTPStatusCode416RequestedRangeNotSatisfiable","value": "416"} - ,{"name": "k_EHTTPStatusCode417ExpectationFailed","value": "417"} - ,{"name": "k_EHTTPStatusCode4xxUnknown","value": "418"} - ,{"name": "k_EHTTPStatusCode429TooManyRequests","value": "429"} - ,{"name": "k_EHTTPStatusCode500InternalServerError","value": "500"} - ,{"name": "k_EHTTPStatusCode501NotImplemented","value": "501"} - ,{"name": "k_EHTTPStatusCode502BadGateway","value": "502"} - ,{"name": "k_EHTTPStatusCode503ServiceUnavailable","value": "503"} - ,{"name": "k_EHTTPStatusCode504GatewayTimeout","value": "504"} - ,{"name": "k_EHTTPStatusCode505HTTPVersionNotSupported","value": "505"} - ,{"name": "k_EHTTPStatusCode5xxUnknown","value": "599"} -]} -, {"enumname": "EInputSource","values": [ - {"name": "k_EInputSource_None","value": "0"} - ,{"name": "k_EInputSource_LeftTrackpad","value": "1"} - ,{"name": "k_EInputSource_RightTrackpad","value": "2"} - ,{"name": "k_EInputSource_Joystick","value": "3"} - ,{"name": "k_EInputSource_ABXY","value": "4"} - ,{"name": "k_EInputSource_Switch","value": "5"} - ,{"name": "k_EInputSource_LeftTrigger","value": "6"} - ,{"name": "k_EInputSource_RightTrigger","value": "7"} - ,{"name": "k_EInputSource_LeftBumper","value": "8"} - ,{"name": "k_EInputSource_RightBumper","value": "9"} - ,{"name": "k_EInputSource_Gyro","value": "10"} - ,{"name": "k_EInputSource_CenterTrackpad","value": "11"} - ,{"name": "k_EInputSource_RightJoystick","value": "12"} - ,{"name": "k_EInputSource_DPad","value": "13"} - ,{"name": "k_EInputSource_Key","value": "14"} - ,{"name": "k_EInputSource_Mouse","value": "15"} - ,{"name": "k_EInputSource_LeftGyro","value": "16"} - ,{"name": "k_EInputSource_Count","value": "17"} -]} -, {"enumname": "EInputSourceMode","values": [ - {"name": "k_EInputSourceMode_None","value": "0"} - ,{"name": "k_EInputSourceMode_Dpad","value": "1"} - ,{"name": "k_EInputSourceMode_Buttons","value": "2"} - ,{"name": "k_EInputSourceMode_FourButtons","value": "3"} - ,{"name": "k_EInputSourceMode_AbsoluteMouse","value": "4"} - ,{"name": "k_EInputSourceMode_RelativeMouse","value": "5"} - ,{"name": "k_EInputSourceMode_JoystickMove","value": "6"} - ,{"name": "k_EInputSourceMode_JoystickMouse","value": "7"} - ,{"name": "k_EInputSourceMode_JoystickCamera","value": "8"} - ,{"name": "k_EInputSourceMode_ScrollWheel","value": "9"} - ,{"name": "k_EInputSourceMode_Trigger","value": "10"} - ,{"name": "k_EInputSourceMode_TouchMenu","value": "11"} - ,{"name": "k_EInputSourceMode_MouseJoystick","value": "12"} - ,{"name": "k_EInputSourceMode_MouseRegion","value": "13"} - ,{"name": "k_EInputSourceMode_RadialMenu","value": "14"} - ,{"name": "k_EInputSourceMode_SingleButton","value": "15"} - ,{"name": "k_EInputSourceMode_Switches","value": "16"} -]} -, {"enumname": "EInputActionOrigin","values": [ - {"name": "k_EInputActionOrigin_None","value": "0"} - ,{"name": "k_EInputActionOrigin_SteamController_A","value": "1"} - ,{"name": "k_EInputActionOrigin_SteamController_B","value": "2"} - ,{"name": "k_EInputActionOrigin_SteamController_X","value": "3"} - ,{"name": "k_EInputActionOrigin_SteamController_Y","value": "4"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftBumper","value": "5"} - ,{"name": "k_EInputActionOrigin_SteamController_RightBumper","value": "6"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftGrip","value": "7"} - ,{"name": "k_EInputActionOrigin_SteamController_RightGrip","value": "8"} - ,{"name": "k_EInputActionOrigin_SteamController_Start","value": "9"} - ,{"name": "k_EInputActionOrigin_SteamController_Back","value": "10"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftPad_Touch","value": "11"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftPad_Swipe","value": "12"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftPad_Click","value": "13"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftPad_DPadNorth","value": "14"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftPad_DPadSouth","value": "15"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftPad_DPadWest","value": "16"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftPad_DPadEast","value": "17"} - ,{"name": "k_EInputActionOrigin_SteamController_RightPad_Touch","value": "18"} - ,{"name": "k_EInputActionOrigin_SteamController_RightPad_Swipe","value": "19"} - ,{"name": "k_EInputActionOrigin_SteamController_RightPad_Click","value": "20"} - ,{"name": "k_EInputActionOrigin_SteamController_RightPad_DPadNorth","value": "21"} - ,{"name": "k_EInputActionOrigin_SteamController_RightPad_DPadSouth","value": "22"} - ,{"name": "k_EInputActionOrigin_SteamController_RightPad_DPadWest","value": "23"} - ,{"name": "k_EInputActionOrigin_SteamController_RightPad_DPadEast","value": "24"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftTrigger_Pull","value": "25"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftTrigger_Click","value": "26"} - ,{"name": "k_EInputActionOrigin_SteamController_RightTrigger_Pull","value": "27"} - ,{"name": "k_EInputActionOrigin_SteamController_RightTrigger_Click","value": "28"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftStick_Move","value": "29"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftStick_Click","value": "30"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftStick_DPadNorth","value": "31"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftStick_DPadSouth","value": "32"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftStick_DPadWest","value": "33"} - ,{"name": "k_EInputActionOrigin_SteamController_LeftStick_DPadEast","value": "34"} - ,{"name": "k_EInputActionOrigin_SteamController_Gyro_Move","value": "35"} - ,{"name": "k_EInputActionOrigin_SteamController_Gyro_Pitch","value": "36"} - ,{"name": "k_EInputActionOrigin_SteamController_Gyro_Yaw","value": "37"} - ,{"name": "k_EInputActionOrigin_SteamController_Gyro_Roll","value": "38"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved0","value": "39"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved1","value": "40"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved2","value": "41"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved3","value": "42"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved4","value": "43"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved5","value": "44"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved6","value": "45"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved7","value": "46"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved8","value": "47"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved9","value": "48"} - ,{"name": "k_EInputActionOrigin_SteamController_Reserved10","value": "49"} - ,{"name": "k_EInputActionOrigin_PS4_X","value": "50"} - ,{"name": "k_EInputActionOrigin_PS4_Circle","value": "51"} - ,{"name": "k_EInputActionOrigin_PS4_Triangle","value": "52"} - ,{"name": "k_EInputActionOrigin_PS4_Square","value": "53"} - ,{"name": "k_EInputActionOrigin_PS4_LeftBumper","value": "54"} - ,{"name": "k_EInputActionOrigin_PS4_RightBumper","value": "55"} - ,{"name": "k_EInputActionOrigin_PS4_Options","value": "56"} - ,{"name": "k_EInputActionOrigin_PS4_Share","value": "57"} - ,{"name": "k_EInputActionOrigin_PS4_LeftPad_Touch","value": "58"} - ,{"name": "k_EInputActionOrigin_PS4_LeftPad_Swipe","value": "59"} - ,{"name": "k_EInputActionOrigin_PS4_LeftPad_Click","value": "60"} - ,{"name": "k_EInputActionOrigin_PS4_LeftPad_DPadNorth","value": "61"} - ,{"name": "k_EInputActionOrigin_PS4_LeftPad_DPadSouth","value": "62"} - ,{"name": "k_EInputActionOrigin_PS4_LeftPad_DPadWest","value": "63"} - ,{"name": "k_EInputActionOrigin_PS4_LeftPad_DPadEast","value": "64"} - ,{"name": "k_EInputActionOrigin_PS4_RightPad_Touch","value": "65"} - ,{"name": "k_EInputActionOrigin_PS4_RightPad_Swipe","value": "66"} - ,{"name": "k_EInputActionOrigin_PS4_RightPad_Click","value": "67"} - ,{"name": "k_EInputActionOrigin_PS4_RightPad_DPadNorth","value": "68"} - ,{"name": "k_EInputActionOrigin_PS4_RightPad_DPadSouth","value": "69"} - ,{"name": "k_EInputActionOrigin_PS4_RightPad_DPadWest","value": "70"} - ,{"name": "k_EInputActionOrigin_PS4_RightPad_DPadEast","value": "71"} - ,{"name": "k_EInputActionOrigin_PS4_CenterPad_Touch","value": "72"} - ,{"name": "k_EInputActionOrigin_PS4_CenterPad_Swipe","value": "73"} - ,{"name": "k_EInputActionOrigin_PS4_CenterPad_Click","value": "74"} - ,{"name": "k_EInputActionOrigin_PS4_CenterPad_DPadNorth","value": "75"} - ,{"name": "k_EInputActionOrigin_PS4_CenterPad_DPadSouth","value": "76"} - ,{"name": "k_EInputActionOrigin_PS4_CenterPad_DPadWest","value": "77"} - ,{"name": "k_EInputActionOrigin_PS4_CenterPad_DPadEast","value": "78"} - ,{"name": "k_EInputActionOrigin_PS4_LeftTrigger_Pull","value": "79"} - ,{"name": "k_EInputActionOrigin_PS4_LeftTrigger_Click","value": "80"} - ,{"name": "k_EInputActionOrigin_PS4_RightTrigger_Pull","value": "81"} - ,{"name": "k_EInputActionOrigin_PS4_RightTrigger_Click","value": "82"} - ,{"name": "k_EInputActionOrigin_PS4_LeftStick_Move","value": "83"} - ,{"name": "k_EInputActionOrigin_PS4_LeftStick_Click","value": "84"} - ,{"name": "k_EInputActionOrigin_PS4_LeftStick_DPadNorth","value": "85"} - ,{"name": "k_EInputActionOrigin_PS4_LeftStick_DPadSouth","value": "86"} - ,{"name": "k_EInputActionOrigin_PS4_LeftStick_DPadWest","value": "87"} - ,{"name": "k_EInputActionOrigin_PS4_LeftStick_DPadEast","value": "88"} - ,{"name": "k_EInputActionOrigin_PS4_RightStick_Move","value": "89"} - ,{"name": "k_EInputActionOrigin_PS4_RightStick_Click","value": "90"} - ,{"name": "k_EInputActionOrigin_PS4_RightStick_DPadNorth","value": "91"} - ,{"name": "k_EInputActionOrigin_PS4_RightStick_DPadSouth","value": "92"} - ,{"name": "k_EInputActionOrigin_PS4_RightStick_DPadWest","value": "93"} - ,{"name": "k_EInputActionOrigin_PS4_RightStick_DPadEast","value": "94"} - ,{"name": "k_EInputActionOrigin_PS4_DPad_North","value": "95"} - ,{"name": "k_EInputActionOrigin_PS4_DPad_South","value": "96"} - ,{"name": "k_EInputActionOrigin_PS4_DPad_West","value": "97"} - ,{"name": "k_EInputActionOrigin_PS4_DPad_East","value": "98"} - ,{"name": "k_EInputActionOrigin_PS4_Gyro_Move","value": "99"} - ,{"name": "k_EInputActionOrigin_PS4_Gyro_Pitch","value": "100"} - ,{"name": "k_EInputActionOrigin_PS4_Gyro_Yaw","value": "101"} - ,{"name": "k_EInputActionOrigin_PS4_Gyro_Roll","value": "102"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved0","value": "103"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved1","value": "104"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved2","value": "105"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved3","value": "106"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved4","value": "107"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved5","value": "108"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved6","value": "109"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved7","value": "110"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved8","value": "111"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved9","value": "112"} - ,{"name": "k_EInputActionOrigin_PS4_Reserved10","value": "113"} - ,{"name": "k_EInputActionOrigin_XBoxOne_A","value": "114"} - ,{"name": "k_EInputActionOrigin_XBoxOne_B","value": "115"} - ,{"name": "k_EInputActionOrigin_XBoxOne_X","value": "116"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Y","value": "117"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftBumper","value": "118"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightBumper","value": "119"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Menu","value": "120"} - ,{"name": "k_EInputActionOrigin_XBoxOne_View","value": "121"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull","value": "122"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftTrigger_Click","value": "123"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightTrigger_Pull","value": "124"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightTrigger_Click","value": "125"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftStick_Move","value": "126"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftStick_Click","value": "127"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth","value": "128"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth","value": "129"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest","value": "130"} - ,{"name": "k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast","value": "131"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightStick_Move","value": "132"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightStick_Click","value": "133"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth","value": "134"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth","value": "135"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightStick_DPadWest","value": "136"} - ,{"name": "k_EInputActionOrigin_XBoxOne_RightStick_DPadEast","value": "137"} - ,{"name": "k_EInputActionOrigin_XBoxOne_DPad_North","value": "138"} - ,{"name": "k_EInputActionOrigin_XBoxOne_DPad_South","value": "139"} - ,{"name": "k_EInputActionOrigin_XBoxOne_DPad_West","value": "140"} - ,{"name": "k_EInputActionOrigin_XBoxOne_DPad_East","value": "141"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved0","value": "142"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved1","value": "143"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved2","value": "144"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved3","value": "145"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved4","value": "146"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved5","value": "147"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved6","value": "148"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved7","value": "149"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved8","value": "150"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved9","value": "151"} - ,{"name": "k_EInputActionOrigin_XBoxOne_Reserved10","value": "152"} - ,{"name": "k_EInputActionOrigin_XBox360_A","value": "153"} - ,{"name": "k_EInputActionOrigin_XBox360_B","value": "154"} - ,{"name": "k_EInputActionOrigin_XBox360_X","value": "155"} - ,{"name": "k_EInputActionOrigin_XBox360_Y","value": "156"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftBumper","value": "157"} - ,{"name": "k_EInputActionOrigin_XBox360_RightBumper","value": "158"} - ,{"name": "k_EInputActionOrigin_XBox360_Start","value": "159"} - ,{"name": "k_EInputActionOrigin_XBox360_Back","value": "160"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftTrigger_Pull","value": "161"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftTrigger_Click","value": "162"} - ,{"name": "k_EInputActionOrigin_XBox360_RightTrigger_Pull","value": "163"} - ,{"name": "k_EInputActionOrigin_XBox360_RightTrigger_Click","value": "164"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftStick_Move","value": "165"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftStick_Click","value": "166"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftStick_DPadNorth","value": "167"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftStick_DPadSouth","value": "168"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftStick_DPadWest","value": "169"} - ,{"name": "k_EInputActionOrigin_XBox360_LeftStick_DPadEast","value": "170"} - ,{"name": "k_EInputActionOrigin_XBox360_RightStick_Move","value": "171"} - ,{"name": "k_EInputActionOrigin_XBox360_RightStick_Click","value": "172"} - ,{"name": "k_EInputActionOrigin_XBox360_RightStick_DPadNorth","value": "173"} - ,{"name": "k_EInputActionOrigin_XBox360_RightStick_DPadSouth","value": "174"} - ,{"name": "k_EInputActionOrigin_XBox360_RightStick_DPadWest","value": "175"} - ,{"name": "k_EInputActionOrigin_XBox360_RightStick_DPadEast","value": "176"} - ,{"name": "k_EInputActionOrigin_XBox360_DPad_North","value": "177"} - ,{"name": "k_EInputActionOrigin_XBox360_DPad_South","value": "178"} - ,{"name": "k_EInputActionOrigin_XBox360_DPad_West","value": "179"} - ,{"name": "k_EInputActionOrigin_XBox360_DPad_East","value": "180"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved0","value": "181"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved1","value": "182"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved2","value": "183"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved3","value": "184"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved4","value": "185"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved5","value": "186"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved6","value": "187"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved7","value": "188"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved8","value": "189"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved9","value": "190"} - ,{"name": "k_EInputActionOrigin_XBox360_Reserved10","value": "191"} - ,{"name": "k_EInputActionOrigin_Switch_A","value": "192"} - ,{"name": "k_EInputActionOrigin_Switch_B","value": "193"} - ,{"name": "k_EInputActionOrigin_Switch_X","value": "194"} - ,{"name": "k_EInputActionOrigin_Switch_Y","value": "195"} - ,{"name": "k_EInputActionOrigin_Switch_LeftBumper","value": "196"} - ,{"name": "k_EInputActionOrigin_Switch_RightBumper","value": "197"} - ,{"name": "k_EInputActionOrigin_Switch_Plus","value": "198"} - ,{"name": "k_EInputActionOrigin_Switch_Minus","value": "199"} - ,{"name": "k_EInputActionOrigin_Switch_Capture","value": "200"} - ,{"name": "k_EInputActionOrigin_Switch_LeftTrigger_Pull","value": "201"} - ,{"name": "k_EInputActionOrigin_Switch_LeftTrigger_Click","value": "202"} - ,{"name": "k_EInputActionOrigin_Switch_RightTrigger_Pull","value": "203"} - ,{"name": "k_EInputActionOrigin_Switch_RightTrigger_Click","value": "204"} - ,{"name": "k_EInputActionOrigin_Switch_LeftStick_Move","value": "205"} - ,{"name": "k_EInputActionOrigin_Switch_LeftStick_Click","value": "206"} - ,{"name": "k_EInputActionOrigin_Switch_LeftStick_DPadNorth","value": "207"} - ,{"name": "k_EInputActionOrigin_Switch_LeftStick_DPadSouth","value": "208"} - ,{"name": "k_EInputActionOrigin_Switch_LeftStick_DPadWest","value": "209"} - ,{"name": "k_EInputActionOrigin_Switch_LeftStick_DPadEast","value": "210"} - ,{"name": "k_EInputActionOrigin_Switch_RightStick_Move","value": "211"} - ,{"name": "k_EInputActionOrigin_Switch_RightStick_Click","value": "212"} - ,{"name": "k_EInputActionOrigin_Switch_RightStick_DPadNorth","value": "213"} - ,{"name": "k_EInputActionOrigin_Switch_RightStick_DPadSouth","value": "214"} - ,{"name": "k_EInputActionOrigin_Switch_RightStick_DPadWest","value": "215"} - ,{"name": "k_EInputActionOrigin_Switch_RightStick_DPadEast","value": "216"} - ,{"name": "k_EInputActionOrigin_Switch_DPad_North","value": "217"} - ,{"name": "k_EInputActionOrigin_Switch_DPad_South","value": "218"} - ,{"name": "k_EInputActionOrigin_Switch_DPad_West","value": "219"} - ,{"name": "k_EInputActionOrigin_Switch_DPad_East","value": "220"} - ,{"name": "k_EInputActionOrigin_Switch_ProGyro_Move","value": "221"} - ,{"name": "k_EInputActionOrigin_Switch_ProGyro_Pitch","value": "222"} - ,{"name": "k_EInputActionOrigin_Switch_ProGyro_Yaw","value": "223"} - ,{"name": "k_EInputActionOrigin_Switch_ProGyro_Roll","value": "224"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved0","value": "225"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved1","value": "226"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved2","value": "227"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved3","value": "228"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved4","value": "229"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved5","value": "230"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved6","value": "231"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved7","value": "232"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved8","value": "233"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved9","value": "234"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved10","value": "235"} - ,{"name": "k_EInputActionOrigin_Switch_RightGyro_Move","value": "236"} - ,{"name": "k_EInputActionOrigin_Switch_RightGyro_Pitch","value": "237"} - ,{"name": "k_EInputActionOrigin_Switch_RightGyro_Yaw","value": "238"} - ,{"name": "k_EInputActionOrigin_Switch_RightGyro_Roll","value": "239"} - ,{"name": "k_EInputActionOrigin_Switch_LeftGyro_Move","value": "240"} - ,{"name": "k_EInputActionOrigin_Switch_LeftGyro_Pitch","value": "241"} - ,{"name": "k_EInputActionOrigin_Switch_LeftGyro_Yaw","value": "242"} - ,{"name": "k_EInputActionOrigin_Switch_LeftGyro_Roll","value": "243"} - ,{"name": "k_EInputActionOrigin_Switch_LeftGrip_Lower","value": "244"} - ,{"name": "k_EInputActionOrigin_Switch_LeftGrip_Upper","value": "245"} - ,{"name": "k_EInputActionOrigin_Switch_RightGrip_Lower","value": "246"} - ,{"name": "k_EInputActionOrigin_Switch_RightGrip_Upper","value": "247"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved11","value": "248"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved12","value": "249"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved13","value": "250"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved14","value": "251"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved15","value": "252"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved16","value": "253"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved17","value": "254"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved18","value": "255"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved19","value": "256"} - ,{"name": "k_EInputActionOrigin_Switch_Reserved20","value": "257"} - ,{"name": "k_EInputActionOrigin_Count","value": "258"} - ,{"name": "k_EInputActionOrigin_MaximumPossibleValue","value": "32767"} -]} -, {"enumname": "EXboxOrigin","values": [ - {"name": "k_EXboxOrigin_A","value": "0"} - ,{"name": "k_EXboxOrigin_B","value": "1"} - ,{"name": "k_EXboxOrigin_X","value": "2"} - ,{"name": "k_EXboxOrigin_Y","value": "3"} - ,{"name": "k_EXboxOrigin_LeftBumper","value": "4"} - ,{"name": "k_EXboxOrigin_RightBumper","value": "5"} - ,{"name": "k_EXboxOrigin_Menu","value": "6"} - ,{"name": "k_EXboxOrigin_View","value": "7"} - ,{"name": "k_EXboxOrigin_LeftTrigger_Pull","value": "8"} - ,{"name": "k_EXboxOrigin_LeftTrigger_Click","value": "9"} - ,{"name": "k_EXboxOrigin_RightTrigger_Pull","value": "10"} - ,{"name": "k_EXboxOrigin_RightTrigger_Click","value": "11"} - ,{"name": "k_EXboxOrigin_LeftStick_Move","value": "12"} - ,{"name": "k_EXboxOrigin_LeftStick_Click","value": "13"} - ,{"name": "k_EXboxOrigin_LeftStick_DPadNorth","value": "14"} - ,{"name": "k_EXboxOrigin_LeftStick_DPadSouth","value": "15"} - ,{"name": "k_EXboxOrigin_LeftStick_DPadWest","value": "16"} - ,{"name": "k_EXboxOrigin_LeftStick_DPadEast","value": "17"} - ,{"name": "k_EXboxOrigin_RightStick_Move","value": "18"} - ,{"name": "k_EXboxOrigin_RightStick_Click","value": "19"} - ,{"name": "k_EXboxOrigin_RightStick_DPadNorth","value": "20"} - ,{"name": "k_EXboxOrigin_RightStick_DPadSouth","value": "21"} - ,{"name": "k_EXboxOrigin_RightStick_DPadWest","value": "22"} - ,{"name": "k_EXboxOrigin_RightStick_DPadEast","value": "23"} - ,{"name": "k_EXboxOrigin_DPad_North","value": "24"} - ,{"name": "k_EXboxOrigin_DPad_South","value": "25"} - ,{"name": "k_EXboxOrigin_DPad_West","value": "26"} - ,{"name": "k_EXboxOrigin_DPad_East","value": "27"} - ,{"name": "k_EXboxOrigin_Count","value": "28"} -]} -, {"enumname": "ESteamControllerPad","values": [ - {"name": "k_ESteamControllerPad_Left","value": "0"} - ,{"name": "k_ESteamControllerPad_Right","value": "1"} -]} -, {"enumname": "ESteamInputType","values": [ - {"name": "k_ESteamInputType_Unknown","value": "0"} - ,{"name": "k_ESteamInputType_SteamController","value": "1"} - ,{"name": "k_ESteamInputType_XBox360Controller","value": "2"} - ,{"name": "k_ESteamInputType_XBoxOneController","value": "3"} - ,{"name": "k_ESteamInputType_GenericGamepad","value": "4"} - ,{"name": "k_ESteamInputType_PS4Controller","value": "5"} - ,{"name": "k_ESteamInputType_AppleMFiController","value": "6"} - ,{"name": "k_ESteamInputType_AndroidController","value": "7"} - ,{"name": "k_ESteamInputType_SwitchJoyConPair","value": "8"} - ,{"name": "k_ESteamInputType_SwitchJoyConSingle","value": "9"} - ,{"name": "k_ESteamInputType_SwitchProController","value": "10"} - ,{"name": "k_ESteamInputType_MobileTouch","value": "11"} - ,{"name": "k_ESteamInputType_PS3Controller","value": "12"} - ,{"name": "k_ESteamInputType_Count","value": "13"} - ,{"name": "k_ESteamInputType_MaximumPossibleValue","value": "255"} -]} -, {"enumname": "ESteamInputLEDFlag","values": [ - {"name": "k_ESteamInputLEDFlag_SetColor","value": "0"} - ,{"name": "k_ESteamInputLEDFlag_RestoreUserDefault","value": "1"} -]} -, {"enumname": "EControllerSource","values": [ - {"name": "k_EControllerSource_None","value": "0"} - ,{"name": "k_EControllerSource_LeftTrackpad","value": "1"} - ,{"name": "k_EControllerSource_RightTrackpad","value": "2"} - ,{"name": "k_EControllerSource_Joystick","value": "3"} - ,{"name": "k_EControllerSource_ABXY","value": "4"} - ,{"name": "k_EControllerSource_Switch","value": "5"} - ,{"name": "k_EControllerSource_LeftTrigger","value": "6"} - ,{"name": "k_EControllerSource_RightTrigger","value": "7"} - ,{"name": "k_EControllerSource_LeftBumper","value": "8"} - ,{"name": "k_EControllerSource_RightBumper","value": "9"} - ,{"name": "k_EControllerSource_Gyro","value": "10"} - ,{"name": "k_EControllerSource_CenterTrackpad","value": "11"} - ,{"name": "k_EControllerSource_RightJoystick","value": "12"} - ,{"name": "k_EControllerSource_DPad","value": "13"} - ,{"name": "k_EControllerSource_Key","value": "14"} - ,{"name": "k_EControllerSource_Mouse","value": "15"} - ,{"name": "k_EControllerSource_LeftGyro","value": "16"} - ,{"name": "k_EControllerSource_Count","value": "17"} -]} -, {"enumname": "EControllerSourceMode","values": [ - {"name": "k_EControllerSourceMode_None","value": "0"} - ,{"name": "k_EControllerSourceMode_Dpad","value": "1"} - ,{"name": "k_EControllerSourceMode_Buttons","value": "2"} - ,{"name": "k_EControllerSourceMode_FourButtons","value": "3"} - ,{"name": "k_EControllerSourceMode_AbsoluteMouse","value": "4"} - ,{"name": "k_EControllerSourceMode_RelativeMouse","value": "5"} - ,{"name": "k_EControllerSourceMode_JoystickMove","value": "6"} - ,{"name": "k_EControllerSourceMode_JoystickMouse","value": "7"} - ,{"name": "k_EControllerSourceMode_JoystickCamera","value": "8"} - ,{"name": "k_EControllerSourceMode_ScrollWheel","value": "9"} - ,{"name": "k_EControllerSourceMode_Trigger","value": "10"} - ,{"name": "k_EControllerSourceMode_TouchMenu","value": "11"} - ,{"name": "k_EControllerSourceMode_MouseJoystick","value": "12"} - ,{"name": "k_EControllerSourceMode_MouseRegion","value": "13"} - ,{"name": "k_EControllerSourceMode_RadialMenu","value": "14"} - ,{"name": "k_EControllerSourceMode_SingleButton","value": "15"} - ,{"name": "k_EControllerSourceMode_Switches","value": "16"} -]} -, {"enumname": "EControllerActionOrigin","values": [ - {"name": "k_EControllerActionOrigin_None","value": "0"} - ,{"name": "k_EControllerActionOrigin_A","value": "1"} - ,{"name": "k_EControllerActionOrigin_B","value": "2"} - ,{"name": "k_EControllerActionOrigin_X","value": "3"} - ,{"name": "k_EControllerActionOrigin_Y","value": "4"} - ,{"name": "k_EControllerActionOrigin_LeftBumper","value": "5"} - ,{"name": "k_EControllerActionOrigin_RightBumper","value": "6"} - ,{"name": "k_EControllerActionOrigin_LeftGrip","value": "7"} - ,{"name": "k_EControllerActionOrigin_RightGrip","value": "8"} - ,{"name": "k_EControllerActionOrigin_Start","value": "9"} - ,{"name": "k_EControllerActionOrigin_Back","value": "10"} - ,{"name": "k_EControllerActionOrigin_LeftPad_Touch","value": "11"} - ,{"name": "k_EControllerActionOrigin_LeftPad_Swipe","value": "12"} - ,{"name": "k_EControllerActionOrigin_LeftPad_Click","value": "13"} - ,{"name": "k_EControllerActionOrigin_LeftPad_DPadNorth","value": "14"} - ,{"name": "k_EControllerActionOrigin_LeftPad_DPadSouth","value": "15"} - ,{"name": "k_EControllerActionOrigin_LeftPad_DPadWest","value": "16"} - ,{"name": "k_EControllerActionOrigin_LeftPad_DPadEast","value": "17"} - ,{"name": "k_EControllerActionOrigin_RightPad_Touch","value": "18"} - ,{"name": "k_EControllerActionOrigin_RightPad_Swipe","value": "19"} - ,{"name": "k_EControllerActionOrigin_RightPad_Click","value": "20"} - ,{"name": "k_EControllerActionOrigin_RightPad_DPadNorth","value": "21"} - ,{"name": "k_EControllerActionOrigin_RightPad_DPadSouth","value": "22"} - ,{"name": "k_EControllerActionOrigin_RightPad_DPadWest","value": "23"} - ,{"name": "k_EControllerActionOrigin_RightPad_DPadEast","value": "24"} - ,{"name": "k_EControllerActionOrigin_LeftTrigger_Pull","value": "25"} - ,{"name": "k_EControllerActionOrigin_LeftTrigger_Click","value": "26"} - ,{"name": "k_EControllerActionOrigin_RightTrigger_Pull","value": "27"} - ,{"name": "k_EControllerActionOrigin_RightTrigger_Click","value": "28"} - ,{"name": "k_EControllerActionOrigin_LeftStick_Move","value": "29"} - ,{"name": "k_EControllerActionOrigin_LeftStick_Click","value": "30"} - ,{"name": "k_EControllerActionOrigin_LeftStick_DPadNorth","value": "31"} - ,{"name": "k_EControllerActionOrigin_LeftStick_DPadSouth","value": "32"} - ,{"name": "k_EControllerActionOrigin_LeftStick_DPadWest","value": "33"} - ,{"name": "k_EControllerActionOrigin_LeftStick_DPadEast","value": "34"} - ,{"name": "k_EControllerActionOrigin_Gyro_Move","value": "35"} - ,{"name": "k_EControllerActionOrigin_Gyro_Pitch","value": "36"} - ,{"name": "k_EControllerActionOrigin_Gyro_Yaw","value": "37"} - ,{"name": "k_EControllerActionOrigin_Gyro_Roll","value": "38"} - ,{"name": "k_EControllerActionOrigin_PS4_X","value": "39"} - ,{"name": "k_EControllerActionOrigin_PS4_Circle","value": "40"} - ,{"name": "k_EControllerActionOrigin_PS4_Triangle","value": "41"} - ,{"name": "k_EControllerActionOrigin_PS4_Square","value": "42"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftBumper","value": "43"} - ,{"name": "k_EControllerActionOrigin_PS4_RightBumper","value": "44"} - ,{"name": "k_EControllerActionOrigin_PS4_Options","value": "45"} - ,{"name": "k_EControllerActionOrigin_PS4_Share","value": "46"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftPad_Touch","value": "47"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftPad_Swipe","value": "48"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftPad_Click","value": "49"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftPad_DPadNorth","value": "50"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftPad_DPadSouth","value": "51"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftPad_DPadWest","value": "52"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftPad_DPadEast","value": "53"} - ,{"name": "k_EControllerActionOrigin_PS4_RightPad_Touch","value": "54"} - ,{"name": "k_EControllerActionOrigin_PS4_RightPad_Swipe","value": "55"} - ,{"name": "k_EControllerActionOrigin_PS4_RightPad_Click","value": "56"} - ,{"name": "k_EControllerActionOrigin_PS4_RightPad_DPadNorth","value": "57"} - ,{"name": "k_EControllerActionOrigin_PS4_RightPad_DPadSouth","value": "58"} - ,{"name": "k_EControllerActionOrigin_PS4_RightPad_DPadWest","value": "59"} - ,{"name": "k_EControllerActionOrigin_PS4_RightPad_DPadEast","value": "60"} - ,{"name": "k_EControllerActionOrigin_PS4_CenterPad_Touch","value": "61"} - ,{"name": "k_EControllerActionOrigin_PS4_CenterPad_Swipe","value": "62"} - ,{"name": "k_EControllerActionOrigin_PS4_CenterPad_Click","value": "63"} - ,{"name": "k_EControllerActionOrigin_PS4_CenterPad_DPadNorth","value": "64"} - ,{"name": "k_EControllerActionOrigin_PS4_CenterPad_DPadSouth","value": "65"} - ,{"name": "k_EControllerActionOrigin_PS4_CenterPad_DPadWest","value": "66"} - ,{"name": "k_EControllerActionOrigin_PS4_CenterPad_DPadEast","value": "67"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftTrigger_Pull","value": "68"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftTrigger_Click","value": "69"} - ,{"name": "k_EControllerActionOrigin_PS4_RightTrigger_Pull","value": "70"} - ,{"name": "k_EControllerActionOrigin_PS4_RightTrigger_Click","value": "71"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftStick_Move","value": "72"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftStick_Click","value": "73"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftStick_DPadNorth","value": "74"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftStick_DPadSouth","value": "75"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftStick_DPadWest","value": "76"} - ,{"name": "k_EControllerActionOrigin_PS4_LeftStick_DPadEast","value": "77"} - ,{"name": "k_EControllerActionOrigin_PS4_RightStick_Move","value": "78"} - ,{"name": "k_EControllerActionOrigin_PS4_RightStick_Click","value": "79"} - ,{"name": "k_EControllerActionOrigin_PS4_RightStick_DPadNorth","value": "80"} - ,{"name": "k_EControllerActionOrigin_PS4_RightStick_DPadSouth","value": "81"} - ,{"name": "k_EControllerActionOrigin_PS4_RightStick_DPadWest","value": "82"} - ,{"name": "k_EControllerActionOrigin_PS4_RightStick_DPadEast","value": "83"} - ,{"name": "k_EControllerActionOrigin_PS4_DPad_North","value": "84"} - ,{"name": "k_EControllerActionOrigin_PS4_DPad_South","value": "85"} - ,{"name": "k_EControllerActionOrigin_PS4_DPad_West","value": "86"} - ,{"name": "k_EControllerActionOrigin_PS4_DPad_East","value": "87"} - ,{"name": "k_EControllerActionOrigin_PS4_Gyro_Move","value": "88"} - ,{"name": "k_EControllerActionOrigin_PS4_Gyro_Pitch","value": "89"} - ,{"name": "k_EControllerActionOrigin_PS4_Gyro_Yaw","value": "90"} - ,{"name": "k_EControllerActionOrigin_PS4_Gyro_Roll","value": "91"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_A","value": "92"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_B","value": "93"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_X","value": "94"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_Y","value": "95"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftBumper","value": "96"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightBumper","value": "97"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_Menu","value": "98"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_View","value": "99"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull","value": "100"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click","value": "101"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull","value": "102"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightTrigger_Click","value": "103"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftStick_Move","value": "104"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftStick_Click","value": "105"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth","value": "106"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth","value": "107"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest","value": "108"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast","value": "109"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightStick_Move","value": "110"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightStick_Click","value": "111"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth","value": "112"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth","value": "113"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest","value": "114"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast","value": "115"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_DPad_North","value": "116"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_DPad_South","value": "117"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_DPad_West","value": "118"} - ,{"name": "k_EControllerActionOrigin_XBoxOne_DPad_East","value": "119"} - ,{"name": "k_EControllerActionOrigin_XBox360_A","value": "120"} - ,{"name": "k_EControllerActionOrigin_XBox360_B","value": "121"} - ,{"name": "k_EControllerActionOrigin_XBox360_X","value": "122"} - ,{"name": "k_EControllerActionOrigin_XBox360_Y","value": "123"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftBumper","value": "124"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightBumper","value": "125"} - ,{"name": "k_EControllerActionOrigin_XBox360_Start","value": "126"} - ,{"name": "k_EControllerActionOrigin_XBox360_Back","value": "127"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftTrigger_Pull","value": "128"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftTrigger_Click","value": "129"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightTrigger_Pull","value": "130"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightTrigger_Click","value": "131"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftStick_Move","value": "132"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftStick_Click","value": "133"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth","value": "134"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth","value": "135"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftStick_DPadWest","value": "136"} - ,{"name": "k_EControllerActionOrigin_XBox360_LeftStick_DPadEast","value": "137"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightStick_Move","value": "138"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightStick_Click","value": "139"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightStick_DPadNorth","value": "140"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightStick_DPadSouth","value": "141"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightStick_DPadWest","value": "142"} - ,{"name": "k_EControllerActionOrigin_XBox360_RightStick_DPadEast","value": "143"} - ,{"name": "k_EControllerActionOrigin_XBox360_DPad_North","value": "144"} - ,{"name": "k_EControllerActionOrigin_XBox360_DPad_South","value": "145"} - ,{"name": "k_EControllerActionOrigin_XBox360_DPad_West","value": "146"} - ,{"name": "k_EControllerActionOrigin_XBox360_DPad_East","value": "147"} - ,{"name": "k_EControllerActionOrigin_SteamV2_A","value": "148"} - ,{"name": "k_EControllerActionOrigin_SteamV2_B","value": "149"} - ,{"name": "k_EControllerActionOrigin_SteamV2_X","value": "150"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Y","value": "151"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftBumper","value": "152"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightBumper","value": "153"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip_Lower","value": "154"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip_Upper","value": "155"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip_Lower","value": "156"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip_Upper","value": "157"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure","value": "158"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightBumper_Pressure","value": "159"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure","value": "160"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip_Pressure","value": "161"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure","value": "162"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure","value": "163"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Start","value": "164"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Back","value": "165"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Touch","value": "166"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Swipe","value": "167"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Click","value": "168"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Pressure","value": "169"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth","value": "170"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth","value": "171"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest","value": "172"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast","value": "173"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Touch","value": "174"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Swipe","value": "175"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Click","value": "176"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Pressure","value": "177"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth","value": "178"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth","value": "179"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadWest","value": "180"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadEast","value": "181"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull","value": "182"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftTrigger_Click","value": "183"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightTrigger_Pull","value": "184"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightTrigger_Click","value": "185"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_Move","value": "186"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_Click","value": "187"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth","value": "188"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth","value": "189"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest","value": "190"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast","value": "191"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Move","value": "192"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Pitch","value": "193"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Yaw","value": "194"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Roll","value": "195"} - ,{"name": "k_EControllerActionOrigin_Switch_A","value": "196"} - ,{"name": "k_EControllerActionOrigin_Switch_B","value": "197"} - ,{"name": "k_EControllerActionOrigin_Switch_X","value": "198"} - ,{"name": "k_EControllerActionOrigin_Switch_Y","value": "199"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftBumper","value": "200"} - ,{"name": "k_EControllerActionOrigin_Switch_RightBumper","value": "201"} - ,{"name": "k_EControllerActionOrigin_Switch_Plus","value": "202"} - ,{"name": "k_EControllerActionOrigin_Switch_Minus","value": "203"} - ,{"name": "k_EControllerActionOrigin_Switch_Capture","value": "204"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftTrigger_Pull","value": "205"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftTrigger_Click","value": "206"} - ,{"name": "k_EControllerActionOrigin_Switch_RightTrigger_Pull","value": "207"} - ,{"name": "k_EControllerActionOrigin_Switch_RightTrigger_Click","value": "208"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftStick_Move","value": "209"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftStick_Click","value": "210"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftStick_DPadNorth","value": "211"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftStick_DPadSouth","value": "212"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftStick_DPadWest","value": "213"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftStick_DPadEast","value": "214"} - ,{"name": "k_EControllerActionOrigin_Switch_RightStick_Move","value": "215"} - ,{"name": "k_EControllerActionOrigin_Switch_RightStick_Click","value": "216"} - ,{"name": "k_EControllerActionOrigin_Switch_RightStick_DPadNorth","value": "217"} - ,{"name": "k_EControllerActionOrigin_Switch_RightStick_DPadSouth","value": "218"} - ,{"name": "k_EControllerActionOrigin_Switch_RightStick_DPadWest","value": "219"} - ,{"name": "k_EControllerActionOrigin_Switch_RightStick_DPadEast","value": "220"} - ,{"name": "k_EControllerActionOrigin_Switch_DPad_North","value": "221"} - ,{"name": "k_EControllerActionOrigin_Switch_DPad_South","value": "222"} - ,{"name": "k_EControllerActionOrigin_Switch_DPad_West","value": "223"} - ,{"name": "k_EControllerActionOrigin_Switch_DPad_East","value": "224"} - ,{"name": "k_EControllerActionOrigin_Switch_ProGyro_Move","value": "225"} - ,{"name": "k_EControllerActionOrigin_Switch_ProGyro_Pitch","value": "226"} - ,{"name": "k_EControllerActionOrigin_Switch_ProGyro_Yaw","value": "227"} - ,{"name": "k_EControllerActionOrigin_Switch_ProGyro_Roll","value": "228"} - ,{"name": "k_EControllerActionOrigin_Switch_RightGyro_Move","value": "229"} - ,{"name": "k_EControllerActionOrigin_Switch_RightGyro_Pitch","value": "230"} - ,{"name": "k_EControllerActionOrigin_Switch_RightGyro_Yaw","value": "231"} - ,{"name": "k_EControllerActionOrigin_Switch_RightGyro_Roll","value": "232"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftGyro_Move","value": "233"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftGyro_Pitch","value": "234"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftGyro_Yaw","value": "235"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftGyro_Roll","value": "236"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftGrip_Lower","value": "237"} - ,{"name": "k_EControllerActionOrigin_Switch_LeftGrip_Upper","value": "238"} - ,{"name": "k_EControllerActionOrigin_Switch_RightGrip_Lower","value": "239"} - ,{"name": "k_EControllerActionOrigin_Switch_RightGrip_Upper","value": "240"} - ,{"name": "k_EControllerActionOrigin_Count","value": "241"} - ,{"name": "k_EControllerActionOrigin_MaximumPossibleValue","value": "32767"} -]} -, {"enumname": "ESteamControllerLEDFlag","values": [ - {"name": "k_ESteamControllerLEDFlag_SetColor","value": "0"} - ,{"name": "k_ESteamControllerLEDFlag_RestoreUserDefault","value": "1"} -]} -, {"enumname": "EUGCMatchingUGCType","values": [ - {"name": "k_EUGCMatchingUGCType_Items","value": "0"} - ,{"name": "k_EUGCMatchingUGCType_Items_Mtx","value": "1"} - ,{"name": "k_EUGCMatchingUGCType_Items_ReadyToUse","value": "2"} - ,{"name": "k_EUGCMatchingUGCType_Collections","value": "3"} - ,{"name": "k_EUGCMatchingUGCType_Artwork","value": "4"} - ,{"name": "k_EUGCMatchingUGCType_Videos","value": "5"} - ,{"name": "k_EUGCMatchingUGCType_Screenshots","value": "6"} - ,{"name": "k_EUGCMatchingUGCType_AllGuides","value": "7"} - ,{"name": "k_EUGCMatchingUGCType_WebGuides","value": "8"} - ,{"name": "k_EUGCMatchingUGCType_IntegratedGuides","value": "9"} - ,{"name": "k_EUGCMatchingUGCType_UsableInGame","value": "10"} - ,{"name": "k_EUGCMatchingUGCType_ControllerBindings","value": "11"} - ,{"name": "k_EUGCMatchingUGCType_GameManagedItems","value": "12"} - ,{"name": "k_EUGCMatchingUGCType_All","value": "-1"} -]} -, {"enumname": "EUserUGCList","values": [ - {"name": "k_EUserUGCList_Published","value": "0"} - ,{"name": "k_EUserUGCList_VotedOn","value": "1"} - ,{"name": "k_EUserUGCList_VotedUp","value": "2"} - ,{"name": "k_EUserUGCList_VotedDown","value": "3"} - ,{"name": "k_EUserUGCList_WillVoteLater","value": "4"} - ,{"name": "k_EUserUGCList_Favorited","value": "5"} - ,{"name": "k_EUserUGCList_Subscribed","value": "6"} - ,{"name": "k_EUserUGCList_UsedOrPlayed","value": "7"} - ,{"name": "k_EUserUGCList_Followed","value": "8"} -]} -, {"enumname": "EUserUGCListSortOrder","values": [ - {"name": "k_EUserUGCListSortOrder_CreationOrderDesc","value": "0"} - ,{"name": "k_EUserUGCListSortOrder_CreationOrderAsc","value": "1"} - ,{"name": "k_EUserUGCListSortOrder_TitleAsc","value": "2"} - ,{"name": "k_EUserUGCListSortOrder_LastUpdatedDesc","value": "3"} - ,{"name": "k_EUserUGCListSortOrder_SubscriptionDateDesc","value": "4"} - ,{"name": "k_EUserUGCListSortOrder_VoteScoreDesc","value": "5"} - ,{"name": "k_EUserUGCListSortOrder_ForModeration","value": "6"} -]} -, {"enumname": "EUGCQuery","values": [ - {"name": "k_EUGCQuery_RankedByVote","value": "0"} - ,{"name": "k_EUGCQuery_RankedByPublicationDate","value": "1"} - ,{"name": "k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate","value": "2"} - ,{"name": "k_EUGCQuery_RankedByTrend","value": "3"} - ,{"name": "k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate","value": "4"} - ,{"name": "k_EUGCQuery_CreatedByFriendsRankedByPublicationDate","value": "5"} - ,{"name": "k_EUGCQuery_RankedByNumTimesReported","value": "6"} - ,{"name": "k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate","value": "7"} - ,{"name": "k_EUGCQuery_NotYetRated","value": "8"} - ,{"name": "k_EUGCQuery_RankedByTotalVotesAsc","value": "9"} - ,{"name": "k_EUGCQuery_RankedByVotesUp","value": "10"} - ,{"name": "k_EUGCQuery_RankedByTextSearch","value": "11"} - ,{"name": "k_EUGCQuery_RankedByTotalUniqueSubscriptions","value": "12"} - ,{"name": "k_EUGCQuery_RankedByPlaytimeTrend","value": "13"} - ,{"name": "k_EUGCQuery_RankedByTotalPlaytime","value": "14"} - ,{"name": "k_EUGCQuery_RankedByAveragePlaytimeTrend","value": "15"} - ,{"name": "k_EUGCQuery_RankedByLifetimeAveragePlaytime","value": "16"} - ,{"name": "k_EUGCQuery_RankedByPlaytimeSessionsTrend","value": "17"} - ,{"name": "k_EUGCQuery_RankedByLifetimePlaytimeSessions","value": "18"} -]} -, {"enumname": "EItemUpdateStatus","values": [ - {"name": "k_EItemUpdateStatusInvalid","value": "0"} - ,{"name": "k_EItemUpdateStatusPreparingConfig","value": "1"} - ,{"name": "k_EItemUpdateStatusPreparingContent","value": "2"} - ,{"name": "k_EItemUpdateStatusUploadingContent","value": "3"} - ,{"name": "k_EItemUpdateStatusUploadingPreviewFile","value": "4"} - ,{"name": "k_EItemUpdateStatusCommittingChanges","value": "5"} -]} -, {"enumname": "EItemState","values": [ - {"name": "k_EItemStateNone","value": "0"} - ,{"name": "k_EItemStateSubscribed","value": "1"} - ,{"name": "k_EItemStateLegacyItem","value": "2"} - ,{"name": "k_EItemStateInstalled","value": "4"} - ,{"name": "k_EItemStateNeedsUpdate","value": "8"} - ,{"name": "k_EItemStateDownloading","value": "16"} - ,{"name": "k_EItemStateDownloadPending","value": "32"} -]} -, {"enumname": "EItemStatistic","values": [ - {"name": "k_EItemStatistic_NumSubscriptions","value": "0"} - ,{"name": "k_EItemStatistic_NumFavorites","value": "1"} - ,{"name": "k_EItemStatistic_NumFollowers","value": "2"} - ,{"name": "k_EItemStatistic_NumUniqueSubscriptions","value": "3"} - ,{"name": "k_EItemStatistic_NumUniqueFavorites","value": "4"} - ,{"name": "k_EItemStatistic_NumUniqueFollowers","value": "5"} - ,{"name": "k_EItemStatistic_NumUniqueWebsiteViews","value": "6"} - ,{"name": "k_EItemStatistic_ReportScore","value": "7"} - ,{"name": "k_EItemStatistic_NumSecondsPlayed","value": "8"} - ,{"name": "k_EItemStatistic_NumPlaytimeSessions","value": "9"} - ,{"name": "k_EItemStatistic_NumComments","value": "10"} - ,{"name": "k_EItemStatistic_NumSecondsPlayedDuringTimePeriod","value": "11"} - ,{"name": "k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod","value": "12"} -]} -, {"enumname": "EItemPreviewType","values": [ - {"name": "k_EItemPreviewType_Image","value": "0"} - ,{"name": "k_EItemPreviewType_YouTubeVideo","value": "1"} - ,{"name": "k_EItemPreviewType_Sketchfab","value": "2"} - ,{"name": "k_EItemPreviewType_EnvironmentMap_HorizontalCross","value": "3"} - ,{"name": "k_EItemPreviewType_EnvironmentMap_LatLong","value": "4"} - ,{"name": "k_EItemPreviewType_ReservedMax","value": "255"} -]} -, {"enumname": "ISteamHTMLSurface::EHTMLMouseButton","values": [ - {"name": "eHTMLMouseButton_Left","value": "0"} - ,{"name": "eHTMLMouseButton_Right","value": "1"} - ,{"name": "eHTMLMouseButton_Middle","value": "2"} -]} -, {"enumname": "ISteamHTMLSurface::EMouseCursor","values": [ - {"name": "dc_user","value": "0"} - ,{"name": "dc_none","value": "1"} - ,{"name": "dc_arrow","value": "2"} - ,{"name": "dc_ibeam","value": "3"} - ,{"name": "dc_hourglass","value": "4"} - ,{"name": "dc_waitarrow","value": "5"} - ,{"name": "dc_crosshair","value": "6"} - ,{"name": "dc_up","value": "7"} - ,{"name": "dc_sizenw","value": "8"} - ,{"name": "dc_sizese","value": "9"} - ,{"name": "dc_sizene","value": "10"} - ,{"name": "dc_sizesw","value": "11"} - ,{"name": "dc_sizew","value": "12"} - ,{"name": "dc_sizee","value": "13"} - ,{"name": "dc_sizen","value": "14"} - ,{"name": "dc_sizes","value": "15"} - ,{"name": "dc_sizewe","value": "16"} - ,{"name": "dc_sizens","value": "17"} - ,{"name": "dc_sizeall","value": "18"} - ,{"name": "dc_no","value": "19"} - ,{"name": "dc_hand","value": "20"} - ,{"name": "dc_blank","value": "21"} - ,{"name": "dc_middle_pan","value": "22"} - ,{"name": "dc_north_pan","value": "23"} - ,{"name": "dc_north_east_pan","value": "24"} - ,{"name": "dc_east_pan","value": "25"} - ,{"name": "dc_south_east_pan","value": "26"} - ,{"name": "dc_south_pan","value": "27"} - ,{"name": "dc_south_west_pan","value": "28"} - ,{"name": "dc_west_pan","value": "29"} - ,{"name": "dc_north_west_pan","value": "30"} - ,{"name": "dc_alias","value": "31"} - ,{"name": "dc_cell","value": "32"} - ,{"name": "dc_colresize","value": "33"} - ,{"name": "dc_copycur","value": "34"} - ,{"name": "dc_verticaltext","value": "35"} - ,{"name": "dc_rowresize","value": "36"} - ,{"name": "dc_zoomin","value": "37"} - ,{"name": "dc_zoomout","value": "38"} - ,{"name": "dc_help","value": "39"} - ,{"name": "dc_custom","value": "40"} - ,{"name": "dc_last","value": "41"} -]} -, {"enumname": "ISteamHTMLSurface::EHTMLKeyModifiers","values": [ - {"name": "k_eHTMLKeyModifier_None","value": "0"} - ,{"name": "k_eHTMLKeyModifier_AltDown","value": "1"} - ,{"name": "k_eHTMLKeyModifier_CtrlDown","value": "2"} - ,{"name": "k_eHTMLKeyModifier_ShiftDown","value": "4"} -]} -, {"enumname": "ESteamItemFlags","values": [ - {"name": "k_ESteamItemNoTrade","value": "1"} - ,{"name": "k_ESteamItemRemoved","value": "256"} - ,{"name": "k_ESteamItemConsumed","value": "512"} -]} -, {"enumname": "EParentalFeature","values": [ - {"name": "k_EFeatureInvalid","value": "0"} - ,{"name": "k_EFeatureStore","value": "1"} - ,{"name": "k_EFeatureCommunity","value": "2"} - ,{"name": "k_EFeatureProfile","value": "3"} - ,{"name": "k_EFeatureFriends","value": "4"} - ,{"name": "k_EFeatureNews","value": "5"} - ,{"name": "k_EFeatureTrading","value": "6"} - ,{"name": "k_EFeatureSettings","value": "7"} - ,{"name": "k_EFeatureConsole","value": "8"} - ,{"name": "k_EFeatureBrowser","value": "9"} - ,{"name": "k_EFeatureParentalSetup","value": "10"} - ,{"name": "k_EFeatureLibrary","value": "11"} - ,{"name": "k_EFeatureTest","value": "12"} - ,{"name": "k_EFeatureMax","value": "13"} -]} -], -"consts":[{ - "constname": "k_iSteamUserCallbacks","consttype": "int", "constval": "100"} -,{ - "constname": "k_iSteamGameServerCallbacks","consttype": "int", "constval": "200"} -,{ - "constname": "k_iSteamFriendsCallbacks","consttype": "int", "constval": "300"} -,{ - "constname": "k_iSteamBillingCallbacks","consttype": "int", "constval": "400"} -,{ - "constname": "k_iSteamMatchmakingCallbacks","consttype": "int", "constval": "500"} -,{ - "constname": "k_iSteamContentServerCallbacks","consttype": "int", "constval": "600"} -,{ - "constname": "k_iSteamUtilsCallbacks","consttype": "int", "constval": "700"} -,{ - "constname": "k_iClientFriendsCallbacks","consttype": "int", "constval": "800"} -,{ - "constname": "k_iClientUserCallbacks","consttype": "int", "constval": "900"} -,{ - "constname": "k_iSteamAppsCallbacks","consttype": "int", "constval": "1000"} -,{ - "constname": "k_iSteamUserStatsCallbacks","consttype": "int", "constval": "1100"} -,{ - "constname": "k_iSteamNetworkingCallbacks","consttype": "int", "constval": "1200"} -,{ - "constname": "k_iSteamNetworkingSocketsCallbacks","consttype": "int", "constval": "1220"} -,{ - "constname": "k_iSteamNetworkingMessagesCallbacks","consttype": "int", "constval": "1250"} -,{ - "constname": "k_iClientRemoteStorageCallbacks","consttype": "int", "constval": "1300"} -,{ - "constname": "k_iClientDepotBuilderCallbacks","consttype": "int", "constval": "1400"} -,{ - "constname": "k_iSteamGameServerItemsCallbacks","consttype": "int", "constval": "1500"} -,{ - "constname": "k_iClientUtilsCallbacks","consttype": "int", "constval": "1600"} -,{ - "constname": "k_iSteamGameCoordinatorCallbacks","consttype": "int", "constval": "1700"} -,{ - "constname": "k_iSteamGameServerStatsCallbacks","consttype": "int", "constval": "1800"} -,{ - "constname": "k_iSteam2AsyncCallbacks","consttype": "int", "constval": "1900"} -,{ - "constname": "k_iSteamGameStatsCallbacks","consttype": "int", "constval": "2000"} -,{ - "constname": "k_iClientHTTPCallbacks","consttype": "int", "constval": "2100"} -,{ - "constname": "k_iClientScreenshotsCallbacks","consttype": "int", "constval": "2200"} -,{ - "constname": "k_iSteamScreenshotsCallbacks","consttype": "int", "constval": "2300"} -,{ - "constname": "k_iClientAudioCallbacks","consttype": "int", "constval": "2400"} -,{ - "constname": "k_iClientUnifiedMessagesCallbacks","consttype": "int", "constval": "2500"} -,{ - "constname": "k_iSteamStreamLauncherCallbacks","consttype": "int", "constval": "2600"} -,{ - "constname": "k_iClientControllerCallbacks","consttype": "int", "constval": "2700"} -,{ - "constname": "k_iSteamControllerCallbacks","consttype": "int", "constval": "2800"} -,{ - "constname": "k_iClientParentalSettingsCallbacks","consttype": "int", "constval": "2900"} -,{ - "constname": "k_iClientDeviceAuthCallbacks","consttype": "int", "constval": "3000"} -,{ - "constname": "k_iClientNetworkDeviceManagerCallbacks","consttype": "int", "constval": "3100"} -,{ - "constname": "k_iClientMusicCallbacks","consttype": "int", "constval": "3200"} -,{ - "constname": "k_iClientRemoteClientManagerCallbacks","consttype": "int", "constval": "3300"} -,{ - "constname": "k_iClientUGCCallbacks","consttype": "int", "constval": "3400"} -,{ - "constname": "k_iSteamStreamClientCallbacks","consttype": "int", "constval": "3500"} -,{ - "constname": "k_IClientProductBuilderCallbacks","consttype": "int", "constval": "3600"} -,{ - "constname": "k_iClientShortcutsCallbacks","consttype": "int", "constval": "3700"} -,{ - "constname": "k_iClientRemoteControlManagerCallbacks","consttype": "int", "constval": "3800"} -,{ - "constname": "k_iSteamAppListCallbacks","consttype": "int", "constval": "3900"} -,{ - "constname": "k_iSteamMusicCallbacks","consttype": "int", "constval": "4000"} -,{ - "constname": "k_iSteamMusicRemoteCallbacks","consttype": "int", "constval": "4100"} -,{ - "constname": "k_iClientVRCallbacks","consttype": "int", "constval": "4200"} -,{ - "constname": "k_iClientGameNotificationCallbacks","consttype": "int", "constval": "4300"} -,{ - "constname": "k_iSteamGameNotificationCallbacks","consttype": "int", "constval": "4400"} -,{ - "constname": "k_iSteamHTMLSurfaceCallbacks","consttype": "int", "constval": "4500"} -,{ - "constname": "k_iClientVideoCallbacks","consttype": "int", "constval": "4600"} -,{ - "constname": "k_iClientInventoryCallbacks","consttype": "int", "constval": "4700"} -,{ - "constname": "k_iClientBluetoothManagerCallbacks","consttype": "int", "constval": "4800"} -,{ - "constname": "k_iClientSharedConnectionCallbacks","consttype": "int", "constval": "4900"} -,{ - "constname": "k_ISteamParentalSettingsCallbacks","consttype": "int", "constval": "5000"} -,{ - "constname": "k_iClientShaderCallbacks","consttype": "int", "constval": "5100"} -,{ - "constname": "k_iSteamGameSearchCallbacks","consttype": "int", "constval": "5200"} -,{ - "constname": "k_iSteamPartiesCallbacks","consttype": "int", "constval": "5300"} -,{ - "constname": "k_iClientPartiesCallbacks","consttype": "int", "constval": "5400"} -,{ - "constname": "k_cchPersonaNameMax","consttype": "int", "constval": "128"} -,{ - "constname": "k_cwchPersonaNameMax","consttype": "int", "constval": "32"} -,{ - "constname": "k_cchMaxRichPresenceKeys","consttype": "int", "constval": "30"} -,{ - "constname": "k_cchMaxRichPresenceKeyLength","consttype": "int", "constval": "64"} -,{ - "constname": "k_cchMaxRichPresenceValueLength","consttype": "int", "constval": "256"} -,{ - "constname": "k_cchStatNameMax","consttype": "int", "constval": "128"} -,{ - "constname": "k_cchLeaderboardNameMax","consttype": "int", "constval": "128"} -,{ - "constname": "k_cLeaderboardDetailsMax","consttype": "int", "constval": "64"} -,{ - "constname": "k_SteamItemInstanceIDInvalid","consttype": "const SteamItemInstanceID_t", "constval": "18446744073709551615"} -,{ - "constname": "k_SteamInventoryResultInvalid","consttype": "const SteamInventoryResult_t", "constval": "-1"} -], -"structs":[{"struct": "CSteamID","fields": [ -{ "fieldname": "m_steamid", "fieldtype": "union SteamID_t"}]} -,{"struct": "CSteamID::SteamID_t","fields": [ -{ "fieldname": "m_comp", "fieldtype": "struct SteamIDComponent_t"}, -{ "fieldname": "m_unAll64Bits", "fieldtype": "uint64"}]} -,{"struct": "CSteamID::SteamID_t::SteamIDComponent_t","fields": [ -{ "fieldname": "m_unAccountID", "fieldtype": "uint32"}, -{ "fieldname": "m_unAccountInstance", "fieldtype": "unsigned int"}, -{ "fieldname": "m_EAccountType", "fieldtype": "unsigned int"}, -{ "fieldname": "m_EUniverse", "fieldtype": "enum EUniverse"}]} -,{"struct": "CGameID::GameID_t","fields": [ -{ "fieldname": "m_nAppID", "fieldtype": "unsigned int"}, -{ "fieldname": "m_nType", "fieldtype": "unsigned int"}, -{ "fieldname": "m_nModID", "fieldtype": "unsigned int"}]} -,{"struct": "CGameID::(anonymous)","fields": [ -{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_gameID", "fieldtype": "struct CGameID::GameID_t"}]} -,{"struct": "ValvePackingSentinel_t","fields": [ -{ "fieldname": "m_u32", "fieldtype": "uint32"}, -{ "fieldname": "m_u64", "fieldtype": "uint64"}, -{ "fieldname": "m_u16", "fieldtype": "uint16"}, -{ "fieldname": "m_d", "fieldtype": "double"}]} -,{"struct": "CCallbackBase","fields": [ -{ "fieldname": "m_nCallbackFlags", "fieldtype": "uint8"}, -{ "fieldname": "m_iCallback", "fieldtype": "int"}]} -,{"struct": "CCallResult","fields": [ -{ "fieldname": "m_hAPICall", "fieldtype": "SteamAPICall_t"}, -{ "fieldname": "m_pObj", "fieldtype": "T *"}, -{ "fieldname": "m_Func", "fieldtype": "func_t"}]} -,{"struct": "CCallback","fields": [ -{ "fieldname": "m_pObj", "fieldtype": "T *"}, -{ "fieldname": "m_Func", "fieldtype": "func_t"}]} -,{"struct": "CSteamAPIContext","fields": [ -{ "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, -{ "fieldname": "m_pSteamUser", "fieldtype": "class ISteamUser *"}, -{ "fieldname": "m_pSteamFriends", "fieldtype": "class ISteamFriends *"}, -{ "fieldname": "m_pSteamUtils", "fieldtype": "class ISteamUtils *"}, -{ "fieldname": "m_pSteamMatchmaking", "fieldtype": "class ISteamMatchmaking *"}, -{ "fieldname": "m_pSteamGameSearch", "fieldtype": "class ISteamGameSearch *"}, -{ "fieldname": "m_pSteamUserStats", "fieldtype": "class ISteamUserStats *"}, -{ "fieldname": "m_pSteamApps", "fieldtype": "class ISteamApps *"}, -{ "fieldname": "m_pSteamMatchmakingServers", "fieldtype": "class ISteamMatchmakingServers *"}, -{ "fieldname": "m_pSteamNetworking", "fieldtype": "class ISteamNetworking *"}, -{ "fieldname": "m_pSteamRemoteStorage", "fieldtype": "class ISteamRemoteStorage *"}, -{ "fieldname": "m_pSteamScreenshots", "fieldtype": "class ISteamScreenshots *"}, -{ "fieldname": "m_pSteamHTTP", "fieldtype": "class ISteamHTTP *"}, -{ "fieldname": "m_pController", "fieldtype": "class ISteamController *"}, -{ "fieldname": "m_pSteamUGC", "fieldtype": "class ISteamUGC *"}, -{ "fieldname": "m_pSteamAppList", "fieldtype": "class ISteamAppList *"}, -{ "fieldname": "m_pSteamMusic", "fieldtype": "class ISteamMusic *"}, -{ "fieldname": "m_pSteamMusicRemote", "fieldtype": "class ISteamMusicRemote *"}, -{ "fieldname": "m_pSteamHTMLSurface", "fieldtype": "class ISteamHTMLSurface *"}, -{ "fieldname": "m_pSteamInventory", "fieldtype": "class ISteamInventory *"}, -{ "fieldname": "m_pSteamVideo", "fieldtype": "class ISteamVideo *"}, -{ "fieldname": "m_pSteamParentalSettings", "fieldtype": "class ISteamParentalSettings *"}, -{ "fieldname": "m_pSteamInput", "fieldtype": "class ISteamInput *"}]} -,{"struct": "CSteamGameServerAPIContext","fields": [ -{ "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, -{ "fieldname": "m_pSteamGameServer", "fieldtype": "class ISteamGameServer *"}, -{ "fieldname": "m_pSteamGameServerUtils", "fieldtype": "class ISteamUtils *"}, -{ "fieldname": "m_pSteamGameServerNetworking", "fieldtype": "class ISteamNetworking *"}, -{ "fieldname": "m_pSteamGameServerStats", "fieldtype": "class ISteamGameServerStats *"}, -{ "fieldname": "m_pSteamHTTP", "fieldtype": "class ISteamHTTP *"}, -{ "fieldname": "m_pSteamInventory", "fieldtype": "class ISteamInventory *"}, -{ "fieldname": "m_pSteamUGC", "fieldtype": "class ISteamUGC *"}, -{ "fieldname": "m_pSteamApps", "fieldtype": "class ISteamApps *"}]} -,{"struct": "CallbackMsg_t","fields": [ -{ "fieldname": "m_hSteamUser", "fieldtype": "HSteamUser"}, -{ "fieldname": "m_iCallback", "fieldtype": "int"}, -{ "fieldname": "m_pubParam", "fieldtype": "uint8 *"}, -{ "fieldname": "m_cubParam", "fieldtype": "int"}]} -,{"struct": "SteamServerConnectFailure_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_bStillRetrying", "fieldtype": "_Bool"}]} -,{"struct": "SteamServersDisconnected_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "ClientGameServerDeny_t","fields": [ -{ "fieldname": "m_uAppID", "fieldtype": "uint32"}, -{ "fieldname": "m_unGameServerIP", "fieldtype": "uint32"}, -{ "fieldname": "m_usGameServerPort", "fieldtype": "uint16"}, -{ "fieldname": "m_bSecure", "fieldtype": "uint16"}, -{ "fieldname": "m_uReason", "fieldtype": "uint32"}]} -,{"struct": "ValidateAuthTicketResponse_t","fields": [ -{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_eAuthSessionResponse", "fieldtype": "enum EAuthSessionResponse"}, -{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} -,{"struct": "MicroTxnAuthorizationResponse_t","fields": [ -{ "fieldname": "m_unAppID", "fieldtype": "uint32"}, -{ "fieldname": "m_ulOrderID", "fieldtype": "uint64"}, -{ "fieldname": "m_bAuthorized", "fieldtype": "uint8"}]} -,{"struct": "EncryptedAppTicketResponse_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "GetAuthSessionTicketResponse_t","fields": [ -{ "fieldname": "m_hAuthTicket", "fieldtype": "HAuthTicket"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "GameWebCallback_t","fields": [ -{ "fieldname": "m_szURL", "fieldtype": "char [256]"}]} -,{"struct": "StoreAuthURLResponse_t","fields": [ -{ "fieldname": "m_szURL", "fieldtype": "char [512]"}]} -,{"struct": "MarketEligibilityResponse_t","fields": [ -{ "fieldname": "m_bAllowed", "fieldtype": "_Bool"}, -{ "fieldname": "m_eNotAllowedReason", "fieldtype": "enum EMarketNotAllowedReasonFlags"}, -{ "fieldname": "m_rtAllowedAtTime", "fieldtype": "RTime32"}, -{ "fieldname": "m_cdaySteamGuardRequiredDays", "fieldtype": "int"}, -{ "fieldname": "m_cdayNewDeviceCooldown", "fieldtype": "int"}]} -,{"struct": "FriendGameInfo_t","fields": [ -{ "fieldname": "m_gameID", "fieldtype": "class CGameID"}, -{ "fieldname": "m_unGameIP", "fieldtype": "uint32"}, -{ "fieldname": "m_usGamePort", "fieldtype": "uint16"}, -{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, -{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} -,{"struct": "FriendSessionStateInfo_t","fields": [ -{ "fieldname": "m_uiOnlineSessionInstances", "fieldtype": "uint32"}, -{ "fieldname": "m_uiPublishedToFriendsSessionInstance", "fieldtype": "uint8"}]} -,{"struct": "PersonaStateChange_t","fields": [ -{ "fieldname": "m_ulSteamID", "fieldtype": "uint64"}, -{ "fieldname": "m_nChangeFlags", "fieldtype": "int"}]} -,{"struct": "GameOverlayActivated_t","fields": [ -{ "fieldname": "m_bActive", "fieldtype": "uint8"}]} -,{"struct": "GameServerChangeRequested_t","fields": [ -{ "fieldname": "m_rgchServer", "fieldtype": "char [64]"}, -{ "fieldname": "m_rgchPassword", "fieldtype": "char [64]"}]} -,{"struct": "GameLobbyJoinRequested_t","fields": [ -{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}]} -,{"struct": "AvatarImageLoaded_t","fields": [ -{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_iImage", "fieldtype": "int"}, -{ "fieldname": "m_iWide", "fieldtype": "int"}, -{ "fieldname": "m_iTall", "fieldtype": "int"}]} -,{"struct": "ClanOfficerListResponse_t","fields": [ -{ "fieldname": "m_steamIDClan", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_cOfficers", "fieldtype": "int"}, -{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} -,{"struct": "FriendRichPresenceUpdate_t","fields": [ -{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "GameRichPresenceJoinRequested_t","fields": [ -{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_rgchConnect", "fieldtype": "char [256]"}]} -,{"struct": "GameConnectedClanChatMsg_t","fields": [ -{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} -,{"struct": "GameConnectedChatJoin_t","fields": [ -{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} -,{"struct": "GameConnectedChatLeave_t","fields": [ -{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_bKicked", "fieldtype": "_Bool"}, -{ "fieldname": "m_bDropped", "fieldtype": "_Bool"}]} -,{"struct": "DownloadClanActivityCountsResult_t","fields": [ -{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}]} -,{"struct": "JoinClanChatRoomCompletionResult_t","fields": [ -{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_eChatRoomEnterResponse", "fieldtype": "enum EChatRoomEnterResponse"}]} -,{"struct": "GameConnectedFriendChatMsg_t","fields": [ -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} -,{"struct": "FriendsGetFollowerCount_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_nCount", "fieldtype": "int"}]} -,{"struct": "FriendsIsFollowing_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_bIsFollowing", "fieldtype": "_Bool"}]} -,{"struct": "FriendsEnumerateFollowingList_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_rgSteamID", "fieldtype": "class CSteamID [50]"}, -{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, -{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}]} -,{"struct": "SetPersonaNameResponse_t","fields": [ -{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}, -{ "fieldname": "m_bLocalSuccess", "fieldtype": "_Bool"}, -{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} -,{"struct": "LowBatteryPower_t","fields": [ -{ "fieldname": "m_nMinutesBatteryLeft", "fieldtype": "uint8"}]} -,{"struct": "SteamAPICallCompleted_t","fields": [ -{ "fieldname": "m_hAsyncCall", "fieldtype": "SteamAPICall_t"}, -{ "fieldname": "m_iCallback", "fieldtype": "int"}, -{ "fieldname": "m_cubParam", "fieldtype": "uint32"}]} -,{"struct": "CheckFileSignature_t","fields": [ -{ "fieldname": "m_eCheckFileSignature", "fieldtype": "enum ECheckFileSignature"}]} -,{"struct": "GamepadTextInputDismissed_t","fields": [ -{ "fieldname": "m_bSubmitted", "fieldtype": "_Bool"}, -{ "fieldname": "m_unSubmittedText", "fieldtype": "uint32"}]} -,{"struct": "MatchMakingKeyValuePair_t","fields": [ -{ "fieldname": "m_szKey", "fieldtype": "char [256]"}, -{ "fieldname": "m_szValue", "fieldtype": "char [256]"}]} -,{"struct": "servernetadr_t","fields": [ -{ "fieldname": "m_usConnectionPort", "fieldtype": "uint16"}, -{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, -{ "fieldname": "m_unIP", "fieldtype": "uint32"}]} -,{"struct": "gameserveritem_t","fields": [ -{ "fieldname": "m_NetAdr", "fieldtype": "class servernetadr_t"}, -{ "fieldname": "m_nPing", "fieldtype": "int"}, -{ "fieldname": "m_bHadSuccessfulResponse", "fieldtype": "_Bool"}, -{ "fieldname": "m_bDoNotRefresh", "fieldtype": "_Bool"}, -{ "fieldname": "m_szGameDir", "fieldtype": "char [32]"}, -{ "fieldname": "m_szMap", "fieldtype": "char [32]"}, -{ "fieldname": "m_szGameDescription", "fieldtype": "char [64]"}, -{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, -{ "fieldname": "m_nPlayers", "fieldtype": "int"}, -{ "fieldname": "m_nMaxPlayers", "fieldtype": "int"}, -{ "fieldname": "m_nBotPlayers", "fieldtype": "int"}, -{ "fieldname": "m_bPassword", "fieldtype": "_Bool"}, -{ "fieldname": "m_bSecure", "fieldtype": "_Bool"}, -{ "fieldname": "m_ulTimeLastPlayed", "fieldtype": "uint32"}, -{ "fieldname": "m_nServerVersion", "fieldtype": "int"}, -{ "fieldname": "m_szServerName", "fieldtype": "char [64]"}, -{ "fieldname": "m_szGameTags", "fieldtype": "char [128]"}, -{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}]} -,{"struct": "SteamPartyBeaconLocation_t","fields": [ -{ "fieldname": "m_eType", "fieldtype": "enum ESteamPartyBeaconLocationType"}, -{ "fieldname": "m_ulLocationID", "fieldtype": "uint64"}]} -,{"struct": "FavoritesListChanged_t","fields": [ -{ "fieldname": "m_nIP", "fieldtype": "uint32"}, -{ "fieldname": "m_nQueryPort", "fieldtype": "uint32"}, -{ "fieldname": "m_nConnPort", "fieldtype": "uint32"}, -{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, -{ "fieldname": "m_nFlags", "fieldtype": "uint32"}, -{ "fieldname": "m_bAdd", "fieldtype": "_Bool"}, -{ "fieldname": "m_unAccountId", "fieldtype": "AccountID_t"}]} -,{"struct": "LobbyInvite_t","fields": [ -{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, -{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}]} -,{"struct": "LobbyEnter_t","fields": [ -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, -{ "fieldname": "m_rgfChatPermissions", "fieldtype": "uint32"}, -{ "fieldname": "m_bLocked", "fieldtype": "_Bool"}, -{ "fieldname": "m_EChatRoomEnterResponse", "fieldtype": "uint32"}]} -,{"struct": "LobbyDataUpdate_t","fields": [ -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, -{ "fieldname": "m_ulSteamIDMember", "fieldtype": "uint64"}, -{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} -,{"struct": "LobbyChatUpdate_t","fields": [ -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, -{ "fieldname": "m_ulSteamIDUserChanged", "fieldtype": "uint64"}, -{ "fieldname": "m_ulSteamIDMakingChange", "fieldtype": "uint64"}, -{ "fieldname": "m_rgfChatMemberStateChange", "fieldtype": "uint32"}]} -,{"struct": "LobbyChatMsg_t","fields": [ -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, -{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, -{ "fieldname": "m_eChatEntryType", "fieldtype": "uint8"}, -{ "fieldname": "m_iChatID", "fieldtype": "uint32"}]} -,{"struct": "LobbyGameCreated_t","fields": [ -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, -{ "fieldname": "m_ulSteamIDGameServer", "fieldtype": "uint64"}, -{ "fieldname": "m_unIP", "fieldtype": "uint32"}, -{ "fieldname": "m_usPort", "fieldtype": "uint16"}]} -,{"struct": "LobbyMatchList_t","fields": [ -{ "fieldname": "m_nLobbiesMatching", "fieldtype": "uint32"}]} -,{"struct": "LobbyKicked_t","fields": [ -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, -{ "fieldname": "m_ulSteamIDAdmin", "fieldtype": "uint64"}, -{ "fieldname": "m_bKickedDueToDisconnect", "fieldtype": "uint8"}]} -,{"struct": "LobbyCreated_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}]} -,{"struct": "PSNGameBootInviteResult_t","fields": [ -{ "fieldname": "m_bGameBootInviteExists", "fieldtype": "_Bool"}, -{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} -,{"struct": "FavoritesListAccountsUpdated_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "SearchForGameProgressCallback_t","fields": [ -{ "fieldname": "m_ullSearchID", "fieldtype": "uint64"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_lobbyID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_steamIDEndedSearch", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_nSecondsRemainingEstimate", "fieldtype": "int32"}, -{ "fieldname": "m_cPlayersSearching", "fieldtype": "int32"}]} -,{"struct": "SearchForGameResultCallback_t","fields": [ -{ "fieldname": "m_ullSearchID", "fieldtype": "uint64"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nCountPlayersInGame", "fieldtype": "int32"}, -{ "fieldname": "m_nCountAcceptedGame", "fieldtype": "int32"}, -{ "fieldname": "m_steamIDHost", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_bFinalCallback", "fieldtype": "_Bool"}]} -,{"struct": "RequestPlayersForGameProgressCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ullSearchID", "fieldtype": "uint64"}]} -,{"struct": "RequestPlayersForGameResultCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ullSearchID", "fieldtype": "uint64"}, -{ "fieldname": "m_SteamIDPlayerFound", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_SteamIDLobby", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_ePlayerAcceptState", "fieldtype": "PlayerAcceptState_t"}, - { - "fieldname": "m_nPlayerIndex", - "fieldtype": "int32" - }, -{ "fieldname": "m_nTotalPlayersFound", "fieldtype": "int32"}, -{ "fieldname": "m_nTotalPlayersAcceptedGame", "fieldtype": "int32"}, -{ "fieldname": "m_nSuggestedTeamIndex", "fieldtype": "int32"}, -{ "fieldname": "m_ullUniqueGameID", "fieldtype": "uint64"}]} -,{"struct": "RequestPlayersForGameFinalResultCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ullSearchID", "fieldtype": "uint64"}, -{ "fieldname": "m_ullUniqueGameID", "fieldtype": "uint64"}]} -,{"struct": "SubmitPlayerResultResultCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "ullUniqueGameID", "fieldtype": "uint64"}, -{ "fieldname": "steamIDPlayer", "fieldtype": "class CSteamID"}]} -,{"struct": "EndGameResultCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "ullUniqueGameID", "fieldtype": "uint64"}]} -,{"struct": "JoinPartyCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ulBeaconID", "fieldtype": "PartyBeaconID_t"}, -{ "fieldname": "m_SteamIDBeaconOwner", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_rgchConnectString", "fieldtype": "char [256]"}]} -,{"struct": "CreateBeaconCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ulBeaconID", "fieldtype": "PartyBeaconID_t"}]} -,{"struct": "ReservationNotificationCallback_t","fields": [ -{ "fieldname": "m_ulBeaconID", "fieldtype": "PartyBeaconID_t"}, -{ "fieldname": "m_steamIDJoiner", "fieldtype": "class CSteamID"}]} -,{"struct": "ChangeNumOpenSlotsCallback_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "SteamParamStringArray_t","fields": [ -{ "fieldname": "m_ppStrings", "fieldtype": "const char **"}, -{ "fieldname": "m_nNumStrings", "fieldtype": "int32"}]} -,{"struct": "RemoteStorageAppSyncedClient_t","fields": [ -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_unNumDownloads", "fieldtype": "int"}]} -,{"struct": "RemoteStorageAppSyncedServer_t","fields": [ -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_unNumUploads", "fieldtype": "int"}]} -,{"struct": "RemoteStorageAppSyncProgress_t","fields": [ -{ "fieldname": "m_rgchCurrentFile", "fieldtype": "char [260]"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_uBytesTransferredThisChunk", "fieldtype": "uint32"}, -{ "fieldname": "m_dAppPercentComplete", "fieldtype": "double"}, -{ "fieldname": "m_bUploading", "fieldtype": "_Bool"}]} -,{"struct": "RemoteStorageAppSyncStatusCheck_t","fields": [ -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "RemoteStorageFileShareResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, -{ "fieldname": "m_rgchFilename", "fieldtype": "char [260]"}]} -,{"struct": "RemoteStoragePublishFileResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} -,{"struct": "RemoteStorageDeletePublishedFileResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "RemoteStorageEnumerateUserPublishedFilesResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, -{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, -{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} -,{"struct": "RemoteStorageSubscribePublishedFileResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, -{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, -{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, -{ "fieldname": "m_rgRTimeSubscribed", "fieldtype": "uint32 [50]"}]} -,{"struct": "RemoteStorageUnsubscribePublishedFileResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "RemoteStorageUpdatePublishedFileResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} -,{"struct": "RemoteStorageDownloadUGCResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_nSizeInBytes", "fieldtype": "int32"}, -{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, -{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}]} -,{"struct": "RemoteStorageGetPublishedFileDetailsResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, -{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, -{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, -{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, -{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, -{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, -{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, -{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, -{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, -{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, -{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, -{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, -{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, -{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, -{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, -{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, -{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}]} -,{"struct": "RemoteStorageEnumerateWorkshopFilesResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, -{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, -{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, -{ "fieldname": "m_rgScore", "fieldtype": "float [50]"}, -{ "fieldname": "m_nAppId", "fieldtype": "AppId_t"}, -{ "fieldname": "m_unStartIndex", "fieldtype": "uint32"}]} -,{"struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_unPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nVotesFor", "fieldtype": "int32"}, -{ "fieldname": "m_nVotesAgainst", "fieldtype": "int32"}, -{ "fieldname": "m_nReports", "fieldtype": "int32"}, -{ "fieldname": "m_fScore", "fieldtype": "float"}]} -,{"struct": "RemoteStoragePublishedFileSubscribed_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "RemoteStoragePublishedFileUnsubscribed_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "RemoteStoragePublishedFileDeleted_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "RemoteStorageUserVoteDetails_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_eVote", "fieldtype": "enum EWorkshopVote"}]} -,{"struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, -{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, -{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} -,{"struct": "RemoteStorageSetUserPublishedFileActionResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}]} -,{"struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}, -{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, -{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, -{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, -{ "fieldname": "m_rgRTimeUpdated", "fieldtype": "uint32 [50]"}]} -,{"struct": "RemoteStoragePublishFileProgress_t","fields": [ -{ "fieldname": "m_dPercentFile", "fieldtype": "double"}, -{ "fieldname": "m_bPreview", "fieldtype": "_Bool"}]} -,{"struct": "RemoteStoragePublishedFileUpdated_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_ulUnused", "fieldtype": "uint64"}]} -,{"struct": "RemoteStorageFileWriteAsyncComplete_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "RemoteStorageFileReadAsyncComplete_t","fields": [ -{ "fieldname": "m_hFileReadAsync", "fieldtype": "SteamAPICall_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nOffset", "fieldtype": "uint32"}, -{ "fieldname": "m_cubRead", "fieldtype": "uint32"}]} -,{"struct": "LeaderboardEntry_t","fields": [ -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_nGlobalRank", "fieldtype": "int32"}, -{ "fieldname": "m_nScore", "fieldtype": "int32"}, -{ "fieldname": "m_cDetails", "fieldtype": "int32"}, -{ "fieldname": "m_hUGC", "fieldtype": "UGCHandle_t"}]} -,{"struct": "UserStatsReceived_t","fields": [ -{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} -,{"struct": "UserStatsStored_t","fields": [ -{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "UserAchievementStored_t","fields": [ -{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_bGroupAchievement", "fieldtype": "_Bool"}, -{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, -{ "fieldname": "m_nCurProgress", "fieldtype": "uint32"}, -{ "fieldname": "m_nMaxProgress", "fieldtype": "uint32"}]} -,{"struct": "LeaderboardFindResult_t","fields": [ -{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, -{ "fieldname": "m_bLeaderboardFound", "fieldtype": "uint8"}]} -,{"struct": "LeaderboardScoresDownloaded_t","fields": [ -{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, -{ "fieldname": "m_hSteamLeaderboardEntries", "fieldtype": "SteamLeaderboardEntries_t"}, -{ "fieldname": "m_cEntryCount", "fieldtype": "int"}]} -,{"struct": "LeaderboardScoreUploaded_t","fields": [ -{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, -{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, -{ "fieldname": "m_nScore", "fieldtype": "int32"}, -{ "fieldname": "m_bScoreChanged", "fieldtype": "uint8"}, -{ "fieldname": "m_nGlobalRankNew", "fieldtype": "int"}, -{ "fieldname": "m_nGlobalRankPrevious", "fieldtype": "int"}]} -,{"struct": "NumberOfCurrentPlayers_t","fields": [ -{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, -{ "fieldname": "m_cPlayers", "fieldtype": "int32"}]} -,{"struct": "UserStatsUnloaded_t","fields": [ -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} -,{"struct": "UserAchievementIconFetched_t","fields": [ -{ "fieldname": "m_nGameID", "fieldtype": "class CGameID"}, -{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, -{ "fieldname": "m_bAchieved", "fieldtype": "_Bool"}, -{ "fieldname": "m_nIconHandle", "fieldtype": "int"}]} -,{"struct": "GlobalAchievementPercentagesReady_t","fields": [ -{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "LeaderboardUGCSet_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}]} -,{"struct": "PS3TrophiesInstalled_t","fields": [ -{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ulRequiredDiskSpace", "fieldtype": "uint64"}]} -,{"struct": "GlobalStatsReceived_t","fields": [ -{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "DlcInstalled_t","fields": [ -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "RegisterActivationCodeResponse_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum ERegisterActivationCodeResult"}, -{ "fieldname": "m_unPackageRegistered", "fieldtype": "uint32"}]} -,{"struct": "AppProofOfPurchaseKeyResponse_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, -{ "fieldname": "m_cchKeyLength", "fieldtype": "uint32"}, -{ "fieldname": "m_rgchKey", "fieldtype": "char [240]"}]} -,{"struct": "FileDetailsResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ulFileSize", "fieldtype": "uint64"}, -{ "fieldname": "m_FileSHA", "fieldtype": "uint8 [20]"}, -{ "fieldname": "m_unFlags", "fieldtype": "uint32"}]} -,{"struct": "P2PSessionState_t","fields": [ -{ "fieldname": "m_bConnectionActive", "fieldtype": "uint8"}, -{ "fieldname": "m_bConnecting", "fieldtype": "uint8"}, -{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}, -{ "fieldname": "m_bUsingRelay", "fieldtype": "uint8"}, -{ "fieldname": "m_nBytesQueuedForSend", "fieldtype": "int32"}, -{ "fieldname": "m_nPacketsQueuedForSend", "fieldtype": "int32"}, -{ "fieldname": "m_nRemoteIP", "fieldtype": "uint32"}, -{ "fieldname": "m_nRemotePort", "fieldtype": "uint16"}]} -,{"struct": "P2PSessionRequest_t","fields": [ -{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}]} -,{"struct": "P2PSessionConnectFail_t","fields": [ -{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}]} -,{"struct": "SocketStatusCallback_t","fields": [ -{ "fieldname": "m_hSocket", "fieldtype": "SNetSocket_t"}, -{ "fieldname": "m_hListenSocket", "fieldtype": "SNetListenSocket_t"}, -{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_eSNetSocketState", "fieldtype": "int"}]} -,{"struct": "ScreenshotReady_t","fields": [ -{ "fieldname": "m_hLocal", "fieldtype": "ScreenshotHandle"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "VolumeHasChanged_t","fields": [ -{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} -,{"struct": "MusicPlayerWantsShuffled_t","fields": [ -{ "fieldname": "m_bShuffled", "fieldtype": "_Bool"}]} -,{"struct": "MusicPlayerWantsLooped_t","fields": [ -{ "fieldname": "m_bLooped", "fieldtype": "_Bool"}]} -,{"struct": "MusicPlayerWantsVolume_t","fields": [ -{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} -,{"struct": "MusicPlayerSelectsQueueEntry_t","fields": [ -{ "fieldname": "nID", "fieldtype": "int"}]} -,{"struct": "MusicPlayerSelectsPlaylistEntry_t","fields": [ -{ "fieldname": "nID", "fieldtype": "int"}]} -,{"struct": "MusicPlayerWantsPlayingRepeatStatus_t","fields": [ -{ "fieldname": "m_nPlayingRepeatStatus", "fieldtype": "int"}]} -,{"struct": "HTTPRequestCompleted_t","fields": [ -{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, -{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, -{ "fieldname": "m_bRequestSuccessful", "fieldtype": "_Bool"}, -{ "fieldname": "m_eStatusCode", "fieldtype": "enum EHTTPStatusCode"}, -{ "fieldname": "m_unBodySize", "fieldtype": "uint32"}]} -,{"struct": "HTTPRequestHeadersReceived_t","fields": [ -{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, -{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}]} -,{"struct": "HTTPRequestDataReceived_t","fields": [ -{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, -{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, -{ "fieldname": "m_cOffset", "fieldtype": "uint32"}, -{ "fieldname": "m_cBytesReceived", "fieldtype": "uint32"}]} -,{"struct": "SteamUGCDetails_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, -{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, -{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, -{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, -{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, -{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, -{ "fieldname": "m_rtimeAddedToUserList", "fieldtype": "uint32"}, -{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, -{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, -{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}, -{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, -{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, -{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, -{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, -{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, -{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, -{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, -{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, -{ "fieldname": "m_unVotesUp", "fieldtype": "uint32"}, -{ "fieldname": "m_unVotesDown", "fieldtype": "uint32"}, -{ "fieldname": "m_flScore", "fieldtype": "float"}, -{ "fieldname": "m_unNumChildren", "fieldtype": "uint32"}]} -,{"struct": "SteamUGCQueryCompleted_t","fields": [ -{ "fieldname": "m_handle", "fieldtype": "UGCQueryHandle_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_unNumResultsReturned", "fieldtype": "uint32"}, -{ "fieldname": "m_unTotalMatchingResults", "fieldtype": "uint32"}, -{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}, -{ "fieldname": "m_rgchNextCursor", "fieldtype": "char [256]"}]} -,{"struct": "SteamUGCRequestUGCDetailsResult_t","fields": [ -{ "fieldname": "m_details", "fieldtype": "struct SteamUGCDetails_t"}, -{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} -,{"struct": "CreateItemResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} -,{"struct": "SubmitItemUpdateResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "DownloadItemResult_t","fields": [ -{ "fieldname": "m_unAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "UserFavoriteItemsListChanged_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_bWasAddRequest", "fieldtype": "_Bool"}]} -,{"struct": "SetUserItemVoteResult_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_bVoteUp", "fieldtype": "_Bool"}]} -,{"struct": "GetUserItemVoteResult_t","fields": [ -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_bVotedUp", "fieldtype": "_Bool"}, -{ "fieldname": "m_bVotedDown", "fieldtype": "_Bool"}, -{ "fieldname": "m_bVoteSkipped", "fieldtype": "_Bool"}]} -,{"struct": "StartPlaytimeTrackingResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "StopPlaytimeTrackingResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "AddUGCDependencyResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nChildPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "RemoveUGCDependencyResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nChildPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "AddAppDependencyResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "RemoveAppDependencyResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "GetAppDependenciesResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, -{ "fieldname": "m_rgAppIDs", "fieldtype": "AppId_t [32]"}, -{ "fieldname": "m_nNumAppDependencies", "fieldtype": "uint32"}, -{ "fieldname": "m_nTotalNumAppDependencies", "fieldtype": "uint32"}]} -,{"struct": "DeleteItemResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} -,{"struct": "SteamAppInstalled_t","fields": [ -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "SteamAppUninstalled_t","fields": [ -{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} -,{"struct": "HTML_BrowserReady_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} -,{"struct": "HTML_NeedsPaint_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pBGRA", "fieldtype": "const char *"}, -{ "fieldname": "unWide", "fieldtype": "uint32"}, -{ "fieldname": "unTall", "fieldtype": "uint32"}, -{ "fieldname": "unUpdateX", "fieldtype": "uint32"}, -{ "fieldname": "unUpdateY", "fieldtype": "uint32"}, -{ "fieldname": "unUpdateWide", "fieldtype": "uint32"}, -{ "fieldname": "unUpdateTall", "fieldtype": "uint32"}, -{ "fieldname": "unScrollX", "fieldtype": "uint32"}, -{ "fieldname": "unScrollY", "fieldtype": "uint32"}, -{ "fieldname": "flPageScale", "fieldtype": "float"}, -{ "fieldname": "unPageSerial", "fieldtype": "uint32"}]} -,{"struct": "HTML_StartRequest_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchURL", "fieldtype": "const char *"}, -{ "fieldname": "pchTarget", "fieldtype": "const char *"}, -{ "fieldname": "pchPostData", "fieldtype": "const char *"}, -{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}]} -,{"struct": "HTML_CloseBrowser_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} -,{"struct": "HTML_URLChanged_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchURL", "fieldtype": "const char *"}, -{ "fieldname": "pchPostData", "fieldtype": "const char *"}, -{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}, -{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}, -{ "fieldname": "bNewNavigation", "fieldtype": "_Bool"}]} -,{"struct": "HTML_FinishedRequest_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchURL", "fieldtype": "const char *"}, -{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}]} -,{"struct": "HTML_OpenLinkInNewTab_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchURL", "fieldtype": "const char *"}]} -,{"struct": "HTML_ChangedTitle_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchTitle", "fieldtype": "const char *"}]} -,{"struct": "HTML_SearchResults_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "unResults", "fieldtype": "uint32"}, -{ "fieldname": "unCurrentMatch", "fieldtype": "uint32"}]} -,{"struct": "HTML_CanGoBackAndForward_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "bCanGoBack", "fieldtype": "_Bool"}, -{ "fieldname": "bCanGoForward", "fieldtype": "_Bool"}]} -,{"struct": "HTML_HorizontalScroll_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, -{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, -{ "fieldname": "flPageScale", "fieldtype": "float"}, -{ "fieldname": "bVisible", "fieldtype": "_Bool"}, -{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} -,{"struct": "HTML_VerticalScroll_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, -{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, -{ "fieldname": "flPageScale", "fieldtype": "float"}, -{ "fieldname": "bVisible", "fieldtype": "_Bool"}, -{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} -,{"struct": "HTML_LinkAtPosition_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "x", "fieldtype": "uint32"}, -{ "fieldname": "y", "fieldtype": "uint32"}, -{ "fieldname": "pchURL", "fieldtype": "const char *"}, -{ "fieldname": "bInput", "fieldtype": "_Bool"}, -{ "fieldname": "bLiveLink", "fieldtype": "_Bool"}]} -,{"struct": "HTML_JSAlert_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} -,{"struct": "HTML_JSConfirm_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} -,{"struct": "HTML_FileOpenDialog_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchTitle", "fieldtype": "const char *"}, -{ "fieldname": "pchInitialFile", "fieldtype": "const char *"}]} -,{"struct": "HTML_NewWindow_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchURL", "fieldtype": "const char *"}, -{ "fieldname": "unX", "fieldtype": "uint32"}, -{ "fieldname": "unY", "fieldtype": "uint32"}, -{ "fieldname": "unWide", "fieldtype": "uint32"}, -{ "fieldname": "unTall", "fieldtype": "uint32"}, -{ "fieldname": "unNewWindow_BrowserHandle_IGNORE", "fieldtype": "HHTMLBrowser"}]} -,{"struct": "HTML_SetCursor_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "eMouseCursor", "fieldtype": "uint32"}]} -,{"struct": "HTML_StatusText_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} -,{"struct": "HTML_ShowToolTip_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} -,{"struct": "HTML_UpdateToolTip_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} -,{"struct": "HTML_HideToolTip_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} -,{"struct": "HTML_BrowserRestarted_t","fields": [ -{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, -{ "fieldname": "unOldBrowserHandle", "fieldtype": "HHTMLBrowser"}]} -,{"struct": "SteamItemDetails_t","fields": [ -{ "fieldname": "m_itemId", "fieldtype": "SteamItemInstanceID_t"}, -{ "fieldname": "m_iDefinition", "fieldtype": "SteamItemDef_t"}, -{ "fieldname": "m_unQuantity", "fieldtype": "uint16"}, -{ "fieldname": "m_unFlags", "fieldtype": "uint16"}]} -,{"struct": "SteamInventoryResultReady_t","fields": [ -{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}, -{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} -,{"struct": "SteamInventoryFullUpdate_t","fields": [ -{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}]} -,{"struct": "SteamInventoryEligiblePromoItemDefIDs_t","fields": [ -{ "fieldname": "m_result", "fieldtype": "enum EResult"}, -{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_numEligiblePromoItemDefs", "fieldtype": "int"}, -{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} -,{"struct": "SteamInventoryStartPurchaseResult_t","fields": [ -{ "fieldname": "m_result", "fieldtype": "enum EResult"}, -{ "fieldname": "m_ulOrderID", "fieldtype": "uint64"}, -{ "fieldname": "m_ulTransID", "fieldtype": "uint64"}]} -,{"struct": "SteamInventoryRequestPricesResult_t","fields": [ -{ "fieldname": "m_result", "fieldtype": "enum EResult"}, -{ "fieldname": "m_rgchCurrency", "fieldtype": "char [4]"}]} -,{"struct": "BroadcastUploadStop_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EBroadcastUploadResult"}]} -,{"struct": "GetVideoURLResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}]} -,{"struct": "GetOPFSettingsResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}]} -,{"struct": "GSClientApprove_t","fields": [ -{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} -,{"struct": "GSClientDeny_t","fields": [ -{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}, -{ "fieldname": "m_rgchOptionalText", "fieldtype": "char [128]"}]} -,{"struct": "GSClientKick_t","fields": [ -{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}]} -,{"struct": "GSClientAchievementStatus_t","fields": [ -{ "fieldname": "m_SteamID", "fieldtype": "uint64"}, -{ "fieldname": "m_pchAchievement", "fieldtype": "char [128]"}, -{ "fieldname": "m_bUnlocked", "fieldtype": "_Bool"}]} -,{"struct": "GSPolicyResponse_t","fields": [ -{ "fieldname": "m_bSecure", "fieldtype": "uint8"}]} -,{"struct": "GSGameplayStats_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_nRank", "fieldtype": "int32"}, -{ "fieldname": "m_unTotalConnects", "fieldtype": "uint32"}, -{ "fieldname": "m_unTotalMinutesPlayed", "fieldtype": "uint32"}]} -,{"struct": "GSClientGroupStatus_t","fields": [ -{ "fieldname": "m_SteamIDUser", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_SteamIDGroup", "fieldtype": "class CSteamID"}, -{ "fieldname": "m_bMember", "fieldtype": "_Bool"}, -{ "fieldname": "m_bOfficer", "fieldtype": "_Bool"}]} -,{"struct": "GSReputation_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_unReputationScore", "fieldtype": "uint32"}, -{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, -{ "fieldname": "m_unBannedIP", "fieldtype": "uint32"}, -{ "fieldname": "m_usBannedPort", "fieldtype": "uint16"}, -{ "fieldname": "m_ulBannedGameID", "fieldtype": "uint64"}, -{ "fieldname": "m_unBanExpires", "fieldtype": "uint32"}]} -,{"struct": "AssociateWithClanResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} -,{"struct": "ComputeNewPlayerCompatibilityResult_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_cPlayersThatDontLikeCandidate", "fieldtype": "int"}, -{ "fieldname": "m_cPlayersThatCandidateDoesntLike", "fieldtype": "int"}, -{ "fieldname": "m_cClanPlayersThatDontLikeCandidate", "fieldtype": "int"}, -{ "fieldname": "m_SteamIDCandidate", "fieldtype": "class CSteamID"}]} -,{"struct": "GSStatsReceived_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} -,{"struct": "GSStatsStored_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} -,{"struct": "GSStatsUnloaded_t","fields": [ -{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} -], -"methods":[{ - "classname": "ISteamClient", - "methodname": "CreateSteamPipe", - "returntype": "HSteamPipe" +{ + "callback_structs": [ + { + "callback_id": 101, + "fields": [], + "struct": "SteamServersConnected_t" + }, + { + "callback_id": 102, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bStillRetrying", "fieldtype":"bool" } + ], + "struct": "SteamServerConnectFailure_t" + }, + { + "callback_id": 103, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "SteamServersDisconnected_t" + }, + { + "callback_id": 113, + "fields": [ + { "fieldname":"m_uAppID", "fieldtype":"uint32" }, + { "fieldname":"m_unGameServerIP", "fieldtype":"uint32" }, + { "fieldname":"m_usGameServerPort", "fieldtype":"uint16" }, + { "fieldname":"m_bSecure", "fieldtype":"uint16" }, + { "fieldname":"m_uReason", "fieldtype":"uint32" } + ], + "struct": "ClientGameServerDeny_t" + }, + { + "callback_id": 117, + "enums": [ + { + "enumname": "EFailureType", + "fqname": "IPCFailure_t::EFailureType", + "values": [ + { "name":"k_EFailureFlushedCallbackQueue", "value":"0" }, + { "name":"k_EFailurePipeFail", "value":"1" } + ] + } + ], + "fields": [ + { "fieldname":"m_eFailureType", "fieldtype":"uint8" } + ], + "struct": "IPCFailure_t" + }, + { + "callback_id": 125, + "fields": [], + "struct": "LicensesUpdated_t" + }, + { + "callback_id": 143, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_eAuthSessionResponse", "fieldtype":"EAuthSessionResponse" }, + { "fieldname":"m_OwnerSteamID", "fieldtype":"CSteamID" } + ], + "struct": "ValidateAuthTicketResponse_t" + }, + { + "callback_id": 152, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"uint32" }, + { "fieldname":"m_ulOrderID", "fieldtype":"uint64" }, + { "fieldname":"m_bAuthorized", "fieldtype":"uint8" } + ], + "struct": "MicroTxnAuthorizationResponse_t" + }, + { + "callback_id": 154, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "EncryptedAppTicketResponse_t" + }, + { + "callback_id": 163, + "fields": [ + { "fieldname":"m_hAuthTicket", "fieldtype":"HAuthTicket" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "GetAuthSessionTicketResponse_t" + }, + { + "callback_id": 164, + "fields": [ + { "fieldname":"m_szURL", "fieldtype":"char [256]" } + ], + "struct": "GameWebCallback_t" + }, + { + "callback_id": 165, + "fields": [ + { "fieldname":"m_szURL", "fieldtype":"char [512]" } + ], + "struct": "StoreAuthURLResponse_t" + }, + { + "callback_id": 166, + "fields": [ + { "fieldname":"m_bAllowed", "fieldtype":"bool" }, + { "fieldname":"m_eNotAllowedReason", "fieldtype":"EMarketNotAllowedReasonFlags" }, + { "fieldname":"m_rtAllowedAtTime", "fieldtype":"RTime32" }, + { "fieldname":"m_cdaySteamGuardRequiredDays", "fieldtype":"int" }, + { "fieldname":"m_cdayNewDeviceCooldown", "fieldtype":"int" } + ], + "struct": "MarketEligibilityResponse_t" + }, + { + "callback_id": 167, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_appid", "fieldtype":"AppId_t" }, + { "fieldname":"m_bApplicable", "fieldtype":"bool" }, + { "fieldname":"m_csecsLast5h", "fieldtype":"int32" }, + { "fieldname":"m_progress", "fieldtype":"EDurationControlProgress" }, + { "fieldname":"m_notification", "fieldtype":"EDurationControlNotification" }, + { "fieldname":"m_csecsToday", "fieldtype":"int32" }, + { "fieldname":"m_csecsRemaining", "fieldtype":"int32" } + ], + "struct": "DurationControl_t" + }, + { + "callback_id": 304, + "fields": [ + { "fieldname":"m_ulSteamID", "fieldtype":"uint64" }, + { "fieldname":"m_nChangeFlags", "fieldtype":"int" } + ], + "struct": "PersonaStateChange_t" + }, + { + "callback_id": 331, + "fields": [ + { "fieldname":"m_bActive", "fieldtype":"uint8" } + ], + "struct": "GameOverlayActivated_t" + }, + { + "callback_id": 332, + "fields": [ + { "fieldname":"m_rgchServer", "fieldtype":"char [64]" }, + { "fieldname":"m_rgchPassword", "fieldtype":"char [64]" } + ], + "struct": "GameServerChangeRequested_t" + }, + { + "callback_id": 333, + "fields": [ + { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" } + ], + "struct": "GameLobbyJoinRequested_t" + }, + { + "callback_id": 334, + "fields": [ + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_iImage", "fieldtype":"int" }, + { "fieldname":"m_iWide", "fieldtype":"int" }, + { "fieldname":"m_iTall", "fieldtype":"int" } + ], + "struct": "AvatarImageLoaded_t" + }, + { + "callback_id": 335, + "fields": [ + { "fieldname":"m_steamIDClan", "fieldtype":"CSteamID" }, + { "fieldname":"m_cOfficers", "fieldtype":"int" }, + { "fieldname":"m_bSuccess", "fieldtype":"uint8" } + ], + "struct": "ClanOfficerListResponse_t" + }, + { + "callback_id": 336, + "fields": [ + { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "FriendRichPresenceUpdate_t" + }, + { + "callback_id": 337, + "fields": [ + { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" }, + { "fieldname":"m_rgchConnect", "fieldtype":"char [256]" } + ], + "struct": "GameRichPresenceJoinRequested_t" + }, + { + "callback_id": 338, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_iMessageID", "fieldtype":"int" } + ], + "struct": "GameConnectedClanChatMsg_t" + }, + { + "callback_id": 339, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GameConnectedChatJoin_t" + }, + { + "callback_id": 340, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_bKicked", "fieldtype":"bool" }, + { "fieldname":"m_bDropped", "fieldtype":"bool" } + ], + "struct": "GameConnectedChatLeave_t" + }, + { + "callback_id": 341, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"bool" } + ], + "struct": "DownloadClanActivityCountsResult_t" + }, + { + "callback_id": 342, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_eChatRoomEnterResponse", "fieldtype":"EChatRoomEnterResponse" } + ], + "struct": "JoinClanChatRoomCompletionResult_t" + }, + { + "callback_id": 343, + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_iMessageID", "fieldtype":"int" } + ], + "struct": "GameConnectedFriendChatMsg_t" + }, + { + "callback_id": 344, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_nCount", "fieldtype":"int" } + ], + "struct": "FriendsGetFollowerCount_t" + }, + { + "callback_id": 345, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_bIsFollowing", "fieldtype":"bool" } + ], + "struct": "FriendsIsFollowing_t" + }, + { + "callback_id": 346, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_rgSteamID", "fieldtype":"CSteamID [50]" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" } + ], + "struct": "FriendsEnumerateFollowingList_t" + }, + { + "callback_id": 347, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"bool" }, + { "fieldname":"m_bLocalSuccess", "fieldtype":"bool" }, + { "fieldname":"m_result", "fieldtype":"EResult" } + ], + "struct": "SetPersonaNameResponse_t" + }, + { + "callback_id": 348, + "fields": [], + "struct": "UnreadChatMessagesChanged_t" + }, + { + "callback_id": 349, + "fields": [ + { "fieldname":"rgchURI", "fieldtype":"char [1024]" } + ], + "struct": "OverlayBrowserProtocolNavigation_t" + }, + { + "callback_id": 350, + "fields": [ + { "fieldname":"m_steamID", "fieldtype":"CSteamID" } + ], + "struct": "EquippedProfileItemsChanged_t" + }, + { + "callback_id": 351, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_bHasAnimatedAvatar", "fieldtype":"bool" }, + { "fieldname":"m_bHasAvatarFrame", "fieldtype":"bool" }, + { "fieldname":"m_bHasProfileModifier", "fieldtype":"bool" }, + { "fieldname":"m_bHasProfileBackground", "fieldtype":"bool" }, + { "fieldname":"m_bHasMiniProfileBackground", "fieldtype":"bool" } + ], + "struct": "EquippedProfileItems_t" + }, + { + "callback_id": 701, + "fields": [], + "struct": "IPCountry_t" + }, + { + "callback_id": 702, + "fields": [ + { "fieldname":"m_nMinutesBatteryLeft", "fieldtype":"uint8" } + ], + "struct": "LowBatteryPower_t" + }, + { + "callback_id": 703, + "fields": [ + { "fieldname":"m_hAsyncCall", "fieldtype":"SteamAPICall_t" }, + { "fieldname":"m_iCallback", "fieldtype":"int" }, + { "fieldname":"m_cubParam", "fieldtype":"uint32" } + ], + "struct": "SteamAPICallCompleted_t" + }, + { + "callback_id": 704, + "fields": [], + "struct": "SteamShutdown_t" + }, + { + "callback_id": 705, + "fields": [ + { "fieldname":"m_eCheckFileSignature", "fieldtype":"ECheckFileSignature" } + ], + "struct": "CheckFileSignature_t" + }, + { + "callback_id": 714, + "fields": [ + { "fieldname":"m_bSubmitted", "fieldtype":"bool" }, + { "fieldname":"m_unSubmittedText", "fieldtype":"uint32" } + ], + "struct": "GamepadTextInputDismissed_t" + }, + { + "callback_id": 736, + "fields": [], + "struct": "AppResumingFromSuspend_t" + }, + { + "callback_id": 738, + "fields": [], + "struct": "FloatingGamepadTextInputDismissed_t" + }, + { + "callback_id": 502, + "fields": [ + { "fieldname":"m_nIP", "fieldtype":"uint32" }, + { "fieldname":"m_nQueryPort", "fieldtype":"uint32" }, + { "fieldname":"m_nConnPort", "fieldtype":"uint32" }, + { "fieldname":"m_nAppID", "fieldtype":"uint32" }, + { "fieldname":"m_nFlags", "fieldtype":"uint32" }, + { "fieldname":"m_bAdd", "fieldtype":"bool" }, + { "fieldname":"m_unAccountId", "fieldtype":"AccountID_t" } + ], + "struct": "FavoritesListChanged_t" + }, + { + "callback_id": 503, + "fields": [ + { "fieldname":"m_ulSteamIDUser", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulGameID", "fieldtype":"uint64" } + ], + "struct": "LobbyInvite_t" + }, + { + "callback_id": 504, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_rgfChatPermissions", "fieldtype":"uint32" }, + { "fieldname":"m_bLocked", "fieldtype":"bool" }, + { "fieldname":"m_EChatRoomEnterResponse", "fieldtype":"uint32" } + ], + "struct": "LobbyEnter_t" + }, + { + "callback_id": 505, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDMember", "fieldtype":"uint64" }, + { "fieldname":"m_bSuccess", "fieldtype":"uint8" } + ], + "struct": "LobbyDataUpdate_t" + }, + { + "callback_id": 506, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDUserChanged", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDMakingChange", "fieldtype":"uint64" }, + { "fieldname":"m_rgfChatMemberStateChange", "fieldtype":"uint32" } + ], + "struct": "LobbyChatUpdate_t" + }, + { + "callback_id": 507, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDUser", "fieldtype":"uint64" }, + { "fieldname":"m_eChatEntryType", "fieldtype":"uint8" }, + { "fieldname":"m_iChatID", "fieldtype":"uint32" } + ], + "struct": "LobbyChatMsg_t" + }, + { + "callback_id": 509, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDGameServer", "fieldtype":"uint64" }, + { "fieldname":"m_unIP", "fieldtype":"uint32" }, + { "fieldname":"m_usPort", "fieldtype":"uint16" } + ], + "struct": "LobbyGameCreated_t" + }, + { + "callback_id": 510, + "fields": [ + { "fieldname":"m_nLobbiesMatching", "fieldtype":"uint32" } + ], + "struct": "LobbyMatchList_t" + }, + { + "callback_id": 512, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDAdmin", "fieldtype":"uint64" }, + { "fieldname":"m_bKickedDueToDisconnect", "fieldtype":"uint8" } + ], + "struct": "LobbyKicked_t" + }, + { + "callback_id": 513, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" } + ], + "struct": "LobbyCreated_t" + }, + { + "callback_id": 515, + "fields": [ + { "fieldname":"m_bGameBootInviteExists", "fieldtype":"bool" }, + { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" } + ], + "struct": "PSNGameBootInviteResult_t" + }, + { + "callback_id": 516, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "FavoritesListAccountsUpdated_t" + }, + { + "callback_id": 5201, + "fields": [ + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_lobbyID", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDEndedSearch", "fieldtype":"CSteamID" }, + { "fieldname":"m_nSecondsRemainingEstimate", "fieldtype":"int32" }, + { "fieldname":"m_cPlayersSearching", "fieldtype":"int32" } + ], + "struct": "SearchForGameProgressCallback_t" + }, + { + "callback_id": 5202, + "fields": [ + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nCountPlayersInGame", "fieldtype":"int32" }, + { "fieldname":"m_nCountAcceptedGame", "fieldtype":"int32" }, + { "fieldname":"m_steamIDHost", "fieldtype":"CSteamID" }, + { "fieldname":"m_bFinalCallback", "fieldtype":"bool" } + ], + "struct": "SearchForGameResultCallback_t" + }, + { + "callback_id": 5211, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" } + ], + "struct": "RequestPlayersForGameProgressCallback_t" + }, + { + "callback_id": 5212, + "enums": [ + { + "enumname": "PlayerAcceptState_t", + "fqname": "RequestPlayersForGameResultCallback_t::PlayerAcceptState_t", + "values": [ + { "name":"k_EStateUnknown", "value":"0" }, + { "name":"k_EStatePlayerAccepted", "value":"1" }, + { "name":"k_EStatePlayerDeclined", "value":"2" } + ] + } + ], + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_SteamIDPlayerFound", "fieldtype":"CSteamID" }, + { "fieldname":"m_SteamIDLobby", "fieldtype":"CSteamID" }, + { "fieldname":"m_ePlayerAcceptState", "fieldtype":"RequestPlayersForGameResultCallback_t::PlayerAcceptState_t" }, + { "fieldname":"m_nPlayerIndex", "fieldtype":"int32" }, + { "fieldname":"m_nTotalPlayersFound", "fieldtype":"int32" }, + { "fieldname":"m_nTotalPlayersAcceptedGame", "fieldtype":"int32" }, + { "fieldname":"m_nSuggestedTeamIndex", "fieldtype":"int32" }, + { "fieldname":"m_ullUniqueGameID", "fieldtype":"uint64" } + ], + "struct": "RequestPlayersForGameResultCallback_t" + }, + { + "callback_id": 5213, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_ullUniqueGameID", "fieldtype":"uint64" } + ], + "struct": "RequestPlayersForGameFinalResultCallback_t" + }, + { + "callback_id": 5214, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"ullUniqueGameID", "fieldtype":"uint64" }, + { "fieldname":"steamIDPlayer", "fieldtype":"CSteamID" } + ], + "struct": "SubmitPlayerResultResultCallback_t" + }, + { + "callback_id": 5215, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"ullUniqueGameID", "fieldtype":"uint64" } + ], + "struct": "EndGameResultCallback_t" + }, + { + "callback_id": 5301, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" }, + { "fieldname":"m_SteamIDBeaconOwner", "fieldtype":"CSteamID" }, + { "fieldname":"m_rgchConnectString", "fieldtype":"char [256]" } + ], + "struct": "JoinPartyCallback_t" + }, + { + "callback_id": 5302, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" } + ], + "struct": "CreateBeaconCallback_t" + }, + { + "callback_id": 5303, + "fields": [ + { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" }, + { "fieldname":"m_steamIDJoiner", "fieldtype":"CSteamID" } + ], + "struct": "ReservationNotificationCallback_t" + }, + { + "callback_id": 5304, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "ChangeNumOpenSlotsCallback_t" + }, + { + "callback_id": 5305, + "fields": [], + "struct": "AvailableBeaconLocationsUpdated_t" + }, + { + "callback_id": 5306, + "fields": [], + "struct": "ActiveBeaconsUpdated_t" + }, + { + "callback_id": 1307, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_rgchFilename", "fieldtype":"char [260]" } + ], + "struct": "RemoteStorageFileShareResult_t" + }, + { + "callback_id": 1309, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } + ], + "struct": "RemoteStoragePublishFileResult_t" + }, + { + "callback_id": 1311, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageDeletePublishedFileResult_t" + }, + { + "callback_id": 1312, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" } + ], + "struct": "RemoteStorageEnumerateUserPublishedFilesResult_t" + }, + { + "callback_id": 1313, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageSubscribePublishedFileResult_t" + }, + { + "callback_id": 1314, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, + { "fieldname":"m_rgRTimeSubscribed", "fieldtype":"uint32 [50]" } + ], + "struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t" + }, + { + "callback_id": 1315, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageUnsubscribePublishedFileResult_t" + }, + { + "callback_id": 1316, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } + ], + "struct": "RemoteStorageUpdatePublishedFileResult_t" + }, + { + "callback_id": 1317, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nSizeInBytes", "fieldtype":"int32" }, + { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, + { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" } + ], + "struct": "RemoteStorageDownloadUGCResult_t" + }, + { + "callback_id": 1318, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nCreatorAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nConsumerAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rgchTitle", "fieldtype":"char [129]" }, + { "fieldname":"m_rgchDescription", "fieldtype":"char [8000]" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_hPreviewFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" }, + { "fieldname":"m_rtimeCreated", "fieldtype":"uint32" }, + { "fieldname":"m_rtimeUpdated", "fieldtype":"uint32" }, + { "fieldname":"m_eVisibility", "fieldtype":"ERemoteStoragePublishedFileVisibility" }, + { "fieldname":"m_bBanned", "fieldtype":"bool" }, + { "fieldname":"m_rgchTags", "fieldtype":"char [1025]" }, + { "fieldname":"m_bTagsTruncated", "fieldtype":"bool" }, + { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, + { "fieldname":"m_nFileSize", "fieldtype":"int32" }, + { "fieldname":"m_nPreviewFileSize", "fieldtype":"int32" }, + { "fieldname":"m_rgchURL", "fieldtype":"char [256]" }, + { "fieldname":"m_eFileType", "fieldtype":"EWorkshopFileType" }, + { "fieldname":"m_bAcceptedForUse", "fieldtype":"bool" } + ], + "struct": "RemoteStorageGetPublishedFileDetailsResult_t" + }, + { + "callback_id": 1319, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, + { "fieldname":"m_rgScore", "fieldtype":"float [50]" }, + { "fieldname":"m_nAppId", "fieldtype":"AppId_t" }, + { "fieldname":"m_unStartIndex", "fieldtype":"uint32" } + ], + "struct": "RemoteStorageEnumerateWorkshopFilesResult_t" + }, + { + "callback_id": 1320, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nVotesFor", "fieldtype":"int32" }, + { "fieldname":"m_nVotesAgainst", "fieldtype":"int32" }, + { "fieldname":"m_nReports", "fieldtype":"int32" }, + { "fieldname":"m_fScore", "fieldtype":"float" } + ], + "struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t" + }, + { + "callback_id": 1321, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoteStoragePublishedFileSubscribed_t" + }, + { + "callback_id": 1322, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoteStoragePublishedFileUnsubscribed_t" + }, + { + "callback_id": 1323, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoteStoragePublishedFileDeleted_t" + }, + { + "callback_id": 1324, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t" + }, + { + "callback_id": 1325, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eVote", "fieldtype":"EWorkshopVote" } + ], + "struct": "RemoteStorageUserVoteDetails_t" + }, + { + "callback_id": 1326, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" } + ], + "struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t" + }, + { + "callback_id": 1327, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eAction", "fieldtype":"EWorkshopFileAction" } + ], + "struct": "RemoteStorageSetUserPublishedFileActionResult_t" + }, + { + "callback_id": 1328, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_eAction", "fieldtype":"EWorkshopFileAction" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, + { "fieldname":"m_rgRTimeUpdated", "fieldtype":"uint32 [50]" } + ], + "struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t" + }, + { + "callback_id": 1329, + "fields": [ + { "fieldname":"m_dPercentFile", "fieldtype":"double" }, + { "fieldname":"m_bPreview", "fieldtype":"bool" } + ], + "struct": "RemoteStoragePublishFileProgress_t" + }, + { + "callback_id": 1330, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_ulUnused", "fieldtype":"uint64" } + ], + "struct": "RemoteStoragePublishedFileUpdated_t" + }, + { + "callback_id": 1331, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "RemoteStorageFileWriteAsyncComplete_t" + }, + { + "callback_id": 1332, + "fields": [ + { "fieldname":"m_hFileReadAsync", "fieldtype":"SteamAPICall_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nOffset", "fieldtype":"uint32" }, + { "fieldname":"m_cubRead", "fieldtype":"uint32" } + ], + "struct": "RemoteStorageFileReadAsyncComplete_t" + }, + { + "callback_id": 1333, + "fields": [], + "struct": "RemoteStorageLocalFileChange_t" + }, + { + "callback_id": 1101, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "UserStatsReceived_t" + }, + { + "callback_id": 1102, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "UserStatsStored_t" + }, + { + "callback_id": 1103, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_bGroupAchievement", "fieldtype":"bool" }, + { "fieldname":"m_rgchAchievementName", "fieldtype":"char [128]" }, + { "fieldname":"m_nCurProgress", "fieldtype":"uint32" }, + { "fieldname":"m_nMaxProgress", "fieldtype":"uint32" } + ], + "struct": "UserAchievementStored_t" + }, + { + "callback_id": 1104, + "fields": [ + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, + { "fieldname":"m_bLeaderboardFound", "fieldtype":"uint8" } + ], + "struct": "LeaderboardFindResult_t" + }, + { + "callback_id": 1105, + "fields": [ + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, + { "fieldname":"m_hSteamLeaderboardEntries", "fieldtype":"SteamLeaderboardEntries_t" }, + { "fieldname":"m_cEntryCount", "fieldtype":"int" } + ], + "struct": "LeaderboardScoresDownloaded_t" + }, + { + "callback_id": 1106, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"uint8" }, + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, + { "fieldname":"m_nScore", "fieldtype":"int32" }, + { "fieldname":"m_bScoreChanged", "fieldtype":"uint8" }, + { "fieldname":"m_nGlobalRankNew", "fieldtype":"int" }, + { "fieldname":"m_nGlobalRankPrevious", "fieldtype":"int" } + ], + "struct": "LeaderboardScoreUploaded_t" + }, + { + "callback_id": 1107, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"uint8" }, + { "fieldname":"m_cPlayers", "fieldtype":"int32" } + ], + "struct": "NumberOfCurrentPlayers_t" + }, + { + "callback_id": 1108, + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "UserStatsUnloaded_t" + }, + { + "callback_id": 1109, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"CGameID" }, + { "fieldname":"m_rgchAchievementName", "fieldtype":"char [128]" }, + { "fieldname":"m_bAchieved", "fieldtype":"bool" }, + { "fieldname":"m_nIconHandle", "fieldtype":"int" } + ], + "struct": "UserAchievementIconFetched_t" + }, + { + "callback_id": 1110, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "GlobalAchievementPercentagesReady_t" + }, + { + "callback_id": 1111, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" } + ], + "struct": "LeaderboardUGCSet_t" + }, + { + "callback_id": 1112, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulRequiredDiskSpace", "fieldtype":"uint64" } + ], + "struct": "PS3TrophiesInstalled_t" + }, + { + "callback_id": 1112, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "GlobalStatsReceived_t" + }, + { + "callback_id": 1005, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "DlcInstalled_t" + }, + { + "callback_id": 1008, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"ERegisterActivationCodeResult" }, + { "fieldname":"m_unPackageRegistered", "fieldtype":"uint32" } + ], + "struct": "RegisterActivationCodeResponse_t" + }, + { + "callback_id": 1014, + "fields": [], + "struct": "NewUrlLaunchParameters_t" + }, + { + "callback_id": 1021, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nAppID", "fieldtype":"uint32" }, + { "fieldname":"m_cchKeyLength", "fieldtype":"uint32" }, + { "fieldname":"m_rgchKey", "fieldtype":"char [240]" } + ], + "struct": "AppProofOfPurchaseKeyResponse_t" + }, + { + "callback_id": 1023, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulFileSize", "fieldtype":"uint64" }, + { "fieldname":"m_FileSHA", "fieldtype":"uint8 [20]" }, + { "fieldname":"m_unFlags", "fieldtype":"uint32" } + ], + "struct": "FileDetailsResult_t" + }, + { + "callback_id": 1030, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_bIsOffline", "fieldtype":"bool" }, + { "fieldname":"m_unSecondsAllowed", "fieldtype":"uint32" }, + { "fieldname":"m_unSecondsPlayed", "fieldtype":"uint32" } + ], + "struct": "TimedTrialStatus_t" + }, + { + "callback_id": 1202, + "fields": [ + { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" } + ], + "struct": "P2PSessionRequest_t" + }, + { + "callback_id": 1203, + "fields": [ + { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" }, + { "fieldname":"m_eP2PSessionError", "fieldtype":"uint8" } + ], + "struct": "P2PSessionConnectFail_t" + }, + { + "callback_id": 1201, + "fields": [ + { "fieldname":"m_hSocket", "fieldtype":"SNetSocket_t" }, + { "fieldname":"m_hListenSocket", "fieldtype":"SNetListenSocket_t" }, + { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" }, + { "fieldname":"m_eSNetSocketState", "fieldtype":"int" } + ], + "struct": "SocketStatusCallback_t" + }, + { + "callback_id": 2301, + "fields": [ + { "fieldname":"m_hLocal", "fieldtype":"ScreenshotHandle" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "ScreenshotReady_t" + }, + { + "callback_id": 2302, + "fields": [], + "struct": "ScreenshotRequested_t" + }, + { + "callback_id": 4001, + "fields": [], + "struct": "PlaybackStatusHasChanged_t" + }, + { + "callback_id": 4002, + "fields": [ + { "fieldname":"m_flNewVolume", "fieldtype":"float" } + ], + "struct": "VolumeHasChanged_t" + }, + { + "callback_id": 4101, + "fields": [], + "struct": "MusicPlayerRemoteWillActivate_t" + }, + { + "callback_id": 4102, + "fields": [], + "struct": "MusicPlayerRemoteWillDeactivate_t" + }, + { + "callback_id": 4103, + "fields": [], + "struct": "MusicPlayerRemoteToFront_t" + }, + { + "callback_id": 4104, + "fields": [], + "struct": "MusicPlayerWillQuit_t" + }, + { + "callback_id": 4105, + "fields": [], + "struct": "MusicPlayerWantsPlay_t" + }, + { + "callback_id": 4106, + "fields": [], + "struct": "MusicPlayerWantsPause_t" + }, + { + "callback_id": 4107, + "fields": [], + "struct": "MusicPlayerWantsPlayPrevious_t" + }, + { + "callback_id": 4108, + "fields": [], + "struct": "MusicPlayerWantsPlayNext_t" + }, + { + "callback_id": 4109, + "fields": [ + { "fieldname":"m_bShuffled", "fieldtype":"bool" } + ], + "struct": "MusicPlayerWantsShuffled_t" + }, + { + "callback_id": 4110, + "fields": [ + { "fieldname":"m_bLooped", "fieldtype":"bool" } + ], + "struct": "MusicPlayerWantsLooped_t" + }, + { + "callback_id": 4011, + "fields": [ + { "fieldname":"m_flNewVolume", "fieldtype":"float" } + ], + "struct": "MusicPlayerWantsVolume_t" + }, + { + "callback_id": 4012, + "fields": [ + { "fieldname":"nID", "fieldtype":"int" } + ], + "struct": "MusicPlayerSelectsQueueEntry_t" + }, + { + "callback_id": 4013, + "fields": [ + { "fieldname":"nID", "fieldtype":"int" } + ], + "struct": "MusicPlayerSelectsPlaylistEntry_t" + }, + { + "callback_id": 4114, + "fields": [ + { "fieldname":"m_nPlayingRepeatStatus", "fieldtype":"int" } + ], + "struct": "MusicPlayerWantsPlayingRepeatStatus_t" + }, + { + "callback_id": 2101, + "fields": [ + { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, + { "fieldname":"m_ulContextValue", "fieldtype":"uint64" }, + { "fieldname":"m_bRequestSuccessful", "fieldtype":"bool" }, + { "fieldname":"m_eStatusCode", "fieldtype":"EHTTPStatusCode" }, + { "fieldname":"m_unBodySize", "fieldtype":"uint32" } + ], + "struct": "HTTPRequestCompleted_t" + }, + { + "callback_id": 2102, + "fields": [ + { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, + { "fieldname":"m_ulContextValue", "fieldtype":"uint64" } + ], + "struct": "HTTPRequestHeadersReceived_t" + }, + { + "callback_id": 2103, + "fields": [ + { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, + { "fieldname":"m_ulContextValue", "fieldtype":"uint64" }, + { "fieldname":"m_cOffset", "fieldtype":"uint32" }, + { "fieldname":"m_cBytesReceived", "fieldtype":"uint32" } + ], + "struct": "HTTPRequestDataReceived_t" + }, + { + "callback_id": 2801, + "fields": [ + { "fieldname":"m_ulConnectedDeviceHandle", "fieldtype":"InputHandle_t" } + ], + "struct": "SteamInputDeviceConnected_t" + }, + { + "callback_id": 2802, + "fields": [ + { "fieldname":"m_ulDisconnectedDeviceHandle", "fieldtype":"InputHandle_t" } + ], + "struct": "SteamInputDeviceDisconnected_t" + }, + { + "callback_id": 2803, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_ulDeviceHandle", "fieldtype":"InputHandle_t" }, + { "fieldname":"m_ulMappingCreator", "fieldtype":"CSteamID" }, + { "fieldname":"m_unMajorRevision", "fieldtype":"uint32" }, + { "fieldname":"m_unMinorRevision", "fieldtype":"uint32" }, + { "fieldname":"m_bUsesSteamInputAPI", "fieldtype":"bool" }, + { "fieldname":"m_bUsesGamepadAPI", "fieldtype":"bool" } + ], + "struct": "SteamInputConfigurationLoaded_t" + }, + { + "callback_id": 3401, + "fields": [ + { "fieldname":"m_handle", "fieldtype":"UGCQueryHandle_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unNumResultsReturned", "fieldtype":"uint32" }, + { "fieldname":"m_unTotalMatchingResults", "fieldtype":"uint32" }, + { "fieldname":"m_bCachedData", "fieldtype":"bool" }, + { "fieldname":"m_rgchNextCursor", "fieldtype":"char [256]" } + ], + "struct": "SteamUGCQueryCompleted_t" + }, + { + "callback_id": 3402, + "fields": [ + { "fieldname":"m_details", "fieldtype":"SteamUGCDetails_t" }, + { "fieldname":"m_bCachedData", "fieldtype":"bool" } + ], + "struct": "SteamUGCRequestUGCDetailsResult_t" + }, + { + "callback_id": 3403, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } + ], + "struct": "CreateItemResult_t" + }, + { + "callback_id": 3404, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "SubmitItemUpdateResult_t" + }, + { + "callback_id": 3405, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "ItemInstalled_t" + }, + { + "callback_id": 3406, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "DownloadItemResult_t" + }, + { + "callback_id": 3407, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bWasAddRequest", "fieldtype":"bool" } + ], + "struct": "UserFavoriteItemsListChanged_t" + }, + { + "callback_id": 3408, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bVoteUp", "fieldtype":"bool" } + ], + "struct": "SetUserItemVoteResult_t" + }, + { + "callback_id": 3409, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bVotedUp", "fieldtype":"bool" }, + { "fieldname":"m_bVotedDown", "fieldtype":"bool" }, + { "fieldname":"m_bVoteSkipped", "fieldtype":"bool" } + ], + "struct": "GetUserItemVoteResult_t" + }, + { + "callback_id": 3410, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "StartPlaytimeTrackingResult_t" + }, + { + "callback_id": 3411, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "StopPlaytimeTrackingResult_t" + }, + { + "callback_id": 3412, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nChildPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "AddUGCDependencyResult_t" + }, + { + "callback_id": 3413, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nChildPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoveUGCDependencyResult_t" + }, + { + "callback_id": 3414, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "AddAppDependencyResult_t" + }, + { + "callback_id": 3415, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoveAppDependencyResult_t" + }, + { + "callback_id": 3416, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_rgAppIDs", "fieldtype":"AppId_t [32]" }, + { "fieldname":"m_nNumAppDependencies", "fieldtype":"uint32" }, + { "fieldname":"m_nTotalNumAppDependencies", "fieldtype":"uint32" } + ], + "struct": "GetAppDependenciesResult_t" + }, + { + "callback_id": 3417, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "DeleteItemResult_t" + }, + { + "callback_id": 3418, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "UserSubscribedItemsListChanged_t" + }, + { + "callback_id": 3420, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_unVersion", "fieldtype":"uint32" }, + { "fieldname":"m_rtAction", "fieldtype":"RTime32" }, + { "fieldname":"m_bAccepted", "fieldtype":"bool" }, + { "fieldname":"m_bNeedsAction", "fieldtype":"bool" } + ], + "struct": "WorkshopEULAStatus_t" + }, + { + "callback_id": 3901, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_iInstallFolderIndex", "fieldtype":"int" } + ], + "struct": "SteamAppInstalled_t" + }, + { + "callback_id": 3902, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_iInstallFolderIndex", "fieldtype":"int" } + ], + "struct": "SteamAppUninstalled_t" + }, + { + "callback_id": 4501, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_BrowserReady_t" + }, + { + "callback_id": 4502, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pBGRA", "fieldtype":"const char *" }, + { "fieldname":"unWide", "fieldtype":"uint32" }, + { "fieldname":"unTall", "fieldtype":"uint32" }, + { "fieldname":"unUpdateX", "fieldtype":"uint32" }, + { "fieldname":"unUpdateY", "fieldtype":"uint32" }, + { "fieldname":"unUpdateWide", "fieldtype":"uint32" }, + { "fieldname":"unUpdateTall", "fieldtype":"uint32" }, + { "fieldname":"unScrollX", "fieldtype":"uint32" }, + { "fieldname":"unScrollY", "fieldtype":"uint32" }, + { "fieldname":"flPageScale", "fieldtype":"float" }, + { "fieldname":"unPageSerial", "fieldtype":"uint32" } + ], + "struct": "HTML_NeedsPaint_t" + }, + { + "callback_id": 4503, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"pchTarget", "fieldtype":"const char *" }, + { "fieldname":"pchPostData", "fieldtype":"const char *" }, + { "fieldname":"bIsRedirect", "fieldtype":"bool" } + ], + "struct": "HTML_StartRequest_t" + }, + { + "callback_id": 4504, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_CloseBrowser_t" + }, + { + "callback_id": 4505, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"pchPostData", "fieldtype":"const char *" }, + { "fieldname":"bIsRedirect", "fieldtype":"bool" }, + { "fieldname":"pchPageTitle", "fieldtype":"const char *" }, + { "fieldname":"bNewNavigation", "fieldtype":"bool" } + ], + "struct": "HTML_URLChanged_t" + }, + { + "callback_id": 4506, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"pchPageTitle", "fieldtype":"const char *" } + ], + "struct": "HTML_FinishedRequest_t" + }, + { + "callback_id": 4507, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" } + ], + "struct": "HTML_OpenLinkInNewTab_t" + }, + { + "callback_id": 4508, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchTitle", "fieldtype":"const char *" } + ], + "struct": "HTML_ChangedTitle_t" + }, + { + "callback_id": 4509, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unResults", "fieldtype":"uint32" }, + { "fieldname":"unCurrentMatch", "fieldtype":"uint32" } + ], + "struct": "HTML_SearchResults_t" + }, + { + "callback_id": 4510, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"bCanGoBack", "fieldtype":"bool" }, + { "fieldname":"bCanGoForward", "fieldtype":"bool" } + ], + "struct": "HTML_CanGoBackAndForward_t" + }, + { + "callback_id": 4511, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unScrollMax", "fieldtype":"uint32" }, + { "fieldname":"unScrollCurrent", "fieldtype":"uint32" }, + { "fieldname":"flPageScale", "fieldtype":"float" }, + { "fieldname":"bVisible", "fieldtype":"bool" }, + { "fieldname":"unPageSize", "fieldtype":"uint32" } + ], + "struct": "HTML_HorizontalScroll_t" + }, + { + "callback_id": 4512, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unScrollMax", "fieldtype":"uint32" }, + { "fieldname":"unScrollCurrent", "fieldtype":"uint32" }, + { "fieldname":"flPageScale", "fieldtype":"float" }, + { "fieldname":"bVisible", "fieldtype":"bool" }, + { "fieldname":"unPageSize", "fieldtype":"uint32" } + ], + "struct": "HTML_VerticalScroll_t" + }, + { + "callback_id": 4513, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"x", "fieldtype":"uint32" }, + { "fieldname":"y", "fieldtype":"uint32" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"bInput", "fieldtype":"bool" }, + { "fieldname":"bLiveLink", "fieldtype":"bool" } + ], + "struct": "HTML_LinkAtPosition_t" + }, + { + "callback_id": 4514, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMessage", "fieldtype":"const char *" } + ], + "struct": "HTML_JSAlert_t" + }, + { + "callback_id": 4515, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMessage", "fieldtype":"const char *" } + ], + "struct": "HTML_JSConfirm_t" + }, + { + "callback_id": 4516, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchTitle", "fieldtype":"const char *" }, + { "fieldname":"pchInitialFile", "fieldtype":"const char *" } + ], + "struct": "HTML_FileOpenDialog_t" + }, + { + "callback_id": 4521, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"unX", "fieldtype":"uint32" }, + { "fieldname":"unY", "fieldtype":"uint32" }, + { "fieldname":"unWide", "fieldtype":"uint32" }, + { "fieldname":"unTall", "fieldtype":"uint32" }, + { "fieldname":"unNewWindow_BrowserHandle_IGNORE", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_NewWindow_t" + }, + { + "callback_id": 4522, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"eMouseCursor", "fieldtype":"uint32" } + ], + "struct": "HTML_SetCursor_t" + }, + { + "callback_id": 4523, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMsg", "fieldtype":"const char *" } + ], + "struct": "HTML_StatusText_t" + }, + { + "callback_id": 4524, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMsg", "fieldtype":"const char *" } + ], + "struct": "HTML_ShowToolTip_t" + }, + { + "callback_id": 4525, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMsg", "fieldtype":"const char *" } + ], + "struct": "HTML_UpdateToolTip_t" + }, + { + "callback_id": 4526, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_HideToolTip_t" + }, + { + "callback_id": 4527, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unOldBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_BrowserRestarted_t" + }, + { + "callback_id": 4700, + "fields": [ + { "fieldname":"m_handle", "fieldtype":"SteamInventoryResult_t" }, + { "fieldname":"m_result", "fieldtype":"EResult" } + ], + "struct": "SteamInventoryResultReady_t" + }, + { + "callback_id": 4701, + "fields": [ + { "fieldname":"m_handle", "fieldtype":"SteamInventoryResult_t" } + ], + "struct": "SteamInventoryFullUpdate_t" + }, + { + "callback_id": 4702, + "fields": [], + "struct": "SteamInventoryDefinitionUpdate_t" + }, + { + "callback_id": 4703, + "fields": [ + { "fieldname":"m_result", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_numEligiblePromoItemDefs", "fieldtype":"int" }, + { "fieldname":"m_bCachedData", "fieldtype":"bool" } + ], + "struct": "SteamInventoryEligiblePromoItemDefIDs_t" + }, + { + "callback_id": 4704, + "fields": [ + { "fieldname":"m_result", "fieldtype":"EResult" }, + { "fieldname":"m_ulOrderID", "fieldtype":"uint64" }, + { "fieldname":"m_ulTransID", "fieldtype":"uint64" } + ], + "struct": "SteamInventoryStartPurchaseResult_t" + }, + { + "callback_id": 4705, + "fields": [ + { "fieldname":"m_result", "fieldtype":"EResult" }, + { "fieldname":"m_rgchCurrency", "fieldtype":"char [4]" } + ], + "struct": "SteamInventoryRequestPricesResult_t" + }, + { + "callback_id": 4611, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unVideoAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rgchURL", "fieldtype":"char [256]" } + ], + "struct": "GetVideoURLResult_t" + }, + { + "callback_id": 4624, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unVideoAppID", "fieldtype":"AppId_t" } + ], + "struct": "GetOPFSettingsResult_t" + }, + { + "callback_id": 5001, + "fields": [], + "struct": "SteamParentalSettingsChanged_t" + }, + { + "callback_id": 5701, + "fields": [ + { "fieldname":"m_unSessionID", "fieldtype":"RemotePlaySessionID_t" } + ], + "struct": "SteamRemotePlaySessionConnected_t" + }, + { + "callback_id": 5702, + "fields": [ + { "fieldname":"m_unSessionID", "fieldtype":"RemotePlaySessionID_t" } + ], + "struct": "SteamRemotePlaySessionDisconnected_t" + }, + { + "callback_id": 1251, + "fields": [ + { "fieldname":"m_identityRemote", "fieldtype":"SteamNetworkingIdentity" } + ], + "struct": "SteamNetworkingMessagesSessionRequest_t" + }, + { + "callback_id": 1252, + "fields": [ + { "fieldname":"m_info", "fieldtype":"SteamNetConnectionInfo_t" } + ], + "struct": "SteamNetworkingMessagesSessionFailed_t" + }, + { + "callback_id": 1221, + "fields": [ + { "fieldname":"m_hConn", "fieldtype":"HSteamNetConnection" }, + { "fieldname":"m_info", "fieldtype":"SteamNetConnectionInfo_t" }, + { "fieldname":"m_eOldState", "fieldtype":"ESteamNetworkingConnectionState" } + ], + "struct": "SteamNetConnectionStatusChangedCallback_t" + }, + { + "callback_id": 1222, + "fields": [ + { "fieldname":"m_eAvail", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_debugMsg", "fieldtype":"char [256]" } + ], + "struct": "SteamNetAuthenticationStatus_t" + }, + { + "callback_id": 1281, + "fields": [ + { "fieldname":"m_eAvail", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_bPingMeasurementInProgress", "fieldtype":"int" }, + { "fieldname":"m_eAvailNetworkConfig", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_eAvailAnyRelay", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_debugMsg", "fieldtype":"char [256]" } + ], + "struct": "SteamRelayNetworkStatus_t" + }, + { + "callback_id": 201, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_OwnerSteamID", "fieldtype":"CSteamID" } + ], + "struct": "GSClientApprove_t" + }, + { + "callback_id": 202, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_eDenyReason", "fieldtype":"EDenyReason" }, + { "fieldname":"m_rgchOptionalText", "fieldtype":"char [128]" } + ], + "struct": "GSClientDeny_t" + }, + { + "callback_id": 203, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_eDenyReason", "fieldtype":"EDenyReason" } + ], + "struct": "GSClientKick_t" + }, + { + "callback_id": 206, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"uint64" }, + { "fieldname":"m_pchAchievement", "fieldtype":"char [128]" }, + { "fieldname":"m_bUnlocked", "fieldtype":"bool" } + ], + "struct": "GSClientAchievementStatus_t" + }, + { + "callback_id": 115, + "fields": [ + { "fieldname":"m_bSecure", "fieldtype":"uint8" } + ], + "struct": "GSPolicyResponse_t" + }, + { + "callback_id": 207, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nRank", "fieldtype":"int32" }, + { "fieldname":"m_unTotalConnects", "fieldtype":"uint32" }, + { "fieldname":"m_unTotalMinutesPlayed", "fieldtype":"uint32" } + ], + "struct": "GSGameplayStats_t" + }, + { + "callback_id": 208, + "fields": [ + { "fieldname":"m_SteamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_SteamIDGroup", "fieldtype":"CSteamID" }, + { "fieldname":"m_bMember", "fieldtype":"bool" }, + { "fieldname":"m_bOfficer", "fieldtype":"bool" } + ], + "struct": "GSClientGroupStatus_t" + }, + { + "callback_id": 209, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unReputationScore", "fieldtype":"uint32" }, + { "fieldname":"m_bBanned", "fieldtype":"bool" }, + { "fieldname":"m_unBannedIP", "fieldtype":"uint32" }, + { "fieldname":"m_usBannedPort", "fieldtype":"uint16" }, + { "fieldname":"m_ulBannedGameID", "fieldtype":"uint64" }, + { "fieldname":"m_unBanExpires", "fieldtype":"uint32" } + ], + "struct": "GSReputation_t" + }, + { + "callback_id": 210, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "AssociateWithClanResult_t" + }, + { + "callback_id": 211, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_cPlayersThatDontLikeCandidate", "fieldtype":"int" }, + { "fieldname":"m_cPlayersThatCandidateDoesntLike", "fieldtype":"int" }, + { "fieldname":"m_cClanPlayersThatDontLikeCandidate", "fieldtype":"int" }, + { "fieldname":"m_SteamIDCandidate", "fieldtype":"CSteamID" } + ], + "struct": "ComputeNewPlayerCompatibilityResult_t" + }, + { + "callback_id": 1800, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GSStatsReceived_t" + }, + { + "callback_id": 1801, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GSStatsStored_t" + }, + { + "callback_id": 1108, + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GSStatsUnloaded_t" + }, + { + "callback_id": 1223, + "consts": [ + { "constname":"k_nMaxReturnPorts", "consttype":"int", "constval":"8" } + ], + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_identity", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_unIP", "fieldtype":"uint32" }, + { "fieldname":"m_unPorts", "fieldtype":"uint16 [8]" } + ], + "struct": "SteamNetworkingFakeIPResult_t" + } + ], + "consts": [ + { "constname":"k_uAppIdInvalid", "consttype":"AppId_t", "constval":"0x0" }, + { "constname":"k_uDepotIdInvalid", "consttype":"DepotId_t", "constval":"0x0" }, + { "constname":"k_uAPICallInvalid", "consttype":"SteamAPICall_t", "constval":"0x0" }, + { "constname":"k_ulPartyBeaconIdInvalid", "consttype":"PartyBeaconID_t", "constval":"0" }, + { "constname":"k_HAuthTicketInvalid", "consttype":"HAuthTicket", "constval":"0" }, + { "constname":"k_unSteamAccountIDMask", "consttype":"unsigned int", "constval":"0xFFFFFFFF" }, + { "constname":"k_unSteamAccountInstanceMask", "consttype":"unsigned int", "constval":"0x000FFFFF" }, + { "constname":"k_unSteamUserDefaultInstance", "consttype":"unsigned int", "constval":"1" }, + { "constname":"k_cchGameExtraInfoMax", "consttype":"int", "constval":"64" }, + { "constname":"k_cchMaxFriendsGroupName", "consttype":"int", "constval":"64" }, + { "constname":"k_cFriendsGroupLimit", "consttype":"int", "constval":"100" }, + { "constname":"k_FriendsGroupID_Invalid", "consttype":"FriendsGroupID_t", "constval":"- 1" }, + { "constname":"k_cEnumerateFollowersMax", "consttype":"int", "constval":"50" }, + { "constname":"k_cubChatMetadataMax", "consttype":"uint32", "constval":"8192" }, + { "constname":"k_cbMaxGameServerGameDir", "consttype":"int", "constval":"32" }, + { "constname":"k_cbMaxGameServerMapName", "consttype":"int", "constval":"32" }, + { "constname":"k_cbMaxGameServerGameDescription", "consttype":"int", "constval":"64" }, + { "constname":"k_cbMaxGameServerName", "consttype":"int", "constval":"64" }, + { "constname":"k_cbMaxGameServerTags", "consttype":"int", "constval":"128" }, + { "constname":"k_cbMaxGameServerGameData", "consttype":"int", "constval":"2048" }, + { "constname":"HSERVERQUERY_INVALID", "consttype":"int", "constval":"0xffffffff" }, + { "constname":"k_unFavoriteFlagNone", "consttype":"uint32", "constval":"0x00" }, + { "constname":"k_unFavoriteFlagFavorite", "consttype":"uint32", "constval":"0x01" }, + { "constname":"k_unFavoriteFlagHistory", "consttype":"uint32", "constval":"0x02" }, + { "constname":"k_unMaxCloudFileChunkSize", "consttype":"uint32", "constval":"100 * 1024 * 1024" }, + { "constname":"k_PublishedFileIdInvalid", "consttype":"PublishedFileId_t", "constval":"0" }, + { "constname":"k_UGCHandleInvalid", "consttype":"UGCHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_PublishedFileUpdateHandleInvalid", "consttype":"PublishedFileUpdateHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_UGCFileStreamHandleInvalid", "consttype":"UGCFileWriteStreamHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_cchPublishedDocumentTitleMax", "consttype":"uint32", "constval":"128 + 1" }, + { "constname":"k_cchPublishedDocumentDescriptionMax", "consttype":"uint32", "constval":"8000" }, + { "constname":"k_cchPublishedDocumentChangeDescriptionMax", "consttype":"uint32", "constval":"8000" }, + { "constname":"k_unEnumeratePublishedFilesMaxResults", "consttype":"uint32", "constval":"50" }, + { "constname":"k_cchTagListMax", "consttype":"uint32", "constval":"1024 + 1" }, + { "constname":"k_cchFilenameMax", "consttype":"uint32", "constval":"260" }, + { "constname":"k_cchPublishedFileURLMax", "consttype":"uint32", "constval":"256" }, + { "constname":"k_cubAppProofOfPurchaseKeyMax", "consttype":"int", "constval":"240" }, + { "constname":"k_nScreenshotMaxTaggedUsers", "consttype":"uint32", "constval":"32" }, + { "constname":"k_nScreenshotMaxTaggedPublishedFiles", "consttype":"uint32", "constval":"32" }, + { "constname":"k_cubUFSTagTypeMax", "consttype":"int", "constval":"255" }, + { "constname":"k_cubUFSTagValueMax", "consttype":"int", "constval":"255" }, + { "constname":"k_ScreenshotThumbWidth", "consttype":"int", "constval":"200" }, + { "constname":"k_UGCQueryHandleInvalid", "consttype":"UGCQueryHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_UGCUpdateHandleInvalid", "consttype":"UGCUpdateHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"kNumUGCResultsPerPage", "consttype":"uint32", "constval":"50" }, + { "constname":"k_cchDeveloperMetadataMax", "consttype":"uint32", "constval":"5000" }, + { "constname":"INVALID_HTMLBROWSER", "consttype":"uint32", "constval":"0" }, + { "constname":"k_SteamItemInstanceIDInvalid", "consttype":"SteamItemInstanceID_t", "constval":"( SteamItemInstanceID_t ) ~ 0" }, + { "constname":"k_SteamInventoryResultInvalid", "consttype":"SteamInventoryResult_t", "constval":"- 1" }, + { "constname":"k_SteamInventoryUpdateHandleInvalid", "consttype":"SteamInventoryUpdateHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_HSteamNetConnection_Invalid", "consttype":"HSteamNetConnection", "constval":"0" }, + { "constname":"k_HSteamListenSocket_Invalid", "consttype":"HSteamListenSocket", "constval":"0" }, + { "constname":"k_HSteamNetPollGroup_Invalid", "consttype":"HSteamNetPollGroup", "constval":"0" }, + { "constname":"k_cchMaxSteamNetworkingErrMsg", "consttype":"int", "constval":"1024" }, + { "constname":"k_cchSteamNetworkingMaxConnectionCloseReason", "consttype":"int", "constval":"128" }, + { "constname":"k_cchSteamNetworkingMaxConnectionDescription", "consttype":"int", "constval":"128" }, + { "constname":"k_cchSteamNetworkingMaxConnectionAppName", "consttype":"int", "constval":"32" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Unauthenticated", "consttype":"int", "constval":"1" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Unencrypted", "consttype":"int", "constval":"2" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers", "consttype":"int", "constval":"4" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Fast", "consttype":"int", "constval":"8" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Relayed", "consttype":"int", "constval":"16" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_DualWifi", "consttype":"int", "constval":"32" }, + { "constname":"k_cbMaxSteamNetworkingSocketsMessageSizeSend", "consttype":"int", "constval":"512 * 1024" }, + { "constname":"k_nSteamNetworkingSend_Unreliable", "consttype":"int", "constval":"0" }, + { "constname":"k_nSteamNetworkingSend_NoNagle", "consttype":"int", "constval":"1" }, + { "constname":"k_nSteamNetworkingSend_UnreliableNoNagle", "consttype":"int", "constval":"k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoNagle" }, + { "constname":"k_nSteamNetworkingSend_NoDelay", "consttype":"int", "constval":"4" }, + { "constname":"k_nSteamNetworkingSend_UnreliableNoDelay", "consttype":"int", "constval":"k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoDelay | k_nSteamNetworkingSend_NoNagle" }, + { "constname":"k_nSteamNetworkingSend_Reliable", "consttype":"int", "constval":"8" }, + { "constname":"k_nSteamNetworkingSend_ReliableNoNagle", "consttype":"int", "constval":"k_nSteamNetworkingSend_Reliable | k_nSteamNetworkingSend_NoNagle" }, + { "constname":"k_nSteamNetworkingSend_UseCurrentThread", "consttype":"int", "constval":"16" }, + { "constname":"k_nSteamNetworkingSend_AutoRestartBrokenSession", "consttype":"int", "constval":"32" }, + { "constname":"k_cchMaxSteamNetworkingPingLocationString", "consttype":"int", "constval":"1024" }, + { "constname":"k_nSteamNetworkingPing_Failed", "consttype":"int", "constval":"- 1" }, + { "constname":"k_nSteamNetworkingPing_Unknown", "consttype":"int", "constval":"- 2" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Default", "consttype":"int", "constval":"- 1" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Disable", "consttype":"int", "constval":"0" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Relay", "consttype":"int", "constval":"1" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Private", "consttype":"int", "constval":"2" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public", "consttype":"int", "constval":"4" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All", "consttype":"int", "constval":"0x7fffffff" }, + { "constname":"k_SteamDatagramPOPID_dev", "consttype":"SteamNetworkingPOPID", "constval":"( ( uint32 ) 'd' << 16U ) | ( ( uint32 ) 'e' << 8U ) | ( uint32 ) 'v'" }, + { "constname":"STEAMGAMESERVER_QUERY_PORT_SHARED", "consttype":"uint16", "constval":"0xffff" }, + { "constname":"MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE", "consttype":"uint16", "constval":"STEAMGAMESERVER_QUERY_PORT_SHARED" }, + { "constname":"k_cbSteamDatagramMaxSerializedTicket", "consttype":"uint32", "constval":"512" }, + { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData", "consttype":"uint32", "constval":"2048" }, + { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized", "consttype":"uint32", "constval":"4096" }, + { "constname":"k_cbSteamNetworkingSocketsFakeUDPPortRecommendedMTU", "consttype":"int", "constval":"1200" }, + { "constname":"k_cbSteamNetworkingSocketsFakeUDPPortMaxMessageSize", "consttype":"int", "constval":"4096" } + ], + "enums": [ + { + "enumname": "ESteamIPType", + "values": [ + { "name":"k_ESteamIPTypeIPv4", "value":"0" }, + { "name":"k_ESteamIPTypeIPv6", "value":"1" } + ] + }, + { + "enumname": "EUniverse", + "values": [ + { "name":"k_EUniverseInvalid", "value":"0" }, + { "name":"k_EUniversePublic", "value":"1" }, + { "name":"k_EUniverseBeta", "value":"2" }, + { "name":"k_EUniverseInternal", "value":"3" }, + { "name":"k_EUniverseDev", "value":"4" }, + { "name":"k_EUniverseMax", "value":"5" } + ] + }, + { + "enumname": "EResult", + "values": [ + { "name":"k_EResultNone", "value":"0" }, + { "name":"k_EResultOK", "value":"1" }, + { "name":"k_EResultFail", "value":"2" }, + { "name":"k_EResultNoConnection", "value":"3" }, + { "name":"k_EResultInvalidPassword", "value":"5" }, + { "name":"k_EResultLoggedInElsewhere", "value":"6" }, + { "name":"k_EResultInvalidProtocolVer", "value":"7" }, + { "name":"k_EResultInvalidParam", "value":"8" }, + { "name":"k_EResultFileNotFound", "value":"9" }, + { "name":"k_EResultBusy", "value":"10" }, + { "name":"k_EResultInvalidState", "value":"11" }, + { "name":"k_EResultInvalidName", "value":"12" }, + { "name":"k_EResultInvalidEmail", "value":"13" }, + { "name":"k_EResultDuplicateName", "value":"14" }, + { "name":"k_EResultAccessDenied", "value":"15" }, + { "name":"k_EResultTimeout", "value":"16" }, + { "name":"k_EResultBanned", "value":"17" }, + { "name":"k_EResultAccountNotFound", "value":"18" }, + { "name":"k_EResultInvalidSteamID", "value":"19" }, + { "name":"k_EResultServiceUnavailable", "value":"20" }, + { "name":"k_EResultNotLoggedOn", "value":"21" }, + { "name":"k_EResultPending", "value":"22" }, + { "name":"k_EResultEncryptionFailure", "value":"23" }, + { "name":"k_EResultInsufficientPrivilege", "value":"24" }, + { "name":"k_EResultLimitExceeded", "value":"25" }, + { "name":"k_EResultRevoked", "value":"26" }, + { "name":"k_EResultExpired", "value":"27" }, + { "name":"k_EResultAlreadyRedeemed", "value":"28" }, + { "name":"k_EResultDuplicateRequest", "value":"29" }, + { "name":"k_EResultAlreadyOwned", "value":"30" }, + { "name":"k_EResultIPNotFound", "value":"31" }, + { "name":"k_EResultPersistFailed", "value":"32" }, + { "name":"k_EResultLockingFailed", "value":"33" }, + { "name":"k_EResultLogonSessionReplaced", "value":"34" }, + { "name":"k_EResultConnectFailed", "value":"35" }, + { "name":"k_EResultHandshakeFailed", "value":"36" }, + { "name":"k_EResultIOFailure", "value":"37" }, + { "name":"k_EResultRemoteDisconnect", "value":"38" }, + { "name":"k_EResultShoppingCartNotFound", "value":"39" }, + { "name":"k_EResultBlocked", "value":"40" }, + { "name":"k_EResultIgnored", "value":"41" }, + { "name":"k_EResultNoMatch", "value":"42" }, + { "name":"k_EResultAccountDisabled", "value":"43" }, + { "name":"k_EResultServiceReadOnly", "value":"44" }, + { "name":"k_EResultAccountNotFeatured", "value":"45" }, + { "name":"k_EResultAdministratorOK", "value":"46" }, + { "name":"k_EResultContentVersion", "value":"47" }, + { "name":"k_EResultTryAnotherCM", "value":"48" }, + { "name":"k_EResultPasswordRequiredToKickSession", "value":"49" }, + { "name":"k_EResultAlreadyLoggedInElsewhere", "value":"50" }, + { "name":"k_EResultSuspended", "value":"51" }, + { "name":"k_EResultCancelled", "value":"52" }, + { "name":"k_EResultDataCorruption", "value":"53" }, + { "name":"k_EResultDiskFull", "value":"54" }, + { "name":"k_EResultRemoteCallFailed", "value":"55" }, + { "name":"k_EResultPasswordUnset", "value":"56" }, + { "name":"k_EResultExternalAccountUnlinked", "value":"57" }, + { "name":"k_EResultPSNTicketInvalid", "value":"58" }, + { "name":"k_EResultExternalAccountAlreadyLinked", "value":"59" }, + { "name":"k_EResultRemoteFileConflict", "value":"60" }, + { "name":"k_EResultIllegalPassword", "value":"61" }, + { "name":"k_EResultSameAsPreviousValue", "value":"62" }, + { "name":"k_EResultAccountLogonDenied", "value":"63" }, + { "name":"k_EResultCannotUseOldPassword", "value":"64" }, + { "name":"k_EResultInvalidLoginAuthCode", "value":"65" }, + { "name":"k_EResultAccountLogonDeniedNoMail", "value":"66" }, + { "name":"k_EResultHardwareNotCapableOfIPT", "value":"67" }, + { "name":"k_EResultIPTInitError", "value":"68" }, + { "name":"k_EResultParentalControlRestricted", "value":"69" }, + { "name":"k_EResultFacebookQueryError", "value":"70" }, + { "name":"k_EResultExpiredLoginAuthCode", "value":"71" }, + { "name":"k_EResultIPLoginRestrictionFailed", "value":"72" }, + { "name":"k_EResultAccountLockedDown", "value":"73" }, + { "name":"k_EResultAccountLogonDeniedVerifiedEmailRequired", "value":"74" }, + { "name":"k_EResultNoMatchingURL", "value":"75" }, + { "name":"k_EResultBadResponse", "value":"76" }, + { "name":"k_EResultRequirePasswordReEntry", "value":"77" }, + { "name":"k_EResultValueOutOfRange", "value":"78" }, + { "name":"k_EResultUnexpectedError", "value":"79" }, + { "name":"k_EResultDisabled", "value":"80" }, + { "name":"k_EResultInvalidCEGSubmission", "value":"81" }, + { "name":"k_EResultRestrictedDevice", "value":"82" }, + { "name":"k_EResultRegionLocked", "value":"83" }, + { "name":"k_EResultRateLimitExceeded", "value":"84" }, + { "name":"k_EResultAccountLoginDeniedNeedTwoFactor", "value":"85" }, + { "name":"k_EResultItemDeleted", "value":"86" }, + { "name":"k_EResultAccountLoginDeniedThrottle", "value":"87" }, + { "name":"k_EResultTwoFactorCodeMismatch", "value":"88" }, + { "name":"k_EResultTwoFactorActivationCodeMismatch", "value":"89" }, + { "name":"k_EResultAccountAssociatedToMultiplePartners", "value":"90" }, + { "name":"k_EResultNotModified", "value":"91" }, + { "name":"k_EResultNoMobileDevice", "value":"92" }, + { "name":"k_EResultTimeNotSynced", "value":"93" }, + { "name":"k_EResultSmsCodeFailed", "value":"94" }, + { "name":"k_EResultAccountLimitExceeded", "value":"95" }, + { "name":"k_EResultAccountActivityLimitExceeded", "value":"96" }, + { "name":"k_EResultPhoneActivityLimitExceeded", "value":"97" }, + { "name":"k_EResultRefundToWallet", "value":"98" }, + { "name":"k_EResultEmailSendFailure", "value":"99" }, + { "name":"k_EResultNotSettled", "value":"100" }, + { "name":"k_EResultNeedCaptcha", "value":"101" }, + { "name":"k_EResultGSLTDenied", "value":"102" }, + { "name":"k_EResultGSOwnerDenied", "value":"103" }, + { "name":"k_EResultInvalidItemType", "value":"104" }, + { "name":"k_EResultIPBanned", "value":"105" }, + { "name":"k_EResultGSLTExpired", "value":"106" }, + { "name":"k_EResultInsufficientFunds", "value":"107" }, + { "name":"k_EResultTooManyPending", "value":"108" }, + { "name":"k_EResultNoSiteLicensesFound", "value":"109" }, + { "name":"k_EResultWGNetworkSendExceeded", "value":"110" }, + { "name":"k_EResultAccountNotFriends", "value":"111" }, + { "name":"k_EResultLimitedUserAccount", "value":"112" }, + { "name":"k_EResultCantRemoveItem", "value":"113" }, + { "name":"k_EResultAccountDeleted", "value":"114" }, + { "name":"k_EResultExistingUserCancelledLicense", "value":"115" }, + { "name":"k_EResultCommunityCooldown", "value":"116" }, + { "name":"k_EResultNoLauncherSpecified", "value":"117" }, + { "name":"k_EResultMustAgreeToSSA", "value":"118" }, + { "name":"k_EResultLauncherMigrated", "value":"119" }, + { "name":"k_EResultSteamRealmMismatch", "value":"120" }, + { "name":"k_EResultInvalidSignature", "value":"121" }, + { "name":"k_EResultParseFailure", "value":"122" }, + { "name":"k_EResultNoVerifiedPhone", "value":"123" }, + { "name":"k_EResultInsufficientBattery", "value":"124" }, + { "name":"k_EResultChargerRequired", "value":"125" }, + { "name":"k_EResultCachedCredentialInvalid", "value":"126" }, + { "name":"K_EResultPhoneNumberIsVOIP", "value":"127" } + ] + }, + { + "enumname": "EVoiceResult", + "values": [ + { "name":"k_EVoiceResultOK", "value":"0" }, + { "name":"k_EVoiceResultNotInitialized", "value":"1" }, + { "name":"k_EVoiceResultNotRecording", "value":"2" }, + { "name":"k_EVoiceResultNoData", "value":"3" }, + { "name":"k_EVoiceResultBufferTooSmall", "value":"4" }, + { "name":"k_EVoiceResultDataCorrupted", "value":"5" }, + { "name":"k_EVoiceResultRestricted", "value":"6" }, + { "name":"k_EVoiceResultUnsupportedCodec", "value":"7" }, + { "name":"k_EVoiceResultReceiverOutOfDate", "value":"8" }, + { "name":"k_EVoiceResultReceiverDidNotAnswer", "value":"9" } + ] + }, + { + "enumname": "EDenyReason", + "values": [ + { "name":"k_EDenyInvalid", "value":"0" }, + { "name":"k_EDenyInvalidVersion", "value":"1" }, + { "name":"k_EDenyGeneric", "value":"2" }, + { "name":"k_EDenyNotLoggedOn", "value":"3" }, + { "name":"k_EDenyNoLicense", "value":"4" }, + { "name":"k_EDenyCheater", "value":"5" }, + { "name":"k_EDenyLoggedInElseWhere", "value":"6" }, + { "name":"k_EDenyUnknownText", "value":"7" }, + { "name":"k_EDenyIncompatibleAnticheat", "value":"8" }, + { "name":"k_EDenyMemoryCorruption", "value":"9" }, + { "name":"k_EDenyIncompatibleSoftware", "value":"10" }, + { "name":"k_EDenySteamConnectionLost", "value":"11" }, + { "name":"k_EDenySteamConnectionError", "value":"12" }, + { "name":"k_EDenySteamResponseTimedOut", "value":"13" }, + { "name":"k_EDenySteamValidationStalled", "value":"14" }, + { "name":"k_EDenySteamOwnerLeftGuestUser", "value":"15" } + ] + }, + { + "enumname": "EBeginAuthSessionResult", + "values": [ + { "name":"k_EBeginAuthSessionResultOK", "value":"0" }, + { "name":"k_EBeginAuthSessionResultInvalidTicket", "value":"1" }, + { "name":"k_EBeginAuthSessionResultDuplicateRequest", "value":"2" }, + { "name":"k_EBeginAuthSessionResultInvalidVersion", "value":"3" }, + { "name":"k_EBeginAuthSessionResultGameMismatch", "value":"4" }, + { "name":"k_EBeginAuthSessionResultExpiredTicket", "value":"5" } + ] + }, + { + "enumname": "EAuthSessionResponse", + "values": [ + { "name":"k_EAuthSessionResponseOK", "value":"0" }, + { "name":"k_EAuthSessionResponseUserNotConnectedToSteam", "value":"1" }, + { "name":"k_EAuthSessionResponseNoLicenseOrExpired", "value":"2" }, + { "name":"k_EAuthSessionResponseVACBanned", "value":"3" }, + { "name":"k_EAuthSessionResponseLoggedInElseWhere", "value":"4" }, + { "name":"k_EAuthSessionResponseVACCheckTimedOut", "value":"5" }, + { "name":"k_EAuthSessionResponseAuthTicketCanceled", "value":"6" }, + { "name":"k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed", "value":"7" }, + { "name":"k_EAuthSessionResponseAuthTicketInvalid", "value":"8" }, + { "name":"k_EAuthSessionResponsePublisherIssuedBan", "value":"9" } + ] + }, + { + "enumname": "EUserHasLicenseForAppResult", + "values": [ + { "name":"k_EUserHasLicenseResultHasLicense", "value":"0" }, + { "name":"k_EUserHasLicenseResultDoesNotHaveLicense", "value":"1" }, + { "name":"k_EUserHasLicenseResultNoAuth", "value":"2" } + ] + }, + { + "enumname": "EAccountType", + "values": [ + { "name":"k_EAccountTypeInvalid", "value":"0" }, + { "name":"k_EAccountTypeIndividual", "value":"1" }, + { "name":"k_EAccountTypeMultiseat", "value":"2" }, + { "name":"k_EAccountTypeGameServer", "value":"3" }, + { "name":"k_EAccountTypeAnonGameServer", "value":"4" }, + { "name":"k_EAccountTypePending", "value":"5" }, + { "name":"k_EAccountTypeContentServer", "value":"6" }, + { "name":"k_EAccountTypeClan", "value":"7" }, + { "name":"k_EAccountTypeChat", "value":"8" }, + { "name":"k_EAccountTypeConsoleUser", "value":"9" }, + { "name":"k_EAccountTypeAnonUser", "value":"10" }, + { "name":"k_EAccountTypeMax", "value":"11" } + ] + }, + { + "enumname": "EChatEntryType", + "values": [ + { "name":"k_EChatEntryTypeInvalid", "value":"0" }, + { "name":"k_EChatEntryTypeChatMsg", "value":"1" }, + { "name":"k_EChatEntryTypeTyping", "value":"2" }, + { "name":"k_EChatEntryTypeInviteGame", "value":"3" }, + { "name":"k_EChatEntryTypeEmote", "value":"4" }, + { "name":"k_EChatEntryTypeLeftConversation", "value":"6" }, + { "name":"k_EChatEntryTypeEntered", "value":"7" }, + { "name":"k_EChatEntryTypeWasKicked", "value":"8" }, + { "name":"k_EChatEntryTypeWasBanned", "value":"9" }, + { "name":"k_EChatEntryTypeDisconnected", "value":"10" }, + { "name":"k_EChatEntryTypeHistoricalChat", "value":"11" }, + { "name":"k_EChatEntryTypeLinkBlocked", "value":"14" } + ] + }, + { + "enumname": "EChatRoomEnterResponse", + "values": [ + { "name":"k_EChatRoomEnterResponseSuccess", "value":"1" }, + { "name":"k_EChatRoomEnterResponseDoesntExist", "value":"2" }, + { "name":"k_EChatRoomEnterResponseNotAllowed", "value":"3" }, + { "name":"k_EChatRoomEnterResponseFull", "value":"4" }, + { "name":"k_EChatRoomEnterResponseError", "value":"5" }, + { "name":"k_EChatRoomEnterResponseBanned", "value":"6" }, + { "name":"k_EChatRoomEnterResponseLimited", "value":"7" }, + { "name":"k_EChatRoomEnterResponseClanDisabled", "value":"8" }, + { "name":"k_EChatRoomEnterResponseCommunityBan", "value":"9" }, + { "name":"k_EChatRoomEnterResponseMemberBlockedYou", "value":"10" }, + { "name":"k_EChatRoomEnterResponseYouBlockedMember", "value":"11" }, + { "name":"k_EChatRoomEnterResponseRatelimitExceeded", "value":"15" } + ] + }, + { + "enumname": "EChatSteamIDInstanceFlags", + "values": [ + { "name":"k_EChatAccountInstanceMask", "value":"4095" }, + { "name":"k_EChatInstanceFlagClan", "value":"524288" }, + { "name":"k_EChatInstanceFlagLobby", "value":"262144" }, + { "name":"k_EChatInstanceFlagMMSLobby", "value":"131072" } + ] + }, + { + "enumname": "ENotificationPosition", + "values": [ + { "name":"k_EPositionTopLeft", "value":"0" }, + { "name":"k_EPositionTopRight", "value":"1" }, + { "name":"k_EPositionBottomLeft", "value":"2" }, + { "name":"k_EPositionBottomRight", "value":"3" } + ] + }, + { + "enumname": "EBroadcastUploadResult", + "values": [ + { "name":"k_EBroadcastUploadResultNone", "value":"0" }, + { "name":"k_EBroadcastUploadResultOK", "value":"1" }, + { "name":"k_EBroadcastUploadResultInitFailed", "value":"2" }, + { "name":"k_EBroadcastUploadResultFrameFailed", "value":"3" }, + { "name":"k_EBroadcastUploadResultTimeout", "value":"4" }, + { "name":"k_EBroadcastUploadResultBandwidthExceeded", "value":"5" }, + { "name":"k_EBroadcastUploadResultLowFPS", "value":"6" }, + { "name":"k_EBroadcastUploadResultMissingKeyFrames", "value":"7" }, + { "name":"k_EBroadcastUploadResultNoConnection", "value":"8" }, + { "name":"k_EBroadcastUploadResultRelayFailed", "value":"9" }, + { "name":"k_EBroadcastUploadResultSettingsChanged", "value":"10" }, + { "name":"k_EBroadcastUploadResultMissingAudio", "value":"11" }, + { "name":"k_EBroadcastUploadResultTooFarBehind", "value":"12" }, + { "name":"k_EBroadcastUploadResultTranscodeBehind", "value":"13" }, + { "name":"k_EBroadcastUploadResultNotAllowedToPlay", "value":"14" }, + { "name":"k_EBroadcastUploadResultBusy", "value":"15" }, + { "name":"k_EBroadcastUploadResultBanned", "value":"16" }, + { "name":"k_EBroadcastUploadResultAlreadyActive", "value":"17" }, + { "name":"k_EBroadcastUploadResultForcedOff", "value":"18" }, + { "name":"k_EBroadcastUploadResultAudioBehind", "value":"19" }, + { "name":"k_EBroadcastUploadResultShutdown", "value":"20" }, + { "name":"k_EBroadcastUploadResultDisconnect", "value":"21" }, + { "name":"k_EBroadcastUploadResultVideoInitFailed", "value":"22" }, + { "name":"k_EBroadcastUploadResultAudioInitFailed", "value":"23" } + ] + }, + { + "enumname": "EMarketNotAllowedReasonFlags", + "values": [ + { "name":"k_EMarketNotAllowedReason_None", "value":"0" }, + { "name":"k_EMarketNotAllowedReason_TemporaryFailure", "value":"1" }, + { "name":"k_EMarketNotAllowedReason_AccountDisabled", "value":"2" }, + { "name":"k_EMarketNotAllowedReason_AccountLockedDown", "value":"4" }, + { "name":"k_EMarketNotAllowedReason_AccountLimited", "value":"8" }, + { "name":"k_EMarketNotAllowedReason_TradeBanned", "value":"16" }, + { "name":"k_EMarketNotAllowedReason_AccountNotTrusted", "value":"32" }, + { "name":"k_EMarketNotAllowedReason_SteamGuardNotEnabled", "value":"64" }, + { "name":"k_EMarketNotAllowedReason_SteamGuardOnlyRecentlyEnabled", "value":"128" }, + { "name":"k_EMarketNotAllowedReason_RecentPasswordReset", "value":"256" }, + { "name":"k_EMarketNotAllowedReason_NewPaymentMethod", "value":"512" }, + { "name":"k_EMarketNotAllowedReason_InvalidCookie", "value":"1024" }, + { "name":"k_EMarketNotAllowedReason_UsingNewDevice", "value":"2048" }, + { "name":"k_EMarketNotAllowedReason_RecentSelfRefund", "value":"4096" }, + { "name":"k_EMarketNotAllowedReason_NewPaymentMethodCannotBeVerified", "value":"8192" }, + { "name":"k_EMarketNotAllowedReason_NoRecentPurchases", "value":"16384" }, + { "name":"k_EMarketNotAllowedReason_AcceptedWalletGift", "value":"32768" } + ] + }, + { + "enumname": "EDurationControlProgress", + "values": [ + { "name":"k_EDurationControlProgress_Full", "value":"0" }, + { "name":"k_EDurationControlProgress_Half", "value":"1" }, + { "name":"k_EDurationControlProgress_None", "value":"2" }, + { "name":"k_EDurationControl_ExitSoon_3h", "value":"3" }, + { "name":"k_EDurationControl_ExitSoon_5h", "value":"4" }, + { "name":"k_EDurationControl_ExitSoon_Night", "value":"5" } + ] + }, + { + "enumname": "EDurationControlNotification", + "values": [ + { "name":"k_EDurationControlNotification_None", "value":"0" }, + { "name":"k_EDurationControlNotification_1Hour", "value":"1" }, + { "name":"k_EDurationControlNotification_3Hours", "value":"2" }, + { "name":"k_EDurationControlNotification_HalfProgress", "value":"3" }, + { "name":"k_EDurationControlNotification_NoProgress", "value":"4" }, + { "name":"k_EDurationControlNotification_ExitSoon_3h", "value":"5" }, + { "name":"k_EDurationControlNotification_ExitSoon_5h", "value":"6" }, + { "name":"k_EDurationControlNotification_ExitSoon_Night", "value":"7" } + ] + }, + { + "enumname": "EDurationControlOnlineState", + "values": [ + { "name":"k_EDurationControlOnlineState_Invalid", "value":"0" }, + { "name":"k_EDurationControlOnlineState_Offline", "value":"1" }, + { "name":"k_EDurationControlOnlineState_Online", "value":"2" }, + { "name":"k_EDurationControlOnlineState_OnlineHighPri", "value":"3" } + ] + }, + { + "enumname": "EGameSearchErrorCode_t", + "values": [ + { "name":"k_EGameSearchErrorCode_OK", "value":"1" }, + { "name":"k_EGameSearchErrorCode_Failed_Search_Already_In_Progress", "value":"2" }, + { "name":"k_EGameSearchErrorCode_Failed_No_Search_In_Progress", "value":"3" }, + { "name":"k_EGameSearchErrorCode_Failed_Not_Lobby_Leader", "value":"4" }, + { "name":"k_EGameSearchErrorCode_Failed_No_Host_Available", "value":"5" }, + { "name":"k_EGameSearchErrorCode_Failed_Search_Params_Invalid", "value":"6" }, + { "name":"k_EGameSearchErrorCode_Failed_Offline", "value":"7" }, + { "name":"k_EGameSearchErrorCode_Failed_NotAuthorized", "value":"8" }, + { "name":"k_EGameSearchErrorCode_Failed_Unknown_Error", "value":"9" } + ] + }, + { + "enumname": "EPlayerResult_t", + "values": [ + { "name":"k_EPlayerResultFailedToConnect", "value":"1" }, + { "name":"k_EPlayerResultAbandoned", "value":"2" }, + { "name":"k_EPlayerResultKicked", "value":"3" }, + { "name":"k_EPlayerResultIncomplete", "value":"4" }, + { "name":"k_EPlayerResultCompleted", "value":"5" } + ] + }, + { + "enumname": "ESteamIPv6ConnectivityProtocol", + "values": [ + { "name":"k_ESteamIPv6ConnectivityProtocol_Invalid", "value":"0" }, + { "name":"k_ESteamIPv6ConnectivityProtocol_HTTP", "value":"1" }, + { "name":"k_ESteamIPv6ConnectivityProtocol_UDP", "value":"2" } + ] + }, + { + "enumname": "ESteamIPv6ConnectivityState", + "values": [ + { "name":"k_ESteamIPv6ConnectivityState_Unknown", "value":"0" }, + { "name":"k_ESteamIPv6ConnectivityState_Good", "value":"1" }, + { "name":"k_ESteamIPv6ConnectivityState_Bad", "value":"2" } + ] + }, + { + "enumname": "EFriendRelationship", + "values": [ + { "name":"k_EFriendRelationshipNone", "value":"0" }, + { "name":"k_EFriendRelationshipBlocked", "value":"1" }, + { "name":"k_EFriendRelationshipRequestRecipient", "value":"2" }, + { "name":"k_EFriendRelationshipFriend", "value":"3" }, + { "name":"k_EFriendRelationshipRequestInitiator", "value":"4" }, + { "name":"k_EFriendRelationshipIgnored", "value":"5" }, + { "name":"k_EFriendRelationshipIgnoredFriend", "value":"6" }, + { "name":"k_EFriendRelationshipSuggested_DEPRECATED", "value":"7" }, + { "name":"k_EFriendRelationshipMax", "value":"8" } + ] + }, + { + "enumname": "EPersonaState", + "values": [ + { "name":"k_EPersonaStateOffline", "value":"0" }, + { "name":"k_EPersonaStateOnline", "value":"1" }, + { "name":"k_EPersonaStateBusy", "value":"2" }, + { "name":"k_EPersonaStateAway", "value":"3" }, + { "name":"k_EPersonaStateSnooze", "value":"4" }, + { "name":"k_EPersonaStateLookingToTrade", "value":"5" }, + { "name":"k_EPersonaStateLookingToPlay", "value":"6" }, + { "name":"k_EPersonaStateInvisible", "value":"7" }, + { "name":"k_EPersonaStateMax", "value":"8" } + ] + }, + { + "enumname": "EFriendFlags", + "values": [ + { "name":"k_EFriendFlagNone", "value":"0" }, + { "name":"k_EFriendFlagBlocked", "value":"1" }, + { "name":"k_EFriendFlagFriendshipRequested", "value":"2" }, + { "name":"k_EFriendFlagImmediate", "value":"4" }, + { "name":"k_EFriendFlagClanMember", "value":"8" }, + { "name":"k_EFriendFlagOnGameServer", "value":"16" }, + { "name":"k_EFriendFlagRequestingFriendship", "value":"128" }, + { "name":"k_EFriendFlagRequestingInfo", "value":"256" }, + { "name":"k_EFriendFlagIgnored", "value":"512" }, + { "name":"k_EFriendFlagIgnoredFriend", "value":"1024" }, + { "name":"k_EFriendFlagChatMember", "value":"4096" }, + { "name":"k_EFriendFlagAll", "value":"65535" } + ] + }, + { + "enumname": "EUserRestriction", + "values": [ + { "name":"k_nUserRestrictionNone", "value":"0" }, + { "name":"k_nUserRestrictionUnknown", "value":"1" }, + { "name":"k_nUserRestrictionAnyChat", "value":"2" }, + { "name":"k_nUserRestrictionVoiceChat", "value":"4" }, + { "name":"k_nUserRestrictionGroupChat", "value":"8" }, + { "name":"k_nUserRestrictionRating", "value":"16" }, + { "name":"k_nUserRestrictionGameInvites", "value":"32" }, + { "name":"k_nUserRestrictionTrading", "value":"64" } + ] + }, + { + "enumname": "EOverlayToStoreFlag", + "values": [ + { "name":"k_EOverlayToStoreFlag_None", "value":"0" }, + { "name":"k_EOverlayToStoreFlag_AddToCart", "value":"1" }, + { "name":"k_EOverlayToStoreFlag_AddToCartAndShow", "value":"2" } + ] + }, + { + "enumname": "EActivateGameOverlayToWebPageMode", + "values": [ + { "name":"k_EActivateGameOverlayToWebPageMode_Default", "value":"0" }, + { "name":"k_EActivateGameOverlayToWebPageMode_Modal", "value":"1" } + ] + }, + { + "enumname": "ECommunityProfileItemType", + "values": [ + { "name":"k_ECommunityProfileItemType_AnimatedAvatar", "value":"0" }, + { "name":"k_ECommunityProfileItemType_AvatarFrame", "value":"1" }, + { "name":"k_ECommunityProfileItemType_ProfileModifier", "value":"2" }, + { "name":"k_ECommunityProfileItemType_ProfileBackground", "value":"3" }, + { "name":"k_ECommunityProfileItemType_MiniProfileBackground", "value":"4" } + ] + }, + { + "enumname": "ECommunityProfileItemProperty", + "values": [ + { "name":"k_ECommunityProfileItemProperty_ImageSmall", "value":"0" }, + { "name":"k_ECommunityProfileItemProperty_ImageLarge", "value":"1" }, + { "name":"k_ECommunityProfileItemProperty_InternalName", "value":"2" }, + { "name":"k_ECommunityProfileItemProperty_Title", "value":"3" }, + { "name":"k_ECommunityProfileItemProperty_Description", "value":"4" }, + { "name":"k_ECommunityProfileItemProperty_AppID", "value":"5" }, + { "name":"k_ECommunityProfileItemProperty_TypeID", "value":"6" }, + { "name":"k_ECommunityProfileItemProperty_Class", "value":"7" }, + { "name":"k_ECommunityProfileItemProperty_MovieWebM", "value":"8" }, + { "name":"k_ECommunityProfileItemProperty_MovieMP4", "value":"9" }, + { "name":"k_ECommunityProfileItemProperty_MovieWebMSmall", "value":"10" }, + { "name":"k_ECommunityProfileItemProperty_MovieMP4Small", "value":"11" } + ] + }, + { + "enumname": "EPersonaChange", + "values": [ + { "name":"k_EPersonaChangeName", "value":"1" }, + { "name":"k_EPersonaChangeStatus", "value":"2" }, + { "name":"k_EPersonaChangeComeOnline", "value":"4" }, + { "name":"k_EPersonaChangeGoneOffline", "value":"8" }, + { "name":"k_EPersonaChangeGamePlayed", "value":"16" }, + { "name":"k_EPersonaChangeGameServer", "value":"32" }, + { "name":"k_EPersonaChangeAvatar", "value":"64" }, + { "name":"k_EPersonaChangeJoinedSource", "value":"128" }, + { "name":"k_EPersonaChangeLeftSource", "value":"256" }, + { "name":"k_EPersonaChangeRelationshipChanged", "value":"512" }, + { "name":"k_EPersonaChangeNameFirstSet", "value":"1024" }, + { "name":"k_EPersonaChangeBroadcast", "value":"2048" }, + { "name":"k_EPersonaChangeNickname", "value":"4096" }, + { "name":"k_EPersonaChangeSteamLevel", "value":"8192" }, + { "name":"k_EPersonaChangeRichPresence", "value":"16384" } + ] + }, + { + "enumname": "ESteamAPICallFailure", + "values": [ + { "name":"k_ESteamAPICallFailureNone", "value":"-1" }, + { "name":"k_ESteamAPICallFailureSteamGone", "value":"0" }, + { "name":"k_ESteamAPICallFailureNetworkFailure", "value":"1" }, + { "name":"k_ESteamAPICallFailureInvalidHandle", "value":"2" }, + { "name":"k_ESteamAPICallFailureMismatchedCallback", "value":"3" } + ] + }, + { + "enumname": "EGamepadTextInputMode", + "values": [ + { "name":"k_EGamepadTextInputModeNormal", "value":"0" }, + { "name":"k_EGamepadTextInputModePassword", "value":"1" } + ] + }, + { + "enumname": "EGamepadTextInputLineMode", + "values": [ + { "name":"k_EGamepadTextInputLineModeSingleLine", "value":"0" }, + { "name":"k_EGamepadTextInputLineModeMultipleLines", "value":"1" } + ] + }, + { + "enumname": "EFloatingGamepadTextInputMode", + "values": [ + { "name":"k_EFloatingGamepadTextInputModeModeSingleLine", "value":"0" }, + { "name":"k_EFloatingGamepadTextInputModeModeMultipleLines", "value":"1" }, + { "name":"k_EFloatingGamepadTextInputModeModeEmail", "value":"2" }, + { "name":"k_EFloatingGamepadTextInputModeModeNumeric", "value":"3" } + ] + }, + { + "enumname": "ETextFilteringContext", + "values": [ + { "name":"k_ETextFilteringContextUnknown", "value":"0" }, + { "name":"k_ETextFilteringContextGameContent", "value":"1" }, + { "name":"k_ETextFilteringContextChat", "value":"2" }, + { "name":"k_ETextFilteringContextName", "value":"3" } + ] + }, + { + "enumname": "ECheckFileSignature", + "values": [ + { "name":"k_ECheckFileSignatureInvalidSignature", "value":"0" }, + { "name":"k_ECheckFileSignatureValidSignature", "value":"1" }, + { "name":"k_ECheckFileSignatureFileNotFound", "value":"2" }, + { "name":"k_ECheckFileSignatureNoSignaturesFoundForThisApp", "value":"3" }, + { "name":"k_ECheckFileSignatureNoSignaturesFoundForThisFile", "value":"4" } + ] + }, + { + "enumname": "EMatchMakingServerResponse", + "values": [ + { "name":"eServerResponded", "value":"0" }, + { "name":"eServerFailedToRespond", "value":"1" }, + { "name":"eNoServersListedOnMasterServer", "value":"2" } + ] + }, + { + "enumname": "ELobbyType", + "values": [ + { "name":"k_ELobbyTypePrivate", "value":"0" }, + { "name":"k_ELobbyTypeFriendsOnly", "value":"1" }, + { "name":"k_ELobbyTypePublic", "value":"2" }, + { "name":"k_ELobbyTypeInvisible", "value":"3" }, + { "name":"k_ELobbyTypePrivateUnique", "value":"4" } + ] + }, + { + "enumname": "ELobbyComparison", + "values": [ + { "name":"k_ELobbyComparisonEqualToOrLessThan", "value":"-2" }, + { "name":"k_ELobbyComparisonLessThan", "value":"-1" }, + { "name":"k_ELobbyComparisonEqual", "value":"0" }, + { "name":"k_ELobbyComparisonGreaterThan", "value":"1" }, + { "name":"k_ELobbyComparisonEqualToOrGreaterThan", "value":"2" }, + { "name":"k_ELobbyComparisonNotEqual", "value":"3" } + ] + }, + { + "enumname": "ELobbyDistanceFilter", + "values": [ + { "name":"k_ELobbyDistanceFilterClose", "value":"0" }, + { "name":"k_ELobbyDistanceFilterDefault", "value":"1" }, + { "name":"k_ELobbyDistanceFilterFar", "value":"2" }, + { "name":"k_ELobbyDistanceFilterWorldwide", "value":"3" } + ] + }, + { + "enumname": "EChatMemberStateChange", + "values": [ + { "name":"k_EChatMemberStateChangeEntered", "value":"1" }, + { "name":"k_EChatMemberStateChangeLeft", "value":"2" }, + { "name":"k_EChatMemberStateChangeDisconnected", "value":"4" }, + { "name":"k_EChatMemberStateChangeKicked", "value":"8" }, + { "name":"k_EChatMemberStateChangeBanned", "value":"16" } + ] + }, + { + "enumname": "ESteamPartyBeaconLocationType", + "values": [ + { "name":"k_ESteamPartyBeaconLocationType_Invalid", "value":"0" }, + { "name":"k_ESteamPartyBeaconLocationType_ChatGroup", "value":"1" }, + { "name":"k_ESteamPartyBeaconLocationType_Max", "value":"2" } + ] + }, + { + "enumname": "ESteamPartyBeaconLocationData", + "values": [ + { "name":"k_ESteamPartyBeaconLocationDataInvalid", "value":"0" }, + { "name":"k_ESteamPartyBeaconLocationDataName", "value":"1" }, + { "name":"k_ESteamPartyBeaconLocationDataIconURLSmall", "value":"2" }, + { "name":"k_ESteamPartyBeaconLocationDataIconURLMedium", "value":"3" }, + { "name":"k_ESteamPartyBeaconLocationDataIconURLLarge", "value":"4" } + ] + }, + { + "enumname": "ERemoteStoragePlatform", + "values": [ + { "name":"k_ERemoteStoragePlatformNone", "value":"0" }, + { "name":"k_ERemoteStoragePlatformWindows", "value":"1" }, + { "name":"k_ERemoteStoragePlatformOSX", "value":"2" }, + { "name":"k_ERemoteStoragePlatformPS3", "value":"4" }, + { "name":"k_ERemoteStoragePlatformLinux", "value":"8" }, + { "name":"k_ERemoteStoragePlatformSwitch", "value":"16" }, + { "name":"k_ERemoteStoragePlatformAndroid", "value":"32" }, + { "name":"k_ERemoteStoragePlatformIOS", "value":"64" }, + { "name":"k_ERemoteStoragePlatformAll", "value":"-1" } + ] + }, + { + "enumname": "ERemoteStoragePublishedFileVisibility", + "values": [ + { "name":"k_ERemoteStoragePublishedFileVisibilityPublic", "value":"0" }, + { "name":"k_ERemoteStoragePublishedFileVisibilityFriendsOnly", "value":"1" }, + { "name":"k_ERemoteStoragePublishedFileVisibilityPrivate", "value":"2" }, + { "name":"k_ERemoteStoragePublishedFileVisibilityUnlisted", "value":"3" } + ] + }, + { + "enumname": "EWorkshopFileType", + "values": [ + { "name":"k_EWorkshopFileTypeFirst", "value":"0" }, + { "name":"k_EWorkshopFileTypeCommunity", "value":"0" }, + { "name":"k_EWorkshopFileTypeMicrotransaction", "value":"1" }, + { "name":"k_EWorkshopFileTypeCollection", "value":"2" }, + { "name":"k_EWorkshopFileTypeArt", "value":"3" }, + { "name":"k_EWorkshopFileTypeVideo", "value":"4" }, + { "name":"k_EWorkshopFileTypeScreenshot", "value":"5" }, + { "name":"k_EWorkshopFileTypeGame", "value":"6" }, + { "name":"k_EWorkshopFileTypeSoftware", "value":"7" }, + { "name":"k_EWorkshopFileTypeConcept", "value":"8" }, + { "name":"k_EWorkshopFileTypeWebGuide", "value":"9" }, + { "name":"k_EWorkshopFileTypeIntegratedGuide", "value":"10" }, + { "name":"k_EWorkshopFileTypeMerch", "value":"11" }, + { "name":"k_EWorkshopFileTypeControllerBinding", "value":"12" }, + { "name":"k_EWorkshopFileTypeSteamworksAccessInvite", "value":"13" }, + { "name":"k_EWorkshopFileTypeSteamVideo", "value":"14" }, + { "name":"k_EWorkshopFileTypeGameManagedItem", "value":"15" }, + { "name":"k_EWorkshopFileTypeMax", "value":"16" } + ] + }, + { + "enumname": "EWorkshopVote", + "values": [ + { "name":"k_EWorkshopVoteUnvoted", "value":"0" }, + { "name":"k_EWorkshopVoteFor", "value":"1" }, + { "name":"k_EWorkshopVoteAgainst", "value":"2" }, + { "name":"k_EWorkshopVoteLater", "value":"3" } + ] + }, + { + "enumname": "EWorkshopFileAction", + "values": [ + { "name":"k_EWorkshopFileActionPlayed", "value":"0" }, + { "name":"k_EWorkshopFileActionCompleted", "value":"1" } + ] + }, + { + "enumname": "EWorkshopEnumerationType", + "values": [ + { "name":"k_EWorkshopEnumerationTypeRankedByVote", "value":"0" }, + { "name":"k_EWorkshopEnumerationTypeRecent", "value":"1" }, + { "name":"k_EWorkshopEnumerationTypeTrending", "value":"2" }, + { "name":"k_EWorkshopEnumerationTypeFavoritesOfFriends", "value":"3" }, + { "name":"k_EWorkshopEnumerationTypeVotedByFriends", "value":"4" }, + { "name":"k_EWorkshopEnumerationTypeContentByFriends", "value":"5" }, + { "name":"k_EWorkshopEnumerationTypeRecentFromFollowedUsers", "value":"6" } + ] + }, + { + "enumname": "EWorkshopVideoProvider", + "values": [ + { "name":"k_EWorkshopVideoProviderNone", "value":"0" }, + { "name":"k_EWorkshopVideoProviderYoutube", "value":"1" } + ] + }, + { + "enumname": "EUGCReadAction", + "values": [ + { "name":"k_EUGCRead_ContinueReadingUntilFinished", "value":"0" }, + { "name":"k_EUGCRead_ContinueReading", "value":"1" }, + { "name":"k_EUGCRead_Close", "value":"2" } + ] + }, + { + "enumname": "ERemoteStorageLocalFileChange", + "values": [ + { "name":"k_ERemoteStorageLocalFileChange_Invalid", "value":"0" }, + { "name":"k_ERemoteStorageLocalFileChange_FileUpdated", "value":"1" }, + { "name":"k_ERemoteStorageLocalFileChange_FileDeleted", "value":"2" } + ] + }, + { + "enumname": "ERemoteStorageFilePathType", + "values": [ + { "name":"k_ERemoteStorageFilePathType_Invalid", "value":"0" }, + { "name":"k_ERemoteStorageFilePathType_Absolute", "value":"1" }, + { "name":"k_ERemoteStorageFilePathType_APIFilename", "value":"2" } + ] + }, + { + "enumname": "ELeaderboardDataRequest", + "values": [ + { "name":"k_ELeaderboardDataRequestGlobal", "value":"0" }, + { "name":"k_ELeaderboardDataRequestGlobalAroundUser", "value":"1" }, + { "name":"k_ELeaderboardDataRequestFriends", "value":"2" }, + { "name":"k_ELeaderboardDataRequestUsers", "value":"3" } + ] + }, + { + "enumname": "ELeaderboardSortMethod", + "values": [ + { "name":"k_ELeaderboardSortMethodNone", "value":"0" }, + { "name":"k_ELeaderboardSortMethodAscending", "value":"1" }, + { "name":"k_ELeaderboardSortMethodDescending", "value":"2" } + ] + }, + { + "enumname": "ELeaderboardDisplayType", + "values": [ + { "name":"k_ELeaderboardDisplayTypeNone", "value":"0" }, + { "name":"k_ELeaderboardDisplayTypeNumeric", "value":"1" }, + { "name":"k_ELeaderboardDisplayTypeTimeSeconds", "value":"2" }, + { "name":"k_ELeaderboardDisplayTypeTimeMilliSeconds", "value":"3" } + ] + }, + { + "enumname": "ELeaderboardUploadScoreMethod", + "values": [ + { "name":"k_ELeaderboardUploadScoreMethodNone", "value":"0" }, + { "name":"k_ELeaderboardUploadScoreMethodKeepBest", "value":"1" }, + { "name":"k_ELeaderboardUploadScoreMethodForceUpdate", "value":"2" } + ] + }, + { + "enumname": "ERegisterActivationCodeResult", + "values": [ + { "name":"k_ERegisterActivationCodeResultOK", "value":"0" }, + { "name":"k_ERegisterActivationCodeResultFail", "value":"1" }, + { "name":"k_ERegisterActivationCodeResultAlreadyRegistered", "value":"2" }, + { "name":"k_ERegisterActivationCodeResultTimeout", "value":"3" }, + { "name":"k_ERegisterActivationCodeAlreadyOwned", "value":"4" } + ] + }, + { + "enumname": "EP2PSessionError", + "values": [ + { "name":"k_EP2PSessionErrorNone", "value":"0" }, + { "name":"k_EP2PSessionErrorNoRightsToApp", "value":"2" }, + { "name":"k_EP2PSessionErrorTimeout", "value":"4" }, + { "name":"k_EP2PSessionErrorNotRunningApp_DELETED", "value":"1" }, + { "name":"k_EP2PSessionErrorDestinationNotLoggedIn_DELETED", "value":"3" }, + { "name":"k_EP2PSessionErrorMax", "value":"5" } + ] + }, + { + "enumname": "EP2PSend", + "values": [ + { "name":"k_EP2PSendUnreliable", "value":"0" }, + { "name":"k_EP2PSendUnreliableNoDelay", "value":"1" }, + { "name":"k_EP2PSendReliable", "value":"2" }, + { "name":"k_EP2PSendReliableWithBuffering", "value":"3" } + ] + }, + { + "enumname": "ESNetSocketState", + "values": [ + { "name":"k_ESNetSocketStateInvalid", "value":"0" }, + { "name":"k_ESNetSocketStateConnected", "value":"1" }, + { "name":"k_ESNetSocketStateInitiated", "value":"10" }, + { "name":"k_ESNetSocketStateLocalCandidatesFound", "value":"11" }, + { "name":"k_ESNetSocketStateReceivedRemoteCandidates", "value":"12" }, + { "name":"k_ESNetSocketStateChallengeHandshake", "value":"15" }, + { "name":"k_ESNetSocketStateDisconnecting", "value":"21" }, + { "name":"k_ESNetSocketStateLocalDisconnect", "value":"22" }, + { "name":"k_ESNetSocketStateTimeoutDuringConnect", "value":"23" }, + { "name":"k_ESNetSocketStateRemoteEndDisconnected", "value":"24" }, + { "name":"k_ESNetSocketStateConnectionBroken", "value":"25" } + ] + }, + { + "enumname": "ESNetSocketConnectionType", + "values": [ + { "name":"k_ESNetSocketConnectionTypeNotConnected", "value":"0" }, + { "name":"k_ESNetSocketConnectionTypeUDP", "value":"1" }, + { "name":"k_ESNetSocketConnectionTypeUDPRelay", "value":"2" } + ] + }, + { + "enumname": "EVRScreenshotType", + "values": [ + { "name":"k_EVRScreenshotType_None", "value":"0" }, + { "name":"k_EVRScreenshotType_Mono", "value":"1" }, + { "name":"k_EVRScreenshotType_Stereo", "value":"2" }, + { "name":"k_EVRScreenshotType_MonoCubemap", "value":"3" }, + { "name":"k_EVRScreenshotType_MonoPanorama", "value":"4" }, + { "name":"k_EVRScreenshotType_StereoPanorama", "value":"5" } + ] + }, + { + "enumname": "AudioPlayback_Status", + "values": [ + { "name":"AudioPlayback_Undefined", "value":"0" }, + { "name":"AudioPlayback_Playing", "value":"1" }, + { "name":"AudioPlayback_Paused", "value":"2" }, + { "name":"AudioPlayback_Idle", "value":"3" } + ] + }, + { + "enumname": "EHTTPMethod", + "values": [ + { "name":"k_EHTTPMethodInvalid", "value":"0" }, + { "name":"k_EHTTPMethodGET", "value":"1" }, + { "name":"k_EHTTPMethodHEAD", "value":"2" }, + { "name":"k_EHTTPMethodPOST", "value":"3" }, + { "name":"k_EHTTPMethodPUT", "value":"4" }, + { "name":"k_EHTTPMethodDELETE", "value":"5" }, + { "name":"k_EHTTPMethodOPTIONS", "value":"6" }, + { "name":"k_EHTTPMethodPATCH", "value":"7" } + ] + }, + { + "enumname": "EHTTPStatusCode", + "values": [ + { "name":"k_EHTTPStatusCodeInvalid", "value":"0" }, + { "name":"k_EHTTPStatusCode100Continue", "value":"100" }, + { "name":"k_EHTTPStatusCode101SwitchingProtocols", "value":"101" }, + { "name":"k_EHTTPStatusCode200OK", "value":"200" }, + { "name":"k_EHTTPStatusCode201Created", "value":"201" }, + { "name":"k_EHTTPStatusCode202Accepted", "value":"202" }, + { "name":"k_EHTTPStatusCode203NonAuthoritative", "value":"203" }, + { "name":"k_EHTTPStatusCode204NoContent", "value":"204" }, + { "name":"k_EHTTPStatusCode205ResetContent", "value":"205" }, + { "name":"k_EHTTPStatusCode206PartialContent", "value":"206" }, + { "name":"k_EHTTPStatusCode300MultipleChoices", "value":"300" }, + { "name":"k_EHTTPStatusCode301MovedPermanently", "value":"301" }, + { "name":"k_EHTTPStatusCode302Found", "value":"302" }, + { "name":"k_EHTTPStatusCode303SeeOther", "value":"303" }, + { "name":"k_EHTTPStatusCode304NotModified", "value":"304" }, + { "name":"k_EHTTPStatusCode305UseProxy", "value":"305" }, + { "name":"k_EHTTPStatusCode307TemporaryRedirect", "value":"307" }, + { "name":"k_EHTTPStatusCode400BadRequest", "value":"400" }, + { "name":"k_EHTTPStatusCode401Unauthorized", "value":"401" }, + { "name":"k_EHTTPStatusCode402PaymentRequired", "value":"402" }, + { "name":"k_EHTTPStatusCode403Forbidden", "value":"403" }, + { "name":"k_EHTTPStatusCode404NotFound", "value":"404" }, + { "name":"k_EHTTPStatusCode405MethodNotAllowed", "value":"405" }, + { "name":"k_EHTTPStatusCode406NotAcceptable", "value":"406" }, + { "name":"k_EHTTPStatusCode407ProxyAuthRequired", "value":"407" }, + { "name":"k_EHTTPStatusCode408RequestTimeout", "value":"408" }, + { "name":"k_EHTTPStatusCode409Conflict", "value":"409" }, + { "name":"k_EHTTPStatusCode410Gone", "value":"410" }, + { "name":"k_EHTTPStatusCode411LengthRequired", "value":"411" }, + { "name":"k_EHTTPStatusCode412PreconditionFailed", "value":"412" }, + { "name":"k_EHTTPStatusCode413RequestEntityTooLarge", "value":"413" }, + { "name":"k_EHTTPStatusCode414RequestURITooLong", "value":"414" }, + { "name":"k_EHTTPStatusCode415UnsupportedMediaType", "value":"415" }, + { "name":"k_EHTTPStatusCode416RequestedRangeNotSatisfiable", "value":"416" }, + { "name":"k_EHTTPStatusCode417ExpectationFailed", "value":"417" }, + { "name":"k_EHTTPStatusCode4xxUnknown", "value":"418" }, + { "name":"k_EHTTPStatusCode429TooManyRequests", "value":"429" }, + { "name":"k_EHTTPStatusCode444ConnectionClosed", "value":"444" }, + { "name":"k_EHTTPStatusCode500InternalServerError", "value":"500" }, + { "name":"k_EHTTPStatusCode501NotImplemented", "value":"501" }, + { "name":"k_EHTTPStatusCode502BadGateway", "value":"502" }, + { "name":"k_EHTTPStatusCode503ServiceUnavailable", "value":"503" }, + { "name":"k_EHTTPStatusCode504GatewayTimeout", "value":"504" }, + { "name":"k_EHTTPStatusCode505HTTPVersionNotSupported", "value":"505" }, + { "name":"k_EHTTPStatusCode5xxUnknown", "value":"599" } + ] + }, + { + "enumname": "EInputSourceMode", + "values": [ + { "name":"k_EInputSourceMode_None", "value":"0" }, + { "name":"k_EInputSourceMode_Dpad", "value":"1" }, + { "name":"k_EInputSourceMode_Buttons", "value":"2" }, + { "name":"k_EInputSourceMode_FourButtons", "value":"3" }, + { "name":"k_EInputSourceMode_AbsoluteMouse", "value":"4" }, + { "name":"k_EInputSourceMode_RelativeMouse", "value":"5" }, + { "name":"k_EInputSourceMode_JoystickMove", "value":"6" }, + { "name":"k_EInputSourceMode_JoystickMouse", "value":"7" }, + { "name":"k_EInputSourceMode_JoystickCamera", "value":"8" }, + { "name":"k_EInputSourceMode_ScrollWheel", "value":"9" }, + { "name":"k_EInputSourceMode_Trigger", "value":"10" }, + { "name":"k_EInputSourceMode_TouchMenu", "value":"11" }, + { "name":"k_EInputSourceMode_MouseJoystick", "value":"12" }, + { "name":"k_EInputSourceMode_MouseRegion", "value":"13" }, + { "name":"k_EInputSourceMode_RadialMenu", "value":"14" }, + { "name":"k_EInputSourceMode_SingleButton", "value":"15" }, + { "name":"k_EInputSourceMode_Switches", "value":"16" } + ] + }, + { + "enumname": "EInputActionOrigin", + "values": [ + { "name":"k_EInputActionOrigin_None", "value":"0" }, + { "name":"k_EInputActionOrigin_SteamController_A", "value":"1" }, + { "name":"k_EInputActionOrigin_SteamController_B", "value":"2" }, + { "name":"k_EInputActionOrigin_SteamController_X", "value":"3" }, + { "name":"k_EInputActionOrigin_SteamController_Y", "value":"4" }, + { "name":"k_EInputActionOrigin_SteamController_LeftBumper", "value":"5" }, + { "name":"k_EInputActionOrigin_SteamController_RightBumper", "value":"6" }, + { "name":"k_EInputActionOrigin_SteamController_LeftGrip", "value":"7" }, + { "name":"k_EInputActionOrigin_SteamController_RightGrip", "value":"8" }, + { "name":"k_EInputActionOrigin_SteamController_Start", "value":"9" }, + { "name":"k_EInputActionOrigin_SteamController_Back", "value":"10" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_Touch", "value":"11" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_Swipe", "value":"12" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_Click", "value":"13" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadNorth", "value":"14" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadSouth", "value":"15" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadWest", "value":"16" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadEast", "value":"17" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_Touch", "value":"18" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_Swipe", "value":"19" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_Click", "value":"20" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadNorth", "value":"21" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadSouth", "value":"22" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadWest", "value":"23" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadEast", "value":"24" }, + { "name":"k_EInputActionOrigin_SteamController_LeftTrigger_Pull", "value":"25" }, + { "name":"k_EInputActionOrigin_SteamController_LeftTrigger_Click", "value":"26" }, + { "name":"k_EInputActionOrigin_SteamController_RightTrigger_Pull", "value":"27" }, + { "name":"k_EInputActionOrigin_SteamController_RightTrigger_Click", "value":"28" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_Move", "value":"29" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_Click", "value":"30" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadNorth", "value":"31" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadSouth", "value":"32" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadWest", "value":"33" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadEast", "value":"34" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Move", "value":"35" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Pitch", "value":"36" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Yaw", "value":"37" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Roll", "value":"38" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved0", "value":"39" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved1", "value":"40" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved2", "value":"41" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved3", "value":"42" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved4", "value":"43" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved5", "value":"44" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved6", "value":"45" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved7", "value":"46" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved8", "value":"47" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved9", "value":"48" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved10", "value":"49" }, + { "name":"k_EInputActionOrigin_PS4_X", "value":"50" }, + { "name":"k_EInputActionOrigin_PS4_Circle", "value":"51" }, + { "name":"k_EInputActionOrigin_PS4_Triangle", "value":"52" }, + { "name":"k_EInputActionOrigin_PS4_Square", "value":"53" }, + { "name":"k_EInputActionOrigin_PS4_LeftBumper", "value":"54" }, + { "name":"k_EInputActionOrigin_PS4_RightBumper", "value":"55" }, + { "name":"k_EInputActionOrigin_PS4_Options", "value":"56" }, + { "name":"k_EInputActionOrigin_PS4_Share", "value":"57" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_Touch", "value":"58" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_Swipe", "value":"59" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_Click", "value":"60" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadNorth", "value":"61" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadSouth", "value":"62" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadWest", "value":"63" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadEast", "value":"64" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_Touch", "value":"65" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_Swipe", "value":"66" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_Click", "value":"67" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadNorth", "value":"68" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadSouth", "value":"69" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadWest", "value":"70" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadEast", "value":"71" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_Touch", "value":"72" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_Swipe", "value":"73" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_Click", "value":"74" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadNorth", "value":"75" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadSouth", "value":"76" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadWest", "value":"77" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadEast", "value":"78" }, + { "name":"k_EInputActionOrigin_PS4_LeftTrigger_Pull", "value":"79" }, + { "name":"k_EInputActionOrigin_PS4_LeftTrigger_Click", "value":"80" }, + { "name":"k_EInputActionOrigin_PS4_RightTrigger_Pull", "value":"81" }, + { "name":"k_EInputActionOrigin_PS4_RightTrigger_Click", "value":"82" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_Move", "value":"83" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_Click", "value":"84" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadNorth", "value":"85" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadSouth", "value":"86" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadWest", "value":"87" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadEast", "value":"88" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_Move", "value":"89" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_Click", "value":"90" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadNorth", "value":"91" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadSouth", "value":"92" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadWest", "value":"93" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadEast", "value":"94" }, + { "name":"k_EInputActionOrigin_PS4_DPad_North", "value":"95" }, + { "name":"k_EInputActionOrigin_PS4_DPad_South", "value":"96" }, + { "name":"k_EInputActionOrigin_PS4_DPad_West", "value":"97" }, + { "name":"k_EInputActionOrigin_PS4_DPad_East", "value":"98" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Move", "value":"99" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Pitch", "value":"100" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Yaw", "value":"101" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Roll", "value":"102" }, + { "name":"k_EInputActionOrigin_PS4_DPad_Move", "value":"103" }, + { "name":"k_EInputActionOrigin_PS4_Reserved1", "value":"104" }, + { "name":"k_EInputActionOrigin_PS4_Reserved2", "value":"105" }, + { "name":"k_EInputActionOrigin_PS4_Reserved3", "value":"106" }, + { "name":"k_EInputActionOrigin_PS4_Reserved4", "value":"107" }, + { "name":"k_EInputActionOrigin_PS4_Reserved5", "value":"108" }, + { "name":"k_EInputActionOrigin_PS4_Reserved6", "value":"109" }, + { "name":"k_EInputActionOrigin_PS4_Reserved7", "value":"110" }, + { "name":"k_EInputActionOrigin_PS4_Reserved8", "value":"111" }, + { "name":"k_EInputActionOrigin_PS4_Reserved9", "value":"112" }, + { "name":"k_EInputActionOrigin_PS4_Reserved10", "value":"113" }, + { "name":"k_EInputActionOrigin_XBoxOne_A", "value":"114" }, + { "name":"k_EInputActionOrigin_XBoxOne_B", "value":"115" }, + { "name":"k_EInputActionOrigin_XBoxOne_X", "value":"116" }, + { "name":"k_EInputActionOrigin_XBoxOne_Y", "value":"117" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftBumper", "value":"118" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightBumper", "value":"119" }, + { "name":"k_EInputActionOrigin_XBoxOne_Menu", "value":"120" }, + { "name":"k_EInputActionOrigin_XBoxOne_View", "value":"121" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull", "value":"122" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftTrigger_Click", "value":"123" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightTrigger_Pull", "value":"124" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightTrigger_Click", "value":"125" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_Move", "value":"126" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_Click", "value":"127" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth", "value":"128" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth", "value":"129" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest", "value":"130" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast", "value":"131" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_Move", "value":"132" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_Click", "value":"133" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth", "value":"134" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth", "value":"135" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadWest", "value":"136" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadEast", "value":"137" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_North", "value":"138" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_South", "value":"139" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_West", "value":"140" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_East", "value":"141" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_Move", "value":"142" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftGrip_Lower", "value":"143" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftGrip_Upper", "value":"144" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightGrip_Lower", "value":"145" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightGrip_Upper", "value":"146" }, + { "name":"k_EInputActionOrigin_XBoxOne_Share", "value":"147" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved6", "value":"148" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved7", "value":"149" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved8", "value":"150" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved9", "value":"151" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved10", "value":"152" }, + { "name":"k_EInputActionOrigin_XBox360_A", "value":"153" }, + { "name":"k_EInputActionOrigin_XBox360_B", "value":"154" }, + { "name":"k_EInputActionOrigin_XBox360_X", "value":"155" }, + { "name":"k_EInputActionOrigin_XBox360_Y", "value":"156" }, + { "name":"k_EInputActionOrigin_XBox360_LeftBumper", "value":"157" }, + { "name":"k_EInputActionOrigin_XBox360_RightBumper", "value":"158" }, + { "name":"k_EInputActionOrigin_XBox360_Start", "value":"159" }, + { "name":"k_EInputActionOrigin_XBox360_Back", "value":"160" }, + { "name":"k_EInputActionOrigin_XBox360_LeftTrigger_Pull", "value":"161" }, + { "name":"k_EInputActionOrigin_XBox360_LeftTrigger_Click", "value":"162" }, + { "name":"k_EInputActionOrigin_XBox360_RightTrigger_Pull", "value":"163" }, + { "name":"k_EInputActionOrigin_XBox360_RightTrigger_Click", "value":"164" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_Move", "value":"165" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_Click", "value":"166" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadNorth", "value":"167" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadSouth", "value":"168" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadWest", "value":"169" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadEast", "value":"170" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_Move", "value":"171" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_Click", "value":"172" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadNorth", "value":"173" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadSouth", "value":"174" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadWest", "value":"175" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadEast", "value":"176" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_North", "value":"177" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_South", "value":"178" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_West", "value":"179" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_East", "value":"180" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_Move", "value":"181" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved1", "value":"182" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved2", "value":"183" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved3", "value":"184" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved4", "value":"185" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved5", "value":"186" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved6", "value":"187" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved7", "value":"188" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved8", "value":"189" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved9", "value":"190" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved10", "value":"191" }, + { "name":"k_EInputActionOrigin_Switch_A", "value":"192" }, + { "name":"k_EInputActionOrigin_Switch_B", "value":"193" }, + { "name":"k_EInputActionOrigin_Switch_X", "value":"194" }, + { "name":"k_EInputActionOrigin_Switch_Y", "value":"195" }, + { "name":"k_EInputActionOrigin_Switch_LeftBumper", "value":"196" }, + { "name":"k_EInputActionOrigin_Switch_RightBumper", "value":"197" }, + { "name":"k_EInputActionOrigin_Switch_Plus", "value":"198" }, + { "name":"k_EInputActionOrigin_Switch_Minus", "value":"199" }, + { "name":"k_EInputActionOrigin_Switch_Capture", "value":"200" }, + { "name":"k_EInputActionOrigin_Switch_LeftTrigger_Pull", "value":"201" }, + { "name":"k_EInputActionOrigin_Switch_LeftTrigger_Click", "value":"202" }, + { "name":"k_EInputActionOrigin_Switch_RightTrigger_Pull", "value":"203" }, + { "name":"k_EInputActionOrigin_Switch_RightTrigger_Click", "value":"204" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_Move", "value":"205" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_Click", "value":"206" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadNorth", "value":"207" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadSouth", "value":"208" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadWest", "value":"209" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadEast", "value":"210" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_Move", "value":"211" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_Click", "value":"212" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadNorth", "value":"213" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadSouth", "value":"214" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadWest", "value":"215" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadEast", "value":"216" }, + { "name":"k_EInputActionOrigin_Switch_DPad_North", "value":"217" }, + { "name":"k_EInputActionOrigin_Switch_DPad_South", "value":"218" }, + { "name":"k_EInputActionOrigin_Switch_DPad_West", "value":"219" }, + { "name":"k_EInputActionOrigin_Switch_DPad_East", "value":"220" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Move", "value":"221" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Pitch", "value":"222" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Yaw", "value":"223" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Roll", "value":"224" }, + { "name":"k_EInputActionOrigin_Switch_DPad_Move", "value":"225" }, + { "name":"k_EInputActionOrigin_Switch_Reserved1", "value":"226" }, + { "name":"k_EInputActionOrigin_Switch_Reserved2", "value":"227" }, + { "name":"k_EInputActionOrigin_Switch_Reserved3", "value":"228" }, + { "name":"k_EInputActionOrigin_Switch_Reserved4", "value":"229" }, + { "name":"k_EInputActionOrigin_Switch_Reserved5", "value":"230" }, + { "name":"k_EInputActionOrigin_Switch_Reserved6", "value":"231" }, + { "name":"k_EInputActionOrigin_Switch_Reserved7", "value":"232" }, + { "name":"k_EInputActionOrigin_Switch_Reserved8", "value":"233" }, + { "name":"k_EInputActionOrigin_Switch_Reserved9", "value":"234" }, + { "name":"k_EInputActionOrigin_Switch_Reserved10", "value":"235" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Move", "value":"236" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Pitch", "value":"237" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Yaw", "value":"238" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Roll", "value":"239" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Move", "value":"240" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Pitch", "value":"241" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Yaw", "value":"242" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Roll", "value":"243" }, + { "name":"k_EInputActionOrigin_Switch_LeftGrip_Lower", "value":"244" }, + { "name":"k_EInputActionOrigin_Switch_LeftGrip_Upper", "value":"245" }, + { "name":"k_EInputActionOrigin_Switch_RightGrip_Lower", "value":"246" }, + { "name":"k_EInputActionOrigin_Switch_RightGrip_Upper", "value":"247" }, + { "name":"k_EInputActionOrigin_Switch_Reserved11", "value":"248" }, + { "name":"k_EInputActionOrigin_Switch_Reserved12", "value":"249" }, + { "name":"k_EInputActionOrigin_Switch_Reserved13", "value":"250" }, + { "name":"k_EInputActionOrigin_Switch_Reserved14", "value":"251" }, + { "name":"k_EInputActionOrigin_Switch_Reserved15", "value":"252" }, + { "name":"k_EInputActionOrigin_Switch_Reserved16", "value":"253" }, + { "name":"k_EInputActionOrigin_Switch_Reserved17", "value":"254" }, + { "name":"k_EInputActionOrigin_Switch_Reserved18", "value":"255" }, + { "name":"k_EInputActionOrigin_Switch_Reserved19", "value":"256" }, + { "name":"k_EInputActionOrigin_Switch_Reserved20", "value":"257" }, + { "name":"k_EInputActionOrigin_PS5_X", "value":"258" }, + { "name":"k_EInputActionOrigin_PS5_Circle", "value":"259" }, + { "name":"k_EInputActionOrigin_PS5_Triangle", "value":"260" }, + { "name":"k_EInputActionOrigin_PS5_Square", "value":"261" }, + { "name":"k_EInputActionOrigin_PS5_LeftBumper", "value":"262" }, + { "name":"k_EInputActionOrigin_PS5_RightBumper", "value":"263" }, + { "name":"k_EInputActionOrigin_PS5_Option", "value":"264" }, + { "name":"k_EInputActionOrigin_PS5_Create", "value":"265" }, + { "name":"k_EInputActionOrigin_PS5_Mute", "value":"266" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_Touch", "value":"267" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_Swipe", "value":"268" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_Click", "value":"269" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadNorth", "value":"270" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadSouth", "value":"271" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadWest", "value":"272" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadEast", "value":"273" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_Touch", "value":"274" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_Swipe", "value":"275" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_Click", "value":"276" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadNorth", "value":"277" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadSouth", "value":"278" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadWest", "value":"279" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadEast", "value":"280" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_Touch", "value":"281" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_Swipe", "value":"282" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_Click", "value":"283" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadNorth", "value":"284" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadSouth", "value":"285" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadWest", "value":"286" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadEast", "value":"287" }, + { "name":"k_EInputActionOrigin_PS5_LeftTrigger_Pull", "value":"288" }, + { "name":"k_EInputActionOrigin_PS5_LeftTrigger_Click", "value":"289" }, + { "name":"k_EInputActionOrigin_PS5_RightTrigger_Pull", "value":"290" }, + { "name":"k_EInputActionOrigin_PS5_RightTrigger_Click", "value":"291" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_Move", "value":"292" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_Click", "value":"293" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadNorth", "value":"294" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadSouth", "value":"295" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadWest", "value":"296" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadEast", "value":"297" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_Move", "value":"298" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_Click", "value":"299" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadNorth", "value":"300" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadSouth", "value":"301" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadWest", "value":"302" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadEast", "value":"303" }, + { "name":"k_EInputActionOrigin_PS5_DPad_North", "value":"304" }, + { "name":"k_EInputActionOrigin_PS5_DPad_South", "value":"305" }, + { "name":"k_EInputActionOrigin_PS5_DPad_West", "value":"306" }, + { "name":"k_EInputActionOrigin_PS5_DPad_East", "value":"307" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Move", "value":"308" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Pitch", "value":"309" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Yaw", "value":"310" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Roll", "value":"311" }, + { "name":"k_EInputActionOrigin_PS5_DPad_Move", "value":"312" }, + { "name":"k_EInputActionOrigin_PS5_Reserved1", "value":"313" }, + { "name":"k_EInputActionOrigin_PS5_Reserved2", "value":"314" }, + { "name":"k_EInputActionOrigin_PS5_Reserved3", "value":"315" }, + { "name":"k_EInputActionOrigin_PS5_Reserved4", "value":"316" }, + { "name":"k_EInputActionOrigin_PS5_Reserved5", "value":"317" }, + { "name":"k_EInputActionOrigin_PS5_Reserved6", "value":"318" }, + { "name":"k_EInputActionOrigin_PS5_Reserved7", "value":"319" }, + { "name":"k_EInputActionOrigin_PS5_Reserved8", "value":"320" }, + { "name":"k_EInputActionOrigin_PS5_Reserved9", "value":"321" }, + { "name":"k_EInputActionOrigin_PS5_Reserved10", "value":"322" }, + { "name":"k_EInputActionOrigin_PS5_Reserved11", "value":"323" }, + { "name":"k_EInputActionOrigin_PS5_Reserved12", "value":"324" }, + { "name":"k_EInputActionOrigin_PS5_Reserved13", "value":"325" }, + { "name":"k_EInputActionOrigin_PS5_Reserved14", "value":"326" }, + { "name":"k_EInputActionOrigin_PS5_Reserved15", "value":"327" }, + { "name":"k_EInputActionOrigin_PS5_Reserved16", "value":"328" }, + { "name":"k_EInputActionOrigin_PS5_Reserved17", "value":"329" }, + { "name":"k_EInputActionOrigin_PS5_Reserved18", "value":"330" }, + { "name":"k_EInputActionOrigin_PS5_Reserved19", "value":"331" }, + { "name":"k_EInputActionOrigin_PS5_Reserved20", "value":"332" }, + { "name":"k_EInputActionOrigin_SteamDeck_A", "value":"333" }, + { "name":"k_EInputActionOrigin_SteamDeck_B", "value":"334" }, + { "name":"k_EInputActionOrigin_SteamDeck_X", "value":"335" }, + { "name":"k_EInputActionOrigin_SteamDeck_Y", "value":"336" }, + { "name":"k_EInputActionOrigin_SteamDeck_L1", "value":"337" }, + { "name":"k_EInputActionOrigin_SteamDeck_R1", "value":"338" }, + { "name":"k_EInputActionOrigin_SteamDeck_Menu", "value":"339" }, + { "name":"k_EInputActionOrigin_SteamDeck_View", "value":"340" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_Touch", "value":"341" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_Swipe", "value":"342" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_Click", "value":"343" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadNorth", "value":"344" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadSouth", "value":"345" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadWest", "value":"346" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadEast", "value":"347" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_Touch", "value":"348" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_Swipe", "value":"349" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_Click", "value":"350" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadNorth", "value":"351" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadSouth", "value":"352" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadWest", "value":"353" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadEast", "value":"354" }, + { "name":"k_EInputActionOrigin_SteamDeck_L2_SoftPull", "value":"355" }, + { "name":"k_EInputActionOrigin_SteamDeck_L2", "value":"356" }, + { "name":"k_EInputActionOrigin_SteamDeck_R2_SoftPull", "value":"357" }, + { "name":"k_EInputActionOrigin_SteamDeck_R2", "value":"358" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_Move", "value":"359" }, + { "name":"k_EInputActionOrigin_SteamDeck_L3", "value":"360" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadNorth", "value":"361" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadSouth", "value":"362" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadWest", "value":"363" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadEast", "value":"364" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_Touch", "value":"365" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_Move", "value":"366" }, + { "name":"k_EInputActionOrigin_SteamDeck_R3", "value":"367" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadNorth", "value":"368" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadSouth", "value":"369" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadWest", "value":"370" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadEast", "value":"371" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_Touch", "value":"372" }, + { "name":"k_EInputActionOrigin_SteamDeck_L4", "value":"373" }, + { "name":"k_EInputActionOrigin_SteamDeck_R4", "value":"374" }, + { "name":"k_EInputActionOrigin_SteamDeck_L5", "value":"375" }, + { "name":"k_EInputActionOrigin_SteamDeck_R5", "value":"376" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_Move", "value":"377" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_North", "value":"378" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_South", "value":"379" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_West", "value":"380" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_East", "value":"381" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Move", "value":"382" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Pitch", "value":"383" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Yaw", "value":"384" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Roll", "value":"385" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved1", "value":"386" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved2", "value":"387" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved3", "value":"388" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved4", "value":"389" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved5", "value":"390" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved6", "value":"391" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved7", "value":"392" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved8", "value":"393" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved9", "value":"394" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved10", "value":"395" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved11", "value":"396" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved12", "value":"397" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved13", "value":"398" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved14", "value":"399" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved15", "value":"400" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved16", "value":"401" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved17", "value":"402" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved18", "value":"403" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved19", "value":"404" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved20", "value":"405" }, + { "name":"k_EInputActionOrigin_Count", "value":"406" }, + { "name":"k_EInputActionOrigin_MaximumPossibleValue", "value":"32767" } + ] + }, + { + "enumname": "EXboxOrigin", + "values": [ + { "name":"k_EXboxOrigin_A", "value":"0" }, + { "name":"k_EXboxOrigin_B", "value":"1" }, + { "name":"k_EXboxOrigin_X", "value":"2" }, + { "name":"k_EXboxOrigin_Y", "value":"3" }, + { "name":"k_EXboxOrigin_LeftBumper", "value":"4" }, + { "name":"k_EXboxOrigin_RightBumper", "value":"5" }, + { "name":"k_EXboxOrigin_Menu", "value":"6" }, + { "name":"k_EXboxOrigin_View", "value":"7" }, + { "name":"k_EXboxOrigin_LeftTrigger_Pull", "value":"8" }, + { "name":"k_EXboxOrigin_LeftTrigger_Click", "value":"9" }, + { "name":"k_EXboxOrigin_RightTrigger_Pull", "value":"10" }, + { "name":"k_EXboxOrigin_RightTrigger_Click", "value":"11" }, + { "name":"k_EXboxOrigin_LeftStick_Move", "value":"12" }, + { "name":"k_EXboxOrigin_LeftStick_Click", "value":"13" }, + { "name":"k_EXboxOrigin_LeftStick_DPadNorth", "value":"14" }, + { "name":"k_EXboxOrigin_LeftStick_DPadSouth", "value":"15" }, + { "name":"k_EXboxOrigin_LeftStick_DPadWest", "value":"16" }, + { "name":"k_EXboxOrigin_LeftStick_DPadEast", "value":"17" }, + { "name":"k_EXboxOrigin_RightStick_Move", "value":"18" }, + { "name":"k_EXboxOrigin_RightStick_Click", "value":"19" }, + { "name":"k_EXboxOrigin_RightStick_DPadNorth", "value":"20" }, + { "name":"k_EXboxOrigin_RightStick_DPadSouth", "value":"21" }, + { "name":"k_EXboxOrigin_RightStick_DPadWest", "value":"22" }, + { "name":"k_EXboxOrigin_RightStick_DPadEast", "value":"23" }, + { "name":"k_EXboxOrigin_DPad_North", "value":"24" }, + { "name":"k_EXboxOrigin_DPad_South", "value":"25" }, + { "name":"k_EXboxOrigin_DPad_West", "value":"26" }, + { "name":"k_EXboxOrigin_DPad_East", "value":"27" }, + { "name":"k_EXboxOrigin_Count", "value":"28" } + ] + }, + { + "enumname": "ESteamControllerPad", + "values": [ + { "name":"k_ESteamControllerPad_Left", "value":"0" }, + { "name":"k_ESteamControllerPad_Right", "value":"1" } + ] + }, + { + "enumname": "EControllerHapticLocation", + "values": [ + { "name":"k_EControllerHapticLocation_Left", "value":"1" }, + { "name":"k_EControllerHapticLocation_Right", "value":"2" }, + { "name":"k_EControllerHapticLocation_Both", "value":"3" } + ] + }, + { + "enumname": "EControllerHapticType", + "values": [ + { "name":"k_EControllerHapticType_Off", "value":"0" }, + { "name":"k_EControllerHapticType_Tick", "value":"1" }, + { "name":"k_EControllerHapticType_Click", "value":"2" } + ] + }, + { + "enumname": "ESteamInputType", + "values": [ + { "name":"k_ESteamInputType_Unknown", "value":"0" }, + { "name":"k_ESteamInputType_SteamController", "value":"1" }, + { "name":"k_ESteamInputType_XBox360Controller", "value":"2" }, + { "name":"k_ESteamInputType_XBoxOneController", "value":"3" }, + { "name":"k_ESteamInputType_GenericGamepad", "value":"4" }, + { "name":"k_ESteamInputType_PS4Controller", "value":"5" }, + { "name":"k_ESteamInputType_AppleMFiController", "value":"6" }, + { "name":"k_ESteamInputType_AndroidController", "value":"7" }, + { "name":"k_ESteamInputType_SwitchJoyConPair", "value":"8" }, + { "name":"k_ESteamInputType_SwitchJoyConSingle", "value":"9" }, + { "name":"k_ESteamInputType_SwitchProController", "value":"10" }, + { "name":"k_ESteamInputType_MobileTouch", "value":"11" }, + { "name":"k_ESteamInputType_PS3Controller", "value":"12" }, + { "name":"k_ESteamInputType_PS5Controller", "value":"13" }, + { "name":"k_ESteamInputType_SteamDeckController", "value":"14" }, + { "name":"k_ESteamInputType_Count", "value":"15" }, + { "name":"k_ESteamInputType_MaximumPossibleValue", "value":"255" } + ] + }, + { + "enumname": "ESteamInputConfigurationEnableType", + "values": [ + { "name":"k_ESteamInputConfigurationEnableType_None", "value":"0" }, + { "name":"k_ESteamInputConfigurationEnableType_Playstation", "value":"1" }, + { "name":"k_ESteamInputConfigurationEnableType_Xbox", "value":"2" }, + { "name":"k_ESteamInputConfigurationEnableType_Generic", "value":"4" }, + { "name":"k_ESteamInputConfigurationEnableType_Switch", "value":"8" } + ] + }, + { + "enumname": "ESteamInputLEDFlag", + "values": [ + { "name":"k_ESteamInputLEDFlag_SetColor", "value":"0" }, + { "name":"k_ESteamInputLEDFlag_RestoreUserDefault", "value":"1" } + ] + }, + { + "enumname": "ESteamInputGlyphSize", + "values": [ + { "name":"k_ESteamInputGlyphSize_Small", "value":"0" }, + { "name":"k_ESteamInputGlyphSize_Medium", "value":"1" }, + { "name":"k_ESteamInputGlyphSize_Large", "value":"2" }, + { "name":"k_ESteamInputGlyphSize_Count", "value":"3" } + ] + }, + { + "enumname": "ESteamInputGlyphStyle", + "values": [ + { "name":"ESteamInputGlyphStyle_Knockout", "value":"0" }, + { "name":"ESteamInputGlyphStyle_Light", "value":"1" }, + { "name":"ESteamInputGlyphStyle_Dark", "value":"2" }, + { "name":"ESteamInputGlyphStyle_NeutralColorABXY", "value":"16" }, + { "name":"ESteamInputGlyphStyle_SolidABXY", "value":"32" } + ] + }, + { + "enumname": "ESteamInputActionEventType", + "values": [ + { "name":"ESteamInputActionEventType_DigitalAction", "value":"0" }, + { "name":"ESteamInputActionEventType_AnalogAction", "value":"1" } + ] + }, + { + "enumname": "EControllerActionOrigin", + "values": [ + { "name":"k_EControllerActionOrigin_None", "value":"0" }, + { "name":"k_EControllerActionOrigin_A", "value":"1" }, + { "name":"k_EControllerActionOrigin_B", "value":"2" }, + { "name":"k_EControllerActionOrigin_X", "value":"3" }, + { "name":"k_EControllerActionOrigin_Y", "value":"4" }, + { "name":"k_EControllerActionOrigin_LeftBumper", "value":"5" }, + { "name":"k_EControllerActionOrigin_RightBumper", "value":"6" }, + { "name":"k_EControllerActionOrigin_LeftGrip", "value":"7" }, + { "name":"k_EControllerActionOrigin_RightGrip", "value":"8" }, + { "name":"k_EControllerActionOrigin_Start", "value":"9" }, + { "name":"k_EControllerActionOrigin_Back", "value":"10" }, + { "name":"k_EControllerActionOrigin_LeftPad_Touch", "value":"11" }, + { "name":"k_EControllerActionOrigin_LeftPad_Swipe", "value":"12" }, + { "name":"k_EControllerActionOrigin_LeftPad_Click", "value":"13" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadNorth", "value":"14" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadSouth", "value":"15" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadWest", "value":"16" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadEast", "value":"17" }, + { "name":"k_EControllerActionOrigin_RightPad_Touch", "value":"18" }, + { "name":"k_EControllerActionOrigin_RightPad_Swipe", "value":"19" }, + { "name":"k_EControllerActionOrigin_RightPad_Click", "value":"20" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadNorth", "value":"21" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadSouth", "value":"22" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadWest", "value":"23" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadEast", "value":"24" }, + { "name":"k_EControllerActionOrigin_LeftTrigger_Pull", "value":"25" }, + { "name":"k_EControllerActionOrigin_LeftTrigger_Click", "value":"26" }, + { "name":"k_EControllerActionOrigin_RightTrigger_Pull", "value":"27" }, + { "name":"k_EControllerActionOrigin_RightTrigger_Click", "value":"28" }, + { "name":"k_EControllerActionOrigin_LeftStick_Move", "value":"29" }, + { "name":"k_EControllerActionOrigin_LeftStick_Click", "value":"30" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadNorth", "value":"31" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadSouth", "value":"32" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadWest", "value":"33" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadEast", "value":"34" }, + { "name":"k_EControllerActionOrigin_Gyro_Move", "value":"35" }, + { "name":"k_EControllerActionOrigin_Gyro_Pitch", "value":"36" }, + { "name":"k_EControllerActionOrigin_Gyro_Yaw", "value":"37" }, + { "name":"k_EControllerActionOrigin_Gyro_Roll", "value":"38" }, + { "name":"k_EControllerActionOrigin_PS4_X", "value":"39" }, + { "name":"k_EControllerActionOrigin_PS4_Circle", "value":"40" }, + { "name":"k_EControllerActionOrigin_PS4_Triangle", "value":"41" }, + { "name":"k_EControllerActionOrigin_PS4_Square", "value":"42" }, + { "name":"k_EControllerActionOrigin_PS4_LeftBumper", "value":"43" }, + { "name":"k_EControllerActionOrigin_PS4_RightBumper", "value":"44" }, + { "name":"k_EControllerActionOrigin_PS4_Options", "value":"45" }, + { "name":"k_EControllerActionOrigin_PS4_Share", "value":"46" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_Touch", "value":"47" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_Swipe", "value":"48" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_Click", "value":"49" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadNorth", "value":"50" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadSouth", "value":"51" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadWest", "value":"52" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadEast", "value":"53" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_Touch", "value":"54" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_Swipe", "value":"55" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_Click", "value":"56" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadNorth", "value":"57" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadSouth", "value":"58" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadWest", "value":"59" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadEast", "value":"60" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_Touch", "value":"61" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_Swipe", "value":"62" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_Click", "value":"63" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadNorth", "value":"64" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadSouth", "value":"65" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadWest", "value":"66" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadEast", "value":"67" }, + { "name":"k_EControllerActionOrigin_PS4_LeftTrigger_Pull", "value":"68" }, + { "name":"k_EControllerActionOrigin_PS4_LeftTrigger_Click", "value":"69" }, + { "name":"k_EControllerActionOrigin_PS4_RightTrigger_Pull", "value":"70" }, + { "name":"k_EControllerActionOrigin_PS4_RightTrigger_Click", "value":"71" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_Move", "value":"72" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_Click", "value":"73" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadNorth", "value":"74" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadSouth", "value":"75" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadWest", "value":"76" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadEast", "value":"77" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_Move", "value":"78" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_Click", "value":"79" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadNorth", "value":"80" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadSouth", "value":"81" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadWest", "value":"82" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadEast", "value":"83" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_North", "value":"84" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_South", "value":"85" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_West", "value":"86" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_East", "value":"87" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Move", "value":"88" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Pitch", "value":"89" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Yaw", "value":"90" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Roll", "value":"91" }, + { "name":"k_EControllerActionOrigin_XBoxOne_A", "value":"92" }, + { "name":"k_EControllerActionOrigin_XBoxOne_B", "value":"93" }, + { "name":"k_EControllerActionOrigin_XBoxOne_X", "value":"94" }, + { "name":"k_EControllerActionOrigin_XBoxOne_Y", "value":"95" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftBumper", "value":"96" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightBumper", "value":"97" }, + { "name":"k_EControllerActionOrigin_XBoxOne_Menu", "value":"98" }, + { "name":"k_EControllerActionOrigin_XBoxOne_View", "value":"99" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull", "value":"100" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click", "value":"101" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull", "value":"102" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightTrigger_Click", "value":"103" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_Move", "value":"104" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_Click", "value":"105" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth", "value":"106" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth", "value":"107" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest", "value":"108" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast", "value":"109" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_Move", "value":"110" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_Click", "value":"111" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth", "value":"112" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth", "value":"113" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest", "value":"114" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast", "value":"115" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_North", "value":"116" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_South", "value":"117" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_West", "value":"118" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_East", "value":"119" }, + { "name":"k_EControllerActionOrigin_XBox360_A", "value":"120" }, + { "name":"k_EControllerActionOrigin_XBox360_B", "value":"121" }, + { "name":"k_EControllerActionOrigin_XBox360_X", "value":"122" }, + { "name":"k_EControllerActionOrigin_XBox360_Y", "value":"123" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftBumper", "value":"124" }, + { "name":"k_EControllerActionOrigin_XBox360_RightBumper", "value":"125" }, + { "name":"k_EControllerActionOrigin_XBox360_Start", "value":"126" }, + { "name":"k_EControllerActionOrigin_XBox360_Back", "value":"127" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftTrigger_Pull", "value":"128" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftTrigger_Click", "value":"129" }, + { "name":"k_EControllerActionOrigin_XBox360_RightTrigger_Pull", "value":"130" }, + { "name":"k_EControllerActionOrigin_XBox360_RightTrigger_Click", "value":"131" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_Move", "value":"132" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_Click", "value":"133" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth", "value":"134" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth", "value":"135" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadWest", "value":"136" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadEast", "value":"137" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_Move", "value":"138" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_Click", "value":"139" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadNorth", "value":"140" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadSouth", "value":"141" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadWest", "value":"142" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadEast", "value":"143" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_North", "value":"144" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_South", "value":"145" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_West", "value":"146" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_East", "value":"147" }, + { "name":"k_EControllerActionOrigin_SteamV2_A", "value":"148" }, + { "name":"k_EControllerActionOrigin_SteamV2_B", "value":"149" }, + { "name":"k_EControllerActionOrigin_SteamV2_X", "value":"150" }, + { "name":"k_EControllerActionOrigin_SteamV2_Y", "value":"151" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftBumper", "value":"152" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightBumper", "value":"153" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Lower", "value":"154" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Upper", "value":"155" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Lower", "value":"156" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Upper", "value":"157" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure", "value":"158" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightBumper_Pressure", "value":"159" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure", "value":"160" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Pressure", "value":"161" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure", "value":"162" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure", "value":"163" }, + { "name":"k_EControllerActionOrigin_SteamV2_Start", "value":"164" }, + { "name":"k_EControllerActionOrigin_SteamV2_Back", "value":"165" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Touch", "value":"166" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Swipe", "value":"167" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Click", "value":"168" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Pressure", "value":"169" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth", "value":"170" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth", "value":"171" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest", "value":"172" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast", "value":"173" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Touch", "value":"174" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Swipe", "value":"175" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Click", "value":"176" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Pressure", "value":"177" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth", "value":"178" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth", "value":"179" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadWest", "value":"180" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadEast", "value":"181" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull", "value":"182" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftTrigger_Click", "value":"183" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightTrigger_Pull", "value":"184" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightTrigger_Click", "value":"185" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_Move", "value":"186" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_Click", "value":"187" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth", "value":"188" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth", "value":"189" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest", "value":"190" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast", "value":"191" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Move", "value":"192" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Pitch", "value":"193" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Yaw", "value":"194" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Roll", "value":"195" }, + { "name":"k_EControllerActionOrigin_Switch_A", "value":"196" }, + { "name":"k_EControllerActionOrigin_Switch_B", "value":"197" }, + { "name":"k_EControllerActionOrigin_Switch_X", "value":"198" }, + { "name":"k_EControllerActionOrigin_Switch_Y", "value":"199" }, + { "name":"k_EControllerActionOrigin_Switch_LeftBumper", "value":"200" }, + { "name":"k_EControllerActionOrigin_Switch_RightBumper", "value":"201" }, + { "name":"k_EControllerActionOrigin_Switch_Plus", "value":"202" }, + { "name":"k_EControllerActionOrigin_Switch_Minus", "value":"203" }, + { "name":"k_EControllerActionOrigin_Switch_Capture", "value":"204" }, + { "name":"k_EControllerActionOrigin_Switch_LeftTrigger_Pull", "value":"205" }, + { "name":"k_EControllerActionOrigin_Switch_LeftTrigger_Click", "value":"206" }, + { "name":"k_EControllerActionOrigin_Switch_RightTrigger_Pull", "value":"207" }, + { "name":"k_EControllerActionOrigin_Switch_RightTrigger_Click", "value":"208" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_Move", "value":"209" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_Click", "value":"210" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadNorth", "value":"211" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadSouth", "value":"212" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadWest", "value":"213" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadEast", "value":"214" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_Move", "value":"215" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_Click", "value":"216" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadNorth", "value":"217" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadSouth", "value":"218" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadWest", "value":"219" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadEast", "value":"220" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_North", "value":"221" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_South", "value":"222" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_West", "value":"223" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_East", "value":"224" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Move", "value":"225" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Pitch", "value":"226" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Yaw", "value":"227" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Roll", "value":"228" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Move", "value":"229" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Pitch", "value":"230" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Yaw", "value":"231" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Roll", "value":"232" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Move", "value":"233" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Pitch", "value":"234" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Yaw", "value":"235" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Roll", "value":"236" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGrip_Lower", "value":"237" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGrip_Upper", "value":"238" }, + { "name":"k_EControllerActionOrigin_Switch_RightGrip_Lower", "value":"239" }, + { "name":"k_EControllerActionOrigin_Switch_RightGrip_Upper", "value":"240" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_Move", "value":"241" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_Move", "value":"242" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_Move", "value":"243" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_Move", "value":"244" }, + { "name":"k_EControllerActionOrigin_PS5_X", "value":"245" }, + { "name":"k_EControllerActionOrigin_PS5_Circle", "value":"246" }, + { "name":"k_EControllerActionOrigin_PS5_Triangle", "value":"247" }, + { "name":"k_EControllerActionOrigin_PS5_Square", "value":"248" }, + { "name":"k_EControllerActionOrigin_PS5_LeftBumper", "value":"249" }, + { "name":"k_EControllerActionOrigin_PS5_RightBumper", "value":"250" }, + { "name":"k_EControllerActionOrigin_PS5_Option", "value":"251" }, + { "name":"k_EControllerActionOrigin_PS5_Create", "value":"252" }, + { "name":"k_EControllerActionOrigin_PS5_Mute", "value":"253" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_Touch", "value":"254" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_Swipe", "value":"255" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_Click", "value":"256" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadNorth", "value":"257" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadSouth", "value":"258" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadWest", "value":"259" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadEast", "value":"260" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_Touch", "value":"261" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_Swipe", "value":"262" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_Click", "value":"263" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadNorth", "value":"264" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadSouth", "value":"265" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadWest", "value":"266" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadEast", "value":"267" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_Touch", "value":"268" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_Swipe", "value":"269" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_Click", "value":"270" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadNorth", "value":"271" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadSouth", "value":"272" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadWest", "value":"273" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadEast", "value":"274" }, + { "name":"k_EControllerActionOrigin_PS5_LeftTrigger_Pull", "value":"275" }, + { "name":"k_EControllerActionOrigin_PS5_LeftTrigger_Click", "value":"276" }, + { "name":"k_EControllerActionOrigin_PS5_RightTrigger_Pull", "value":"277" }, + { "name":"k_EControllerActionOrigin_PS5_RightTrigger_Click", "value":"278" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_Move", "value":"279" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_Click", "value":"280" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadNorth", "value":"281" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadSouth", "value":"282" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadWest", "value":"283" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadEast", "value":"284" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_Move", "value":"285" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_Click", "value":"286" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadNorth", "value":"287" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadSouth", "value":"288" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadWest", "value":"289" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadEast", "value":"290" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_Move", "value":"291" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_North", "value":"292" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_South", "value":"293" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_West", "value":"294" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_East", "value":"295" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Move", "value":"296" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Pitch", "value":"297" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Yaw", "value":"298" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Roll", "value":"299" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftGrip_Lower", "value":"300" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftGrip_Upper", "value":"301" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightGrip_Lower", "value":"302" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightGrip_Upper", "value":"303" }, + { "name":"k_EControllerActionOrigin_XBoxOne_Share", "value":"304" }, + { "name":"k_EControllerActionOrigin_SteamDeck_A", "value":"305" }, + { "name":"k_EControllerActionOrigin_SteamDeck_B", "value":"306" }, + { "name":"k_EControllerActionOrigin_SteamDeck_X", "value":"307" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Y", "value":"308" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L1", "value":"309" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R1", "value":"310" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Menu", "value":"311" }, + { "name":"k_EControllerActionOrigin_SteamDeck_View", "value":"312" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_Touch", "value":"313" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_Swipe", "value":"314" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_Click", "value":"315" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadNorth", "value":"316" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadSouth", "value":"317" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadWest", "value":"318" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadEast", "value":"319" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_Touch", "value":"320" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_Swipe", "value":"321" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_Click", "value":"322" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadNorth", "value":"323" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadSouth", "value":"324" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadWest", "value":"325" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadEast", "value":"326" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L2_SoftPull", "value":"327" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L2", "value":"328" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R2_SoftPull", "value":"329" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R2", "value":"330" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_Move", "value":"331" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L3", "value":"332" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadNorth", "value":"333" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadSouth", "value":"334" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadWest", "value":"335" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadEast", "value":"336" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_Touch", "value":"337" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_Move", "value":"338" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R3", "value":"339" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadNorth", "value":"340" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadSouth", "value":"341" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadWest", "value":"342" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadEast", "value":"343" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_Touch", "value":"344" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L4", "value":"345" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R4", "value":"346" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L5", "value":"347" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R5", "value":"348" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_Move", "value":"349" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_North", "value":"350" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_South", "value":"351" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_West", "value":"352" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_East", "value":"353" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Move", "value":"354" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Pitch", "value":"355" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Yaw", "value":"356" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Roll", "value":"357" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved1", "value":"358" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved2", "value":"359" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved3", "value":"360" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved4", "value":"361" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved5", "value":"362" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved6", "value":"363" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved7", "value":"364" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved8", "value":"365" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved9", "value":"366" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved10", "value":"367" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved11", "value":"368" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved12", "value":"369" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved13", "value":"370" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved14", "value":"371" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved15", "value":"372" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved16", "value":"373" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved17", "value":"374" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved18", "value":"375" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved19", "value":"376" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved20", "value":"377" }, + { "name":"k_EControllerActionOrigin_Count", "value":"378" }, + { "name":"k_EControllerActionOrigin_MaximumPossibleValue", "value":"32767" } + ] + }, + { + "enumname": "ESteamControllerLEDFlag", + "values": [ + { "name":"k_ESteamControllerLEDFlag_SetColor", "value":"0" }, + { "name":"k_ESteamControllerLEDFlag_RestoreUserDefault", "value":"1" } + ] + }, + { + "enumname": "EUGCMatchingUGCType", + "values": [ + { "name":"k_EUGCMatchingUGCType_Items", "value":"0" }, + { "name":"k_EUGCMatchingUGCType_Items_Mtx", "value":"1" }, + { "name":"k_EUGCMatchingUGCType_Items_ReadyToUse", "value":"2" }, + { "name":"k_EUGCMatchingUGCType_Collections", "value":"3" }, + { "name":"k_EUGCMatchingUGCType_Artwork", "value":"4" }, + { "name":"k_EUGCMatchingUGCType_Videos", "value":"5" }, + { "name":"k_EUGCMatchingUGCType_Screenshots", "value":"6" }, + { "name":"k_EUGCMatchingUGCType_AllGuides", "value":"7" }, + { "name":"k_EUGCMatchingUGCType_WebGuides", "value":"8" }, + { "name":"k_EUGCMatchingUGCType_IntegratedGuides", "value":"9" }, + { "name":"k_EUGCMatchingUGCType_UsableInGame", "value":"10" }, + { "name":"k_EUGCMatchingUGCType_ControllerBindings", "value":"11" }, + { "name":"k_EUGCMatchingUGCType_GameManagedItems", "value":"12" }, + { "name":"k_EUGCMatchingUGCType_All", "value":"-1" } + ] + }, + { + "enumname": "EUserUGCList", + "values": [ + { "name":"k_EUserUGCList_Published", "value":"0" }, + { "name":"k_EUserUGCList_VotedOn", "value":"1" }, + { "name":"k_EUserUGCList_VotedUp", "value":"2" }, + { "name":"k_EUserUGCList_VotedDown", "value":"3" }, + { "name":"k_EUserUGCList_WillVoteLater", "value":"4" }, + { "name":"k_EUserUGCList_Favorited", "value":"5" }, + { "name":"k_EUserUGCList_Subscribed", "value":"6" }, + { "name":"k_EUserUGCList_UsedOrPlayed", "value":"7" }, + { "name":"k_EUserUGCList_Followed", "value":"8" } + ] + }, + { + "enumname": "EUserUGCListSortOrder", + "values": [ + { "name":"k_EUserUGCListSortOrder_CreationOrderDesc", "value":"0" }, + { "name":"k_EUserUGCListSortOrder_CreationOrderAsc", "value":"1" }, + { "name":"k_EUserUGCListSortOrder_TitleAsc", "value":"2" }, + { "name":"k_EUserUGCListSortOrder_LastUpdatedDesc", "value":"3" }, + { "name":"k_EUserUGCListSortOrder_SubscriptionDateDesc", "value":"4" }, + { "name":"k_EUserUGCListSortOrder_VoteScoreDesc", "value":"5" }, + { "name":"k_EUserUGCListSortOrder_ForModeration", "value":"6" } + ] + }, + { + "enumname": "EUGCQuery", + "values": [ + { "name":"k_EUGCQuery_RankedByVote", "value":"0" }, + { "name":"k_EUGCQuery_RankedByPublicationDate", "value":"1" }, + { "name":"k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate", "value":"2" }, + { "name":"k_EUGCQuery_RankedByTrend", "value":"3" }, + { "name":"k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate", "value":"4" }, + { "name":"k_EUGCQuery_CreatedByFriendsRankedByPublicationDate", "value":"5" }, + { "name":"k_EUGCQuery_RankedByNumTimesReported", "value":"6" }, + { "name":"k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate", "value":"7" }, + { "name":"k_EUGCQuery_NotYetRated", "value":"8" }, + { "name":"k_EUGCQuery_RankedByTotalVotesAsc", "value":"9" }, + { "name":"k_EUGCQuery_RankedByVotesUp", "value":"10" }, + { "name":"k_EUGCQuery_RankedByTextSearch", "value":"11" }, + { "name":"k_EUGCQuery_RankedByTotalUniqueSubscriptions", "value":"12" }, + { "name":"k_EUGCQuery_RankedByPlaytimeTrend", "value":"13" }, + { "name":"k_EUGCQuery_RankedByTotalPlaytime", "value":"14" }, + { "name":"k_EUGCQuery_RankedByAveragePlaytimeTrend", "value":"15" }, + { "name":"k_EUGCQuery_RankedByLifetimeAveragePlaytime", "value":"16" }, + { "name":"k_EUGCQuery_RankedByPlaytimeSessionsTrend", "value":"17" }, + { "name":"k_EUGCQuery_RankedByLifetimePlaytimeSessions", "value":"18" }, + { "name":"k_EUGCQuery_RankedByLastUpdatedDate", "value":"19" } + ] + }, + { + "enumname": "EItemUpdateStatus", + "values": [ + { "name":"k_EItemUpdateStatusInvalid", "value":"0" }, + { "name":"k_EItemUpdateStatusPreparingConfig", "value":"1" }, + { "name":"k_EItemUpdateStatusPreparingContent", "value":"2" }, + { "name":"k_EItemUpdateStatusUploadingContent", "value":"3" }, + { "name":"k_EItemUpdateStatusUploadingPreviewFile", "value":"4" }, + { "name":"k_EItemUpdateStatusCommittingChanges", "value":"5" } + ] + }, + { + "enumname": "EItemState", + "values": [ + { "name":"k_EItemStateNone", "value":"0" }, + { "name":"k_EItemStateSubscribed", "value":"1" }, + { "name":"k_EItemStateLegacyItem", "value":"2" }, + { "name":"k_EItemStateInstalled", "value":"4" }, + { "name":"k_EItemStateNeedsUpdate", "value":"8" }, + { "name":"k_EItemStateDownloading", "value":"16" }, + { "name":"k_EItemStateDownloadPending", "value":"32" } + ] + }, + { + "enumname": "EItemStatistic", + "values": [ + { "name":"k_EItemStatistic_NumSubscriptions", "value":"0" }, + { "name":"k_EItemStatistic_NumFavorites", "value":"1" }, + { "name":"k_EItemStatistic_NumFollowers", "value":"2" }, + { "name":"k_EItemStatistic_NumUniqueSubscriptions", "value":"3" }, + { "name":"k_EItemStatistic_NumUniqueFavorites", "value":"4" }, + { "name":"k_EItemStatistic_NumUniqueFollowers", "value":"5" }, + { "name":"k_EItemStatistic_NumUniqueWebsiteViews", "value":"6" }, + { "name":"k_EItemStatistic_ReportScore", "value":"7" }, + { "name":"k_EItemStatistic_NumSecondsPlayed", "value":"8" }, + { "name":"k_EItemStatistic_NumPlaytimeSessions", "value":"9" }, + { "name":"k_EItemStatistic_NumComments", "value":"10" }, + { "name":"k_EItemStatistic_NumSecondsPlayedDuringTimePeriod", "value":"11" }, + { "name":"k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod", "value":"12" } + ] + }, + { + "enumname": "EItemPreviewType", + "values": [ + { "name":"k_EItemPreviewType_Image", "value":"0" }, + { "name":"k_EItemPreviewType_YouTubeVideo", "value":"1" }, + { "name":"k_EItemPreviewType_Sketchfab", "value":"2" }, + { "name":"k_EItemPreviewType_EnvironmentMap_HorizontalCross", "value":"3" }, + { "name":"k_EItemPreviewType_EnvironmentMap_LatLong", "value":"4" }, + { "name":"k_EItemPreviewType_ReservedMax", "value":"255" } + ] + }, + { + "enumname": "ESteamItemFlags", + "values": [ + { "name":"k_ESteamItemNoTrade", "value":"1" }, + { "name":"k_ESteamItemRemoved", "value":"256" }, + { "name":"k_ESteamItemConsumed", "value":"512" } + ] + }, + { + "enumname": "EParentalFeature", + "values": [ + { "name":"k_EFeatureInvalid", "value":"0" }, + { "name":"k_EFeatureStore", "value":"1" }, + { "name":"k_EFeatureCommunity", "value":"2" }, + { "name":"k_EFeatureProfile", "value":"3" }, + { "name":"k_EFeatureFriends", "value":"4" }, + { "name":"k_EFeatureNews", "value":"5" }, + { "name":"k_EFeatureTrading", "value":"6" }, + { "name":"k_EFeatureSettings", "value":"7" }, + { "name":"k_EFeatureConsole", "value":"8" }, + { "name":"k_EFeatureBrowser", "value":"9" }, + { "name":"k_EFeatureParentalSetup", "value":"10" }, + { "name":"k_EFeatureLibrary", "value":"11" }, + { "name":"k_EFeatureTest", "value":"12" }, + { "name":"k_EFeatureSiteLicense", "value":"13" }, + { "name":"k_EFeatureMax", "value":"14" } + ] + }, + { + "enumname": "ESteamDeviceFormFactor", + "values": [ + { "name":"k_ESteamDeviceFormFactorUnknown", "value":"0" }, + { "name":"k_ESteamDeviceFormFactorPhone", "value":"1" }, + { "name":"k_ESteamDeviceFormFactorTablet", "value":"2" }, + { "name":"k_ESteamDeviceFormFactorComputer", "value":"3" }, + { "name":"k_ESteamDeviceFormFactorTV", "value":"4" } + ] + }, + { + "enumname": "ESteamNetworkingAvailability", + "values": [ + { "name":"k_ESteamNetworkingAvailability_CannotTry", "value":"-102" }, + { "name":"k_ESteamNetworkingAvailability_Failed", "value":"-101" }, + { "name":"k_ESteamNetworkingAvailability_Previously", "value":"-100" }, + { "name":"k_ESteamNetworkingAvailability_Retrying", "value":"-10" }, + { "name":"k_ESteamNetworkingAvailability_NeverTried", "value":"1" }, + { "name":"k_ESteamNetworkingAvailability_Waiting", "value":"2" }, + { "name":"k_ESteamNetworkingAvailability_Attempting", "value":"3" }, + { "name":"k_ESteamNetworkingAvailability_Current", "value":"100" }, + { "name":"k_ESteamNetworkingAvailability_Unknown", "value":"0" }, + { "name":"k_ESteamNetworkingAvailability__Force32bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingIdentityType", + "values": [ + { "name":"k_ESteamNetworkingIdentityType_Invalid", "value":"0" }, + { "name":"k_ESteamNetworkingIdentityType_SteamID", "value":"16" }, + { "name":"k_ESteamNetworkingIdentityType_XboxPairwiseID", "value":"17" }, + { "name":"k_ESteamNetworkingIdentityType_SonyPSN", "value":"18" }, + { "name":"k_ESteamNetworkingIdentityType_GoogleStadia", "value":"19" }, + { "name":"k_ESteamNetworkingIdentityType_IPAddress", "value":"1" }, + { "name":"k_ESteamNetworkingIdentityType_GenericString", "value":"2" }, + { "name":"k_ESteamNetworkingIdentityType_GenericBytes", "value":"3" }, + { "name":"k_ESteamNetworkingIdentityType_UnknownType", "value":"4" }, + { "name":"k_ESteamNetworkingIdentityType__Force32bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingFakeIPType", + "values": [ + { "name":"k_ESteamNetworkingFakeIPType_Invalid", "value":"0" }, + { "name":"k_ESteamNetworkingFakeIPType_NotFake", "value":"1" }, + { "name":"k_ESteamNetworkingFakeIPType_GlobalIPv4", "value":"2" }, + { "name":"k_ESteamNetworkingFakeIPType_LocalIPv4", "value":"3" }, + { "name":"k_ESteamNetworkingFakeIPType__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConnectionState", + "values": [ + { "name":"k_ESteamNetworkingConnectionState_None", "value":"0" }, + { "name":"k_ESteamNetworkingConnectionState_Connecting", "value":"1" }, + { "name":"k_ESteamNetworkingConnectionState_FindingRoute", "value":"2" }, + { "name":"k_ESteamNetworkingConnectionState_Connected", "value":"3" }, + { "name":"k_ESteamNetworkingConnectionState_ClosedByPeer", "value":"4" }, + { "name":"k_ESteamNetworkingConnectionState_ProblemDetectedLocally", "value":"5" }, + { "name":"k_ESteamNetworkingConnectionState_FinWait", "value":"-1" }, + { "name":"k_ESteamNetworkingConnectionState_Linger", "value":"-2" }, + { "name":"k_ESteamNetworkingConnectionState_Dead", "value":"-3" }, + { "name":"k_ESteamNetworkingConnectionState__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetConnectionEnd", + "values": [ + { "name":"k_ESteamNetConnectionEnd_Invalid", "value":"0" }, + { "name":"k_ESteamNetConnectionEnd_App_Min", "value":"1000" }, + { "name":"k_ESteamNetConnectionEnd_App_Generic", "value":"1000" }, + { "name":"k_ESteamNetConnectionEnd_App_Max", "value":"1999" }, + { "name":"k_ESteamNetConnectionEnd_AppException_Min", "value":"2000" }, + { "name":"k_ESteamNetConnectionEnd_AppException_Generic", "value":"2000" }, + { "name":"k_ESteamNetConnectionEnd_AppException_Max", "value":"2999" }, + { "name":"k_ESteamNetConnectionEnd_Local_Min", "value":"3000" }, + { "name":"k_ESteamNetConnectionEnd_Local_OfflineMode", "value":"3001" }, + { "name":"k_ESteamNetConnectionEnd_Local_ManyRelayConnectivity", "value":"3002" }, + { "name":"k_ESteamNetConnectionEnd_Local_HostedServerPrimaryRelay", "value":"3003" }, + { "name":"k_ESteamNetConnectionEnd_Local_NetworkConfig", "value":"3004" }, + { "name":"k_ESteamNetConnectionEnd_Local_Rights", "value":"3005" }, + { "name":"k_ESteamNetConnectionEnd_Local_P2P_ICE_NoPublicAddresses", "value":"3006" }, + { "name":"k_ESteamNetConnectionEnd_Local_Max", "value":"3999" }, + { "name":"k_ESteamNetConnectionEnd_Remote_Min", "value":"4000" }, + { "name":"k_ESteamNetConnectionEnd_Remote_Timeout", "value":"4001" }, + { "name":"k_ESteamNetConnectionEnd_Remote_BadCrypt", "value":"4002" }, + { "name":"k_ESteamNetConnectionEnd_Remote_BadCert", "value":"4003" }, + { "name":"k_ESteamNetConnectionEnd_Remote_BadProtocolVersion", "value":"4006" }, + { "name":"k_ESteamNetConnectionEnd_Remote_P2P_ICE_NoPublicAddresses", "value":"4007" }, + { "name":"k_ESteamNetConnectionEnd_Remote_Max", "value":"4999" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Min", "value":"5000" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Generic", "value":"5001" }, + { "name":"k_ESteamNetConnectionEnd_Misc_InternalError", "value":"5002" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Timeout", "value":"5003" }, + { "name":"k_ESteamNetConnectionEnd_Misc_SteamConnectivity", "value":"5005" }, + { "name":"k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient", "value":"5006" }, + { "name":"k_ESteamNetConnectionEnd_Misc_P2P_Rendezvous", "value":"5008" }, + { "name":"k_ESteamNetConnectionEnd_Misc_P2P_NAT_Firewall", "value":"5009" }, + { "name":"k_ESteamNetConnectionEnd_Misc_PeerSentNoConnection", "value":"5010" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Max", "value":"5999" }, + { "name":"k_ESteamNetConnectionEnd__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConfigScope", + "values": [ + { "name":"k_ESteamNetworkingConfig_Global", "value":"1" }, + { "name":"k_ESteamNetworkingConfig_SocketsInterface", "value":"2" }, + { "name":"k_ESteamNetworkingConfig_ListenSocket", "value":"3" }, + { "name":"k_ESteamNetworkingConfig_Connection", "value":"4" }, + { "name":"k_ESteamNetworkingConfigScope__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConfigDataType", + "values": [ + { "name":"k_ESteamNetworkingConfig_Int32", "value":"1" }, + { "name":"k_ESteamNetworkingConfig_Int64", "value":"2" }, + { "name":"k_ESteamNetworkingConfig_Float", "value":"3" }, + { "name":"k_ESteamNetworkingConfig_String", "value":"4" }, + { "name":"k_ESteamNetworkingConfig_Ptr", "value":"5" }, + { "name":"k_ESteamNetworkingConfigDataType__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConfigValue", + "values": [ + { "name":"k_ESteamNetworkingConfig_Invalid", "value":"0" }, + { "name":"k_ESteamNetworkingConfig_TimeoutInitial", "value":"24" }, + { "name":"k_ESteamNetworkingConfig_TimeoutConnected", "value":"25" }, + { "name":"k_ESteamNetworkingConfig_SendBufferSize", "value":"9" }, + { "name":"k_ESteamNetworkingConfig_ConnectionUserData", "value":"40" }, + { "name":"k_ESteamNetworkingConfig_SendRateMin", "value":"10" }, + { "name":"k_ESteamNetworkingConfig_SendRateMax", "value":"11" }, + { "name":"k_ESteamNetworkingConfig_NagleTime", "value":"12" }, + { "name":"k_ESteamNetworkingConfig_IP_AllowWithoutAuth", "value":"23" }, + { "name":"k_ESteamNetworkingConfig_MTU_PacketSize", "value":"32" }, + { "name":"k_ESteamNetworkingConfig_MTU_DataSize", "value":"33" }, + { "name":"k_ESteamNetworkingConfig_Unencrypted", "value":"34" }, + { "name":"k_ESteamNetworkingConfig_SymmetricConnect", "value":"37" }, + { "name":"k_ESteamNetworkingConfig_LocalVirtualPort", "value":"38" }, + { "name":"k_ESteamNetworkingConfig_DualWifi_Enable", "value":"39" }, + { "name":"k_ESteamNetworkingConfig_EnableDiagnosticsUI", "value":"46" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Send", "value":"2" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Recv", "value":"3" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLag_Send", "value":"4" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLag_Recv", "value":"5" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Send", "value":"6" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Recv", "value":"7" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Time", "value":"8" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_Send", "value":"26" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_Recv", "value":"27" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_TimeMax", "value":"28" }, + { "name":"k_ESteamNetworkingConfig_PacketTraceMaxBytes", "value":"41" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Send_Rate", "value":"42" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Send_Burst", "value":"43" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate", "value":"44" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst", "value":"45" }, + { "name":"k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged", "value":"201" }, + { "name":"k_ESteamNetworkingConfig_Callback_AuthStatusChanged", "value":"202" }, + { "name":"k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged", "value":"203" }, + { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionRequest", "value":"204" }, + { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionFailed", "value":"205" }, + { "name":"k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling", "value":"206" }, + { "name":"k_ESteamNetworkingConfig_Callback_FakeIPResult", "value":"207" }, + { "name":"k_ESteamNetworkingConfig_P2P_STUN_ServerList", "value":"103" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Enable", "value":"104" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty", "value":"105" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty", "value":"106" }, + { "name":"k_ESteamNetworkingConfig_P2P_TURN_ServerList", "value":"107" }, + { "name":"k_ESteamNetworkingConfig_P2P_TURN_UserList", "value":"108" }, + { "name":"k_ESteamNetworkingConfig_P2P_TURN_PassList", "value":"109" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Implementation", "value":"110" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFailInitial", "value":"19" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFail", "value":"20" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate", "value":"21" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_SingleSocket", "value":"22" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ForceRelayCluster", "value":"29" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_DebugTicketAddress", "value":"30" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ForceProxyAddr", "value":"31" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_FakeClusterPing", "value":"36" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_AckRTT", "value":"13" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_PacketDecode", "value":"14" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_Message", "value":"15" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_PacketGaps", "value":"16" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_P2PRendezvous", "value":"17" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_SDRRelayPings", "value":"18" }, + { "name":"k_ESteamNetworkingConfig_DELETED_EnumerateDevVars", "value":"35" }, + { "name":"k_ESteamNetworkingConfigValue__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingGetConfigValueResult", + "values": [ + { "name":"k_ESteamNetworkingGetConfigValue_BadValue", "value":"-1" }, + { "name":"k_ESteamNetworkingGetConfigValue_BadScopeObj", "value":"-2" }, + { "name":"k_ESteamNetworkingGetConfigValue_BufferTooSmall", "value":"-3" }, + { "name":"k_ESteamNetworkingGetConfigValue_OK", "value":"1" }, + { "name":"k_ESteamNetworkingGetConfigValue_OKInherited", "value":"2" }, + { "name":"k_ESteamNetworkingGetConfigValueResult__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingSocketsDebugOutputType", + "values": [ + { "name":"k_ESteamNetworkingSocketsDebugOutputType_None", "value":"0" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Bug", "value":"1" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Error", "value":"2" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Important", "value":"3" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Warning", "value":"4" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Msg", "value":"5" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Verbose", "value":"6" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Debug", "value":"7" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Everything", "value":"8" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "EServerMode", + "values": [ + { "name":"eServerModeInvalid", "value":"0" }, + { "name":"eServerModeNoAuthentication", "value":"1" }, + { "name":"eServerModeAuthentication", "value":"2" }, + { "name":"eServerModeAuthenticationAndSecure", "value":"3" } + ] + } + ], + "interfaces": [ + { + "classname": "ISteamClient", + "fields": [], + "methods": [ + { + "methodname": "CreateSteamPipe", + "methodname_flat": "SteamAPI_ISteamClient_CreateSteamPipe", + "params": [], + "returntype": "HSteamPipe" + }, + { + "methodname": "BReleaseSteamPipe", + "methodname_flat": "SteamAPI_ISteamClient_BReleaseSteamPipe", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" } + ], + "returntype": "bool" + }, + { + "methodname": "ConnectToGlobalUser", + "methodname_flat": "SteamAPI_ISteamClient_ConnectToGlobalUser", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" } + ], + "returntype": "HSteamUser" + }, + { + "methodname": "CreateLocalUser", + "methodname_flat": "SteamAPI_ISteamClient_CreateLocalUser", + "params": [ + { "paramname":"phSteamPipe", "paramtype":"HSteamPipe *" }, + { "paramname":"eAccountType", "paramtype":"EAccountType" } + ], + "returntype": "HSteamUser" + }, + { + "methodname": "ReleaseUser", + "methodname_flat": "SteamAPI_ISteamClient_ReleaseUser", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"hUser", "paramtype":"HSteamUser" } + ], + "returntype": "void" + }, + { + "methodname": "GetISteamUser", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUser", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUser *" + }, + { + "methodname": "GetISteamGameServer", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameServer", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamGameServer *" + }, + { + "methodname": "SetLocalIPBinding", + "methodname_flat": "SteamAPI_ISteamClient_SetLocalIPBinding", + "params": [ + { "paramname":"unIP", "paramtype":"const SteamIPAddress_t &" }, + { "paramname":"usPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetISteamFriends", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamFriends", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamFriends *" + }, + { + "methodname": "GetISteamUtils", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUtils", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUtils *" + }, + { + "methodname": "GetISteamMatchmaking", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMatchmaking", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMatchmaking *" + }, + { + "methodname": "GetISteamMatchmakingServers", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMatchmakingServers", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMatchmakingServers *" + }, + { + "methodname": "GetISteamGenericInterface", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGenericInterface", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "void *" + }, + { + "methodname": "GetISteamUserStats", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUserStats", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUserStats *" + }, + { + "methodname": "GetISteamGameServerStats", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameServerStats", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamGameServerStats *" + }, + { + "methodname": "GetISteamApps", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamApps", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamApps *" + }, + { + "methodname": "GetISteamNetworking", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamNetworking", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamNetworking *" + }, + { + "methodname": "GetISteamRemoteStorage", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamRemoteStorage", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamRemoteStorage *" + }, + { + "methodname": "GetISteamScreenshots", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamScreenshots", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamScreenshots *" + }, + { + "methodname": "GetISteamGameSearch", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameSearch", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamGameSearch *" + }, + { + "methodname": "GetIPCCallCount", + "methodname_flat": "SteamAPI_ISteamClient_GetIPCCallCount", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetWarningMessageHook", + "methodname_flat": "SteamAPI_ISteamClient_SetWarningMessageHook", + "params": [ + { "paramname":"pFunction", "paramtype":"SteamAPIWarningMessageHook_t" } + ], + "returntype": "void" + }, + { + "methodname": "BShutdownIfAllPipesClosed", + "methodname_flat": "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetISteamHTTP", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamHTTP", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamHTTP *" + }, + { + "methodname": "GetISteamController", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamController", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamController *" + }, + { + "methodname": "GetISteamUGC", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUGC", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUGC *" + }, + { + "methodname": "GetISteamAppList", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamAppList", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamAppList *" + }, + { + "methodname": "GetISteamMusic", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMusic", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMusic *" + }, + { + "methodname": "GetISteamMusicRemote", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMusicRemote", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMusicRemote *" + }, + { + "methodname": "GetISteamHTMLSurface", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamHTMLSurface", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamHTMLSurface *" + }, + { + "methodname": "GetISteamInventory", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamInventory", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamInventory *" + }, + { + "methodname": "GetISteamVideo", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamVideo", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamVideo *" + }, + { + "methodname": "GetISteamParentalSettings", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamParentalSettings", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamParentalSettings *" + }, + { + "methodname": "GetISteamInput", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamInput", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamInput *" + }, + { + "methodname": "GetISteamParties", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamParties", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamParties *" + }, + { + "methodname": "GetISteamRemotePlay", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamRemotePlay", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamRemotePlay *" + } + ] + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUser", + "name_flat": "SteamAPI_SteamUser_v021" + } + ], + "classname": "ISteamUser", + "fields": [], + "methods": [ + { + "methodname": "GetHSteamUser", + "methodname_flat": "SteamAPI_ISteamUser_GetHSteamUser", + "params": [], + "returntype": "HSteamUser" + }, + { + "methodname": "BLoggedOn", + "methodname_flat": "SteamAPI_ISteamUser_BLoggedOn", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetSteamID", + "methodname_flat": "SteamAPI_ISteamUser_GetSteamID", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "InitiateGameConnection_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamUser_InitiateGameConnection_DEPRECATED", + "params": [ + { "paramname":"pAuthBlob", "paramtype":"void *" }, + { "paramname":"cbMaxAuthBlob", "paramtype":"int" }, + { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unIPServer", "paramtype":"uint32" }, + { "paramname":"usPortServer", "paramtype":"uint16" }, + { "paramname":"bSecure", "paramtype":"bool" } + ], + "returntype": "int" + }, + { + "methodname": "TerminateGameConnection_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamUser_TerminateGameConnection_DEPRECATED", + "params": [ + { "paramname":"unIPServer", "paramtype":"uint32" }, + { "paramname":"usPortServer", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "TrackAppUsageEvent", + "methodname_flat": "SteamAPI_ISteamUser_TrackAppUsageEvent", + "params": [ + { "paramname":"gameID", "paramtype":"CGameID", "paramtype_flat":"uint64_gameid" }, + { "paramname":"eAppUsageEvent", "paramtype":"int" }, + { "paramname":"pchExtraInfo", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "GetUserDataFolder", + "methodname_flat": "SteamAPI_ISteamUser_GetUserDataFolder", + "params": [ + { "paramname":"pchBuffer", "paramtype":"char *" }, + { "paramname":"cubBuffer", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "StartVoiceRecording", + "methodname_flat": "SteamAPI_ISteamUser_StartVoiceRecording", + "params": [], + "returntype": "void" + }, + { + "methodname": "StopVoiceRecording", + "methodname_flat": "SteamAPI_ISteamUser_StopVoiceRecording", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetAvailableVoice", + "methodname_flat": "SteamAPI_ISteamUser_GetAvailableVoice", + "params": [ + { "paramname":"pcbCompressed", "paramtype":"uint32 *" }, + { "paramname":"pcbUncompressed_Deprecated", "paramtype":"uint32 *" }, + { "paramname":"nUncompressedVoiceDesiredSampleRate_Deprecated", "paramtype":"uint32" } + ], + "returntype": "EVoiceResult" + }, + { + "methodname": "GetVoice", + "methodname_flat": "SteamAPI_ISteamUser_GetVoice", + "params": [ + { "paramname":"bWantCompressed", "paramtype":"bool" }, + { "paramname":"pDestBuffer", "paramtype":"void *" }, + { "paramname":"cbDestBufferSize", "paramtype":"uint32" }, + { "paramname":"nBytesWritten", "paramtype":"uint32 *" }, + { "paramname":"bWantUncompressed_Deprecated", "paramtype":"bool" }, + { "paramname":"pUncompressedDestBuffer_Deprecated", "paramtype":"void *" }, + { "paramname":"cbUncompressedDestBufferSize_Deprecated", "paramtype":"uint32" }, + { "paramname":"nUncompressBytesWritten_Deprecated", "paramtype":"uint32 *" }, + { "paramname":"nUncompressedVoiceDesiredSampleRate_Deprecated", "paramtype":"uint32" } + ], + "returntype": "EVoiceResult" + }, + { + "methodname": "DecompressVoice", + "methodname_flat": "SteamAPI_ISteamUser_DecompressVoice", + "params": [ + { "paramname":"pCompressed", "paramtype":"const void *" }, + { "paramname":"cbCompressed", "paramtype":"uint32" }, + { "paramname":"pDestBuffer", "paramtype":"void *" }, + { "paramname":"cbDestBufferSize", "paramtype":"uint32" }, + { "paramname":"nBytesWritten", "paramtype":"uint32 *" }, + { "paramname":"nDesiredSampleRate", "paramtype":"uint32" } + ], + "returntype": "EVoiceResult" + }, + { + "methodname": "GetVoiceOptimalSampleRate", + "methodname_flat": "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetAuthSessionTicket", + "methodname_flat": "SteamAPI_ISteamUser_GetAuthSessionTicket", + "params": [ + { "paramname":"pTicket", "paramtype":"void *" }, + { "paramname":"cbMaxTicket", "paramtype":"int" }, + { "paramname":"pcbTicket", "paramtype":"uint32 *" } + ], + "returntype": "HAuthTicket" + }, + { + "methodname": "BeginAuthSession", + "methodname_flat": "SteamAPI_ISteamUser_BeginAuthSession", + "params": [ + { "paramname":"pAuthTicket", "paramtype":"const void *" }, + { "paramname":"cbAuthTicket", "paramtype":"int" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EBeginAuthSessionResult" + }, + { + "methodname": "EndAuthSession", + "methodname_flat": "SteamAPI_ISteamUser_EndAuthSession", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "CancelAuthTicket", + "methodname_flat": "SteamAPI_ISteamUser_CancelAuthTicket", + "params": [ + { "paramname":"hAuthTicket", "paramtype":"HAuthTicket" } + ], + "returntype": "void" + }, + { + "methodname": "UserHasLicenseForApp", + "methodname_flat": "SteamAPI_ISteamUser_UserHasLicenseForApp", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "EUserHasLicenseForAppResult" + }, + { + "methodname": "BIsBehindNAT", + "methodname_flat": "SteamAPI_ISteamUser_BIsBehindNAT", + "params": [], + "returntype": "bool" + }, + { + "methodname": "AdvertiseGame", + "methodname_flat": "SteamAPI_ISteamUser_AdvertiseGame", + "params": [ + { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unIPServer", "paramtype":"uint32" }, + { "paramname":"usPortServer", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "callresult": "EncryptedAppTicketResponse_t", + "methodname": "RequestEncryptedAppTicket", + "methodname_flat": "SteamAPI_ISteamUser_RequestEncryptedAppTicket", + "params": [ + { "paramname":"pDataToInclude", "paramtype":"void *" }, + { "paramname":"cbDataToInclude", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetEncryptedAppTicket", + "methodname_flat": "SteamAPI_ISteamUser_GetEncryptedAppTicket", + "params": [ + { "paramname":"pTicket", "paramtype":"void *" }, + { "paramname":"cbMaxTicket", "paramtype":"int" }, + { "paramname":"pcbTicket", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGameBadgeLevel", + "methodname_flat": "SteamAPI_ISteamUser_GetGameBadgeLevel", + "params": [ + { "paramname":"nSeries", "paramtype":"int" }, + { "paramname":"bFoil", "paramtype":"bool" } + ], + "returntype": "int" + }, + { + "methodname": "GetPlayerSteamLevel", + "methodname_flat": "SteamAPI_ISteamUser_GetPlayerSteamLevel", + "params": [], + "returntype": "int" + }, + { + "callresult": "StoreAuthURLResponse_t", + "methodname": "RequestStoreAuthURL", + "methodname_flat": "SteamAPI_ISteamUser_RequestStoreAuthURL", + "params": [ + { "paramname":"pchRedirectURL", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "BIsPhoneVerified", + "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneVerified", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsTwoFactorEnabled", + "methodname_flat": "SteamAPI_ISteamUser_BIsTwoFactorEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsPhoneIdentifying", + "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneIdentifying", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsPhoneRequiringVerification", + "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneRequiringVerification", + "params": [], + "returntype": "bool" + }, + { + "callresult": "MarketEligibilityResponse_t", + "methodname": "GetMarketEligibility", + "methodname_flat": "SteamAPI_ISteamUser_GetMarketEligibility", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "DurationControl_t", + "methodname": "GetDurationControl", + "methodname_flat": "SteamAPI_ISteamUser_GetDurationControl", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "BSetDurationControlOnlineState", + "methodname_flat": "SteamAPI_ISteamUser_BSetDurationControlOnlineState", + "params": [ + { "paramname":"eNewState", "paramtype":"EDurationControlOnlineState" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamUser021" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamFriends", + "name_flat": "SteamAPI_SteamFriends_v017" + } + ], + "classname": "ISteamFriends", + "fields": [], + "methods": [ + { + "methodname": "GetPersonaName", + "methodname_flat": "SteamAPI_ISteamFriends_GetPersonaName", + "params": [], + "returntype": "const char *" + }, + { + "callresult": "SetPersonaNameResponse_t", + "methodname": "SetPersonaName", + "methodname_flat": "SteamAPI_ISteamFriends_SetPersonaName", + "params": [ + { "paramname":"pchPersonaName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetPersonaState", + "methodname_flat": "SteamAPI_ISteamFriends_GetPersonaState", + "params": [], + "returntype": "EPersonaState" + }, + { + "methodname": "GetFriendCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCount", + "params": [ + { "paramname":"iFriendFlags", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendByIndex", + "params": [ + { "paramname":"iFriend", "paramtype":"int" }, + { "paramname":"iFriendFlags", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetFriendRelationship", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRelationship", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EFriendRelationship" + }, + { + "methodname": "GetFriendPersonaState", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaState", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EPersonaState" + }, + { + "methodname": "GetFriendPersonaName", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaName", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendGamePlayed", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendGamePlayed", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { + "out_struct": "", + "paramname": "pFriendGameInfo", + "paramtype": "FriendGameInfo_t *" + } + ], + "returntype": "bool" + }, + { + "methodname": "GetFriendPersonaNameHistory", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iPersonaName", "paramtype":"int" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendSteamLevel", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendSteamLevel", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetPlayerNickname", + "methodname_flat": "SteamAPI_ISteamFriends_GetPlayerNickname", + "params": [ + { "paramname":"steamIDPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendsGroupCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetFriendsGroupIDByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex", + "params": [ + { "paramname":"iFG", "paramtype":"int" } + ], + "returntype": "FriendsGroupID_t" + }, + { + "methodname": "GetFriendsGroupName", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupName", + "params": [ + { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendsGroupMembersCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount", + "params": [ + { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendsGroupMembersList", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupMembersList", + "params": [ + { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" }, + { + "out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID", + "paramname": "pOutSteamIDMembers", + "paramtype": "CSteamID *" + }, + { "paramname":"nMembersCount", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "HasFriend", + "methodname_flat": "SteamAPI_ISteamFriends_HasFriend", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iFriendFlags", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetClanCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetClanByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanByIndex", + "params": [ + { "paramname":"iClan", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetClanName", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanName", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetClanTag", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanTag", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetClanActivityCounts", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanActivityCounts", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pnOnline", "paramtype":"int *" }, + { "paramname":"pnInGame", "paramtype":"int *" }, + { "paramname":"pnChatting", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "callresult": "DownloadClanActivityCountsResult_t", + "methodname": "DownloadClanActivityCounts", + "methodname_flat": "SteamAPI_ISteamFriends_DownloadClanActivityCounts", + "params": [ + { + "array_count": "cClansToRequest", + "paramname": "psteamIDClans", + "paramtype": "CSteamID *" + }, + { "paramname":"cClansToRequest", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetFriendCountFromSource", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCountFromSource", + "params": [ + { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendFromSourceByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex", + "params": [ + { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iFriend", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "IsUserInSource", + "methodname_flat": "SteamAPI_ISteamFriends_IsUserInSource", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetInGameVoiceSpeaking", + "methodname_flat": "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"bSpeaking", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlay", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlay", + "params": [ + { "paramname":"pchDialog", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayToUser", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToUser", + "params": [ + { "paramname":"pchDialog", "paramtype":"const char *" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayToWebPage", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage", + "params": [ + { "paramname":"pchURL", "paramtype":"const char *" }, + { "paramname":"eMode", "paramtype":"EActivateGameOverlayToWebPageMode" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayToStore", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToStore", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"eFlag", "paramtype":"EOverlayToStoreFlag" } + ], + "returntype": "void" + }, + { + "methodname": "SetPlayedWith", + "methodname_flat": "SteamAPI_ISteamFriends_SetPlayedWith", + "params": [ + { "paramname":"steamIDUserPlayedWith", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayInviteDialog", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetSmallFriendAvatar", + "methodname_flat": "SteamAPI_ISteamFriends_GetSmallFriendAvatar", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetMediumFriendAvatar", + "methodname_flat": "SteamAPI_ISteamFriends_GetMediumFriendAvatar", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetLargeFriendAvatar", + "methodname_flat": "SteamAPI_ISteamFriends_GetLargeFriendAvatar", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "RequestUserInformation", + "methodname_flat": "SteamAPI_ISteamFriends_RequestUserInformation", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"bRequireNameOnly", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "callresult": "ClanOfficerListResponse_t", + "methodname": "RequestClanOfficerList", + "methodname_flat": "SteamAPI_ISteamFriends_RequestClanOfficerList", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetClanOwner", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanOwner", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetClanOfficerCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanOfficerCount", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetClanOfficerByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanOfficerByIndex", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iOfficer", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetUserRestrictions", + "methodname_flat": "SteamAPI_ISteamFriends_GetUserRestrictions", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_SetRichPresence", + "params": [ + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ClearRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_ClearRichPresence", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetFriendRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresence", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendRichPresenceKeyCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendRichPresenceKeyByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iKey", "paramtype":"int" } + ], + "returntype": "const char *" + }, + { + "methodname": "RequestFriendRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_RequestFriendRichPresence", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "InviteUserToGame", + "methodname_flat": "SteamAPI_ISteamFriends_InviteUserToGame", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchConnectString", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetCoplayFriendCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetCoplayFriendCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetCoplayFriend", + "methodname_flat": "SteamAPI_ISteamFriends_GetCoplayFriend", + "params": [ + { "paramname":"iCoplayFriend", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetFriendCoplayTime", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCoplayTime", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendCoplayGame", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCoplayGame", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "AppId_t" + }, + { + "callresult": "JoinClanChatRoomCompletionResult_t", + "methodname": "JoinClanChatRoom", + "methodname_flat": "SteamAPI_ISteamFriends_JoinClanChatRoom", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "LeaveClanChatRoom", + "methodname_flat": "SteamAPI_ISteamFriends_LeaveClanChatRoom", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetClanChatMemberCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanChatMemberCount", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetChatMemberByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetChatMemberByIndex", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iUser", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SendClanChatMessage", + "methodname_flat": "SteamAPI_ISteamFriends_SendClanChatMessage", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetClanChatMessage", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanChatMessage", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iMessage", "paramtype":"int" }, + { "paramname":"prgchText", "paramtype":"void *" }, + { "paramname":"cchTextMax", "paramtype":"int" }, + { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" }, + { + "out_struct": "", + "paramname": "psteamidChatter", + "paramtype": "CSteamID *" + } + ], + "returntype": "int" + }, + { + "methodname": "IsClanChatAdmin", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanChatAdmin", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "IsClanChatWindowOpenInSteam", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "OpenClanChatWindowInSteam", + "methodname_flat": "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseClanChatWindowInSteam", + "methodname_flat": "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetListenForFriendsMessages", + "methodname_flat": "SteamAPI_ISteamFriends_SetListenForFriendsMessages", + "params": [ + { "paramname":"bInterceptEnabled", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "ReplyToFriendMessage", + "methodname_flat": "SteamAPI_ISteamFriends_ReplyToFriendMessage", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchMsgToSend", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFriendMessage", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendMessage", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iMessageID", "paramtype":"int" }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubData", "paramtype":"int" }, + { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" } + ], + "returntype": "int" + }, + { + "callresult": "FriendsGetFollowerCount_t", + "methodname": "GetFollowerCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFollowerCount", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "FriendsIsFollowing_t", + "methodname": "IsFollowing", + "methodname_flat": "SteamAPI_ISteamFriends_IsFollowing", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "FriendsEnumerateFollowingList_t", + "methodname": "EnumerateFollowingList", + "methodname_flat": "SteamAPI_ISteamFriends_EnumerateFollowingList", + "params": [ + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "IsClanPublic", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanPublic", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "IsClanOfficialGameGroup", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanOfficialGameGroup", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNumChatsWithUnreadPriorityMessages", + "methodname_flat": "SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages", + "params": [], + "returntype": "int" + }, + { + "methodname": "ActivateGameOverlayRemotePlayTogetherInviteDialog", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "RegisterProtocolInOverlayBrowser", + "methodname_flat": "SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser", + "params": [ + { "paramname":"pchProtocol", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ActivateGameOverlayInviteDialogConnectString", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString", + "params": [ + { "paramname":"pchConnectString", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "callresult": "EquippedProfileItems_t", + "methodname": "RequestEquippedProfileItems", + "methodname_flat": "SteamAPI_ISteamFriends_RequestEquippedProfileItems", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "BHasEquippedProfileItem", + "methodname_flat": "SteamAPI_ISteamFriends_BHasEquippedProfileItem", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"itemType", "paramtype":"ECommunityProfileItemType" } + ], + "returntype": "bool" + }, + { + "methodname": "GetProfileItemPropertyString", + "methodname_flat": "SteamAPI_ISteamFriends_GetProfileItemPropertyString", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"itemType", "paramtype":"ECommunityProfileItemType" }, + { "paramname":"prop", "paramtype":"ECommunityProfileItemProperty" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetProfileItemPropertyUint", + "methodname_flat": "SteamAPI_ISteamFriends_GetProfileItemPropertyUint", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"itemType", "paramtype":"ECommunityProfileItemType" }, + { "paramname":"prop", "paramtype":"ECommunityProfileItemProperty" } + ], + "returntype": "uint32" + } + ], + "version_string": "SteamFriends017" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUtils", + "name_flat": "SteamAPI_SteamUtils_v010" + }, + { + "kind": "gameserver", + "name": "SteamGameServerUtils", + "name_flat": "SteamAPI_SteamGameServerUtils_v010" + } + ], + "classname": "ISteamUtils", + "fields": [], + "methods": [ + { + "methodname": "GetSecondsSinceAppActive", + "methodname_flat": "SteamAPI_ISteamUtils_GetSecondsSinceAppActive", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetSecondsSinceComputerActive", + "methodname_flat": "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetConnectedUniverse", + "methodname_flat": "SteamAPI_ISteamUtils_GetConnectedUniverse", + "params": [], + "returntype": "EUniverse" + }, + { + "methodname": "GetServerRealTime", + "methodname_flat": "SteamAPI_ISteamUtils_GetServerRealTime", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetIPCountry", + "methodname_flat": "SteamAPI_ISteamUtils_GetIPCountry", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "GetImageSize", + "methodname_flat": "SteamAPI_ISteamUtils_GetImageSize", + "params": [ + { "paramname":"iImage", "paramtype":"int" }, + { "paramname":"pnWidth", "paramtype":"uint32 *" }, + { "paramname":"pnHeight", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetImageRGBA", + "methodname_flat": "SteamAPI_ISteamUtils_GetImageRGBA", + "params": [ + { "paramname":"iImage", "paramtype":"int" }, + { "paramname":"pubDest", "paramtype":"uint8 *" }, + { "paramname":"nDestBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetCurrentBatteryPower", + "methodname_flat": "SteamAPI_ISteamUtils_GetCurrentBatteryPower", + "params": [], + "returntype": "uint8" + }, + { + "methodname": "GetAppID", + "methodname_flat": "SteamAPI_ISteamUtils_GetAppID", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetOverlayNotificationPosition", + "methodname_flat": "SteamAPI_ISteamUtils_SetOverlayNotificationPosition", + "params": [ + { "paramname":"eNotificationPosition", "paramtype":"ENotificationPosition" } + ], + "returntype": "void" + }, + { + "methodname": "IsAPICallCompleted", + "methodname_flat": "SteamAPI_ISteamUtils_IsAPICallCompleted", + "params": [ + { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" }, + { "paramname":"pbFailed", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAPICallFailureReason", + "methodname_flat": "SteamAPI_ISteamUtils_GetAPICallFailureReason", + "params": [ + { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" } + ], + "returntype": "ESteamAPICallFailure" + }, + { + "methodname": "GetAPICallResult", + "methodname_flat": "SteamAPI_ISteamUtils_GetAPICallResult", + "params": [ + { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" }, + { "paramname":"pCallback", "paramtype":"void *" }, + { "paramname":"cubCallback", "paramtype":"int" }, + { "paramname":"iCallbackExpected", "paramtype":"int" }, + { "paramname":"pbFailed", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetIPCCallCount", + "methodname_flat": "SteamAPI_ISteamUtils_GetIPCCallCount", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetWarningMessageHook", + "methodname_flat": "SteamAPI_ISteamUtils_SetWarningMessageHook", + "params": [ + { "paramname":"pFunction", "paramtype":"SteamAPIWarningMessageHook_t" } + ], + "returntype": "void" + }, + { + "methodname": "IsOverlayEnabled", + "methodname_flat": "SteamAPI_ISteamUtils_IsOverlayEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BOverlayNeedsPresent", + "methodname_flat": "SteamAPI_ISteamUtils_BOverlayNeedsPresent", + "params": [], + "returntype": "bool" + }, + { + "callresult": "CheckFileSignature_t", + "methodname": "CheckFileSignature", + "methodname_flat": "SteamAPI_ISteamUtils_CheckFileSignature", + "params": [ + { "paramname":"szFileName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "ShowGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_ShowGamepadTextInput", + "params": [ + { "paramname":"eInputMode", "paramtype":"EGamepadTextInputMode" }, + { "paramname":"eLineInputMode", "paramtype":"EGamepadTextInputLineMode" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"unCharMax", "paramtype":"uint32" }, + { "paramname":"pchExistingText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetEnteredGamepadTextLength", + "methodname_flat": "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetEnteredGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput", + "params": [ + { "paramname":"pchText", "paramtype":"char *" }, + { "paramname":"cchText", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSteamUILanguage", + "methodname_flat": "SteamAPI_ISteamUtils_GetSteamUILanguage", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "IsSteamRunningInVR", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamRunningInVR", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetOverlayNotificationInset", + "methodname_flat": "SteamAPI_ISteamUtils_SetOverlayNotificationInset", + "params": [ + { "paramname":"nHorizontalInset", "paramtype":"int" }, + { "paramname":"nVerticalInset", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "IsSteamInBigPictureMode", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamInBigPictureMode", + "params": [], + "returntype": "bool" + }, + { + "methodname": "StartVRDashboard", + "methodname_flat": "SteamAPI_ISteamUtils_StartVRDashboard", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsVRHeadsetStreamingEnabled", + "methodname_flat": "SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetVRHeadsetStreamingEnabled", + "methodname_flat": "SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled", + "params": [ + { "paramname":"bEnabled", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "IsSteamChinaLauncher", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamChinaLauncher", + "params": [], + "returntype": "bool" + }, + { + "methodname": "InitFilterText", + "methodname_flat": "SteamAPI_ISteamUtils_InitFilterText", + "params": [ + { "paramname":"unFilterOptions", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "FilterText", + "methodname_flat": "SteamAPI_ISteamUtils_FilterText", + "params": [ + { "paramname":"eContext", "paramtype":"ETextFilteringContext" }, + { "paramname":"sourceSteamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchInputMessage", "paramtype":"const char *" }, + { "paramname":"pchOutFilteredText", "paramtype":"char *" }, + { "paramname":"nByteSizeOutFilteredText", "paramtype":"uint32" } + ], + "returntype": "int" + }, + { + "methodname": "GetIPv6ConnectivityState", + "methodname_flat": "SteamAPI_ISteamUtils_GetIPv6ConnectivityState", + "params": [ + { "paramname":"eProtocol", "paramtype":"ESteamIPv6ConnectivityProtocol" } + ], + "returntype": "ESteamIPv6ConnectivityState" + }, + { + "methodname": "IsSteamRunningOnSteamDeck", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ShowFloatingGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_ShowFloatingGamepadTextInput", + "params": [ + { "paramname":"eKeyboardMode", "paramtype":"EFloatingGamepadTextInputMode" }, + { "paramname":"nTextFieldXPosition", "paramtype":"int" }, + { "paramname":"nTextFieldYPosition", "paramtype":"int" }, + { "paramname":"nTextFieldWidth", "paramtype":"int" }, + { "paramname":"nTextFieldHeight", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGameLauncherMode", + "methodname_flat": "SteamAPI_ISteamUtils_SetGameLauncherMode", + "params": [ + { "paramname":"bLauncherMode", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "DismissFloatingGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput", + "params": [], + "returntype": "bool" + } + ], + "version_string": "SteamUtils010" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMatchmaking", + "name_flat": "SteamAPI_SteamMatchmaking_v009" + } + ], + "classname": "ISteamMatchmaking", + "fields": [], + "methods": [ + { + "methodname": "GetFavoriteGameCount", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetFavoriteGame", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetFavoriteGame", + "params": [ + { "paramname":"iGame", "paramtype":"int" }, + { "paramname":"pnAppID", "paramtype":"AppId_t *" }, + { "paramname":"pnIP", "paramtype":"uint32 *" }, + { "paramname":"pnConnPort", "paramtype":"uint16 *" }, + { "paramname":"pnQueryPort", "paramtype":"uint16 *" }, + { "paramname":"punFlags", "paramtype":"uint32 *" }, + { "paramname":"pRTime32LastPlayedOnServer", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddFavoriteGame", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddFavoriteGame", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nConnPort", "paramtype":"uint16" }, + { "paramname":"nQueryPort", "paramtype":"uint16" }, + { "paramname":"unFlags", "paramtype":"uint32" }, + { "paramname":"rTime32LastPlayedOnServer", "paramtype":"uint32" } + ], + "returntype": "int" + }, + { + "methodname": "RemoveFavoriteGame", + "methodname_flat": "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nConnPort", "paramtype":"uint16" }, + { "paramname":"nQueryPort", "paramtype":"uint16" }, + { "paramname":"unFlags", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "callresult": "LobbyMatchList_t", + "methodname": "RequestLobbyList", + "methodname_flat": "SteamAPI_ISteamMatchmaking_RequestLobbyList", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "AddRequestLobbyListStringFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter", + "params": [ + { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, + { "paramname":"pchValueToMatch", "paramtype":"const char *" }, + { "paramname":"eComparisonType", "paramtype":"ELobbyComparison" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListNumericalFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter", + "params": [ + { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, + { "paramname":"nValueToMatch", "paramtype":"int" }, + { "paramname":"eComparisonType", "paramtype":"ELobbyComparison" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListNearValueFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter", + "params": [ + { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, + { "paramname":"nValueToBeCloseTo", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListFilterSlotsAvailable", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable", + "params": [ + { "paramname":"nSlotsAvailable", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListDistanceFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter", + "params": [ + { "paramname":"eLobbyDistanceFilter", "paramtype":"ELobbyDistanceFilter" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListResultCountFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter", + "params": [ + { "paramname":"cMaxResults", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListCompatibleMembersFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetLobbyByIndex", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyByIndex", + "params": [ + { "paramname":"iLobby", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "callresult": "LobbyCreated_t", + "methodname": "CreateLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_CreateLobby", + "params": [ + { "paramname":"eLobbyType", "paramtype":"ELobbyType" }, + { "paramname":"cMaxMembers", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LobbyEnter_t", + "methodname": "JoinLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_JoinLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "LeaveLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_LeaveLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "InviteUserToLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_InviteUserToLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDInvitee", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNumLobbyMembers", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetLobbyMemberByIndex", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iMember", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "SetLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyDataCount", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyDataCount", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetLobbyDataByIndex", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iLobbyData", "paramtype":"int" }, + { "paramname":"pchKey", "paramtype":"char *" }, + { "paramname":"cchKeyBufferSize", "paramtype":"int" }, + { "paramname":"pchValue", "paramtype":"char *" }, + { "paramname":"cchValueBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "DeleteLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_DeleteLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyMemberData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "SetLobbyMemberData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyMemberData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SendLobbyChatMsg", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pvMsgBody", "paramtype":"const void *" }, + { "paramname":"cubMsgBody", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyChatEntry", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iChatID", "paramtype":"int" }, + { + "out_struct": "", + "paramname": "pSteamIDUser", + "paramtype": "CSteamID *" + }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubData", "paramtype":"int" }, + { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" } + ], + "returntype": "int" + }, + { + "methodname": "RequestLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_RequestLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLobbyGameServer", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyGameServer", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unGameServerIP", "paramtype":"uint32" }, + { "paramname":"unGameServerPort", "paramtype":"uint16" }, + { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetLobbyGameServer", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyGameServer", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"punGameServerIP", "paramtype":"uint32 *" }, + { "paramname":"punGameServerPort", "paramtype":"uint16 *" }, + { + "out_struct": "", + "paramname": "psteamIDGameServer", + "paramtype": "CSteamID *" + } + ], + "returntype": "bool" + }, + { + "methodname": "SetLobbyMemberLimit", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"cMaxMembers", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyMemberLimit", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "SetLobbyType", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyType", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"eLobbyType", "paramtype":"ELobbyType" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLobbyJoinable", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyJoinable", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"bLobbyJoinable", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyOwner", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyOwner", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SetLobbyOwner", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyOwner", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDNewOwner", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLinkedLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLinkedLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDLobbyDependent", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamMatchMaking009" + }, + { + "classname": "ISteamMatchmakingServerListResponse", + "fields": [], + "methods": [ + { + "methodname": "ServerResponded", + "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "ServerFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "RefreshComplete", + "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"response", "paramtype":"EMatchMakingServerResponse" } + ], + "returntype": "void" + } + ] + }, + { + "classname": "ISteamMatchmakingPingResponse", + "fields": [], + "methods": [ + { + "methodname": "ServerResponded", + "methodname_flat": "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded", + "params": [ + { "paramname":"server", "paramtype":"gameserveritem_t &" } + ], + "returntype": "void" + }, + { + "methodname": "ServerFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond", + "params": [], + "returntype": "void" + } + ] + }, + { + "classname": "ISteamMatchmakingPlayersResponse", + "fields": [], + "methods": [ + { + "methodname": "AddPlayerToList", + "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nScore", "paramtype":"int" }, + { "paramname":"flTimePlayed", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "PlayersFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond", + "params": [], + "returntype": "void" + }, + { + "methodname": "PlayersRefreshComplete", + "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete", + "params": [], + "returntype": "void" + } + ] + }, + { + "classname": "ISteamMatchmakingRulesResponse", + "fields": [], + "methods": [ + { + "methodname": "RulesResponded", + "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded", + "params": [ + { "paramname":"pchRule", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "RulesFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond", + "params": [], + "returntype": "void" + }, + { + "methodname": "RulesRefreshComplete", + "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete", + "params": [], + "returntype": "void" + } + ] + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMatchmakingServers", + "name_flat": "SteamAPI_SteamMatchmakingServers_v002" + } + ], + "classname": "ISteamMatchmakingServers", + "fields": [], + "methods": [ + { + "methodname": "RequestInternetServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestLANServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestLANServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestFriendsServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestFavoritesServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestHistoryServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestSpectatorServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "ReleaseRequest", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_ReleaseRequest", + "params": [ + { "paramname":"hServerListRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "void" + }, + { + "methodname": "GetServerDetails", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_GetServerDetails", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "gameserveritem_t *" + }, + { + "methodname": "CancelQuery", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_CancelQuery", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "void" + }, + { + "methodname": "RefreshQuery", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RefreshQuery", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "void" + }, + { + "methodname": "IsRefreshing", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_IsRefreshing", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "bool" + }, + { + "methodname": "GetServerCount", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_GetServerCount", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "int" + }, + { + "methodname": "RefreshServer", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RefreshServer", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "PingServer", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_PingServer", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" }, + { "paramname":"usPort", "paramtype":"uint16" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingPingResponse *" } + ], + "returntype": "HServerQuery" + }, + { + "methodname": "PlayerDetails", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_PlayerDetails", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" }, + { "paramname":"usPort", "paramtype":"uint16" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingPlayersResponse *" } + ], + "returntype": "HServerQuery" + }, + { + "methodname": "ServerRules", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_ServerRules", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" }, + { "paramname":"usPort", "paramtype":"uint16" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingRulesResponse *" } + ], + "returntype": "HServerQuery" + }, + { + "methodname": "CancelServerQuery", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_CancelServerQuery", + "params": [ + { "paramname":"hServerQuery", "paramtype":"HServerQuery" } + ], + "returntype": "void" + } + ], + "version_string": "SteamMatchMakingServers002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamGameSearch", + "name_flat": "SteamAPI_SteamGameSearch_v001" + } + ], + "classname": "ISteamGameSearch", + "fields": [], + "methods": [ + { + "methodname": "AddGameSearchParams", + "methodname_flat": "SteamAPI_ISteamGameSearch_AddGameSearchParams", + "params": [ + { "paramname":"pchKeyToFind", "paramtype":"const char *" }, + { "paramname":"pchValuesToFind", "paramtype":"const char *" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SearchForGameWithLobby", + "methodname_flat": "SteamAPI_ISteamGameSearch_SearchForGameWithLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"nPlayerMin", "paramtype":"int" }, + { "paramname":"nPlayerMax", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SearchForGameSolo", + "methodname_flat": "SteamAPI_ISteamGameSearch_SearchForGameSolo", + "params": [ + { "paramname":"nPlayerMin", "paramtype":"int" }, + { "paramname":"nPlayerMax", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "AcceptGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_AcceptGame", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "DeclineGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_DeclineGame", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "RetrieveConnectionDetails", + "methodname_flat": "SteamAPI_ISteamGameSearch_RetrieveConnectionDetails", + "params": [ + { "paramname":"steamIDHost", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchConnectionDetails", "paramtype":"char *" }, + { "paramname":"cubConnectionDetails", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "EndGameSearch", + "methodname_flat": "SteamAPI_ISteamGameSearch_EndGameSearch", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SetGameHostParams", + "methodname_flat": "SteamAPI_ISteamGameSearch_SetGameHostParams", + "params": [ + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SetConnectionDetails", + "methodname_flat": "SteamAPI_ISteamGameSearch_SetConnectionDetails", + "params": [ + { "paramname":"pchConnectionDetails", "paramtype":"const char *" }, + { "paramname":"cubConnectionDetails", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "RequestPlayersForGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_RequestPlayersForGame", + "params": [ + { "paramname":"nPlayerMin", "paramtype":"int" }, + { "paramname":"nPlayerMax", "paramtype":"int" }, + { "paramname":"nMaxTeamSize", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "HostConfirmGameStart", + "methodname_flat": "SteamAPI_ISteamGameSearch_HostConfirmGameStart", + "params": [ + { "paramname":"ullUniqueGameID", "paramtype":"uint64" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "CancelRequestPlayersForGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SubmitPlayerResult", + "methodname_flat": "SteamAPI_ISteamGameSearch_SubmitPlayerResult", + "params": [ + { "paramname":"ullUniqueGameID", "paramtype":"uint64" }, + { "paramname":"steamIDPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"EPlayerResult", "paramtype":"EPlayerResult_t" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "EndGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_EndGame", + "params": [ + { "paramname":"ullUniqueGameID", "paramtype":"uint64" } + ], + "returntype": "EGameSearchErrorCode_t" + } + ], + "version_string": "SteamMatchGameSearch001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamParties", + "name_flat": "SteamAPI_SteamParties_v002" + } + ], + "classname": "ISteamParties", + "fields": [], + "methods": [ + { + "methodname": "GetNumActiveBeacons", + "methodname_flat": "SteamAPI_ISteamParties_GetNumActiveBeacons", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetBeaconByIndex", + "methodname_flat": "SteamAPI_ISteamParties_GetBeaconByIndex", + "params": [ + { "paramname":"unIndex", "paramtype":"uint32" } + ], + "returntype": "PartyBeaconID_t" + }, + { + "methodname": "GetBeaconDetails", + "methodname_flat": "SteamAPI_ISteamParties_GetBeaconDetails", + "params": [ + { "paramname":"ulBeaconID", "paramtype":"PartyBeaconID_t" }, + { "paramname":"pSteamIDBeaconOwner", "paramtype":"CSteamID *" }, + { + "out_struct": "", + "paramname": "pLocation", + "paramtype": "SteamPartyBeaconLocation_t *" + }, + { + "out_string_count": "cchMetadata", + "paramname": "pchMetadata", + "paramtype": "char *" + }, + { "paramname":"cchMetadata", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "callresult": "JoinPartyCallback_t", + "methodname": "JoinParty", + "methodname_flat": "SteamAPI_ISteamParties_JoinParty", + "params": [ + { "paramname":"ulBeaconID", "paramtype":"PartyBeaconID_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetNumAvailableBeaconLocations", + "methodname_flat": "SteamAPI_ISteamParties_GetNumAvailableBeaconLocations", + "params": [ + { "paramname":"puNumLocations", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAvailableBeaconLocations", + "methodname_flat": "SteamAPI_ISteamParties_GetAvailableBeaconLocations", + "params": [ + { "paramname":"pLocationList", "paramtype":"SteamPartyBeaconLocation_t *" }, + { "paramname":"uMaxNumLocations", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "callresult": "CreateBeaconCallback_t", + "methodname": "CreateBeacon", + "methodname_flat": "SteamAPI_ISteamParties_CreateBeacon", + "params": [ + { "paramname":"unOpenSlots", "paramtype":"uint32" }, + { "paramname":"pBeaconLocation", "paramtype":"SteamPartyBeaconLocation_t *" }, + { "paramname":"pchConnectString", "paramtype":"const char *" }, + { "paramname":"pchMetadata", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "OnReservationCompleted", + "methodname_flat": "SteamAPI_ISteamParties_OnReservationCompleted", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "CancelReservation", + "methodname_flat": "SteamAPI_ISteamParties_CancelReservation", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "callresult": "ChangeNumOpenSlotsCallback_t", + "methodname": "ChangeNumOpenSlots", + "methodname_flat": "SteamAPI_ISteamParties_ChangeNumOpenSlots", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, + { "paramname":"unOpenSlots", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "DestroyBeacon", + "methodname_flat": "SteamAPI_ISteamParties_DestroyBeacon", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetBeaconLocationData", + "methodname_flat": "SteamAPI_ISteamParties_GetBeaconLocationData", + "params": [ + { "paramname":"BeaconLocation", "paramtype":"SteamPartyBeaconLocation_t" }, + { "paramname":"eData", "paramtype":"ESteamPartyBeaconLocationData" }, + { + "out_string_count": "cchDataStringOut", + "paramname": "pchDataStringOut", + "paramtype": "char *" + }, + { "paramname":"cchDataStringOut", "paramtype":"int" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamParties002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamRemoteStorage", + "name_flat": "SteamAPI_SteamRemoteStorage_v016" + } + ], + "classname": "ISteamRemoteStorage", + "fields": [], + "methods": [ + { + "methodname": "FileWrite", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWrite", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pvData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "FileRead", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileRead", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubDataToRead", "paramtype":"int32" } + ], + "returntype": "int32" + }, + { + "callresult": "RemoteStorageFileWriteAsyncComplete_t", + "methodname": "FileWriteAsync", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteAsync", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pvData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageFileReadAsyncComplete_t", + "methodname": "FileReadAsync", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileReadAsync", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"nOffset", "paramtype":"uint32" }, + { "paramname":"cubToRead", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "FileReadAsyncComplete", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete", + "params": [ + { "paramname":"hReadCall", "paramtype":"SteamAPICall_t" }, + { "paramname":"pvBuffer", "paramtype":"void *" }, + { "paramname":"cubToRead", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "FileForget", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileForget", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "FileDelete", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileDelete", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "RemoteStorageFileShareResult_t", + "methodname": "FileShare", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileShare", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "SetSyncPlatforms", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"eRemoteStoragePlatform", "paramtype":"ERemoteStoragePlatform" } + ], + "returntype": "bool" + }, + { + "methodname": "FileWriteStreamOpen", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "UGCFileWriteStreamHandle_t" + }, + { + "methodname": "FileWriteStreamWriteChunk", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk", + "params": [ + { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" }, + { "paramname":"pvData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "FileWriteStreamClose", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose", + "params": [ + { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "FileWriteStreamCancel", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel", + "params": [ + { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "FileExists", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileExists", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "FilePersisted", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FilePersisted", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFileSize", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileSize", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "int32" + }, + { + "methodname": "GetFileTimestamp", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileTimestamp", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "int64" + }, + { + "methodname": "GetSyncPlatforms", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "ERemoteStoragePlatform" + }, + { + "methodname": "GetFileCount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileCount", + "params": [], + "returntype": "int32" + }, + { + "methodname": "GetFileNameAndSize", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize", + "params": [ + { "paramname":"iFile", "paramtype":"int" }, + { "paramname":"pnFileSizeInBytes", "paramtype":"int32 *" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetQuota", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetQuota", + "params": [ + { "paramname":"pnTotalBytes", "paramtype":"uint64 *" }, + { "paramname":"puAvailableBytes", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "IsCloudEnabledForAccount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount", + "params": [], + "returntype": "bool" + }, + { + "methodname": "IsCloudEnabledForApp", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetCloudEnabledForApp", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp", + "params": [ + { "paramname":"bEnabled", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "callresult": "RemoteStorageDownloadUGCResult_t", + "methodname": "UGCDownload", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCDownload", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"unPriority", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetUGCDownloadProgress", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pnBytesDownloaded", "paramtype":"int32 *" }, + { "paramname":"pnBytesExpected", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUGCDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUGCDetails", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pnAppID", "paramtype":"AppId_t *" }, + { + "out_string": "", + "paramname": "ppchName", + "paramtype": "char **" + }, + { "paramname":"pnFileSizeInBytes", "paramtype":"int32 *" }, + { + "out_struct": "", + "paramname": "pSteamIDOwner", + "paramtype": "CSteamID *" + } + ], + "returntype": "bool" + }, + { + "methodname": "UGCRead", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCRead", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubDataToRead", "paramtype":"int32" }, + { "paramname":"cOffset", "paramtype":"uint32" }, + { "paramname":"eAction", "paramtype":"EUGCReadAction" } + ], + "returntype": "int32" + }, + { + "methodname": "GetCachedUGCCount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount", + "params": [], + "returntype": "int32" + }, + { + "methodname": "GetCachedUGCHandle", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle", + "params": [ + { "paramname":"iCachedContent", "paramtype":"int32" } + ], + "returntype": "UGCHandle_t" + }, + { + "callresult": "RemoteStoragePublishFileProgress_t", + "methodname": "PublishWorkshopFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pchPreviewFile", "paramtype":"const char *" }, + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" }, + { "paramname":"eWorkshopFileType", "paramtype":"EWorkshopFileType" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "CreatePublishedFileUpdateRequest", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "PublishedFileUpdateHandle_t" + }, + { + "methodname": "UpdatePublishedFileFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFilePreviewFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchPreviewFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileTitle", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileDescription", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchDescription", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileVisibility", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileTags", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "bool" + }, + { + "callresult": "RemoteStorageUpdatePublishedFileResult_t", + "methodname": "CommitPublishedFileUpdate", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", + "methodname": "GetPublishedFileDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, + { "paramname":"unMaxSecondsOld", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageDeletePublishedFileResult_t", + "methodname": "DeletePublishedFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_DeletePublishedFile", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "methodname": "EnumerateUserPublishedFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles", + "params": [ + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "methodname": "SubscribePublishedFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", + "methodname": "EnumerateUserSubscribedFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles", + "params": [ + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "methodname": "UnsubscribePublishedFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "UpdatePublishedFileSetChangeDescription", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchChangeDescription", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "methodname": "GetPublishedItemVoteDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", + "methodname": "UpdateUserPublishedItemVote", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, + { "paramname":"bVoteUp", "paramtype":"bool" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "methodname": "GetUserPublishedItemVoteDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "methodname": "EnumerateUserSharedWorkshopFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles", + "params": [ + { "paramname":"steamId", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unStartIndex", "paramtype":"uint32" }, + { "paramname":"pRequiredTags", "paramtype":"SteamParamStringArray_t *" }, + { "paramname":"pExcludedTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStoragePublishFileProgress_t", + "methodname": "PublishVideo", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_PublishVideo", + "params": [ + { "paramname":"eVideoProvider", "paramtype":"EWorkshopVideoProvider" }, + { "paramname":"pchVideoAccount", "paramtype":"const char *" }, + { "paramname":"pchVideoIdentifier", "paramtype":"const char *" }, + { "paramname":"pchPreviewFile", "paramtype":"const char *" }, + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", + "methodname": "SetUserPublishedFileAction", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, + { "paramname":"eAction", "paramtype":"EWorkshopFileAction" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", + "methodname": "EnumeratePublishedFilesByUserAction", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction", + "params": [ + { "paramname":"eAction", "paramtype":"EWorkshopFileAction" }, + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", + "methodname": "EnumeratePublishedWorkshopFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles", + "params": [ + { "paramname":"eEnumerationType", "paramtype":"EWorkshopEnumerationType" }, + { "paramname":"unStartIndex", "paramtype":"uint32" }, + { "paramname":"unCount", "paramtype":"uint32" }, + { "paramname":"unDays", "paramtype":"uint32" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" }, + { "paramname":"pUserTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageDownloadUGCResult_t", + "methodname": "UGCDownloadToLocation", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pchLocation", "paramtype":"const char *" }, + { "paramname":"unPriority", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetLocalFileChangeCount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetLocalFileChangeCount", + "params": [], + "returntype": "int32" + }, + { + "methodname": "GetLocalFileChange", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetLocalFileChange", + "params": [ + { "paramname":"iFile", "paramtype":"int" }, + { "paramname":"pEChangeType", "paramtype":"ERemoteStorageLocalFileChange *" }, + { "paramname":"pEFilePathType", "paramtype":"ERemoteStorageFilePathType *" } + ], + "returntype": "const char *" + }, + { + "methodname": "BeginFileWriteBatch", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_BeginFileWriteBatch", + "params": [], + "returntype": "bool" + }, + { + "methodname": "EndFileWriteBatch", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EndFileWriteBatch", + "params": [], + "returntype": "bool" + } + ], + "version_string": "STEAMREMOTESTORAGE_INTERFACE_VERSION016" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUserStats", + "name_flat": "SteamAPI_SteamUserStats_v012" + } + ], + "classname": "ISteamUserStats", + "fields": [], + "methods": [ + { + "callback": "UserStatsReceived_t", + "methodname": "RequestCurrentStats", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestCurrentStats", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetStatInt32", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetStatFloat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_SetStatInt32", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_SetStatFloat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"fData", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateAvgRateStat", + "methodname_flat": "SteamAPI_ISteamUserStats_UpdateAvgRateStat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"flCountThisSession", "paramtype":"float" }, + { "paramname":"dSessionLength", "paramtype":"double" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievement", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_SetAchievement", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ClearAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_ClearAchievement", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAchievementAndUnlockTime", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" }, + { "paramname":"punUnlockTime", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "StoreStats", + "methodname_flat": "SteamAPI_ISteamUserStats_StoreStats", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetAchievementIcon", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementIcon", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "int" + }, + { + "methodname": "GetAchievementDisplayAttribute", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "IndicateAchievementProgress", + "methodname_flat": "SteamAPI_ISteamUserStats_IndicateAchievementProgress", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nCurProgress", "paramtype":"uint32" }, + { "paramname":"nMaxProgress", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNumAchievements", + "methodname_flat": "SteamAPI_ISteamUserStats_GetNumAchievements", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetAchievementName", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementName", + "params": [ + { "paramname":"iAchievement", "paramtype":"uint32" } + ], + "returntype": "const char *" + }, + { + "callresult": "UserStatsReceived_t", + "methodname": "RequestUserStats", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestUserStats", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserStatInt32", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserStatFloat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserAchievementAndUnlockTime", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" }, + { "paramname":"punUnlockTime", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "ResetAllStats", + "methodname_flat": "SteamAPI_ISteamUserStats_ResetAllStats", + "params": [ + { "paramname":"bAchievementsToo", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "callresult": "LeaderboardFindResult_t", + "methodname": "FindOrCreateLeaderboard", + "methodname_flat": "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard", + "params": [ + { "paramname":"pchLeaderboardName", "paramtype":"const char *" }, + { "paramname":"eLeaderboardSortMethod", "paramtype":"ELeaderboardSortMethod" }, + { "paramname":"eLeaderboardDisplayType", "paramtype":"ELeaderboardDisplayType" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LeaderboardFindResult_t", + "methodname": "FindLeaderboard", + "methodname_flat": "SteamAPI_ISteamUserStats_FindLeaderboard", + "params": [ + { "paramname":"pchLeaderboardName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetLeaderboardName", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardName", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetLeaderboardEntryCount", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetLeaderboardSortMethod", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "ELeaderboardSortMethod" + }, + { + "methodname": "GetLeaderboardDisplayType", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "ELeaderboardDisplayType" + }, + { + "callresult": "LeaderboardScoresDownloaded_t", + "methodname": "DownloadLeaderboardEntries", + "methodname_flat": "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { "paramname":"eLeaderboardDataRequest", "paramtype":"ELeaderboardDataRequest" }, + { "paramname":"nRangeStart", "paramtype":"int" }, + { "paramname":"nRangeEnd", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LeaderboardScoresDownloaded_t", + "methodname": "DownloadLeaderboardEntriesForUsers", + "methodname_flat": "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { + "array_count": "cUsers", + "desc": "Array of users to retrieve", + "paramname": "prgUsers", + "paramtype": "CSteamID *" + }, + { "paramname":"cUsers", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetDownloadedLeaderboardEntry", + "methodname_flat": "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry", + "params": [ + { "paramname":"hSteamLeaderboardEntries", "paramtype":"SteamLeaderboardEntries_t" }, + { "paramname":"index", "paramtype":"int" }, + { "paramname":"pLeaderboardEntry", "paramtype":"LeaderboardEntry_t *" }, + { "paramname":"pDetails", "paramtype":"int32 *" }, + { "paramname":"cDetailsMax", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "callresult": "LeaderboardScoreUploaded_t", + "methodname": "UploadLeaderboardScore", + "methodname_flat": "SteamAPI_ISteamUserStats_UploadLeaderboardScore", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { "paramname":"eLeaderboardUploadScoreMethod", "paramtype":"ELeaderboardUploadScoreMethod" }, + { "paramname":"nScore", "paramtype":"int32" }, + { "paramname":"pScoreDetails", "paramtype":"const int32 *" }, + { "paramname":"cScoreDetailsCount", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LeaderboardUGCSet_t", + "methodname": "AttachLeaderboardUGC", + "methodname_flat": "SteamAPI_ISteamUserStats_AttachLeaderboardUGC", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { "paramname":"hUGC", "paramtype":"UGCHandle_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "NumberOfCurrentPlayers_t", + "methodname": "GetNumberOfCurrentPlayers", + "methodname_flat": "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "GlobalAchievementPercentagesReady_t", + "methodname": "RequestGlobalAchievementPercentages", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetMostAchievedAchievementInfo", + "methodname_flat": "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo", + "params": [ + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"unNameBufLen", "paramtype":"uint32" }, + { "paramname":"pflPercent", "paramtype":"float *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "int" + }, + { + "methodname": "GetNextMostAchievedAchievementInfo", + "methodname_flat": "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo", + "params": [ + { "paramname":"iIteratorPrevious", "paramtype":"int" }, + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"unNameBufLen", "paramtype":"uint32" }, + { "paramname":"pflPercent", "paramtype":"float *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "int" + }, + { + "methodname": "GetAchievementAchievedPercent", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pflPercent", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "callresult": "GlobalStatsReceived_t", + "methodname": "RequestGlobalStats", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestGlobalStats", + "params": [ + { "paramname":"nHistoryDays", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetGlobalStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatInt64", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGlobalStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatDouble", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"double *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGlobalStatHistory", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { + "array_count": "cubData", + "paramname": "pData", + "paramtype": "int64 *" + }, + { "paramname":"cubData", "paramtype":"uint32" } + ], + "returntype": "int32" + }, + { + "methodname": "GetGlobalStatHistory", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { + "array_count": "cubData", + "paramname": "pData", + "paramtype": "double *" + }, + { "paramname":"cubData", "paramtype":"uint32" } + ], + "returntype": "int32" + }, + { + "methodname": "GetAchievementProgressLimits", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pnMinProgress", "paramtype":"int32 *" }, + { "paramname":"pnMaxProgress", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAchievementProgressLimits", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pfMinProgress", "paramtype":"float *" }, + { "paramname":"pfMaxProgress", "paramtype":"float *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMUSERSTATS_INTERFACE_VERSION012" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamApps", + "name_flat": "SteamAPI_SteamApps_v008" + } + ], + "classname": "ISteamApps", + "fields": [], + "methods": [ + { + "methodname": "BIsSubscribed", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribed", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsLowViolence", + "methodname_flat": "SteamAPI_ISteamApps_BIsLowViolence", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsCybercafe", + "methodname_flat": "SteamAPI_ISteamApps_BIsCybercafe", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsVACBanned", + "methodname_flat": "SteamAPI_ISteamApps_BIsVACBanned", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetCurrentGameLanguage", + "methodname_flat": "SteamAPI_ISteamApps_GetCurrentGameLanguage", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "GetAvailableGameLanguages", + "methodname_flat": "SteamAPI_ISteamApps_GetAvailableGameLanguages", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "BIsSubscribedApp", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedApp", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsDlcInstalled", + "methodname_flat": "SteamAPI_ISteamApps_BIsDlcInstalled", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetEarliestPurchaseUnixTime", + "methodname_flat": "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "uint32" + }, + { + "methodname": "BIsSubscribedFromFreeWeekend", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetDLCCount", + "methodname_flat": "SteamAPI_ISteamApps_GetDLCCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "BGetDLCDataByIndex", + "methodname_flat": "SteamAPI_ISteamApps_BGetDLCDataByIndex", + "params": [ + { "paramname":"iDLC", "paramtype":"int" }, + { "paramname":"pAppID", "paramtype":"AppId_t *" }, + { "paramname":"pbAvailable", "paramtype":"bool *" }, + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"cchNameBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "InstallDLC", + "methodname_flat": "SteamAPI_ISteamApps_InstallDLC", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "UninstallDLC", + "methodname_flat": "SteamAPI_ISteamApps_UninstallDLC", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "RequestAppProofOfPurchaseKey", + "methodname_flat": "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetCurrentBetaName", + "methodname_flat": "SteamAPI_ISteamApps_GetCurrentBetaName", + "params": [ + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"cchNameBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "MarkContentCorrupt", + "methodname_flat": "SteamAPI_ISteamApps_MarkContentCorrupt", + "params": [ + { "paramname":"bMissingFilesOnly", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "GetInstalledDepots", + "methodname_flat": "SteamAPI_ISteamApps_GetInstalledDepots", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" }, + { "paramname":"pvecDepots", "paramtype":"DepotId_t *" }, + { "paramname":"cMaxDepots", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetAppInstallDir", + "methodname_flat": "SteamAPI_ISteamApps_GetAppInstallDir", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" }, + { "paramname":"pchFolder", "paramtype":"char *" }, + { "paramname":"cchFolderBufferSize", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "BIsAppInstalled", + "methodname_flat": "SteamAPI_ISteamApps_BIsAppInstalled", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAppOwner", + "methodname_flat": "SteamAPI_ISteamApps_GetAppOwner", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetLaunchQueryParam", + "methodname_flat": "SteamAPI_ISteamApps_GetLaunchQueryParam", + "params": [ + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetDlcDownloadProgress", + "methodname_flat": "SteamAPI_ISteamApps_GetDlcDownloadProgress", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"punBytesDownloaded", "paramtype":"uint64 *" }, + { "paramname":"punBytesTotal", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAppBuildId", + "methodname_flat": "SteamAPI_ISteamApps_GetAppBuildId", + "params": [], + "returntype": "int" + }, + { + "methodname": "RequestAllProofOfPurchaseKeys", + "methodname_flat": "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys", + "params": [], + "returntype": "void" + }, + { + "callresult": "FileDetailsResult_t", + "methodname": "GetFileDetails", + "methodname_flat": "SteamAPI_ISteamApps_GetFileDetails", + "params": [ + { "paramname":"pszFileName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetLaunchCommandLine", + "methodname_flat": "SteamAPI_ISteamApps_GetLaunchCommandLine", + "params": [ + { "paramname":"pszCommandLine", "paramtype":"char *" }, + { "paramname":"cubCommandLine", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "BIsSubscribedFromFamilySharing", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsTimedTrial", + "methodname_flat": "SteamAPI_ISteamApps_BIsTimedTrial", + "params": [ + { "paramname":"punSecondsAllowed", "paramtype":"uint32 *" }, + { "paramname":"punSecondsPlayed", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetDlcContext", + "methodname_flat": "SteamAPI_ISteamApps_SetDlcContext", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMAPPS_INTERFACE_VERSION008" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamNetworking", + "name_flat": "SteamAPI_SteamNetworking_v006" + }, + { + "kind": "gameserver", + "name": "SteamGameServerNetworking", + "name_flat": "SteamAPI_SteamGameServerNetworking_v006" + } + ], + "classname": "ISteamNetworking", + "fields": [], + "methods": [ + { + "methodname": "SendP2PPacket", + "methodname_flat": "SteamAPI_ISteamNetworking_SendP2PPacket", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pubData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"uint32" }, + { "paramname":"eP2PSendType", "paramtype":"EP2PSend" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "IsP2PPacketAvailable", + "methodname_flat": "SteamAPI_ISteamNetworking_IsP2PPacketAvailable", + "params": [ + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "ReadP2PPacket", + "methodname_flat": "SteamAPI_ISteamNetworking_ReadP2PPacket", + "params": [ + { "paramname":"pubDest", "paramtype":"void *" }, + { "paramname":"cubDest", "paramtype":"uint32" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"psteamIDRemote", "paramtype":"CSteamID *" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "AcceptP2PSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseP2PSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseP2PChannelWithUser", + "methodname_flat": "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetP2PSessionState", + "methodname_flat": "SteamAPI_ISteamNetworking_GetP2PSessionState", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pConnectionState", "paramtype":"P2PSessionState_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "AllowP2PPacketRelay", + "methodname_flat": "SteamAPI_ISteamNetworking_AllowP2PPacketRelay", + "params": [ + { "paramname":"bAllow", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_CreateListenSocket", + "params": [ + { "paramname":"nVirtualP2PPort", "paramtype":"int" }, + { "paramname":"nIP", "paramtype":"SteamIPAddress_t" }, + { "paramname":"nPort", "paramtype":"uint16" }, + { "paramname":"bAllowUseOfPacketRelay", "paramtype":"bool" } + ], + "returntype": "SNetListenSocket_t" + }, + { + "methodname": "CreateP2PConnectionSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket", + "params": [ + { "paramname":"steamIDTarget", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"nVirtualPort", "paramtype":"int" }, + { "paramname":"nTimeoutSec", "paramtype":"int" }, + { "paramname":"bAllowUseOfPacketRelay", "paramtype":"bool" } + ], + "returntype": "SNetSocket_t" + }, + { + "methodname": "CreateConnectionSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_CreateConnectionSocket", + "params": [ + { "paramname":"nIP", "paramtype":"SteamIPAddress_t" }, + { "paramname":"nPort", "paramtype":"uint16" }, + { "paramname":"nTimeoutSec", "paramtype":"int" } + ], + "returntype": "SNetSocket_t" + }, + { + "methodname": "DestroySocket", + "methodname_flat": "SteamAPI_ISteamNetworking_DestroySocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"bNotifyRemoteEnd", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "DestroyListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_DestroyListenSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"bNotifyRemoteEnd", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SendDataOnSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_SendDataOnSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pubData", "paramtype":"void *" }, + { "paramname":"cubData", "paramtype":"uint32" }, + { "paramname":"bReliable", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "IsDataAvailableOnSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "RetrieveDataFromSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_RetrieveDataFromSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pubDest", "paramtype":"void *" }, + { "paramname":"cubDest", "paramtype":"uint32" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "IsDataAvailable", + "methodname_flat": "SteamAPI_ISteamNetworking_IsDataAvailable", + "params": [ + { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"phSocket", "paramtype":"SNetSocket_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "RetrieveData", + "methodname_flat": "SteamAPI_ISteamNetworking_RetrieveData", + "params": [ + { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"pubDest", "paramtype":"void *" }, + { "paramname":"cubDest", "paramtype":"uint32" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"phSocket", "paramtype":"SNetSocket_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSocketInfo", + "methodname_flat": "SteamAPI_ISteamNetworking_GetSocketInfo", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pSteamIDRemote", "paramtype":"CSteamID *" }, + { "paramname":"peSocketStatus", "paramtype":"int *" }, + { "paramname":"punIPRemote", "paramtype":"SteamIPAddress_t *" }, + { "paramname":"punPortRemote", "paramtype":"uint16 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetListenSocketInfo", + "methodname_flat": "SteamAPI_ISteamNetworking_GetListenSocketInfo", + "params": [ + { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"pnIP", "paramtype":"SteamIPAddress_t *" }, + { "paramname":"pnPort", "paramtype":"uint16 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSocketConnectionType", + "methodname_flat": "SteamAPI_ISteamNetworking_GetSocketConnectionType", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" } + ], + "returntype": "ESNetSocketConnectionType" + }, + { + "methodname": "GetMaxPacketSize", + "methodname_flat": "SteamAPI_ISteamNetworking_GetMaxPacketSize", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" } + ], + "returntype": "int" + } + ], + "version_string": "SteamNetworking006" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamScreenshots", + "name_flat": "SteamAPI_SteamScreenshots_v003" + } + ], + "classname": "ISteamScreenshots", + "fields": [], + "methods": [ + { + "methodname": "WriteScreenshot", + "methodname_flat": "SteamAPI_ISteamScreenshots_WriteScreenshot", + "params": [ + { "paramname":"pubRGB", "paramtype":"void *" }, + { "paramname":"cubRGB", "paramtype":"uint32" }, + { "paramname":"nWidth", "paramtype":"int" }, + { "paramname":"nHeight", "paramtype":"int" } + ], + "returntype": "ScreenshotHandle" + }, + { + "methodname": "AddScreenshotToLibrary", + "methodname_flat": "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary", + "params": [ + { "paramname":"pchFilename", "paramtype":"const char *" }, + { "paramname":"pchThumbnailFilename", "paramtype":"const char *" }, + { "paramname":"nWidth", "paramtype":"int" }, + { "paramname":"nHeight", "paramtype":"int" } + ], + "returntype": "ScreenshotHandle" + }, + { + "methodname": "TriggerScreenshot", + "methodname_flat": "SteamAPI_ISteamScreenshots_TriggerScreenshot", + "params": [], + "returntype": "void" + }, + { + "methodname": "HookScreenshots", + "methodname_flat": "SteamAPI_ISteamScreenshots_HookScreenshots", + "params": [ + { "paramname":"bHook", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetLocation", + "methodname_flat": "SteamAPI_ISteamScreenshots_SetLocation", + "params": [ + { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, + { "paramname":"pchLocation", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "TagUser", + "methodname_flat": "SteamAPI_ISteamScreenshots_TagUser", + "params": [ + { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "TagPublishedFile", + "methodname_flat": "SteamAPI_ISteamScreenshots_TagPublishedFile", + "params": [ + { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, + { "paramname":"unPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "IsScreenshotsHooked", + "methodname_flat": "SteamAPI_ISteamScreenshots_IsScreenshotsHooked", + "params": [], + "returntype": "bool" + }, + { + "methodname": "AddVRScreenshotToLibrary", + "methodname_flat": "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary", + "params": [ + { "paramname":"eType", "paramtype":"EVRScreenshotType" }, + { "paramname":"pchFilename", "paramtype":"const char *" }, + { "paramname":"pchVRFilename", "paramtype":"const char *" } + ], + "returntype": "ScreenshotHandle" + } + ], + "version_string": "STEAMSCREENSHOTS_INTERFACE_VERSION003" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMusic", + "name_flat": "SteamAPI_SteamMusic_v001" + } + ], + "classname": "ISteamMusic", + "fields": [], + "methods": [ + { + "methodname": "BIsEnabled", + "methodname_flat": "SteamAPI_ISteamMusic_BIsEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsPlaying", + "methodname_flat": "SteamAPI_ISteamMusic_BIsPlaying", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetPlaybackStatus", + "methodname_flat": "SteamAPI_ISteamMusic_GetPlaybackStatus", + "params": [], + "returntype": "AudioPlayback_Status" + }, + { + "methodname": "Play", + "methodname_flat": "SteamAPI_ISteamMusic_Play", + "params": [], + "returntype": "void" + }, + { + "methodname": "Pause", + "methodname_flat": "SteamAPI_ISteamMusic_Pause", + "params": [], + "returntype": "void" + }, + { + "methodname": "PlayPrevious", + "methodname_flat": "SteamAPI_ISteamMusic_PlayPrevious", + "params": [], + "returntype": "void" + }, + { + "methodname": "PlayNext", + "methodname_flat": "SteamAPI_ISteamMusic_PlayNext", + "params": [], + "returntype": "void" + }, + { + "methodname": "SetVolume", + "methodname_flat": "SteamAPI_ISteamMusic_SetVolume", + "params": [ + { "paramname":"flVolume", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "GetVolume", + "methodname_flat": "SteamAPI_ISteamMusic_GetVolume", + "params": [], + "returntype": "float" + } + ], + "version_string": "STEAMMUSIC_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMusicRemote", + "name_flat": "SteamAPI_SteamMusicRemote_v001" + } + ], + "classname": "ISteamMusicRemote", + "fields": [], + "methods": [ + { + "methodname": "RegisterSteamMusicRemote", + "methodname_flat": "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "DeregisterSteamMusicRemote", + "methodname_flat": "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsCurrentMusicRemote", + "methodname_flat": "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BActivationSuccess", + "methodname_flat": "SteamAPI_ISteamMusicRemote_BActivationSuccess", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetDisplayName", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetDisplayName", + "params": [ + { "paramname":"pchDisplayName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetPNGIcon_64x64", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64", + "params": [ + { "paramname":"pvBuffer", "paramtype":"void *" }, + { "paramname":"cbBufferLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "EnablePlayPrevious", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlayPrevious", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnablePlayNext", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlayNext", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnableShuffled", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableShuffled", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnableLooped", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableLooped", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnableQueue", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableQueue", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnablePlaylists", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlaylists", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePlaybackStatus", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus", + "params": [ + { "paramname":"nStatus", "paramtype":"AudioPlayback_Status" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateShuffled", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateShuffled", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateLooped", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateLooped", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateVolume", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateVolume", + "params": [ + { "paramname":"flValue", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "CurrentEntryWillChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "CurrentEntryIsAvailable", + "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable", + "params": [ + { "paramname":"bAvailable", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateCurrentEntryText", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText", + "params": [ + { "paramname":"pchText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateCurrentEntryElapsedSeconds", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds", + "params": [ + { "paramname":"nValue", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateCurrentEntryCoverArt", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt", + "params": [ + { "paramname":"pvBuffer", "paramtype":"void *" }, + { "paramname":"cbBufferLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "CurrentEntryDidChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "QueueWillChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_QueueWillChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ResetQueueEntries", + "methodname_flat": "SteamAPI_ISteamMusicRemote_ResetQueueEntries", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetQueueEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetQueueEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" }, + { "paramname":"nPosition", "paramtype":"int" }, + { "paramname":"pchEntryText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCurrentQueueEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "QueueDidChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_QueueDidChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "PlaylistWillChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_PlaylistWillChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ResetPlaylistEntries", + "methodname_flat": "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetPlaylistEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetPlaylistEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" }, + { "paramname":"nPosition", "paramtype":"int" }, + { "paramname":"pchEntryText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCurrentPlaylistEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "PlaylistDidChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_PlaylistDidChange", + "params": [], + "returntype": "bool" + } + ], + "version_string": "STEAMMUSICREMOTE_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamHTTP", + "name_flat": "SteamAPI_SteamHTTP_v003" + }, + { + "kind": "gameserver", + "name": "SteamGameServerHTTP", + "name_flat": "SteamAPI_SteamGameServerHTTP_v003" + } + ], + "classname": "ISteamHTTP", + "fields": [], + "methods": [ + { + "methodname": "CreateHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_CreateHTTPRequest", + "params": [ + { "paramname":"eHTTPRequestMethod", "paramtype":"EHTTPMethod" }, + { "paramname":"pchAbsoluteURL", "paramtype":"const char *" } + ], + "returntype": "HTTPRequestHandle" + }, + { + "methodname": "SetHTTPRequestContextValue", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"ulContextValue", "paramtype":"uint64" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestNetworkActivityTimeout", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"unTimeoutSeconds", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestHeaderValue", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchHeaderName", "paramtype":"const char *" }, + { "paramname":"pchHeaderValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestGetOrPostParameter", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchParamName", "paramtype":"const char *" }, + { "paramname":"pchParamValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SendHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_SendHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pCallHandle", "paramtype":"SteamAPICall_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "SendHTTPRequestAndStreamResponse", + "methodname_flat": "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pCallHandle", "paramtype":"SteamAPICall_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "DeferHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_DeferHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "PrioritizeHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseHeaderSize", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchHeaderName", "paramtype":"const char *" }, + { "paramname":"unResponseHeaderSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseHeaderValue", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchHeaderName", "paramtype":"const char *" }, + { "paramname":"pHeaderValueBuffer", "paramtype":"uint8 *" }, + { "paramname":"unBufferSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseBodySize", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"unBodySize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseBodyData", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pBodyDataBuffer", "paramtype":"uint8 *" }, + { "paramname":"unBufferSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPStreamingResponseBodyData", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"cOffset", "paramtype":"uint32" }, + { "paramname":"pBodyDataBuffer", "paramtype":"uint8 *" }, + { "paramname":"unBufferSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "ReleaseHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_ReleaseHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPDownloadProgressPct", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pflPercentOut", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestRawPostBody", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchContentType", "paramtype":"const char *" }, + { "paramname":"pubBody", "paramtype":"uint8 *" }, + { "paramname":"unBodyLen", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateCookieContainer", + "methodname_flat": "SteamAPI_ISteamHTTP_CreateCookieContainer", + "params": [ + { "paramname":"bAllowResponsesToModify", "paramtype":"bool" } + ], + "returntype": "HTTPCookieContainerHandle" + }, + { + "methodname": "ReleaseCookieContainer", + "methodname_flat": "SteamAPI_ISteamHTTP_ReleaseCookieContainer", + "params": [ + { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCookie", + "methodname_flat": "SteamAPI_ISteamHTTP_SetCookie", + "params": [ + { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" }, + { "paramname":"pchHost", "paramtype":"const char *" }, + { "paramname":"pchUrl", "paramtype":"const char *" }, + { "paramname":"pchCookie", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestCookieContainer", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestUserAgentInfo", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchUserAgentInfo", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestRequiresVerifiedCertificate", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"bRequireVerifiedCertificate", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestAbsoluteTimeoutMS", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"unMilliseconds", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPRequestWasTimedOut", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pbWasTimedOut", "paramtype":"bool *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMHTTP_INTERFACE_VERSION003" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamInput", + "name_flat": "SteamAPI_SteamInput_v006" + } + ], + "classname": "ISteamInput", + "fields": [], + "methods": [ + { + "methodname": "Init", + "methodname_flat": "SteamAPI_ISteamInput_Init", + "params": [ + { "paramname":"bExplicitlyCallRunFrame", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "Shutdown", + "methodname_flat": "SteamAPI_ISteamInput_Shutdown", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetInputActionManifestFilePath", + "methodname_flat": "SteamAPI_ISteamInput_SetInputActionManifestFilePath", + "params": [ + { "paramname":"pchInputActionManifestAbsolutePath", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "RunFrame", + "methodname_flat": "SteamAPI_ISteamInput_RunFrame", + "params": [ + { "paramname":"bReservedValue", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "BWaitForData", + "methodname_flat": "SteamAPI_ISteamInput_BWaitForData", + "params": [ + { "paramname":"bWaitForever", "paramtype":"bool" }, + { "paramname":"unTimeout", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "BNewDataAvailable", + "methodname_flat": "SteamAPI_ISteamInput_BNewDataAvailable", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetConnectedControllers", + "methodname_flat": "SteamAPI_ISteamInput_GetConnectedControllers", + "params": [ + { + "desc": "Receives list of connected controllers", + "out_array_count": "STEAM_INPUT_MAX_COUNT", + "paramname": "handlesOut", + "paramtype": "InputHandle_t *" + } + ], + "returntype": "int" + }, + { + "callback": "SteamInputConfigurationLoaded_t", + "methodname": "EnableDeviceCallbacks", + "methodname_flat": "SteamAPI_ISteamInput_EnableDeviceCallbacks", + "params": [], + "returntype": "void" + }, + { + "callback": "SteamInputDeviceDisconnected_t", + "methodname": "EnableActionEventCallbacks", + "methodname_flat": "SteamAPI_ISteamInput_EnableActionEventCallbacks", + "params": [ + { "paramname":"pCallback", "paramtype":"SteamInputActionEventCallbackPointer" } + ], + "returntype": "void" + }, + { + "methodname": "GetActionSetHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetActionSetHandle", + "params": [ + { "paramname":"pszActionSetName", "paramtype":"const char *" } + ], + "returntype": "InputActionSetHandle_t" + }, + { + "methodname": "ActivateActionSet", + "methodname_flat": "SteamAPI_ISteamInput_ActivateActionSet", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetCurrentActionSet", + "methodname_flat": "SteamAPI_ISteamInput_GetCurrentActionSet", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "InputActionSetHandle_t" + }, + { + "methodname": "ActivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamInput_ActivateActionSetLayer", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"InputActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamInput_DeactivateActionSetLayer", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"InputActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateAllActionSetLayers", + "methodname_flat": "SteamAPI_ISteamInput_DeactivateAllActionSetLayers", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetActiveActionSetLayers", + "methodname_flat": "SteamAPI_ISteamInput_GetActiveActionSetLayers", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { + "desc": "Receives list of active layers", + "out_array_count": "STEAM_INPUT_MAX_ACTIVE_LAYERS", + "paramname": "handlesOut", + "paramtype": "InputActionSetHandle_t *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetDigitalActionHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "InputDigitalActionHandle_t" + }, + { + "methodname": "GetDigitalActionData", + "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionData", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"InputDigitalActionHandle_t" } + ], + "returntype": "InputDigitalActionData_t" + }, + { + "methodname": "GetDigitalActionOrigins", + "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionOrigins", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"InputDigitalActionHandle_t" }, + { + "desc": "Receives list of action origins", + "out_array_count": "STEAM_INPUT_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EInputActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetStringForDigitalActionName", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForDigitalActionName", + "params": [ + { "paramname":"eActionHandle", "paramtype":"InputDigitalActionHandle_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetAnalogActionHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "InputAnalogActionHandle_t" + }, + { + "methodname": "GetAnalogActionData", + "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionData", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"InputAnalogActionHandle_t" } + ], + "returntype": "InputAnalogActionData_t" + }, + { + "methodname": "GetAnalogActionOrigins", + "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionOrigins", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"InputAnalogActionHandle_t" }, + { + "desc": "Receives list of action origins", + "out_array_count": "STEAM_INPUT_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EInputActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetGlyphPNGForActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphPNGForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" }, + { "paramname":"eSize", "paramtype":"ESteamInputGlyphSize" }, + { "paramname":"unFlags", "paramtype":"uint32" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphSVGForActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphSVGForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" }, + { "paramname":"unFlags", "paramtype":"uint32" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphForActionOrigin_Legacy", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForActionOrigin_Legacy", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetStringForActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetStringForAnalogActionName", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForAnalogActionName", + "params": [ + { "paramname":"eActionHandle", "paramtype":"InputAnalogActionHandle_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "StopAnalogActionMomentum", + "methodname_flat": "SteamAPI_ISteamInput_StopAnalogActionMomentum", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eAction", "paramtype":"InputAnalogActionHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetMotionData", + "methodname_flat": "SteamAPI_ISteamInput_GetMotionData", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "InputMotionData_t" + }, + { + "methodname": "TriggerVibration", + "methodname_flat": "SteamAPI_ISteamInput_TriggerVibration", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightSpeed", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerVibrationExtended", + "methodname_flat": "SteamAPI_ISteamInput_TriggerVibrationExtended", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightSpeed", "paramtype":"unsigned short" }, + { "paramname":"usLeftTriggerSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightTriggerSpeed", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerSimpleHapticEvent", + "methodname_flat": "SteamAPI_ISteamInput_TriggerSimpleHapticEvent", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eHapticLocation", "paramtype":"EControllerHapticLocation" }, + { "paramname":"nIntensity", "paramtype":"uint8" }, + { "paramname":"nGainDB", "paramtype":"char" }, + { "paramname":"nOtherIntensity", "paramtype":"uint8" }, + { "paramname":"nOtherGainDB", "paramtype":"char" } + ], + "returntype": "void" + }, + { + "methodname": "SetLEDColor", + "methodname_flat": "SteamAPI_ISteamInput_SetLEDColor", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"nColorR", "paramtype":"uint8" }, + { "paramname":"nColorG", "paramtype":"uint8" }, + { "paramname":"nColorB", "paramtype":"uint8" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "Legacy_TriggerHapticPulse", + "methodname_flat": "SteamAPI_ISteamInput_Legacy_TriggerHapticPulse", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "Legacy_TriggerRepeatedHapticPulse", + "methodname_flat": "SteamAPI_ISteamInput_Legacy_TriggerRepeatedHapticPulse", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" }, + { "paramname":"usOffMicroSec", "paramtype":"unsigned short" }, + { "paramname":"unRepeat", "paramtype":"unsigned short" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "ShowBindingPanel", + "methodname_flat": "SteamAPI_ISteamInput_ShowBindingPanel", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetInputTypeForHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetInputTypeForHandle", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "ESteamInputType" + }, + { + "methodname": "GetControllerForGamepadIndex", + "methodname_flat": "SteamAPI_ISteamInput_GetControllerForGamepadIndex", + "params": [ + { "paramname":"nIndex", "paramtype":"int" } + ], + "returntype": "InputHandle_t" + }, + { + "methodname": "GetGamepadIndexForController", + "methodname_flat": "SteamAPI_ISteamInput_GetGamepadIndexForController", + "params": [ + { "paramname":"ulinputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetStringForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetActionOriginFromXboxOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "EInputActionOrigin" + }, + { + "methodname": "TranslateActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_TranslateActionOrigin", + "params": [ + { "paramname":"eDestinationInputType", "paramtype":"ESteamInputType" }, + { "paramname":"eSourceOrigin", "paramtype":"EInputActionOrigin" } + ], + "returntype": "EInputActionOrigin" + }, + { + "methodname": "GetDeviceBindingRevision", + "methodname_flat": "SteamAPI_ISteamInput_GetDeviceBindingRevision", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"pMajor", "paramtype":"int *" }, + { "paramname":"pMinor", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetRemotePlaySessionID", + "methodname_flat": "SteamAPI_ISteamInput_GetRemotePlaySessionID", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetSessionInputConfigurationSettings", + "methodname_flat": "SteamAPI_ISteamInput_GetSessionInputConfigurationSettings", + "params": [], + "returntype": "uint16" + }, + { + "methodname": "SetDualSenseTriggerEffect", + "methodname_flat": "SteamAPI_ISteamInput_SetDualSenseTriggerEffect", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"pParam", "paramtype":"const ScePadTriggerEffectParam *" } + ], + "returntype": "void" + } + ], + "version_string": "SteamInput006" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamController", + "name_flat": "SteamAPI_SteamController_v008" + } + ], + "classname": "ISteamController", + "fields": [], + "methods": [ + { + "methodname": "Init", + "methodname_flat": "SteamAPI_ISteamController_Init", + "params": [], + "returntype": "bool" + }, + { + "methodname": "Shutdown", + "methodname_flat": "SteamAPI_ISteamController_Shutdown", + "params": [], + "returntype": "bool" + }, + { + "methodname": "RunFrame", + "methodname_flat": "SteamAPI_ISteamController_RunFrame", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetConnectedControllers", + "methodname_flat": "SteamAPI_ISteamController_GetConnectedControllers", + "params": [ + { + "desc": "Receives list of connected controllers", + "out_array_count": "STEAM_CONTROLLER_MAX_COUNT", + "paramname": "handlesOut", + "paramtype": "ControllerHandle_t *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetActionSetHandle", + "methodname_flat": "SteamAPI_ISteamController_GetActionSetHandle", + "params": [ + { "paramname":"pszActionSetName", "paramtype":"const char *" } + ], + "returntype": "ControllerActionSetHandle_t" + }, + { + "methodname": "ActivateActionSet", + "methodname_flat": "SteamAPI_ISteamController_ActivateActionSet", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetCurrentActionSet", + "methodname_flat": "SteamAPI_ISteamController_GetCurrentActionSet", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "ControllerActionSetHandle_t" + }, + { + "methodname": "ActivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamController_ActivateActionSetLayer", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"ControllerActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamController_DeactivateActionSetLayer", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"ControllerActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateAllActionSetLayers", + "methodname_flat": "SteamAPI_ISteamController_DeactivateAllActionSetLayers", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetActiveActionSetLayers", + "methodname_flat": "SteamAPI_ISteamController_GetActiveActionSetLayers", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { + "desc": "Receives list of active layers", + "out_array_count": "STEAM_CONTROLLER_MAX_ACTIVE_LAYERS", + "paramname": "handlesOut", + "paramtype": "ControllerActionSetHandle_t *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetDigitalActionHandle", + "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "ControllerDigitalActionHandle_t" + }, + { + "methodname": "GetDigitalActionData", + "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionData", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"ControllerDigitalActionHandle_t" } + ], + "returntype": "InputDigitalActionData_t" + }, + { + "methodname": "GetDigitalActionOrigins", + "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionOrigins", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"ControllerDigitalActionHandle_t" }, + { + "desc": "Receives list of aciton origins", + "out_array_count": "STEAM_CONTROLLER_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EControllerActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetAnalogActionHandle", + "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "ControllerAnalogActionHandle_t" + }, + { + "methodname": "GetAnalogActionData", + "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionData", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"ControllerAnalogActionHandle_t" } + ], + "returntype": "InputAnalogActionData_t" + }, + { + "methodname": "GetAnalogActionOrigins", + "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionOrigins", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"ControllerAnalogActionHandle_t" }, + { + "desc": "Receives list of action origins", + "out_array_count": "STEAM_CONTROLLER_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EControllerActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetGlyphForActionOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetGlyphForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EControllerActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetStringForActionOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetStringForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EControllerActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "StopAnalogActionMomentum", + "methodname_flat": "SteamAPI_ISteamController_StopAnalogActionMomentum", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eAction", "paramtype":"ControllerAnalogActionHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetMotionData", + "methodname_flat": "SteamAPI_ISteamController_GetMotionData", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "InputMotionData_t" + }, + { + "methodname": "TriggerHapticPulse", + "methodname_flat": "SteamAPI_ISteamController_TriggerHapticPulse", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerRepeatedHapticPulse", + "methodname_flat": "SteamAPI_ISteamController_TriggerRepeatedHapticPulse", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" }, + { "paramname":"usOffMicroSec", "paramtype":"unsigned short" }, + { "paramname":"unRepeat", "paramtype":"unsigned short" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerVibration", + "methodname_flat": "SteamAPI_ISteamController_TriggerVibration", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightSpeed", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "SetLEDColor", + "methodname_flat": "SteamAPI_ISteamController_SetLEDColor", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"nColorR", "paramtype":"uint8" }, + { "paramname":"nColorG", "paramtype":"uint8" }, + { "paramname":"nColorB", "paramtype":"uint8" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "ShowBindingPanel", + "methodname_flat": "SteamAPI_ISteamController_ShowBindingPanel", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetInputTypeForHandle", + "methodname_flat": "SteamAPI_ISteamController_GetInputTypeForHandle", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "ESteamInputType" + }, + { + "methodname": "GetControllerForGamepadIndex", + "methodname_flat": "SteamAPI_ISteamController_GetControllerForGamepadIndex", + "params": [ + { "paramname":"nIndex", "paramtype":"int" } + ], + "returntype": "ControllerHandle_t" + }, + { + "methodname": "GetGamepadIndexForController", + "methodname_flat": "SteamAPI_ISteamController_GetGamepadIndexForController", + "params": [ + { "paramname":"ulControllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetStringForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetStringForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetGlyphForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetActionOriginFromXboxOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetActionOriginFromXboxOrigin", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "EControllerActionOrigin" + }, + { + "methodname": "TranslateActionOrigin", + "methodname_flat": "SteamAPI_ISteamController_TranslateActionOrigin", + "params": [ + { "paramname":"eDestinationInputType", "paramtype":"ESteamInputType" }, + { "paramname":"eSourceOrigin", "paramtype":"EControllerActionOrigin" } + ], + "returntype": "EControllerActionOrigin" + }, + { + "methodname": "GetControllerBindingRevision", + "methodname_flat": "SteamAPI_ISteamController_GetControllerBindingRevision", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"pMajor", "paramtype":"int *" }, + { "paramname":"pMinor", "paramtype":"int *" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamController008" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUGC", + "name_flat": "SteamAPI_SteamUGC_v016" + }, + { + "kind": "gameserver", + "name": "SteamGameServerUGC", + "name_flat": "SteamAPI_SteamGameServerUGC_v016" + } + ], + "classname": "ISteamUGC", + "fields": [], + "methods": [ + { + "methodname": "CreateQueryUserUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest", + "params": [ + { "paramname":"unAccountID", "paramtype":"AccountID_t" }, + { "paramname":"eListType", "paramtype":"EUserUGCList" }, + { "paramname":"eMatchingUGCType", "paramtype":"EUGCMatchingUGCType" }, + { "paramname":"eSortOrder", "paramtype":"EUserUGCListSortOrder" }, + { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, + { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, + { "paramname":"unPage", "paramtype":"uint32" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "methodname": "CreateQueryAllUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage", + "params": [ + { "paramname":"eQueryType", "paramtype":"EUGCQuery" }, + { "paramname":"eMatchingeMatchingUGCTypeFileType", "paramtype":"EUGCMatchingUGCType" }, + { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, + { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, + { "paramname":"unPage", "paramtype":"uint32" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "methodname": "CreateQueryAllUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor", + "params": [ + { "paramname":"eQueryType", "paramtype":"EUGCQuery" }, + { "paramname":"eMatchingeMatchingUGCTypeFileType", "paramtype":"EUGCMatchingUGCType" }, + { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, + { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, + { "paramname":"pchCursor", "paramtype":"const char *" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "methodname": "CreateQueryUGCDetailsRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "callresult": "SteamUGCQueryCompleted_t", + "methodname": "SendQueryUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_SendQueryUGCRequest", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetQueryUGCResult", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCResult", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pDetails", "paramtype":"SteamUGCDetails_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCNumTags", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetQueryUGCTag", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"indexTag", "paramtype":"uint32" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCTagDisplayName", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"indexTag", "paramtype":"uint32" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCPreviewURL", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { + "out_string_count": "cchURLSize", + "paramname": "pchURL", + "paramtype": "char *" + }, + { "paramname":"cchURLSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCMetadata", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCMetadata", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { + "out_string_count": "cchMetadatasize", + "paramname": "pchMetadata", + "paramtype": "char *" + }, + { "paramname":"cchMetadatasize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCChildren", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCChildren", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"cMaxEntries", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCStatistic", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCStatistic", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"eStatType", "paramtype":"EItemStatistic" }, + { "paramname":"pStatValue", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCNumAdditionalPreviews", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetQueryUGCAdditionalPreview", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"previewIndex", "paramtype":"uint32" }, + { + "out_string_count": "cchURLSize", + "paramname": "pchURLOrVideoID", + "paramtype": "char *" + }, + { "paramname":"cchURLSize", "paramtype":"uint32" }, + { + "out_string_count": "cchURLSize", + "paramname": "pchOriginalFileName", + "paramtype": "char *" + }, + { "paramname":"cchOriginalFileNameSize", "paramtype":"uint32" }, + { "paramname":"pPreviewType", "paramtype":"EItemPreviewType *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCNumKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetQueryUGCKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"keyValueTagIndex", "paramtype":"uint32" }, + { + "out_string_count": "cchKeySize", + "paramname": "pchKey", + "paramtype": "char *" + }, + { "paramname":"cchKeySize", "paramtype":"uint32" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "ReleaseQueryUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "AddRequiredTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pTagName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddRequiredTagGroup", + "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredTagGroup", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pTagGroups", "paramtype":"const SteamParamStringArray_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddExcludedTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddExcludedTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pTagName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnOnlyIDs", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnOnlyIDs", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnOnlyIDs", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnKeyValueTags", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnLongDescription", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnLongDescription", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnLongDescription", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnMetadata", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnMetadata", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnMetadata", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnChildren", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnChildren", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnChildren", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnAdditionalPreviews", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnAdditionalPreviews", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnTotalOnly", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnTotalOnly", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnTotalOnly", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnPlaytimeStats", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnPlaytimeStats", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"unDays", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLanguage", + "methodname_flat": "SteamAPI_ISteamUGC_SetLanguage", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pchLanguage", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetAllowCachedResponse", + "methodname_flat": "SteamAPI_ISteamUGC_SetAllowCachedResponse", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"unMaxAgeSeconds", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCloudFileNameFilter", + "methodname_flat": "SteamAPI_ISteamUGC_SetCloudFileNameFilter", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pMatchCloudFileName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetMatchAnyTag", + "methodname_flat": "SteamAPI_ISteamUGC_SetMatchAnyTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bMatchAnyTag", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetSearchText", + "methodname_flat": "SteamAPI_ISteamUGC_SetSearchText", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pSearchText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetRankedByTrendDays", + "methodname_flat": "SteamAPI_ISteamUGC_SetRankedByTrendDays", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"unDays", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetTimeCreatedDateRange", + "methodname_flat": "SteamAPI_ISteamUGC_SetTimeCreatedDateRange", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"rtStart", "paramtype":"RTime32" }, + { "paramname":"rtEnd", "paramtype":"RTime32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetTimeUpdatedDateRange", + "methodname_flat": "SteamAPI_ISteamUGC_SetTimeUpdatedDateRange", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"rtStart", "paramtype":"RTime32" }, + { "paramname":"rtEnd", "paramtype":"RTime32" } + ], + "returntype": "bool" + }, + { + "methodname": "AddRequiredKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pKey", "paramtype":"const char *" }, + { "paramname":"pValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "SteamUGCRequestUGCDetailsResult_t", + "methodname": "RequestUGCDetails", + "methodname_flat": "SteamAPI_ISteamUGC_RequestUGCDetails", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"unMaxAgeSeconds", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "CreateItemResult_t", + "methodname": "CreateItem", + "methodname_flat": "SteamAPI_ISteamUGC_CreateItem", + "params": [ + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"eFileType", "paramtype":"EWorkshopFileType" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "StartItemUpdate", + "methodname_flat": "SteamAPI_ISteamUGC_StartItemUpdate", + "params": [ + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "UGCUpdateHandle_t" + }, + { + "methodname": "SetItemTitle", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemTitle", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemDescription", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemDescription", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchDescription", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemUpdateLanguage", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemUpdateLanguage", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchLanguage", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemMetadata", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemMetadata", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchMetaData", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemVisibility", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemVisibility", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemTags", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemTags", + "params": [ + { "paramname":"updateHandle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pTags", "paramtype":"const SteamParamStringArray_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemContent", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemContent", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszContentFolder", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemPreview", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemPreview", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszPreviewFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetAllowLegacyUpload", + "methodname_flat": "SteamAPI_ISteamUGC_SetAllowLegacyUpload", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"bAllowLegacyUpload", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "RemoveAllItemKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "RemoveItemKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddItemKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddItemPreviewFile", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemPreviewFile", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszPreviewFile", "paramtype":"const char *" }, + { "paramname":"type", "paramtype":"EItemPreviewType" } + ], + "returntype": "bool" + }, + { + "methodname": "AddItemPreviewVideo", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemPreviewVideo", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszVideoID", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateItemPreviewFile", + "methodname_flat": "SteamAPI_ISteamUGC_UpdateItemPreviewFile", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pszPreviewFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateItemPreviewVideo", + "methodname_flat": "SteamAPI_ISteamUGC_UpdateItemPreviewVideo", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pszVideoID", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "RemoveItemPreview", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemPreview", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "callresult": "SubmitItemUpdateResult_t", + "methodname": "SubmitItemUpdate", + "methodname_flat": "SteamAPI_ISteamUGC_SubmitItemUpdate", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchChangeNote", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetItemUpdateProgress", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemUpdateProgress", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"punBytesProcessed", "paramtype":"uint64 *" }, + { "paramname":"punBytesTotal", "paramtype":"uint64 *" } + ], + "returntype": "EItemUpdateStatus" + }, + { + "callresult": "SetUserItemVoteResult_t", + "methodname": "SetUserItemVote", + "methodname_flat": "SteamAPI_ISteamUGC_SetUserItemVote", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"bVoteUp", "paramtype":"bool" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "GetUserItemVoteResult_t", + "methodname": "GetUserItemVote", + "methodname_flat": "SteamAPI_ISteamUGC_GetUserItemVote", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "UserFavoriteItemsListChanged_t", + "methodname": "AddItemToFavorites", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemToFavorites", + "params": [ + { "paramname":"nAppId", "paramtype":"AppId_t" }, + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "UserFavoriteItemsListChanged_t", + "methodname": "RemoveItemFromFavorites", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemFromFavorites", + "params": [ + { "paramname":"nAppId", "paramtype":"AppId_t" }, + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "methodname": "SubscribeItem", + "methodname_flat": "SteamAPI_ISteamUGC_SubscribeItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "methodname": "UnsubscribeItem", + "methodname_flat": "SteamAPI_ISteamUGC_UnsubscribeItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetNumSubscribedItems", + "methodname_flat": "SteamAPI_ISteamUGC_GetNumSubscribedItems", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetSubscribedItems", + "methodname_flat": "SteamAPI_ISteamUGC_GetSubscribedItems", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"cMaxEntries", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetItemState", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemState", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetItemInstallInfo", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemInstallInfo", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"punSizeOnDisk", "paramtype":"uint64 *" }, + { + "out_string_count": "cchFolderSize", + "paramname": "pchFolder", + "paramtype": "char *" + }, + { "paramname":"cchFolderSize", "paramtype":"uint32" }, + { "paramname":"punTimeStamp", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetItemDownloadInfo", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemDownloadInfo", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"punBytesDownloaded", "paramtype":"uint64 *" }, + { "paramname":"punBytesTotal", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "DownloadItem", + "methodname_flat": "SteamAPI_ISteamUGC_DownloadItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"bHighPriority", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "BInitWorkshopForGameServer", + "methodname_flat": "SteamAPI_ISteamUGC_BInitWorkshopForGameServer", + "params": [ + { "paramname":"unWorkshopDepotID", "paramtype":"DepotId_t" }, + { "paramname":"pszFolder", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SuspendDownloads", + "methodname_flat": "SteamAPI_ISteamUGC_SuspendDownloads", + "params": [ + { "paramname":"bSuspend", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "callresult": "StartPlaytimeTrackingResult_t", + "methodname": "StartPlaytimeTracking", + "methodname_flat": "SteamAPI_ISteamUGC_StartPlaytimeTracking", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "StopPlaytimeTrackingResult_t", + "methodname": "StopPlaytimeTracking", + "methodname_flat": "SteamAPI_ISteamUGC_StopPlaytimeTracking", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "StopPlaytimeTrackingResult_t", + "methodname": "StopPlaytimeTrackingForAllItems", + "methodname_flat": "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "AddUGCDependencyResult_t", + "methodname": "AddDependency", + "methodname_flat": "SteamAPI_ISteamUGC_AddDependency", + "params": [ + { "paramname":"nParentPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nChildPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoveUGCDependencyResult_t", + "methodname": "RemoveDependency", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveDependency", + "params": [ + { "paramname":"nParentPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nChildPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "AddAppDependencyResult_t", + "methodname": "AddAppDependency", + "methodname_flat": "SteamAPI_ISteamUGC_AddAppDependency", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoveAppDependencyResult_t", + "methodname": "RemoveAppDependency", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveAppDependency", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "GetAppDependenciesResult_t", + "methodname": "GetAppDependencies", + "methodname_flat": "SteamAPI_ISteamUGC_GetAppDependencies", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "DeleteItemResult_t", + "methodname": "DeleteItem", + "methodname_flat": "SteamAPI_ISteamUGC_DeleteItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "ShowWorkshopEULA", + "methodname_flat": "SteamAPI_ISteamUGC_ShowWorkshopEULA", + "params": [], + "returntype": "bool" + }, + { + "callresult": "WorkshopEULAStatus_t", + "methodname": "GetWorkshopEULAStatus", + "methodname_flat": "SteamAPI_ISteamUGC_GetWorkshopEULAStatus", + "params": [], + "returntype": "SteamAPICall_t" + } + ], + "version_string": "STEAMUGC_INTERFACE_VERSION016" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamAppList", + "name_flat": "SteamAPI_SteamAppList_v001" + } + ], + "classname": "ISteamAppList", + "fields": [], + "methods": [ + { + "methodname": "GetNumInstalledApps", + "methodname_flat": "SteamAPI_ISteamAppList_GetNumInstalledApps", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetInstalledApps", + "methodname_flat": "SteamAPI_ISteamAppList_GetInstalledApps", + "params": [ + { "paramname":"pvecAppID", "paramtype":"AppId_t *" }, + { "paramname":"unMaxAppIDs", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetAppName", + "methodname_flat": "SteamAPI_ISteamAppList_GetAppName", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { + "out_string": "", + "paramname": "pchName", + "paramtype": "char *" + }, + { "paramname":"cchNameMax", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetAppInstallDir", + "methodname_flat": "SteamAPI_ISteamAppList_GetAppInstallDir", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"pchDirectory", "paramtype":"char *" }, + { "paramname":"cchNameMax", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetAppBuildId", + "methodname_flat": "SteamAPI_ISteamAppList_GetAppBuildId", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "int" + } + ], + "version_string": "STEAMAPPLIST_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamHTMLSurface", + "name_flat": "SteamAPI_SteamHTMLSurface_v005" + } + ], + "classname": "ISteamHTMLSurface", + "enums": [ + { + "enumname": "EHTMLMouseButton", + "fqname": "ISteamHTMLSurface::EHTMLMouseButton", + "values": [ + { "name":"eHTMLMouseButton_Left", "value":"0" }, + { "name":"eHTMLMouseButton_Right", "value":"1" }, + { "name":"eHTMLMouseButton_Middle", "value":"2" } + ] + }, + { + "enumname": "EMouseCursor", + "fqname": "ISteamHTMLSurface::EMouseCursor", + "values": [ + { "name":"dc_user", "value":"0" }, + { "name":"dc_none", "value":"1" }, + { "name":"dc_arrow", "value":"2" }, + { "name":"dc_ibeam", "value":"3" }, + { "name":"dc_hourglass", "value":"4" }, + { "name":"dc_waitarrow", "value":"5" }, + { "name":"dc_crosshair", "value":"6" }, + { "name":"dc_up", "value":"7" }, + { "name":"dc_sizenw", "value":"8" }, + { "name":"dc_sizese", "value":"9" }, + { "name":"dc_sizene", "value":"10" }, + { "name":"dc_sizesw", "value":"11" }, + { "name":"dc_sizew", "value":"12" }, + { "name":"dc_sizee", "value":"13" }, + { "name":"dc_sizen", "value":"14" }, + { "name":"dc_sizes", "value":"15" }, + { "name":"dc_sizewe", "value":"16" }, + { "name":"dc_sizens", "value":"17" }, + { "name":"dc_sizeall", "value":"18" }, + { "name":"dc_no", "value":"19" }, + { "name":"dc_hand", "value":"20" }, + { "name":"dc_blank", "value":"21" }, + { "name":"dc_middle_pan", "value":"22" }, + { "name":"dc_north_pan", "value":"23" }, + { "name":"dc_north_east_pan", "value":"24" }, + { "name":"dc_east_pan", "value":"25" }, + { "name":"dc_south_east_pan", "value":"26" }, + { "name":"dc_south_pan", "value":"27" }, + { "name":"dc_south_west_pan", "value":"28" }, + { "name":"dc_west_pan", "value":"29" }, + { "name":"dc_north_west_pan", "value":"30" }, + { "name":"dc_alias", "value":"31" }, + { "name":"dc_cell", "value":"32" }, + { "name":"dc_colresize", "value":"33" }, + { "name":"dc_copycur", "value":"34" }, + { "name":"dc_verticaltext", "value":"35" }, + { "name":"dc_rowresize", "value":"36" }, + { "name":"dc_zoomin", "value":"37" }, + { "name":"dc_zoomout", "value":"38" }, + { "name":"dc_help", "value":"39" }, + { "name":"dc_custom", "value":"40" }, + { "name":"dc_last", "value":"41" } + ] + }, + { + "enumname": "EHTMLKeyModifiers", + "fqname": "ISteamHTMLSurface::EHTMLKeyModifiers", + "values": [ + { "name":"k_eHTMLKeyModifier_None", "value":"0" }, + { "name":"k_eHTMLKeyModifier_AltDown", "value":"1" }, + { "name":"k_eHTMLKeyModifier_CtrlDown", "value":"2" }, + { "name":"k_eHTMLKeyModifier_ShiftDown", "value":"4" } + ] + } + ], + "fields": [], + "methods": [ + { + "methodname": "Init", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Init", + "params": [], + "returntype": "bool" + }, + { + "methodname": "Shutdown", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Shutdown", + "params": [], + "returntype": "bool" + }, + { + "callresult": "HTML_BrowserReady_t", + "methodname": "CreateBrowser", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_CreateBrowser", + "params": [ + { "paramname":"pchUserAgent", "paramtype":"const char *" }, + { "paramname":"pchUserCSS", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "RemoveBrowser", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_RemoveBrowser", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "LoadURL", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_LoadURL", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchURL", "paramtype":"const char *" }, + { "paramname":"pchPostData", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetSize", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetSize", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"unWidth", "paramtype":"uint32" }, + { "paramname":"unHeight", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "StopLoad", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_StopLoad", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "Reload", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Reload", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "GoBack", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_GoBack", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "GoForward", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_GoForward", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "AddHeader", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_AddHeader", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "ExecuteJavascript", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_ExecuteJavascript", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchScript", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "MouseUp", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseUp", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } + ], + "returntype": "void" + }, + { + "methodname": "MouseDown", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseDown", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } + ], + "returntype": "void" + }, + { + "methodname": "MouseDoubleClick", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseDoubleClick", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } + ], + "returntype": "void" + }, + { + "methodname": "MouseMove", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseMove", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"x", "paramtype":"int" }, + { "paramname":"y", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "MouseWheel", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseWheel", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nDelta", "paramtype":"int32" } + ], + "returntype": "void" + }, + { + "methodname": "KeyDown", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyDown", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nNativeKeyCode", "paramtype":"uint32" }, + { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" }, + { "paramname":"bIsSystemKey", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "KeyUp", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyUp", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nNativeKeyCode", "paramtype":"uint32" }, + { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" } + ], + "returntype": "void" + }, + { + "methodname": "KeyChar", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyChar", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"cUnicodeChar", "paramtype":"uint32" }, + { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" } + ], + "returntype": "void" + }, + { + "methodname": "SetHorizontalScroll", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nAbsolutePixelScroll", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "SetVerticalScroll", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetVerticalScroll", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nAbsolutePixelScroll", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "SetKeyFocus", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetKeyFocus", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bHasKeyFocus", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "ViewSource", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_ViewSource", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "CopyToClipboard", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_CopyToClipboard", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "PasteFromClipboard", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_PasteFromClipboard", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "Find", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Find", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchSearchStr", "paramtype":"const char *" }, + { "paramname":"bCurrentlyInFind", "paramtype":"bool" }, + { "paramname":"bReverse", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "StopFind", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_StopFind", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "GetLinkAtPosition", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"x", "paramtype":"int" }, + { "paramname":"y", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetCookie", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetCookie", + "params": [ + { "paramname":"pchHostname", "paramtype":"const char *" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" }, + { "paramname":"pchPath", "paramtype":"const char *" }, + { "paramname":"nExpires", "paramtype":"RTime32" }, + { "paramname":"bSecure", "paramtype":"bool" }, + { "paramname":"bHTTPOnly", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetPageScaleFactor", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"flZoom", "paramtype":"float" }, + { "paramname":"nPointX", "paramtype":"int" }, + { "paramname":"nPointY", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetBackgroundMode", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetBackgroundMode", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bBackgroundMode", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetDPIScalingFactor", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"flDPIScaling", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "OpenDeveloperTools", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_OpenDeveloperTools", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "AllowStartRequest", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_AllowStartRequest", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bAllowed", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "JSDialogResponse", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_JSDialogResponse", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bResult", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "FileLoadDialogResponse", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchSelectedFiles", "paramtype":"const char **" } + ], + "returntype": "void" + } + ], + "version_string": "STEAMHTMLSURFACE_INTERFACE_VERSION_005" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamInventory", + "name_flat": "SteamAPI_SteamInventory_v003" + }, + { + "kind": "gameserver", + "name": "SteamGameServerInventory", + "name_flat": "SteamAPI_SteamGameServerInventory_v003" + } + ], + "classname": "ISteamInventory", + "fields": [], + "methods": [ + { + "methodname": "GetResultStatus", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultStatus", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } + ], + "returntype": "EResult" + }, + { + "methodname": "GetResultItems", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultItems", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { + "desc": "Output array", + "out_array_count": "punOutItemsArraySize", + "paramname": "pOutItemsArray", + "paramtype": "SteamItemDetails_t *" + }, + { "paramname":"punOutItemsArraySize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetResultItemProperty", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultItemProperty", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { "paramname":"unItemIndex", "paramtype":"uint32" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { + "out_string_count": "punValueBufferSizeOut", + "paramname": "pchValueBuffer", + "paramtype": "char *" + }, + { "paramname":"punValueBufferSizeOut", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetResultTimestamp", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultTimestamp", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } + ], + "returntype": "uint32" + }, + { + "methodname": "CheckResultSteamID", + "methodname_flat": "SteamAPI_ISteamInventory_CheckResultSteamID", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { "paramname":"steamIDExpected", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "DestroyResult", + "methodname_flat": "SteamAPI_ISteamInventory_DestroyResult", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetAllItems", + "methodname_flat": "SteamAPI_ISteamInventory_GetAllItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetItemsByID", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemsByID", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unCountInstanceIDs", + "paramname": "pInstanceIDs", + "paramtype": "const SteamItemInstanceID_t *" + }, + { "paramname":"unCountInstanceIDs", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SerializeResult", + "methodname_flat": "SteamAPI_ISteamInventory_SerializeResult", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { + "out_buffer_count": "punOutBufferSize", + "paramname": "pOutBuffer", + "paramtype": "void *" + }, + { "paramname":"punOutBufferSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "DeserializeResult", + "methodname_flat": "SteamAPI_ISteamInventory_DeserializeResult", + "params": [ + { "paramname":"pOutResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "buffer_count": "punOutBufferSize", + "paramname": "pBuffer", + "paramtype": "const void *" + }, + { "paramname":"unBufferSize", "paramtype":"uint32" }, + { "paramname":"bRESERVED_MUST_BE_FALSE", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "GenerateItems", + "methodname_flat": "SteamAPI_ISteamInventory_GenerateItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unArrayLength", + "paramname": "pArrayItemDefs", + "paramtype": "const SteamItemDef_t *" + }, + { + "array_count": "unArrayLength", + "paramname": "punArrayQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GrantPromoItems", + "methodname_flat": "SteamAPI_ISteamInventory_GrantPromoItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddPromoItem", + "methodname_flat": "SteamAPI_ISteamInventory_AddPromoItem", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"itemDef", "paramtype":"SteamItemDef_t" } + ], + "returntype": "bool" + }, + { + "methodname": "AddPromoItems", + "methodname_flat": "SteamAPI_ISteamInventory_AddPromoItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unArrayLength", + "paramname": "pArrayItemDefs", + "paramtype": "const SteamItemDef_t *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "ConsumeItem", + "methodname_flat": "SteamAPI_ISteamInventory_ConsumeItem", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"itemConsume", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"unQuantity", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "ExchangeItems", + "methodname_flat": "SteamAPI_ISteamInventory_ExchangeItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unArrayGenerateLength", + "paramname": "pArrayGenerate", + "paramtype": "const SteamItemDef_t *" + }, + { + "array_count": "unArrayGenerateLength", + "paramname": "punArrayGenerateQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayGenerateLength", "paramtype":"uint32" }, + { + "array_count": "unArrayDestroyLength", + "paramname": "pArrayDestroy", + "paramtype": "const SteamItemInstanceID_t *" + }, + { + "array_count": "unArrayDestroyLength", + "paramname": "punArrayDestroyQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayDestroyLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "TransferItemQuantity", + "methodname_flat": "SteamAPI_ISteamInventory_TransferItemQuantity", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"itemIdSource", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"unQuantity", "paramtype":"uint32" }, + { "paramname":"itemIdDest", "paramtype":"SteamItemInstanceID_t" } + ], + "returntype": "bool" + }, + { + "methodname": "SendItemDropHeartbeat", + "methodname_flat": "SteamAPI_ISteamInventory_SendItemDropHeartbeat", + "params": [], + "returntype": "void" + }, + { + "methodname": "TriggerItemDrop", + "methodname_flat": "SteamAPI_ISteamInventory_TriggerItemDrop", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"dropListDefinition", "paramtype":"SteamItemDef_t" } + ], + "returntype": "bool" + }, + { + "methodname": "TradeItems", + "methodname_flat": "SteamAPI_ISteamInventory_TradeItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"steamIDTradePartner", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { + "array_count": "nArrayGiveLength", + "paramname": "pArrayGive", + "paramtype": "const SteamItemInstanceID_t *" + }, + { + "array_count": "nArrayGiveLength", + "paramname": "pArrayGiveQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"nArrayGiveLength", "paramtype":"uint32" }, + { + "array_count": "nArrayGetLength", + "paramname": "pArrayGet", + "paramtype": "const SteamItemInstanceID_t *" + }, + { + "array_count": "nArrayGetLength", + "paramname": "pArrayGetQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"nArrayGetLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "LoadItemDefinitions", + "methodname_flat": "SteamAPI_ISteamInventory_LoadItemDefinitions", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetItemDefinitionIDs", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemDefinitionIDs", + "params": [ + { + "desc": "List of item definition IDs", + "out_array_count": "punItemDefIDsArraySize", + "paramname": "pItemDefIDs", + "paramtype": "SteamItemDef_t *" + }, + { + "desc": "Size of array is passed in and actual size used is returned in this param", + "paramname": "punItemDefIDsArraySize", + "paramtype": "uint32 *" + } + ], + "returntype": "bool" + }, + { + "methodname": "GetItemDefinitionProperty", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemDefinitionProperty", + "params": [ + { "paramname":"iDefinition", "paramtype":"SteamItemDef_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { + "out_string_count": "punValueBufferSizeOut", + "paramname": "pchValueBuffer", + "paramtype": "char *" + }, + { "paramname":"punValueBufferSizeOut", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "callresult": "SteamInventoryEligiblePromoItemDefIDs_t", + "methodname": "RequestEligiblePromoItemDefinitionsIDs", + "methodname_flat": "SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetEligiblePromoItemDefinitionIDs", + "methodname_flat": "SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { + "desc": "List of item definition IDs", + "out_array_count": "punItemDefIDsArraySize", + "paramname": "pItemDefIDs", + "paramtype": "SteamItemDef_t *" + }, + { + "desc": "Size of array is passed in and actual size used is returned in this param", + "paramname": "punItemDefIDsArraySize", + "paramtype": "uint32 *" + } + ], + "returntype": "bool" + }, + { + "callresult": "SteamInventoryStartPurchaseResult_t", + "methodname": "StartPurchase", + "methodname_flat": "SteamAPI_ISteamInventory_StartPurchase", + "params": [ + { + "array_count": "unArrayLength", + "paramname": "pArrayItemDefs", + "paramtype": "const SteamItemDef_t *" + }, + { + "array_count": "unArrayLength", + "paramname": "punArrayQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "SteamInventoryRequestPricesResult_t", + "methodname": "RequestPrices", + "methodname_flat": "SteamAPI_ISteamInventory_RequestPrices", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetNumItemsWithPrices", + "methodname_flat": "SteamAPI_ISteamInventory_GetNumItemsWithPrices", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetItemsWithPrices", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemsWithPrices", + "params": [ + { + "array_count": "unArrayLength", + "desc": "Items with prices", + "out_array_count": "pArrayItemDefs", + "paramname": "pArrayItemDefs", + "paramtype": "SteamItemDef_t *" + }, + { + "array_count": "unArrayLength", + "desc": "List of prices for the given item defs", + "out_array_count": "pPrices", + "paramname": "pCurrentPrices", + "paramtype": "uint64 *" + }, + { + "array_count": "unArrayLength", + "desc": "List of prices for the given item defs", + "out_array_count": "pPrices", + "paramname": "pBasePrices", + "paramtype": "uint64 *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetItemPrice", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemPrice", + "params": [ + { "paramname":"iDefinition", "paramtype":"SteamItemDef_t" }, + { "paramname":"pCurrentPrice", "paramtype":"uint64 *" }, + { "paramname":"pBasePrice", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "StartUpdateProperties", + "methodname_flat": "SteamAPI_ISteamInventory_StartUpdateProperties", + "params": [], + "returntype": "SteamInventoryUpdateHandle_t" + }, + { + "methodname": "RemoveProperty", + "methodname_flat": "SteamAPI_ISteamInventory_RemoveProperty", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyString", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"pchPropertyValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyBool", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyInt64", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"nValue", "paramtype":"int64" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyFloat", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"flValue", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "SubmitUpdateProperties", + "methodname_flat": "SteamAPI_ISteamInventory_SubmitUpdateProperties", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "InspectItem", + "methodname_flat": "SteamAPI_ISteamInventory_InspectItem", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"pchItemToken", "paramtype":"const char *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMINVENTORY_INTERFACE_V003" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamVideo", + "name_flat": "SteamAPI_SteamVideo_v002" + } + ], + "classname": "ISteamVideo", + "fields": [], + "methods": [ + { + "methodname": "GetVideoURL", + "methodname_flat": "SteamAPI_ISteamVideo_GetVideoURL", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "IsBroadcasting", + "methodname_flat": "SteamAPI_ISteamVideo_IsBroadcasting", + "params": [ + { "paramname":"pnNumViewers", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "callback": "GetOPFSettingsResult_t", + "methodname": "GetOPFSettings", + "methodname_flat": "SteamAPI_ISteamVideo_GetOPFSettings", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetOPFStringForApp", + "methodname_flat": "SteamAPI_ISteamVideo_GetOPFStringForApp", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" }, + { "paramname":"pchBuffer", "paramtype":"char *" }, + { "paramname":"pnBufferSize", "paramtype":"int32 *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMVIDEO_INTERFACE_V002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamParentalSettings", + "name_flat": "SteamAPI_SteamParentalSettings_v001" + } + ], + "classname": "ISteamParentalSettings", + "fields": [], + "methods": [ + { + "methodname": "BIsParentalLockEnabled", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsParentalLockLocked", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsParentalLockLocked", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsAppBlocked", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsAppBlocked", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsAppInBlockList", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsAppInBlockList", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsFeatureBlocked", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsFeatureBlocked", + "params": [ + { "paramname":"eFeature", "paramtype":"EParentalFeature" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsFeatureInBlockList", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList", + "params": [ + { "paramname":"eFeature", "paramtype":"EParentalFeature" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMPARENTALSETTINGS_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamRemotePlay", + "name_flat": "SteamAPI_SteamRemotePlay_v001" + } + ], + "classname": "ISteamRemotePlay", + "fields": [], + "methods": [ + { + "methodname": "GetSessionCount", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionCount", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetSessionID", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionID", + "params": [ + { "paramname":"iSessionIndex", "paramtype":"int" } + ], + "returntype": "RemotePlaySessionID_t" + }, + { + "methodname": "GetSessionSteamID", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionSteamID", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetSessionClientName", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionClientName", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetSessionClientFormFactor", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } + ], + "returntype": "ESteamDeviceFormFactor" + }, + { + "methodname": "BGetSessionClientResolution", + "methodname_flat": "SteamAPI_ISteamRemotePlay_BGetSessionClientResolution", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" }, + { "paramname":"pnResolutionX", "paramtype":"int *" }, + { "paramname":"pnResolutionY", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "methodname": "BSendRemotePlayTogetherInvite", + "methodname_flat": "SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMREMOTEPLAY_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamNetworkingMessages_SteamAPI", + "name_flat": "SteamAPI_SteamNetworkingMessages_SteamAPI_v002" + }, + { + "kind": "gameserver", + "name": "SteamGameServerNetworkingMessages_SteamAPI", + "name_flat": "SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002" + } + ], + "classname": "ISteamNetworkingMessages", + "fields": [], + "methods": [ + { + "methodname": "SendMessageToUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_SendMessageToUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"pubData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"uint32" }, + { "paramname":"nSendFlags", "paramtype":"int" }, + { "paramname":"nRemoteChannel", "paramtype":"int" } + ], + "returntype": "EResult" + }, + { + "methodname": "ReceiveMessagesOnChannel", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel", + "params": [ + { "paramname":"nLocalChannel", "paramtype":"int" }, + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "AcceptSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseChannelWithUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nLocalChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSessionConnectionInfo", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"pConnectionInfo", "paramtype":"SteamNetConnectionInfo_t *" }, + { "paramname":"pQuickStatus", "paramtype":"SteamNetConnectionRealTimeStatus_t *" } + ], + "returntype": "ESteamNetworkingConnectionState" + } + ], + "version_string": "SteamNetworkingMessages002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamNetworkingSockets_SteamAPI", + "name_flat": "SteamAPI_SteamNetworkingSockets_SteamAPI_v012" + }, + { + "kind": "gameserver", + "name": "SteamGameServerNetworkingSockets_SteamAPI", + "name_flat": "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012" + } + ], + "classname": "ISteamNetworkingSockets", + "fields": [], + "methods": [ + { + "methodname": "CreateListenSocketIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP", + "params": [ + { "paramname":"localAddress", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "ConnectByIPAddress", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress", + "params": [ + { "paramname":"address", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "CreateListenSocketP2P", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P", + "params": [ + { "paramname":"nLocalVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "ConnectP2P", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectP2P", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "AcceptConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_AcceptConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" } + ], + "returntype": "EResult" + }, + { + "methodname": "CloseConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CloseConnection", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"nReason", "paramtype":"int" }, + { "paramname":"pszDebug", "paramtype":"const char *" }, + { "paramname":"bEnableLinger", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CloseListenSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"HSteamListenSocket" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionUserData", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionUserData", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"nUserData", "paramtype":"int64" } + ], + "returntype": "bool" + }, + { + "methodname": "GetConnectionUserData", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionUserData", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" } + ], + "returntype": "int64" + }, + { + "methodname": "SetConnectionName", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionName", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"pszName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "GetConnectionName", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionName", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"pszName", "paramtype":"char *" }, + { "paramname":"nMaxLen", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "SendMessageToConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SendMessageToConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pData", "paramtype":"const void *" }, + { "paramname":"cbData", "paramtype":"uint32" }, + { "paramname":"nSendFlags", "paramtype":"int" }, + { "paramname":"pOutMessageNumber", "paramtype":"int64 *" } + ], + "returntype": "EResult" + }, + { + "methodname": "SendMessages", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SendMessages", + "params": [ + { "paramname":"nMessages", "paramtype":"int" }, + { "paramname":"pMessages", "paramtype":"SteamNetworkingMessage_t *const *" }, + { "paramname":"pOutMessageNumberOrResult", "paramtype":"int64 *" } + ], + "returntype": "void" + }, + { + "methodname": "FlushMessagesOnConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" } + ], + "returntype": "EResult" + }, + { + "methodname": "ReceiveMessagesOnConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetConnectionInfo", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionInfo", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pInfo", "paramtype":"SteamNetConnectionInfo_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetConnectionRealTimeStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionRealTimeStatus", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pStatus", "paramtype":"SteamNetConnectionRealTimeStatus_t *" }, + { "paramname":"nLanes", "paramtype":"int" }, + { "paramname":"pLanes", "paramtype":"SteamNetConnectionRealTimeLaneStatus_t *" } + ], + "returntype": "EResult" + }, + { + "methodname": "GetDetailedConnectionStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pszBuf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetListenSocketAddress", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress", + "params": [ + { "paramname":"hSocket", "paramtype":"HSteamListenSocket" }, + { "paramname":"address", "paramtype":"SteamNetworkingIPAddr *" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateSocketPair", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateSocketPair", + "params": [ + { "paramname":"pOutConnection1", "paramtype":"HSteamNetConnection *" }, + { "paramname":"pOutConnection2", "paramtype":"HSteamNetConnection *" }, + { "paramname":"bUseNetworkLoopback", "paramtype":"bool" }, + { "paramname":"pIdentity1", "paramtype":"const SteamNetworkingIdentity *" }, + { "paramname":"pIdentity2", "paramtype":"const SteamNetworkingIdentity *" } + ], + "returntype": "bool" + }, + { + "methodname": "ConfigureConnectionLanes", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConfigureConnectionLanes", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"nNumLanes", "paramtype":"int" }, + { "paramname":"pLanePriorities", "paramtype":"const int *" }, + { "paramname":"pLaneWeights", "paramtype":"const uint16 *" } + ], + "returntype": "EResult" + }, + { + "methodname": "GetIdentity", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetIdentity", + "params": [ + { "paramname":"pIdentity", "paramtype":"SteamNetworkingIdentity *" } + ], + "returntype": "bool" + }, + { + "methodname": "InitAuthentication", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_InitAuthentication", + "params": [], + "returntype": "ESteamNetworkingAvailability" + }, + { + "methodname": "GetAuthenticationStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus", + "params": [ + { "paramname":"pDetails", "paramtype":"SteamNetAuthenticationStatus_t *" } + ], + "returntype": "ESteamNetworkingAvailability" + }, + { + "methodname": "CreatePollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreatePollGroup", + "params": [], + "returntype": "HSteamNetPollGroup" + }, + { + "methodname": "DestroyPollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_DestroyPollGroup", + "params": [ + { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionPollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionPollGroup", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" } + ], + "returntype": "bool" + }, + { + "methodname": "ReceiveMessagesOnPollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnPollGroup", + "params": [ + { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" }, + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "ReceivedRelayAuthTicket", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceivedRelayAuthTicket", + "params": [ + { "paramname":"pvTicket", "paramtype":"const void *" }, + { "paramname":"cbTicket", "paramtype":"int" }, + { "paramname":"pOutParsedTicket", "paramtype":"SteamDatagramRelayAuthTicket *" } + ], + "returntype": "bool" + }, + { + "methodname": "FindRelayAuthTicketForServer", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_FindRelayAuthTicketForServer", + "params": [ + { "paramname":"identityGameServer", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"pOutParsedTicket", "paramtype":"SteamDatagramRelayAuthTicket *" } + ], + "returntype": "int" + }, + { + "methodname": "ConnectToHostedDedicatedServer", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectToHostedDedicatedServer", + "params": [ + { "paramname":"identityTarget", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "GetHostedDedicatedServerPort", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPort", + "params": [], + "returntype": "uint16" + }, + { + "methodname": "GetHostedDedicatedServerPOPID", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPOPID", + "params": [], + "returntype": "SteamNetworkingPOPID" + }, + { + "methodname": "GetHostedDedicatedServerAddress", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerAddress", + "params": [ + { "paramname":"pRouting", "paramtype":"SteamDatagramHostedAddress *" } + ], + "returntype": "EResult" + }, + { + "methodname": "CreateHostedDedicatedServerListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket", + "params": [ + { "paramname":"nLocalVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "GetGameCoordinatorServerLogin", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin", + "params": [ + { "paramname":"pLoginInfo", "paramtype":"SteamDatagramGameCoordinatorServerLogin *" }, + { "paramname":"pcbSignedBlob", "paramtype":"int *" }, + { "paramname":"pBlob", "paramtype":"void *" } + ], + "returntype": "EResult" + }, + { + "methodname": "ConnectP2PCustomSignaling", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling", + "params": [ + { "paramname":"pSignaling", "paramtype":"ISteamNetworkingConnectionSignaling *" }, + { "paramname":"pPeerIdentity", "paramtype":"const SteamNetworkingIdentity *" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "ReceivedP2PCustomSignal", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal", + "params": [ + { "paramname":"pMsg", "paramtype":"const void *" }, + { "paramname":"cbMsg", "paramtype":"int" }, + { "paramname":"pContext", "paramtype":"ISteamNetworkingSignalingRecvContext *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetCertificateRequest", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetCertificateRequest", + "params": [ + { "paramname":"pcbBlob", "paramtype":"int *" }, + { "paramname":"pBlob", "paramtype":"void *" }, + { "paramname":"errMsg", "paramtype":"SteamNetworkingErrMsg &" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCertificate", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetCertificate", + "params": [ + { "paramname":"pCertificate", "paramtype":"const void *" }, + { "paramname":"cbCertificate", "paramtype":"int" }, + { "paramname":"errMsg", "paramtype":"SteamNetworkingErrMsg &" } + ], + "returntype": "bool" + }, + { + "methodname": "ResetIdentity", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ResetIdentity", + "params": [ + { "paramname":"pIdentity", "paramtype":"const SteamNetworkingIdentity *" } + ], + "returntype": "void" + }, + { + "methodname": "RunCallbacks", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_RunCallbacks", + "params": [], + "returntype": "void" + }, + { + "methodname": "BeginAsyncRequestFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_BeginAsyncRequestFakeIP", + "params": [ + { "paramname":"nNumPorts", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetFakeIP", + "params": [ + { "paramname":"idxFirstPort", "paramtype":"int" }, + { "paramname":"pInfo", "paramtype":"SteamNetworkingFakeIPResult_t *" } + ], + "returntype": "void" + }, + { + "methodname": "CreateListenSocketP2PFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2PFakeIP", + "params": [ + { "paramname":"idxFakePort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "GetRemoteFakeIPForConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetRemoteFakeIPForConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pOutAddr", "paramtype":"SteamNetworkingIPAddr *" } + ], + "returntype": "EResult" + }, + { + "methodname": "CreateFakeUDPPort", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateFakeUDPPort", + "params": [ + { "paramname":"idxFakeServerPort", "paramtype":"int" } + ], + "returntype": "ISteamNetworkingFakeUDPPort *" + } + ], + "version_string": "SteamNetworkingSockets012" + }, + { + "accessors": [ + { + "kind": "global", + "name": "SteamNetworkingUtils_SteamAPI", + "name_flat": "SteamAPI_SteamNetworkingUtils_SteamAPI_v004" + } + ], + "classname": "ISteamNetworkingUtils", + "fields": [], + "methods": [ + { + "methodname": "AllocateMessage", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_AllocateMessage", + "params": [ + { "paramname":"cbAllocateBuffer", "paramtype":"int" } + ], + "returntype": "SteamNetworkingMessage_t *" + }, + { + "methodname": "InitRelayNetworkAccess", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetRelayNetworkStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus", + "params": [ + { "paramname":"pDetails", "paramtype":"SteamRelayNetworkStatus_t *" } + ], + "returntype": "ESteamNetworkingAvailability" + }, + { + "methodname": "GetLocalPingLocation", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetLocalPingLocation", + "params": [ + { "paramname":"result", "paramtype":"SteamNetworkPingLocation_t &" } + ], + "returntype": "float" + }, + { + "methodname": "EstimatePingTimeBetweenTwoLocations", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeBetweenTwoLocations", + "params": [ + { "paramname":"location1", "paramtype":"const SteamNetworkPingLocation_t &" }, + { "paramname":"location2", "paramtype":"const SteamNetworkPingLocation_t &" } + ], + "returntype": "int" + }, + { + "methodname": "EstimatePingTimeFromLocalHost", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeFromLocalHost", + "params": [ + { "paramname":"remoteLocation", "paramtype":"const SteamNetworkPingLocation_t &" } + ], + "returntype": "int" + }, + { + "methodname": "ConvertPingLocationToString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_ConvertPingLocationToString", + "params": [ + { "paramname":"location", "paramtype":"const SteamNetworkPingLocation_t &" }, + { "paramname":"pszBuf", "paramtype":"char *" }, + { "paramname":"cchBufSize", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "ParsePingLocationString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_ParsePingLocationString", + "params": [ + { "paramname":"pszString", "paramtype":"const char *" }, + { "paramname":"result", "paramtype":"SteamNetworkPingLocation_t &" } + ], + "returntype": "bool" + }, + { + "methodname": "CheckPingDataUpToDate", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_CheckPingDataUpToDate", + "params": [ + { "paramname":"flMaxAgeSeconds", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "GetPingToDataCenter", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPingToDataCenter", + "params": [ + { "paramname":"popID", "paramtype":"SteamNetworkingPOPID" }, + { "paramname":"pViaRelayPoP", "paramtype":"SteamNetworkingPOPID *" } + ], + "returntype": "int" + }, + { + "methodname": "GetDirectPingToPOP", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetDirectPingToPOP", + "params": [ + { "paramname":"popID", "paramtype":"SteamNetworkingPOPID" } + ], + "returntype": "int" + }, + { + "methodname": "GetPOPCount", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPOPCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetPOPList", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPOPList", + "params": [ + { "paramname":"list", "paramtype":"SteamNetworkingPOPID *" }, + { "paramname":"nListSz", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetLocalTimestamp", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp", + "params": [], + "returntype": "SteamNetworkingMicroseconds" + }, + { + "methodname": "SetDebugOutputFunction", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction", + "params": [ + { "paramname":"eDetailLevel", "paramtype":"ESteamNetworkingSocketsDebugOutputType" }, + { "paramname":"pfnFunc", "paramtype":"FSteamNetworkingSocketsDebugOutput" } + ], + "returntype": "void" + }, + { + "methodname": "IsFakeIPv4", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_IsFakeIPv4", + "params": [ + { "paramname":"nIPv4", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetIPv4FakeIPType", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetIPv4FakeIPType", + "params": [ + { "paramname":"nIPv4", "paramtype":"uint32" } + ], + "returntype": "ESteamNetworkingFakeIPType" + }, + { + "methodname": "GetRealIdentityForFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetRealIdentityForFakeIP", + "params": [ + { "paramname":"fakeIP", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"pOutRealIdentity", "paramtype":"SteamNetworkingIdentity *" } + ], + "returntype": "EResult" + }, + { + "methodname": "SetGlobalConfigValueInt32", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalConfigValueFloat", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalConfigValueString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalConfigValuePtr", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValuePtr", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"void *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionConfigValueInt32", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueInt32", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionConfigValueFloat", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueFloat", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionConfigValueString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_SteamNetConnectionStatusChanged", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetConnectionStatusChanged" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_SteamNetAuthenticationStatusChanged", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetAuthenticationStatusChanged" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_SteamRelayNetworkStatusChanged", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamRelayNetworkStatusChanged" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_FakeIPResult", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_FakeIPResult", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingFakeIPResult" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_MessagesSessionRequest", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingMessagesSessionRequest" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_MessagesSessionFailed", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingMessagesSessionFailed" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConfigValue", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConfigValue", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, + { "paramname":"scopeObj", "paramtype":"intptr_t" }, + { "paramname":"eDataType", "paramtype":"ESteamNetworkingConfigDataType" }, + { "paramname":"pArg", "paramtype":"const void *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConfigValueStruct", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct", + "params": [ + { "paramname":"opt", "paramtype":"const SteamNetworkingConfigValue_t &" }, + { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, + { "paramname":"scopeObj", "paramtype":"intptr_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetConfigValue", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetConfigValue", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, + { "paramname":"scopeObj", "paramtype":"intptr_t" }, + { "paramname":"pOutDataType", "paramtype":"ESteamNetworkingConfigDataType *" }, + { "paramname":"pResult", "paramtype":"void *" }, + { "paramname":"cbResult", "paramtype":"size_t *" } + ], + "returntype": "ESteamNetworkingGetConfigValueResult" + }, + { + "methodname": "GetConfigValueInfo", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"pOutDataType", "paramtype":"ESteamNetworkingConfigDataType *" }, + { "paramname":"pOutScope", "paramtype":"ESteamNetworkingConfigScope *" } + ], + "returntype": "const char *" + }, + { + "methodname": "IterateGenericEditableConfigValues", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_IterateGenericEditableConfigValues", + "params": [ + { "paramname":"eCurrent", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"bEnumerateDevVars", "paramtype":"bool" } + ], + "returntype": "ESteamNetworkingConfigValue" + }, + { + "methodname": "SteamNetworkingIPAddr_ToString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString", + "params": [ + { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" }, + { "paramname":"bWithPort", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SteamNetworkingIPAddr_ParseString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString", + "params": [ + { "paramname":"pAddr", "paramtype":"SteamNetworkingIPAddr *" }, + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SteamNetworkingIPAddr_GetFakeIPType", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType", + "params": [ + { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "ESteamNetworkingFakeIPType" + }, + { + "methodname": "SteamNetworkingIdentity_ToString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString", + "params": [ + { "paramname":"identity", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "SteamNetworkingIdentity_ParseString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString", + "params": [ + { "paramname":"pIdentity", "paramtype":"SteamNetworkingIdentity *" }, + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamNetworkingUtils004" + }, + { + "accessors": [ + { + "kind": "gameserver", + "name": "SteamGameServer", + "name_flat": "SteamAPI_SteamGameServer_v014" + } + ], + "classname": "ISteamGameServer", + "fields": [], + "methods": [ + { + "methodname": "SetProduct", + "methodname_flat": "SteamAPI_ISteamGameServer_SetProduct", + "params": [ + { "paramname":"pszProduct", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetGameDescription", + "methodname_flat": "SteamAPI_ISteamGameServer_SetGameDescription", + "params": [ + { "paramname":"pszGameDescription", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetModDir", + "methodname_flat": "SteamAPI_ISteamGameServer_SetModDir", + "params": [ + { "paramname":"pszModDir", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetDedicatedServer", + "methodname_flat": "SteamAPI_ISteamGameServer_SetDedicatedServer", + "params": [ + { "paramname":"bDedicated", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "LogOn", + "methodname_flat": "SteamAPI_ISteamGameServer_LogOn", + "params": [ + { "paramname":"pszToken", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "LogOnAnonymous", + "methodname_flat": "SteamAPI_ISteamGameServer_LogOnAnonymous", + "params": [], + "returntype": "void" + }, + { + "methodname": "LogOff", + "methodname_flat": "SteamAPI_ISteamGameServer_LogOff", + "params": [], + "returntype": "void" + }, + { + "methodname": "BLoggedOn", + "methodname_flat": "SteamAPI_ISteamGameServer_BLoggedOn", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BSecure", + "methodname_flat": "SteamAPI_ISteamGameServer_BSecure", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetSteamID", + "methodname_flat": "SteamAPI_ISteamGameServer_GetSteamID", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "WasRestartRequested", + "methodname_flat": "SteamAPI_ISteamGameServer_WasRestartRequested", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetMaxPlayerCount", + "methodname_flat": "SteamAPI_ISteamGameServer_SetMaxPlayerCount", + "params": [ + { "paramname":"cPlayersMax", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetBotPlayerCount", + "methodname_flat": "SteamAPI_ISteamGameServer_SetBotPlayerCount", + "params": [ + { "paramname":"cBotplayers", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetServerName", + "methodname_flat": "SteamAPI_ISteamGameServer_SetServerName", + "params": [ + { "paramname":"pszServerName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetMapName", + "methodname_flat": "SteamAPI_ISteamGameServer_SetMapName", + "params": [ + { "paramname":"pszMapName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetPasswordProtected", + "methodname_flat": "SteamAPI_ISteamGameServer_SetPasswordProtected", + "params": [ + { "paramname":"bPasswordProtected", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetSpectatorPort", + "methodname_flat": "SteamAPI_ISteamGameServer_SetSpectatorPort", + "params": [ + { "paramname":"unSpectatorPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "SetSpectatorServerName", + "methodname_flat": "SteamAPI_ISteamGameServer_SetSpectatorServerName", + "params": [ + { "paramname":"pszSpectatorServerName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "ClearAllKeyValues", + "methodname_flat": "SteamAPI_ISteamGameServer_ClearAllKeyValues", + "params": [], + "returntype": "void" + }, + { + "methodname": "SetKeyValue", + "methodname_flat": "SteamAPI_ISteamGameServer_SetKeyValue", + "params": [ + { "paramname":"pKey", "paramtype":"const char *" }, + { "paramname":"pValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetGameTags", + "methodname_flat": "SteamAPI_ISteamGameServer_SetGameTags", + "params": [ + { "paramname":"pchGameTags", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetGameData", + "methodname_flat": "SteamAPI_ISteamGameServer_SetGameData", + "params": [ + { "paramname":"pchGameData", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetRegion", + "methodname_flat": "SteamAPI_ISteamGameServer_SetRegion", + "params": [ + { "paramname":"pszRegion", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetAdvertiseServerActive", + "methodname_flat": "SteamAPI_ISteamGameServer_SetAdvertiseServerActive", + "params": [ + { "paramname":"bActive", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "GetAuthSessionTicket", + "methodname_flat": "SteamAPI_ISteamGameServer_GetAuthSessionTicket", + "params": [ + { "paramname":"pTicket", "paramtype":"void *" }, + { "paramname":"cbMaxTicket", "paramtype":"int" }, + { "paramname":"pcbTicket", "paramtype":"uint32 *" } + ], + "returntype": "HAuthTicket" + }, + { + "methodname": "BeginAuthSession", + "methodname_flat": "SteamAPI_ISteamGameServer_BeginAuthSession", + "params": [ + { "paramname":"pAuthTicket", "paramtype":"const void *" }, + { "paramname":"cbAuthTicket", "paramtype":"int" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EBeginAuthSessionResult" + }, + { + "methodname": "EndAuthSession", + "methodname_flat": "SteamAPI_ISteamGameServer_EndAuthSession", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "CancelAuthTicket", + "methodname_flat": "SteamAPI_ISteamGameServer_CancelAuthTicket", + "params": [ + { "paramname":"hAuthTicket", "paramtype":"HAuthTicket" } + ], + "returntype": "void" + }, + { + "methodname": "UserHasLicenseForApp", + "methodname_flat": "SteamAPI_ISteamGameServer_UserHasLicenseForApp", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "EUserHasLicenseForAppResult" + }, + { + "methodname": "RequestUserGroupStatus", + "methodname_flat": "SteamAPI_ISteamGameServer_RequestUserGroupStatus", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDGroup", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGameplayStats", + "methodname_flat": "SteamAPI_ISteamGameServer_GetGameplayStats", + "params": [], + "returntype": "void" + }, + { + "callresult": "GSReputation_t", + "methodname": "GetServerReputation", + "methodname_flat": "SteamAPI_ISteamGameServer_GetServerReputation", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetPublicIP", + "methodname_flat": "SteamAPI_ISteamGameServer_GetPublicIP", + "params": [], + "returntype": "SteamIPAddress_t" + }, + { + "methodname": "HandleIncomingPacket", + "methodname_flat": "SteamAPI_ISteamGameServer_HandleIncomingPacket", + "params": [ + { "paramname":"pData", "paramtype":"const void *" }, + { "paramname":"cbData", "paramtype":"int" }, + { "paramname":"srcIP", "paramtype":"uint32" }, + { "paramname":"srcPort", "paramtype":"uint16" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNextOutgoingPacket", + "methodname_flat": "SteamAPI_ISteamGameServer_GetNextOutgoingPacket", + "params": [ + { "paramname":"pOut", "paramtype":"void *" }, + { "paramname":"cbMaxOut", "paramtype":"int" }, + { "paramname":"pNetAdr", "paramtype":"uint32 *" }, + { "paramname":"pPort", "paramtype":"uint16 *" } + ], + "returntype": "int" + }, + { + "callresult": "AssociateWithClanResult_t", + "methodname": "AssociateWithClan", + "methodname_flat": "SteamAPI_ISteamGameServer_AssociateWithClan", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "ComputeNewPlayerCompatibilityResult_t", + "methodname": "ComputeNewPlayerCompatibility", + "methodname_flat": "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility", + "params": [ + { "paramname":"steamIDNewPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "SendUserConnectAndAuthenticate_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED", + "params": [ + { "paramname":"unIPClient", "paramtype":"uint32" }, + { "paramname":"pvAuthBlob", "paramtype":"const void *" }, + { "paramname":"cubAuthBlobSize", "paramtype":"uint32" }, + { "paramname":"pSteamIDUser", "paramtype":"CSteamID *" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateUnauthenticatedUserConnection", + "methodname_flat": "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SendUserDisconnect_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamGameServer_SendUserDisconnect_DEPRECATED", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "BUpdateUserData", + "methodname_flat": "SteamAPI_ISteamGameServer_BUpdateUserData", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchPlayerName", "paramtype":"const char *" }, + { "paramname":"uScore", "paramtype":"uint32" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamGameServer014" + }, + { + "accessors": [ + { + "kind": "gameserver", + "name": "SteamGameServerStats", + "name_flat": "SteamAPI_SteamGameServerStats_v001" + } + ], + "classname": "ISteamGameServerStats", + "fields": [], + "methods": [ + { + "callresult": "GSStatsReceived_t", + "methodname": "RequestUserStats", + "methodname_flat": "SteamAPI_ISteamGameServerStats_RequestUserStats", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserStatInt32", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserStatFloat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserAchievement", + "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserStatInt32", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserStatFloat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"fData", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateUserAvgRateStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"flCountThisSession", "paramtype":"float" }, + { "paramname":"dSessionLength", "paramtype":"double" } + ], + "returntype": "bool" + }, + { + "methodname": "SetUserAchievement", + "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ClearUserAchievement", + "methodname_flat": "SteamAPI_ISteamGameServerStats_ClearUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "GSStatsStored_t", + "methodname": "StoreUserStats", + "methodname_flat": "SteamAPI_ISteamGameServerStats_StoreUserStats", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + } + ], + "version_string": "SteamGameServerStats001" + }, + { + "classname": "ISteamNetworkingFakeUDPPort", + "fields": [], + "methods": [ + { + "methodname": "DestroyFakeUDPPort", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_DestroyFakeUDPPort", + "params": [], + "returntype": "void" + }, + { + "methodname": "SendMessageToFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_SendMessageToFakeIP", + "params": [ + { "paramname":"remoteAddress", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"pData", "paramtype":"const void *" }, + { "paramname":"cbData", "paramtype":"uint32" }, + { "paramname":"nSendFlags", "paramtype":"int" } + ], + "returntype": "EResult" + }, + { + "methodname": "ReceiveMessages", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_ReceiveMessages", + "params": [ + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "ScheduleCleanup", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_ScheduleCleanup", + "params": [ + { "paramname":"remoteAddress", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "void" + } + ] + } + ], + "structs": [ + { + "fields": [ + { "fieldname":"m_rgubIPv6", "fieldtype":"uint8 [16]" }, + { "fieldname":"m_eType", "fieldtype":"ESteamIPType" } + ], + "methods": [ + { + "methodname": "IsSet", + "methodname_flat": "SteamAPI_SteamIPAddress_t_IsSet", + "params": [], + "returntype": "bool" + } + ], + "struct": "SteamIPAddress_t" + }, + { + "fields": [ + { "fieldname":"m_gameID", "fieldtype":"CGameID" }, + { "fieldname":"m_unGameIP", "fieldtype":"uint32" }, + { "fieldname":"m_usGamePort", "fieldtype":"uint16" }, + { "fieldname":"m_usQueryPort", "fieldtype":"uint16" }, + { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" } + ], + "struct": "FriendGameInfo_t" + }, + { + "fields": [ + { "fieldname":"m_szKey", "fieldtype":"char [256]" }, + { "fieldname":"m_szValue", "fieldtype":"char [256]" } + ], + "methods": [ + { + "methodname": "Construct", + "methodname_flat": "SteamAPI_MatchMakingKeyValuePair_t_Construct", + "params": [], + "returntype": "void" + } + ], + "struct": "MatchMakingKeyValuePair_t" + }, + { + "fields": [ + { + "fieldname": "m_usConnectionPort", + "fieldtype": "uint16", + "private": true + }, + { + "fieldname": "m_usQueryPort", + "fieldtype": "uint16", + "private": true + }, + { + "fieldname": "m_unIP", + "fieldtype": "uint32", + "private": true + } + ], + "methods": [ + { + "methodname": "Construct", + "methodname_flat": "SteamAPI_servernetadr_t_Construct", + "params": [], + "returntype": "void" + }, + { + "methodname": "Init", + "methodname_flat": "SteamAPI_servernetadr_t_Init", + "params": [ + { "paramname":"ip", "paramtype":"unsigned int" }, + { "paramname":"usQueryPort", "paramtype":"uint16" }, + { "paramname":"usConnectionPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetQueryPort", + "methodname_flat": "SteamAPI_servernetadr_t_GetQueryPort", + "params": [], + "returntype": "uint16" + }, + { + "methodname": "SetQueryPort", + "methodname_flat": "SteamAPI_servernetadr_t_SetQueryPort", + "params": [ + { "paramname":"usPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetConnectionPort", + "methodname_flat": "SteamAPI_servernetadr_t_GetConnectionPort", + "params": [], + "returntype": "uint16" + }, + { + "methodname": "SetConnectionPort", + "methodname_flat": "SteamAPI_servernetadr_t_SetConnectionPort", + "params": [ + { "paramname":"usPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetIP", + "methodname_flat": "SteamAPI_servernetadr_t_GetIP", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetIP", + "methodname_flat": "SteamAPI_servernetadr_t_SetIP", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "GetConnectionAddressString", + "methodname_flat": "SteamAPI_servernetadr_t_GetConnectionAddressString", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "GetQueryAddressString", + "methodname_flat": "SteamAPI_servernetadr_t_GetQueryAddressString", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "operator<", + "methodname_flat": "SteamAPI_servernetadr_t_IsLessThan", + "params": [ + { "paramname":"netadr", "paramtype":"const servernetadr_t &" } + ], + "returntype": "bool" + }, + { + "methodname": "operator=", + "methodname_flat": "SteamAPI_servernetadr_t_Assign", + "params": [ + { "paramname":"that", "paramtype":"const servernetadr_t &" } + ], + "returntype": "void" + } + ], + "struct": "servernetadr_t" + }, + { + "fields": [ + { "fieldname":"m_NetAdr", "fieldtype":"servernetadr_t" }, + { "fieldname":"m_nPing", "fieldtype":"int" }, + { "fieldname":"m_bHadSuccessfulResponse", "fieldtype":"bool" }, + { "fieldname":"m_bDoNotRefresh", "fieldtype":"bool" }, + { "fieldname":"m_szGameDir", "fieldtype":"char [32]" }, + { "fieldname":"m_szMap", "fieldtype":"char [32]" }, + { "fieldname":"m_szGameDescription", "fieldtype":"char [64]" }, + { "fieldname":"m_nAppID", "fieldtype":"uint32" }, + { "fieldname":"m_nPlayers", "fieldtype":"int" }, + { "fieldname":"m_nMaxPlayers", "fieldtype":"int" }, + { "fieldname":"m_nBotPlayers", "fieldtype":"int" }, + { "fieldname":"m_bPassword", "fieldtype":"bool" }, + { "fieldname":"m_bSecure", "fieldtype":"bool" }, + { "fieldname":"m_ulTimeLastPlayed", "fieldtype":"uint32" }, + { "fieldname":"m_nServerVersion", "fieldtype":"int" }, + { + "fieldname": "m_szServerName", + "fieldtype": "char [64]", + "private": true + }, + { "fieldname":"m_szGameTags", "fieldtype":"char [128]" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" } + ], + "methods": [ + { + "methodname": "Construct", + "methodname_flat": "SteamAPI_gameserveritem_t_Construct", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetName", + "methodname_flat": "SteamAPI_gameserveritem_t_GetName", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "SetName", + "methodname_flat": "SteamAPI_gameserveritem_t_SetName", + "params": [ + { "paramname":"pName", "paramtype":"const char *" } + ], + "returntype": "void" + } + ], + "struct": "gameserveritem_t" + }, + { + "fields": [ + { "fieldname":"m_eType", "fieldtype":"ESteamPartyBeaconLocationType" }, + { "fieldname":"m_ulLocationID", "fieldtype":"uint64" } + ], + "struct": "SteamPartyBeaconLocation_t" + }, + { + "fields": [ + { "fieldname":"m_ppStrings", "fieldtype":"const char **" }, + { "fieldname":"m_nNumStrings", "fieldtype":"int32" } + ], + "struct": "SteamParamStringArray_t" + }, + { + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_nGlobalRank", "fieldtype":"int32" }, + { "fieldname":"m_nScore", "fieldtype":"int32" }, + { "fieldname":"m_cDetails", "fieldtype":"int32" }, + { "fieldname":"m_hUGC", "fieldtype":"UGCHandle_t" } + ], + "struct": "LeaderboardEntry_t" + }, + { + "fields": [ + { "fieldname":"m_bConnectionActive", "fieldtype":"uint8" }, + { "fieldname":"m_bConnecting", "fieldtype":"uint8" }, + { "fieldname":"m_eP2PSessionError", "fieldtype":"uint8" }, + { "fieldname":"m_bUsingRelay", "fieldtype":"uint8" }, + { "fieldname":"m_nBytesQueuedForSend", "fieldtype":"int32" }, + { "fieldname":"m_nPacketsQueuedForSend", "fieldtype":"int32" }, + { "fieldname":"m_nRemoteIP", "fieldtype":"uint32" }, + { "fieldname":"m_nRemotePort", "fieldtype":"uint16" } + ], + "struct": "P2PSessionState_t" + }, + { + "fields": [ + { "fieldname":"eMode", "fieldtype":"EInputSourceMode" }, + { "fieldname":"x", "fieldtype":"float" }, + { "fieldname":"y", "fieldtype":"float" }, + { "fieldname":"bActive", "fieldtype":"bool" } + ], + "struct": "InputAnalogActionData_t" + }, + { + "fields": [ + { "fieldname":"bState", "fieldtype":"bool" }, + { "fieldname":"bActive", "fieldtype":"bool" } + ], + "struct": "InputDigitalActionData_t" + }, + { + "fields": [ + { "fieldname":"rotQuatX", "fieldtype":"float" }, + { "fieldname":"rotQuatY", "fieldtype":"float" }, + { "fieldname":"rotQuatZ", "fieldtype":"float" }, + { "fieldname":"rotQuatW", "fieldtype":"float" }, + { "fieldname":"posAccelX", "fieldtype":"float" }, + { "fieldname":"posAccelY", "fieldtype":"float" }, + { "fieldname":"posAccelZ", "fieldtype":"float" }, + { "fieldname":"rotVelX", "fieldtype":"float" }, + { "fieldname":"rotVelY", "fieldtype":"float" }, + { "fieldname":"rotVelZ", "fieldtype":"float" } + ], + "struct": "InputMotionData_t" + }, + { + "fields": [ + { "fieldname":"controllerHandle", "fieldtype":"InputHandle_t" }, + { "fieldname":"eEventType", "fieldtype":"ESteamInputActionEventType" }, + { "fieldname":"analogAction", "fieldtype":"SteamInputActionEvent_t::AnalogAction_t" } + ], + "struct": "SteamInputActionEvent_t" + }, + { + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_eFileType", "fieldtype":"EWorkshopFileType" }, + { "fieldname":"m_nCreatorAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nConsumerAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rgchTitle", "fieldtype":"char [129]" }, + { "fieldname":"m_rgchDescription", "fieldtype":"char [8000]" }, + { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" }, + { "fieldname":"m_rtimeCreated", "fieldtype":"uint32" }, + { "fieldname":"m_rtimeUpdated", "fieldtype":"uint32" }, + { "fieldname":"m_rtimeAddedToUserList", "fieldtype":"uint32" }, + { "fieldname":"m_eVisibility", "fieldtype":"ERemoteStoragePublishedFileVisibility" }, + { "fieldname":"m_bBanned", "fieldtype":"bool" }, + { "fieldname":"m_bAcceptedForUse", "fieldtype":"bool" }, + { "fieldname":"m_bTagsTruncated", "fieldtype":"bool" }, + { "fieldname":"m_rgchTags", "fieldtype":"char [1025]" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_hPreviewFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, + { "fieldname":"m_nFileSize", "fieldtype":"int32" }, + { "fieldname":"m_nPreviewFileSize", "fieldtype":"int32" }, + { "fieldname":"m_rgchURL", "fieldtype":"char [256]" }, + { "fieldname":"m_unVotesUp", "fieldtype":"uint32" }, + { "fieldname":"m_unVotesDown", "fieldtype":"uint32" }, + { "fieldname":"m_flScore", "fieldtype":"float" }, + { "fieldname":"m_unNumChildren", "fieldtype":"uint32" } + ], + "struct": "SteamUGCDetails_t" + }, + { + "fields": [ + { "fieldname":"m_itemId", "fieldtype":"SteamItemInstanceID_t" }, + { "fieldname":"m_iDefinition", "fieldtype":"SteamItemDef_t" }, + { "fieldname":"m_unQuantity", "fieldtype":"uint16" }, + { "fieldname":"m_unFlags", "fieldtype":"uint16" } + ], + "struct": "SteamItemDetails_t" + }, + { + "consts": [ + { "constname":"k_cchMaxString", "consttype":"int", "constval":"48" } + ], + "fields": [ + { "fieldname":"m_ipv6", "fieldtype":"uint8 [16]" }, + { "fieldname":"m_port", "fieldtype":"uint16" } + ], + "methods": [ + { + "methodname": "Clear", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_Clear", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsIPv6AllZeros", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetIPv6", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv6", + "params": [ + { "paramname":"ipv6", "paramtype":"const uint8 *" }, + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "SetIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv4", + "params": [ + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "IsIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsIPv4", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_GetIPv4", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetIPv6LocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost", + "params": [ + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "IsLocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsLocalHost", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ToString", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_ToString", + "params": [ + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" }, + { "paramname":"bWithPort", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "ParseString", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_ParseString", + "params": [ + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "operator==", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", + "params": [ + { "paramname":"x", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFakeIPType", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_GetFakeIPType", + "params": [], + "returntype": "ESteamNetworkingFakeIPType" + }, + { + "methodname": "IsFakeIP", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsFakeIP", + "params": [], + "returntype": "bool" + } + ], + "struct": "SteamNetworkingIPAddr" + }, + { + "consts": [ + { "constname":"k_cchMaxString", "consttype":"int", "constval":"128" }, + { "constname":"k_cchMaxGenericString", "consttype":"int", "constval":"32" }, + { "constname":"k_cchMaxXboxPairwiseID", "consttype":"int", "constval":"33" }, + { "constname":"k_cbMaxGenericBytes", "consttype":"int", "constval":"32" } + ], + "fields": [ + { "fieldname":"m_eType", "fieldtype":"ESteamNetworkingIdentityType" }, + { "fieldname":"m_cbSize", "fieldtype":"int" }, + { "fieldname":"m_szUnknownRawString", "fieldtype":"char [128]" } + ], + "methods": [ + { + "methodname": "Clear", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_Clear", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsInvalid", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsInvalid", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetSteamID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetSteamID", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetSteamID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetSteamID", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SetSteamID64", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetSteamID64", + "params": [ + { "paramname":"steamID", "paramtype":"uint64" } + ], + "returntype": "void" + }, + { + "methodname": "GetSteamID64", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetSteamID64", + "params": [], + "returntype": "uint64" + }, + { + "methodname": "SetXboxPairwiseID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetXboxPairwiseID", + "params": [ + { "paramname":"pszString", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetXboxPairwiseID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetXboxPairwiseID", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "SetPSNID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetPSNID", + "params": [ + { "paramname":"id", "paramtype":"uint64" } + ], + "returntype": "void" + }, + { + "methodname": "GetPSNID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetPSNID", + "params": [], + "returntype": "uint64" + }, + { + "methodname": "SetStadiaID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetStadiaID", + "params": [ + { "paramname":"id", "paramtype":"uint64" } + ], + "returntype": "void" + }, + { + "methodname": "GetStadiaID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetStadiaID", + "params": [], + "returntype": "uint64" + }, + { + "methodname": "SetIPAddr", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetIPAddr", + "params": [ + { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "void" + }, + { + "methodname": "GetIPAddr", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetIPAddr", + "params": [], + "returntype": "const SteamNetworkingIPAddr *" + }, + { + "methodname": "SetIPv4Addr", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetIPv4Addr", + "params": [ + { "paramname":"nIPv4", "paramtype":"uint32" }, + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetIPv4", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetFakeIPType", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetFakeIPType", + "params": [], + "returntype": "ESteamNetworkingFakeIPType" + }, + { + "methodname": "IsFakeIP", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsFakeIP", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetLocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetLocalHost", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsLocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsLocalHost", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetGenericString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetGenericString", + "params": [ + { "paramname":"pszString", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGenericString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetGenericString", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "SetGenericBytes", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetGenericBytes", + "params": [ + { "paramname":"data", "paramtype":"const void *" }, + { "paramname":"cbLen", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGenericBytes", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetGenericBytes", + "params": [ + { "paramname":"cbLen", "paramtype":"int &" } + ], + "returntype": "const uint8 *" + }, + { + "methodname": "operator==", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsEqualTo", + "params": [ + { "paramname":"x", "paramtype":"const SteamNetworkingIdentity &" } + ], + "returntype": "bool" + }, + { + "methodname": "ToString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_ToString", + "params": [ + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "ParseString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_ParseString", + "params": [ + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + } + ], + "struct": "SteamNetworkingIdentity" + }, + { + "fields": [ + { "fieldname":"m_identityRemote", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_nUserData", "fieldtype":"int64" }, + { "fieldname":"m_hListenSocket", "fieldtype":"HSteamListenSocket" }, + { "fieldname":"m_addrRemote", "fieldtype":"SteamNetworkingIPAddr" }, + { "fieldname":"m__pad1", "fieldtype":"uint16" }, + { "fieldname":"m_idPOPRemote", "fieldtype":"SteamNetworkingPOPID" }, + { "fieldname":"m_idPOPRelay", "fieldtype":"SteamNetworkingPOPID" }, + { "fieldname":"m_eState", "fieldtype":"ESteamNetworkingConnectionState" }, + { "fieldname":"m_eEndReason", "fieldtype":"int" }, + { "fieldname":"m_szEndDebug", "fieldtype":"char [128]" }, + { "fieldname":"m_szConnectionDescription", "fieldtype":"char [128]" }, + { "fieldname":"m_nFlags", "fieldtype":"int" }, + { "fieldname":"reserved", "fieldtype":"uint32 [63]" } + ], + "struct": "SteamNetConnectionInfo_t" + }, + { + "fields": [ + { "fieldname":"m_eState", "fieldtype":"ESteamNetworkingConnectionState" }, + { "fieldname":"m_nPing", "fieldtype":"int" }, + { "fieldname":"m_flConnectionQualityLocal", "fieldtype":"float" }, + { "fieldname":"m_flConnectionQualityRemote", "fieldtype":"float" }, + { "fieldname":"m_flOutPacketsPerSec", "fieldtype":"float" }, + { "fieldname":"m_flOutBytesPerSec", "fieldtype":"float" }, + { "fieldname":"m_flInPacketsPerSec", "fieldtype":"float" }, + { "fieldname":"m_flInBytesPerSec", "fieldtype":"float" }, + { "fieldname":"m_nSendRateBytesPerSecond", "fieldtype":"int" }, + { "fieldname":"m_cbPendingUnreliable", "fieldtype":"int" }, + { "fieldname":"m_cbPendingReliable", "fieldtype":"int" }, + { "fieldname":"m_cbSentUnackedReliable", "fieldtype":"int" }, + { "fieldname":"m_usecQueueTime", "fieldtype":"SteamNetworkingMicroseconds" }, + { "fieldname":"reserved", "fieldtype":"uint32 [16]" } + ], + "struct": "SteamNetConnectionRealTimeStatus_t" + }, + { + "fields": [ + { "fieldname":"m_cbPendingUnreliable", "fieldtype":"int" }, + { "fieldname":"m_cbPendingReliable", "fieldtype":"int" }, + { "fieldname":"m_cbSentUnackedReliable", "fieldtype":"int" }, + { "fieldname":"_reservePad1", "fieldtype":"int" }, + { "fieldname":"m_usecQueueTime", "fieldtype":"SteamNetworkingMicroseconds" }, + { "fieldname":"reserved", "fieldtype":"uint32 [10]" } + ], + "struct": "SteamNetConnectionRealTimeLaneStatus_t" + }, + { + "fields": [ + { "fieldname":"m_pData", "fieldtype":"void *" }, + { "fieldname":"m_cbSize", "fieldtype":"int" }, + { "fieldname":"m_conn", "fieldtype":"HSteamNetConnection" }, + { "fieldname":"m_identityPeer", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_nConnUserData", "fieldtype":"int64" }, + { "fieldname":"m_usecTimeReceived", "fieldtype":"SteamNetworkingMicroseconds" }, + { "fieldname":"m_nMessageNumber", "fieldtype":"int64" }, + { "fieldname":"m_pfnFreeData", "fieldtype":"void (*)(SteamNetworkingMessage_t *)" }, + { "fieldname":"m_pfnRelease", "fieldtype":"void (*)(SteamNetworkingMessage_t *)" }, + { "fieldname":"m_nChannel", "fieldtype":"int" }, + { "fieldname":"m_nFlags", "fieldtype":"int" }, + { "fieldname":"m_nUserData", "fieldtype":"int64" }, + { "fieldname":"m_idxLane", "fieldtype":"uint16" }, + { "fieldname":"_pad1__", "fieldtype":"uint16" } + ], + "methods": [ + { + "methodname": "Release", + "methodname_flat": "SteamAPI_SteamNetworkingMessage_t_Release", + "params": [], + "returntype": "void" + } + ], + "struct": "SteamNetworkingMessage_t" + }, + { + "fields": [ + { "fieldname":"m_data", "fieldtype":"uint8 [512]" } + ], + "struct": "SteamNetworkPingLocation_t" + }, + { + "fields": [ + { "fieldname":"m_eValue", "fieldtype":"ESteamNetworkingConfigValue" }, + { "fieldname":"m_eDataType", "fieldtype":"ESteamNetworkingConfigDataType" }, + { "fieldname":"m_int64", "fieldtype":"int64_t" } + ], + "methods": [ + { + "methodname": "SetInt32", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetInt32", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"int32_t" } + ], + "returntype": "void" + }, + { + "methodname": "SetInt64", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetInt64", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"int64_t" } + ], + "returntype": "void" + }, + { + "methodname": "SetFloat", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetFloat", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "SetPtr", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetPtr", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"void *" } + ], + "returntype": "void" + }, + { + "methodname": "SetString", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetString", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"const char *" } + ], + "returntype": "void" + } + ], + "struct": "SteamNetworkingConfigValue_t" + }, + { + "fields": [ + { "fieldname":"m_cbSize", "fieldtype":"int" }, + { "fieldname":"m_data", "fieldtype":"char [128]" } + ], + "methods": [ + { + "methodname": "Clear", + "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_Clear", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetPopID", + "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_GetPopID", + "params": [], + "returntype": "SteamNetworkingPOPID" + }, + { + "methodname": "SetDevAddress", + "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_SetDevAddress", + "params": [ + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nPort", "paramtype":"uint16" }, + { "paramname":"popid", "paramtype":"SteamNetworkingPOPID" } + ], + "returntype": "void" + } + ], + "struct": "SteamDatagramHostedAddress" + }, + { + "fields": [ + { "fieldname":"m_identity", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_routing", "fieldtype":"SteamDatagramHostedAddress" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rtime", "fieldtype":"RTime32" }, + { "fieldname":"m_cbAppData", "fieldtype":"int" }, + { "fieldname":"m_appData", "fieldtype":"char [2048]" } + ], + "struct": "SteamDatagramGameCoordinatorServerLogin" + } + ], + "typedefs": [ + { "typedef":"uint8", "type":"unsigned char" }, + { "typedef":"int8", "type":"signed char" }, + { "typedef":"int16", "type":"short" }, + { "typedef":"uint16", "type":"unsigned short" }, + { "typedef":"int32", "type":"int" }, + { "typedef":"uint32", "type":"unsigned int" }, + { "typedef":"int64", "type":"long long" }, + { "typedef":"uint64", "type":"unsigned long long" }, + { "typedef":"lint64", "type":"long long" }, + { "typedef":"ulint64", "type":"unsigned long long" }, + { "typedef":"intp", "type":"long long" }, + { "typedef":"uintp", "type":"unsigned long long" }, + { "typedef":"AppId_t", "type":"unsigned int" }, + { "typedef":"DepotId_t", "type":"unsigned int" }, + { "typedef":"RTime32", "type":"unsigned int" }, + { "typedef":"SteamAPICall_t", "type":"unsigned long long" }, + { "typedef":"AccountID_t", "type":"unsigned int" }, + { "typedef":"PartyBeaconID_t", "type":"unsigned long long" }, + { "typedef":"HAuthTicket", "type":"unsigned int" }, + { "typedef":"PFNPreMinidumpCallback", "type":"void (*)(void *)" }, + { "typedef":"HSteamPipe", "type":"int" }, + { "typedef":"HSteamUser", "type":"int" }, + { "typedef":"FriendsGroupID_t", "type":"short" }, + { "typedef":"HServerListRequest", "type":"void *" }, + { "typedef":"HServerQuery", "type":"int" }, + { "typedef":"UGCHandle_t", "type":"unsigned long long" }, + { "typedef":"PublishedFileUpdateHandle_t", "type":"unsigned long long" }, + { "typedef":"PublishedFileId_t", "type":"unsigned long long" }, + { "typedef":"UGCFileWriteStreamHandle_t", "type":"unsigned long long" }, + { "typedef":"SteamLeaderboard_t", "type":"unsigned long long" }, + { "typedef":"SteamLeaderboardEntries_t", "type":"unsigned long long" }, + { "typedef":"SNetSocket_t", "type":"unsigned int" }, + { "typedef":"SNetListenSocket_t", "type":"unsigned int" }, + { "typedef":"ScreenshotHandle", "type":"unsigned int" }, + { "typedef":"HTTPRequestHandle", "type":"unsigned int" }, + { "typedef":"HTTPCookieContainerHandle", "type":"unsigned int" }, + { "typedef":"InputHandle_t", "type":"unsigned long long" }, + { "typedef":"InputActionSetHandle_t", "type":"unsigned long long" }, + { "typedef":"InputDigitalActionHandle_t", "type":"unsigned long long" }, + { "typedef":"InputAnalogActionHandle_t", "type":"unsigned long long" }, + { "typedef":"SteamInputActionEventCallbackPointer", "type":"void (*)(SteamInputActionEvent_t *)" }, + { "typedef":"ControllerHandle_t", "type":"unsigned long long" }, + { "typedef":"ControllerActionSetHandle_t", "type":"unsigned long long" }, + { "typedef":"ControllerDigitalActionHandle_t", "type":"unsigned long long" }, + { "typedef":"ControllerAnalogActionHandle_t", "type":"unsigned long long" }, + { "typedef":"UGCQueryHandle_t", "type":"unsigned long long" }, + { "typedef":"UGCUpdateHandle_t", "type":"unsigned long long" }, + { "typedef":"HHTMLBrowser", "type":"unsigned int" }, + { "typedef":"SteamItemInstanceID_t", "type":"unsigned long long" }, + { "typedef":"SteamItemDef_t", "type":"int" }, + { "typedef":"SteamInventoryResult_t", "type":"int" }, + { "typedef":"SteamInventoryUpdateHandle_t", "type":"unsigned long long" }, + { "typedef":"RemotePlaySessionID_t", "type":"unsigned int" }, + { "typedef":"FnSteamNetConnectionStatusChanged", "type":"void (*)(SteamNetConnectionStatusChangedCallback_t *)" }, + { "typedef":"FnSteamNetAuthenticationStatusChanged", "type":"void (*)(SteamNetAuthenticationStatus_t *)" }, + { "typedef":"FnSteamRelayNetworkStatusChanged", "type":"void (*)(SteamRelayNetworkStatus_t *)" }, + { "typedef":"FnSteamNetworkingMessagesSessionRequest", "type":"void (*)(SteamNetworkingMessagesSessionRequest_t *)" }, + { "typedef":"FnSteamNetworkingMessagesSessionFailed", "type":"void (*)(SteamNetworkingMessagesSessionFailed_t *)" }, + { "typedef":"FnSteamNetworkingFakeIPResult", "type":"void (*)(SteamNetworkingFakeIPResult_t *)" }, + { "typedef":"HSteamNetConnection", "type":"unsigned int" }, + { "typedef":"HSteamListenSocket", "type":"unsigned int" }, + { "typedef":"HSteamNetPollGroup", "type":"unsigned int" }, + { "typedef":"SteamNetworkingErrMsg", "type":"char [1024]" }, + { "typedef":"SteamNetworkingPOPID", "type":"unsigned int" }, + { "typedef":"SteamNetworkingMicroseconds", "type":"long long" }, + { "typedef":"FSteamNetworkingSocketsDebugOutput", "type":"void (*)(ESteamNetworkingSocketsDebugOutputType, const char *)" } + ] } -,{ - "classname": "ISteamClient", - "methodname": "BReleaseSteamPipe", - "returntype": "bool", - "params": [ -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "ConnectToGlobalUser", - "returntype": "HSteamUser", - "params": [ -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "CreateLocalUser", - "returntype": "HSteamUser", - "params": [ -{ "paramname": "phSteamPipe" ,"paramtype": "HSteamPipe *"}, -{ "paramname": "eAccountType" ,"paramtype": "EAccountType"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "ReleaseUser", - "returntype": "void", - "params": [ -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "hUser" ,"paramtype": "HSteamUser"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamUser", - "returntype": "class ISteamUser *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamGameServer", - "returntype": "class ISteamGameServer *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "SetLocalIPBinding", - "returntype": "void", - "params": [ -{ "paramname": "unIP" ,"paramtype": "uint32"}, -{ "paramname": "usPort" ,"paramtype": "uint16"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamFriends", - "returntype": "class ISteamFriends *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamUtils", - "returntype": "class ISteamUtils *", - "params": [ -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamMatchmaking", - "returntype": "class ISteamMatchmaking *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamMatchmakingServers", - "returntype": "class ISteamMatchmakingServers *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamGenericInterface", - "returntype": "void *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamUserStats", - "returntype": "class ISteamUserStats *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamGameServerStats", - "returntype": "class ISteamGameServerStats *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamApps", - "returntype": "class ISteamApps *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamNetworking", - "returntype": "class ISteamNetworking *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamRemoteStorage", - "returntype": "class ISteamRemoteStorage *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamScreenshots", - "returntype": "class ISteamScreenshots *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamGameSearch", - "returntype": "class ISteamGameSearch *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetIPCCallCount", - "returntype": "uint32" -} -,{ - "classname": "ISteamClient", - "methodname": "SetWarningMessageHook", - "returntype": "void", - "params": [ -{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "BShutdownIfAllPipesClosed", - "returntype": "bool" -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamHTTP", - "returntype": "class ISteamHTTP *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamController", - "returntype": "class ISteamController *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamUGC", - "returntype": "class ISteamUGC *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamAppList", - "returntype": "class ISteamAppList *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamMusic", - "returntype": "class ISteamMusic *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamMusicRemote", - "returntype": "class ISteamMusicRemote *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamHTMLSurface", - "returntype": "class ISteamHTMLSurface *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamInventory", - "returntype": "class ISteamInventory *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamVideo", - "returntype": "class ISteamVideo *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamParentalSettings", - "returntype": "class ISteamParentalSettings *", - "params": [ -{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamInput", - "returntype": "class ISteamInput *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "GetISteamParties", - "returntype": "class ISteamParties *", - "params": [ -{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, -{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, -{ "paramname": "pchVersion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "GetHSteamUser", - "returntype": "HSteamUser" -} -,{ - "classname": "ISteamUser", - "methodname": "BLoggedOn", - "returntype": "bool" -} -,{ - "classname": "ISteamUser", - "methodname": "GetSteamID", - "returntype": "class CSteamID" -} -,{ - "classname": "ISteamUser", - "methodname": "InitiateGameConnection", - "returntype": "int", - "params": [ -{ "paramname": "pAuthBlob" ,"paramtype": "void *"}, -{ "paramname": "cbMaxAuthBlob" ,"paramtype": "int"}, -{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, -{ "paramname": "unIPServer" ,"paramtype": "uint32"}, -{ "paramname": "usPortServer" ,"paramtype": "uint16"}, -{ "paramname": "bSecure" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "TerminateGameConnection", - "returntype": "void", - "params": [ -{ "paramname": "unIPServer" ,"paramtype": "uint32"}, -{ "paramname": "usPortServer" ,"paramtype": "uint16"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "TrackAppUsageEvent", - "returntype": "void", - "params": [ -{ "paramname": "gameID" ,"paramtype": "class CGameID"}, -{ "paramname": "eAppUsageEvent" ,"paramtype": "int"}, -{ "paramname": "pchExtraInfo" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "GetUserDataFolder", - "returntype": "bool", - "params": [ -{ "paramname": "pchBuffer" ,"paramtype": "char *"}, -{ "paramname": "cubBuffer" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "StartVoiceRecording", - "returntype": "void" -} -,{ - "classname": "ISteamUser", - "methodname": "StopVoiceRecording", - "returntype": "void" -} -,{ - "classname": "ISteamUser", - "methodname": "GetAvailableVoice", - "returntype": "EVoiceResult", - "params": [ -{ "paramname": "pcbCompressed" ,"paramtype": "uint32 *"}, -{ "paramname": "pcbUncompressed_Deprecated" ,"paramtype": "uint32 *"}, -{ "paramname": "nUncompressedVoiceDesiredSampleRate_Deprecated" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "GetVoice", - "returntype": "EVoiceResult", - "params": [ -{ "paramname": "bWantCompressed" ,"paramtype": "bool"}, -{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, -{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, -{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, -{ "paramname": "bWantUncompressed_Deprecated" ,"paramtype": "bool"}, -{ "paramname": "pUncompressedDestBuffer_Deprecated" ,"paramtype": "void *"}, -{ "paramname": "cbUncompressedDestBufferSize_Deprecated" ,"paramtype": "uint32"}, -{ "paramname": "nUncompressBytesWritten_Deprecated" ,"paramtype": "uint32 *"}, -{ "paramname": "nUncompressedVoiceDesiredSampleRate_Deprecated" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "DecompressVoice", - "returntype": "EVoiceResult", - "params": [ -{ "paramname": "pCompressed" ,"paramtype": "const void *"}, -{ "paramname": "cbCompressed" ,"paramtype": "uint32"}, -{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, -{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, -{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, -{ "paramname": "nDesiredSampleRate" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "GetVoiceOptimalSampleRate", - "returntype": "uint32" -} -,{ - "classname": "ISteamUser", - "methodname": "GetAuthSessionTicket", - "returntype": "HAuthTicket", - "params": [ -{ "paramname": "pTicket" ,"paramtype": "void *"}, -{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, -{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "BeginAuthSession", - "returntype": "EBeginAuthSessionResult", - "params": [ -{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, -{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "EndAuthSession", - "returntype": "void", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "CancelAuthTicket", - "returntype": "void", - "params": [ -{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "UserHasLicenseForApp", - "returntype": "EUserHasLicenseForAppResult", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, -{ "paramname": "appID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "BIsBehindNAT", - "returntype": "bool" -} -,{ - "classname": "ISteamUser", - "methodname": "AdvertiseGame", - "returntype": "void", - "params": [ -{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, -{ "paramname": "unIPServer" ,"paramtype": "uint32"}, -{ "paramname": "usPortServer" ,"paramtype": "uint16"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "RequestEncryptedAppTicket", "callresult": "EncryptedAppTicketResponse_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pDataToInclude" ,"paramtype": "void *"}, -{ "paramname": "cbDataToInclude" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "GetEncryptedAppTicket", - "returntype": "bool", - "params": [ -{ "paramname": "pTicket" ,"paramtype": "void *"}, -{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, -{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "GetGameBadgeLevel", - "returntype": "int", - "params": [ -{ "paramname": "nSeries" ,"paramtype": "int"}, -{ "paramname": "bFoil" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "GetPlayerSteamLevel", - "returntype": "int" -} -,{ - "classname": "ISteamUser", - "methodname": "RequestStoreAuthURL", "callresult": "StoreAuthURLResponse_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchRedirectURL" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUser", - "methodname": "BIsPhoneVerified", - "returntype": "bool" -} -,{ - "classname": "ISteamUser", - "methodname": "BIsTwoFactorEnabled", - "returntype": "bool" -} -,{ - "classname": "ISteamUser", - "methodname": "BIsPhoneIdentifying", - "returntype": "bool" -} -,{ - "classname": "ISteamUser", - "methodname": "BIsPhoneRequiringVerification", - "returntype": "bool" -} -,{ - "classname": "ISteamUser", - "methodname": "GetMarketEligibility", "callresult": "MarketEligibilityResponse_t", - "returntype": "SteamAPICall_t" -} -,{ - "classname": "ISteamFriends", - "methodname": "GetPersonaName", - "returntype": "const char *" -} -,{ - "classname": "ISteamFriends", - "methodname": "SetPersonaName", "callresult": "SetPersonaNameResponse_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchPersonaName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetPersonaState", - "returntype": "EPersonaState" -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendCount", - "returntype": "int", - "params": [ -{ "paramname": "iFriendFlags" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendByIndex", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "iFriend" ,"paramtype": "int"}, -{ "paramname": "iFriendFlags" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendRelationship", - "returntype": "EFriendRelationship", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendPersonaState", - "returntype": "EPersonaState", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendPersonaName", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendGamePlayed", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "pFriendGameInfo" ,"out_struct": " " ,"paramtype": "struct FriendGameInfo_t *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendPersonaNameHistory", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "iPersonaName" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendSteamLevel", - "returntype": "int", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetPlayerNickname", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDPlayer" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendsGroupCount", - "returntype": "int" -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendsGroupIDByIndex", - "returntype": "FriendsGroupID_t", - "params": [ -{ "paramname": "iFG" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendsGroupName", - "returntype": "const char *", - "params": [ -{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendsGroupMembersCount", - "returntype": "int", - "params": [ -{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendsGroupMembersList", - "returntype": "void", - "params": [ -{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"}, -{ "paramname": "pOutSteamIDMembers" ,"out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID" ,"paramtype": "class CSteamID *"}, -{ "paramname": "nMembersCount" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "HasFriend", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "iFriendFlags" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanCount", - "returntype": "int" -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanByIndex", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "iClan" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanName", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanTag", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanActivityCounts", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, -{ "paramname": "pnOnline" ,"paramtype": "int *"}, -{ "paramname": "pnInGame" ,"paramtype": "int *"}, -{ "paramname": "pnChatting" ,"paramtype": "int *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "DownloadClanActivityCounts", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "psteamIDClans" ,"array_count": "cClansToRequest" ,"paramtype": "class CSteamID *"}, -{ "paramname": "cClansToRequest" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendCountFromSource", - "returntype": "int", - "params": [ -{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendFromSourceByIndex", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"}, -{ "paramname": "iFriend" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "IsUserInSource", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "SetInGameVoiceSpeaking", - "returntype": "void", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "bSpeaking" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "ActivateGameOverlay", - "returntype": "void", - "params": [ -{ "paramname": "pchDialog" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "ActivateGameOverlayToUser", - "returntype": "void", - "params": [ -{ "paramname": "pchDialog" ,"paramtype": "const char *"}, -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "ActivateGameOverlayToWebPage", - "returntype": "void", - "params": [ -{ "paramname": "pchURL" ,"paramtype": "const char *"}, -{ "paramname": "eMode" ,"paramtype": "EActivateGameOverlayToWebPageMode"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "ActivateGameOverlayToStore", - "returntype": "void", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "eFlag" ,"paramtype": "EOverlayToStoreFlag"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "SetPlayedWith", - "returntype": "void", - "params": [ -{ "paramname": "steamIDUserPlayedWith" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "ActivateGameOverlayInviteDialog", - "returntype": "void", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetSmallFriendAvatar", - "returntype": "int", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetMediumFriendAvatar", - "returntype": "int", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetLargeFriendAvatar", - "returntype": "int", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "RequestUserInformation", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "bRequireNameOnly" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "RequestClanOfficerList", "callresult": "ClanOfficerListResponse_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanOwner", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanOfficerCount", - "returntype": "int", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanOfficerByIndex", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, -{ "paramname": "iOfficer" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetUserRestrictions", - "returntype": "uint32" -} -,{ - "classname": "ISteamFriends", - "methodname": "SetRichPresence", - "returntype": "bool", - "params": [ -{ "paramname": "pchKey" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "ClearRichPresence", - "returntype": "void" -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendRichPresence", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendRichPresenceKeyCount", - "returntype": "int", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendRichPresenceKeyByIndex", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "iKey" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "RequestFriendRichPresence", - "returntype": "void", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "InviteUserToGame", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchConnectString" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetCoplayFriendCount", - "returntype": "int" -} -,{ - "classname": "ISteamFriends", - "methodname": "GetCoplayFriend", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "iCoplayFriend" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendCoplayTime", - "returntype": "int", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendCoplayGame", - "returntype": "AppId_t", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "JoinClanChatRoom", "callresult": "JoinClanChatRoomCompletionResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "LeaveClanChatRoom", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanChatMemberCount", - "returntype": "int", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetChatMemberByIndex", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, -{ "paramname": "iUser" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "SendClanChatMessage", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchText" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetClanChatMessage", - "returntype": "int", - "params": [ -{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, -{ "paramname": "iMessage" ,"paramtype": "int"}, -{ "paramname": "prgchText" ,"paramtype": "void *"}, -{ "paramname": "cchTextMax" ,"paramtype": "int"}, -{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"}, -{ "paramname": "psteamidChatter" ,"out_struct": " " ,"paramtype": "class CSteamID *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "IsClanChatAdmin", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "IsClanChatWindowOpenInSteam", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "OpenClanChatWindowInSteam", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "CloseClanChatWindowInSteam", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "SetListenForFriendsMessages", - "returntype": "bool", - "params": [ -{ "paramname": "bInterceptEnabled" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "ReplyToFriendMessage", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchMsgToSend" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFriendMessage", - "returntype": "int", - "params": [ -{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, -{ "paramname": "iMessageID" ,"paramtype": "int"}, -{ "paramname": "pvData" ,"paramtype": "void *"}, -{ "paramname": "cubData" ,"paramtype": "int"}, -{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetFollowerCount", "callresult": "FriendsGetFollowerCount_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "IsFollowing", "callresult": "FriendsIsFollowing_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "EnumerateFollowingList", "callresult": "FriendsEnumerateFollowingList_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unStartIndex" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "IsClanPublic", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "IsClanOfficialGameGroup", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamFriends", - "methodname": "GetNumChatsWithUnreadPriorityMessages", - "returntype": "int" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetSecondsSinceAppActive", - "returntype": "uint32" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetSecondsSinceComputerActive", - "returntype": "uint32" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetConnectedUniverse", - "returntype": "EUniverse" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetServerRealTime", - "returntype": "uint32" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetIPCountry", - "returntype": "const char *" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetImageSize", - "returntype": "bool", - "params": [ -{ "paramname": "iImage" ,"paramtype": "int"}, -{ "paramname": "pnWidth" ,"paramtype": "uint32 *"}, -{ "paramname": "pnHeight" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetImageRGBA", - "returntype": "bool", - "params": [ -{ "paramname": "iImage" ,"paramtype": "int"}, -{ "paramname": "pubDest" ,"paramtype": "uint8 *"}, -{ "paramname": "nDestBufferSize" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetCSERIPPort", - "returntype": "bool", - "params": [ -{ "paramname": "unIP" ,"paramtype": "uint32 *"}, -{ "paramname": "usPort" ,"paramtype": "uint16 *"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetCurrentBatteryPower", - "returntype": "uint8" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetAppID", - "returntype": "uint32" -} -,{ - "classname": "ISteamUtils", - "methodname": "SetOverlayNotificationPosition", - "returntype": "void", - "params": [ -{ "paramname": "eNotificationPosition" ,"paramtype": "ENotificationPosition"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "IsAPICallCompleted", - "returntype": "bool", - "params": [ -{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, -{ "paramname": "pbFailed" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetAPICallFailureReason", - "returntype": "ESteamAPICallFailure", - "params": [ -{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetAPICallResult", - "returntype": "bool", - "params": [ -{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, -{ "paramname": "pCallback" ,"paramtype": "void *"}, -{ "paramname": "cubCallback" ,"paramtype": "int"}, -{ "paramname": "iCallbackExpected" ,"paramtype": "int"}, -{ "paramname": "pbFailed" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetIPCCallCount", - "returntype": "uint32" -} -,{ - "classname": "ISteamUtils", - "methodname": "SetWarningMessageHook", - "returntype": "void", - "params": [ -{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "IsOverlayEnabled", - "returntype": "bool" -} -,{ - "classname": "ISteamUtils", - "methodname": "BOverlayNeedsPresent", - "returntype": "bool" -} -,{ - "classname": "ISteamUtils", - "methodname": "CheckFileSignature", "callresult": "CheckFileSignature_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "szFileName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "ShowGamepadTextInput", - "returntype": "bool", - "params": [ -{ "paramname": "eInputMode" ,"paramtype": "EGamepadTextInputMode"}, -{ "paramname": "eLineInputMode" ,"paramtype": "EGamepadTextInputLineMode"}, -{ "paramname": "pchDescription" ,"paramtype": "const char *"}, -{ "paramname": "unCharMax" ,"paramtype": "uint32"}, -{ "paramname": "pchExistingText" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetEnteredGamepadTextLength", - "returntype": "uint32" -} -,{ - "classname": "ISteamUtils", - "methodname": "GetEnteredGamepadTextInput", - "returntype": "bool", - "params": [ -{ "paramname": "pchText" ,"paramtype": "char *"}, -{ "paramname": "cchText" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "GetSteamUILanguage", - "returntype": "const char *" -} -,{ - "classname": "ISteamUtils", - "methodname": "IsSteamRunningInVR", - "returntype": "bool" -} -,{ - "classname": "ISteamUtils", - "methodname": "SetOverlayNotificationInset", - "returntype": "void", - "params": [ -{ "paramname": "nHorizontalInset" ,"paramtype": "int"}, -{ "paramname": "nVerticalInset" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUtils", - "methodname": "IsSteamInBigPictureMode", - "returntype": "bool" -} -,{ - "classname": "ISteamUtils", - "methodname": "StartVRDashboard", - "returntype": "void" -} -,{ - "classname": "ISteamUtils", - "methodname": "IsVRHeadsetStreamingEnabled", - "returntype": "bool" -} -,{ - "classname": "ISteamUtils", - "methodname": "SetVRHeadsetStreamingEnabled", - "returntype": "void", - "params": [ -{ "paramname": "bEnabled" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetFavoriteGameCount", - "returntype": "int" -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetFavoriteGame", - "returntype": "bool", - "params": [ -{ "paramname": "iGame" ,"paramtype": "int"}, -{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, -{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, -{ "paramname": "pnConnPort" ,"paramtype": "uint16 *"}, -{ "paramname": "pnQueryPort" ,"paramtype": "uint16 *"}, -{ "paramname": "punFlags" ,"paramtype": "uint32 *"}, -{ "paramname": "pRTime32LastPlayedOnServer" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddFavoriteGame", - "returntype": "int", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "nIP" ,"paramtype": "uint32"}, -{ "paramname": "nConnPort" ,"paramtype": "uint16"}, -{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, -{ "paramname": "unFlags" ,"paramtype": "uint32"}, -{ "paramname": "rTime32LastPlayedOnServer" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "RemoveFavoriteGame", - "returntype": "bool", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "nIP" ,"paramtype": "uint32"}, -{ "paramname": "nConnPort" ,"paramtype": "uint16"}, -{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, -{ "paramname": "unFlags" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "RequestLobbyList", "callresult": "LobbyMatchList_t", - "returntype": "SteamAPICall_t" -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddRequestLobbyListStringFilter", - "returntype": "void", - "params": [ -{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, -{ "paramname": "pchValueToMatch" ,"paramtype": "const char *"}, -{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddRequestLobbyListNumericalFilter", - "returntype": "void", - "params": [ -{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, -{ "paramname": "nValueToMatch" ,"paramtype": "int"}, -{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddRequestLobbyListNearValueFilter", - "returntype": "void", - "params": [ -{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, -{ "paramname": "nValueToBeCloseTo" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddRequestLobbyListFilterSlotsAvailable", - "returntype": "void", - "params": [ -{ "paramname": "nSlotsAvailable" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddRequestLobbyListDistanceFilter", - "returntype": "void", - "params": [ -{ "paramname": "eLobbyDistanceFilter" ,"paramtype": "ELobbyDistanceFilter"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddRequestLobbyListResultCountFilter", - "returntype": "void", - "params": [ -{ "paramname": "cMaxResults" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "AddRequestLobbyListCompatibleMembersFilter", - "returntype": "void", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyByIndex", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "iLobby" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "CreateLobby", "callresult": "LobbyCreated_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"}, -{ "paramname": "cMaxMembers" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "JoinLobby", "callresult": "LobbyEnter_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "LeaveLobby", - "returntype": "void", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "InviteUserToLobby", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "steamIDInvitee" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetNumLobbyMembers", - "returntype": "int", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyMemberByIndex", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "iMember" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyData", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLobbyData", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyDataCount", - "returntype": "int", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyDataByIndex", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "iLobbyData" ,"paramtype": "int"}, -{ "paramname": "pchKey" ,"paramtype": "char *"}, -{ "paramname": "cchKeyBufferSize" ,"paramtype": "int"}, -{ "paramname": "pchValue" ,"paramtype": "char *"}, -{ "paramname": "cchValueBufferSize" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "DeleteLobbyData", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyMemberData", - "returntype": "const char *", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLobbyMemberData", - "returntype": "void", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SendLobbyChatMsg", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "pvMsgBody" ,"paramtype": "const void *"}, -{ "paramname": "cubMsgBody" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyChatEntry", - "returntype": "int", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "iChatID" ,"paramtype": "int"}, -{ "paramname": "pSteamIDUser" ,"out_struct": " " ,"paramtype": "class CSteamID *"}, -{ "paramname": "pvData" ,"paramtype": "void *"}, -{ "paramname": "cubData" ,"paramtype": "int"}, -{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "RequestLobbyData", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLobbyGameServer", - "returntype": "void", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "unGameServerIP" ,"paramtype": "uint32"}, -{ "paramname": "unGameServerPort" ,"paramtype": "uint16"}, -{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyGameServer", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "punGameServerIP" ,"paramtype": "uint32 *"}, -{ "paramname": "punGameServerPort" ,"paramtype": "uint16 *"}, -{ "paramname": "psteamIDGameServer" ,"out_struct": " " ,"paramtype": "class CSteamID *"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLobbyMemberLimit", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "cMaxMembers" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyMemberLimit", - "returntype": "int", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLobbyType", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLobbyJoinable", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "bLobbyJoinable" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "GetLobbyOwner", - "returntype": "class CSteamID", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLobbyOwner", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "steamIDNewOwner" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmaking", - "methodname": "SetLinkedLobby", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "steamIDLobbyDependent" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamMatchmakingServerListResponse", - "methodname": "ServerResponded", - "returntype": "void", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, -{ "paramname": "iServer" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmakingServerListResponse", - "methodname": "ServerFailedToRespond", - "returntype": "void", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, -{ "paramname": "iServer" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmakingServerListResponse", - "methodname": "RefreshComplete", - "returntype": "void", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, -{ "paramname": "response" ,"paramtype": "EMatchMakingServerResponse"} - ] -} -,{ - "classname": "ISteamMatchmakingPingResponse", - "methodname": "ServerResponded", - "returntype": "void", - "params": [ -{ "paramname": "server" ,"paramtype": "class gameserveritem_t &"} - ] -} -,{ - "classname": "ISteamMatchmakingPingResponse", - "methodname": "ServerFailedToRespond", - "returntype": "void" -} -,{ - "classname": "ISteamMatchmakingPlayersResponse", - "methodname": "AddPlayerToList", - "returntype": "void", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "nScore" ,"paramtype": "int"}, -{ "paramname": "flTimePlayed" ,"paramtype": "float"} - ] -} -,{ - "classname": "ISteamMatchmakingPlayersResponse", - "methodname": "PlayersFailedToRespond", - "returntype": "void" -} -,{ - "classname": "ISteamMatchmakingPlayersResponse", - "methodname": "PlayersRefreshComplete", - "returntype": "void" -} -,{ - "classname": "ISteamMatchmakingRulesResponse", - "methodname": "RulesResponded", - "returntype": "void", - "params": [ -{ "paramname": "pchRule" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMatchmakingRulesResponse", - "methodname": "RulesFailedToRespond", - "returntype": "void" -} -,{ - "classname": "ISteamMatchmakingRulesResponse", - "methodname": "RulesRefreshComplete", - "returntype": "void" -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RequestInternetServerList", - "returntype": "HServerListRequest", - "params": [ -{ "paramname": "iApp" ,"paramtype": "AppId_t"}, -{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, -{ "paramname": "nFilters" ,"paramtype": "uint32"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RequestLANServerList", - "returntype": "HServerListRequest", - "params": [ -{ "paramname": "iApp" ,"paramtype": "AppId_t"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RequestFriendsServerList", - "returntype": "HServerListRequest", - "params": [ -{ "paramname": "iApp" ,"paramtype": "AppId_t"}, -{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, -{ "paramname": "nFilters" ,"paramtype": "uint32"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RequestFavoritesServerList", - "returntype": "HServerListRequest", - "params": [ -{ "paramname": "iApp" ,"paramtype": "AppId_t"}, -{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, -{ "paramname": "nFilters" ,"paramtype": "uint32"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RequestHistoryServerList", - "returntype": "HServerListRequest", - "params": [ -{ "paramname": "iApp" ,"paramtype": "AppId_t"}, -{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, -{ "paramname": "nFilters" ,"paramtype": "uint32"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RequestSpectatorServerList", - "returntype": "HServerListRequest", - "params": [ -{ "paramname": "iApp" ,"paramtype": "AppId_t"}, -{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, -{ "paramname": "nFilters" ,"paramtype": "uint32"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "ReleaseRequest", - "returntype": "void", - "params": [ -{ "paramname": "hServerListRequest" ,"paramtype": "HServerListRequest"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "GetServerDetails", - "returntype": "class gameserveritem_t *", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, -{ "paramname": "iServer" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "CancelQuery", - "returntype": "void", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RefreshQuery", - "returntype": "void", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "IsRefreshing", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "GetServerCount", - "returntype": "int", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "RefreshServer", - "returntype": "void", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, -{ "paramname": "iServer" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "PingServer", - "returntype": "HServerQuery", - "params": [ -{ "paramname": "unIP" ,"paramtype": "uint32"}, -{ "paramname": "usPort" ,"paramtype": "uint16"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPingResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "PlayerDetails", - "returntype": "HServerQuery", - "params": [ -{ "paramname": "unIP" ,"paramtype": "uint32"}, -{ "paramname": "usPort" ,"paramtype": "uint16"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPlayersResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "ServerRules", - "returntype": "HServerQuery", - "params": [ -{ "paramname": "unIP" ,"paramtype": "uint32"}, -{ "paramname": "usPort" ,"paramtype": "uint16"}, -{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingRulesResponse *"} - ] -} -,{ - "classname": "ISteamMatchmakingServers", - "methodname": "CancelServerQuery", - "returntype": "void", - "params": [ -{ "paramname": "hServerQuery" ,"paramtype": "HServerQuery"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "AddGameSearchParams", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "pchKeyToFind" ,"paramtype": "const char *"}, -{ "paramname": "pchValuesToFind" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "SearchForGameWithLobby", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, -{ "paramname": "nPlayerMin" ,"paramtype": "int"}, -{ "paramname": "nPlayerMax" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "SearchForGameSolo", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "nPlayerMin" ,"paramtype": "int"}, -{ "paramname": "nPlayerMax" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "AcceptGame", - "returntype": "EGameSearchErrorCode_t" -} -,{ - "classname": "ISteamGameSearch", - "methodname": "DeclineGame", - "returntype": "EGameSearchErrorCode_t" -} -,{ - "classname": "ISteamGameSearch", - "methodname": "RetrieveConnectionDetails", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "steamIDHost" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchConnectionDetails" ,"paramtype": "char *"}, -{ "paramname": "cubConnectionDetails" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "EndGameSearch", - "returntype": "EGameSearchErrorCode_t" -} -,{ - "classname": "ISteamGameSearch", - "methodname": "SetGameHostParams", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "pchKey" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "SetConnectionDetails", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "pchConnectionDetails" ,"paramtype": "const char *"}, -{ "paramname": "cubConnectionDetails" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "RequestPlayersForGame", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "nPlayerMin" ,"paramtype": "int"}, -{ "paramname": "nPlayerMax" ,"paramtype": "int"}, -{ "paramname": "nMaxTeamSize" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "HostConfirmGameStart", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "ullUniqueGameID" ,"paramtype": "uint64"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "CancelRequestPlayersForGame", - "returntype": "EGameSearchErrorCode_t" -} -,{ - "classname": "ISteamGameSearch", - "methodname": "SubmitPlayerResult", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "ullUniqueGameID" ,"paramtype": "uint64"}, -{ "paramname": "steamIDPlayer" ,"paramtype": "class CSteamID"}, -{ "paramname": "EPlayerResult" ,"paramtype": "EPlayerResult_t"} - ] -} -,{ - "classname": "ISteamGameSearch", - "methodname": "EndGame", - "returntype": "EGameSearchErrorCode_t", - "params": [ -{ "paramname": "ullUniqueGameID" ,"paramtype": "uint64"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "GetNumActiveBeacons", - "returntype": "uint32" -} -,{ - "classname": "ISteamParties", - "methodname": "GetBeaconByIndex", - "returntype": "PartyBeaconID_t", - "params": [ -{ "paramname": "unIndex" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "GetBeaconDetails", - "returntype": "bool", - "params": [ -{ "paramname": "ulBeaconID" ,"paramtype": "PartyBeaconID_t"}, -{ "paramname": "pSteamIDBeaconOwner" ,"paramtype": "class CSteamID *"}, -{ "paramname": "pLocation" ,"out_struct": " " ,"paramtype": "struct SteamPartyBeaconLocation_t *"}, -{ "paramname": "pchMetadata" ,"out_string_count": "cchMetadata" ,"paramtype": "char *"}, -{ "paramname": "cchMetadata" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "JoinParty", "callresult": "JoinPartyCallback_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "ulBeaconID" ,"paramtype": "PartyBeaconID_t"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "GetNumAvailableBeaconLocations", - "returntype": "bool", - "params": [ -{ "paramname": "puNumLocations" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "GetAvailableBeaconLocations", - "returntype": "bool", - "params": [ -{ "paramname": "pLocationList" ,"paramtype": "struct SteamPartyBeaconLocation_t *"}, -{ "paramname": "uMaxNumLocations" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "CreateBeacon", "callresult": "CreateBeaconCallback_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unOpenSlots" ,"paramtype": "uint32"}, -{ "paramname": "pBeaconLocation" ,"paramtype": "struct SteamPartyBeaconLocation_t *"}, -{ "paramname": "pchConnectString" ,"paramtype": "const char *"}, -{ "paramname": "pchMetadata" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "OnReservationCompleted", - "returntype": "void", - "params": [ -{ "paramname": "ulBeacon" ,"paramtype": "PartyBeaconID_t"}, -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "CancelReservation", - "returntype": "void", - "params": [ -{ "paramname": "ulBeacon" ,"paramtype": "PartyBeaconID_t"}, -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "ChangeNumOpenSlots", "callresult": "ChangeNumOpenSlotsCallback_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "ulBeacon" ,"paramtype": "PartyBeaconID_t"}, -{ "paramname": "unOpenSlots" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "DestroyBeacon", - "returntype": "bool", - "params": [ -{ "paramname": "ulBeacon" ,"paramtype": "PartyBeaconID_t"} - ] -} -,{ - "classname": "ISteamParties", - "methodname": "GetBeaconLocationData", - "returntype": "bool", - "params": [ -{ "paramname": "BeaconLocation" ,"paramtype": "struct SteamPartyBeaconLocation_t"}, -{ "paramname": "eData" ,"paramtype": "ESteamPartyBeaconLocationData"}, -{ "paramname": "pchDataStringOut" ,"out_string_count": "cchDataStringOut" ,"paramtype": "char *"}, -{ "paramname": "cchDataStringOut" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileWrite", - "returntype": "bool", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"}, -{ "paramname": "pvData" ,"paramtype": "const void *"}, -{ "paramname": "cubData" ,"paramtype": "int32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileRead", - "returntype": "int32", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"}, -{ "paramname": "pvData" ,"paramtype": "void *"}, -{ "paramname": "cubDataToRead" ,"paramtype": "int32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileWriteAsync", "callresult": "RemoteStorageFileWriteAsyncComplete_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"}, -{ "paramname": "pvData" ,"paramtype": "const void *"}, -{ "paramname": "cubData" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileReadAsync", "callresult": "RemoteStorageFileReadAsyncComplete_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"}, -{ "paramname": "nOffset" ,"paramtype": "uint32"}, -{ "paramname": "cubToRead" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileReadAsyncComplete", - "returntype": "bool", - "params": [ -{ "paramname": "hReadCall" ,"paramtype": "SteamAPICall_t"}, -{ "paramname": "pvBuffer" ,"paramtype": "void *"}, -{ "paramname": "cubToRead" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileForget", - "returntype": "bool", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileDelete", - "returntype": "bool", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileShare", "callresult": "RemoteStorageFileShareResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "SetSyncPlatforms", - "returntype": "bool", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"}, -{ "paramname": "eRemoteStoragePlatform" ,"paramtype": "ERemoteStoragePlatform"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileWriteStreamOpen", - "returntype": "UGCFileWriteStreamHandle_t", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileWriteStreamWriteChunk", - "returntype": "bool", - "params": [ -{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"}, -{ "paramname": "pvData" ,"paramtype": "const void *"}, -{ "paramname": "cubData" ,"paramtype": "int32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileWriteStreamClose", - "returntype": "bool", - "params": [ -{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileWriteStreamCancel", - "returntype": "bool", - "params": [ -{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FileExists", - "returntype": "bool", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "FilePersisted", - "returntype": "bool", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetFileSize", - "returntype": "int32", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetFileTimestamp", - "returntype": "int64", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetSyncPlatforms", - "returntype": "ERemoteStoragePlatform", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetFileCount", - "returntype": "int32" -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetFileNameAndSize", - "returntype": "const char *", - "params": [ -{ "paramname": "iFile" ,"paramtype": "int"}, -{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetQuota", - "returntype": "bool", - "params": [ -{ "paramname": "pnTotalBytes" ,"paramtype": "uint64 *"}, -{ "paramname": "puAvailableBytes" ,"paramtype": "uint64 *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "IsCloudEnabledForAccount", - "returntype": "bool" -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "IsCloudEnabledForApp", - "returntype": "bool" -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "SetCloudEnabledForApp", - "returntype": "void", - "params": [ -{ "paramname": "bEnabled" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UGCDownload", "callresult": "RemoteStorageDownloadUGCResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, -{ "paramname": "unPriority" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetUGCDownloadProgress", - "returntype": "bool", - "params": [ -{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, -{ "paramname": "pnBytesDownloaded" ,"paramtype": "int32 *"}, -{ "paramname": "pnBytesExpected" ,"paramtype": "int32 *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetUGCDetails", - "returntype": "bool", - "params": [ -{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, -{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, -{ "paramname": "ppchName" ,"out_string": " " ,"paramtype": "char **"}, -{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"}, -{ "paramname": "pSteamIDOwner" ,"out_struct": " " ,"paramtype": "class CSteamID *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UGCRead", - "returntype": "int32", - "params": [ -{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, -{ "paramname": "pvData" ,"paramtype": "void *"}, -{ "paramname": "cubDataToRead" ,"paramtype": "int32"}, -{ "paramname": "cOffset" ,"paramtype": "uint32"}, -{ "paramname": "eAction" ,"paramtype": "EUGCReadAction"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetCachedUGCCount", - "returntype": "int32" -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetCachedUGCHandle", - "returntype": "UGCHandle_t", - "params": [ -{ "paramname": "iCachedContent" ,"paramtype": "int32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "PublishWorkshopFile", "callresult": "RemoteStoragePublishFileProgress_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchFile" ,"paramtype": "const char *"}, -{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, -{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, -{ "paramname": "pchTitle" ,"paramtype": "const char *"}, -{ "paramname": "pchDescription" ,"paramtype": "const char *"}, -{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, -{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, -{ "paramname": "eWorkshopFileType" ,"paramtype": "EWorkshopFileType"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "CreatePublishedFileUpdateRequest", - "returntype": "PublishedFileUpdateHandle_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdatePublishedFileFile", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, -{ "paramname": "pchFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdatePublishedFilePreviewFile", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, -{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdatePublishedFileTitle", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, -{ "paramname": "pchTitle" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdatePublishedFileDescription", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, -{ "paramname": "pchDescription" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdatePublishedFileVisibility", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, -{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdatePublishedFileTags", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, -{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "CommitPublishedFileUpdate", "callresult": "RemoteStorageUpdatePublishedFileResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetPublishedFileDetails", "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "unMaxSecondsOld" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "DeletePublishedFile", "callresult": "RemoteStorageDeletePublishedFileResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "EnumerateUserPublishedFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unStartIndex" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "SubscribePublishedFile", "callresult": "RemoteStorageSubscribePublishedFileResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "EnumerateUserSubscribedFiles", "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unStartIndex" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UnsubscribePublishedFile", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdatePublishedFileSetChangeDescription", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, -{ "paramname": "pchChangeDescription" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UpdateUserPublishedItemVote", "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "bVoteUp" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "GetUserPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "EnumerateUserSharedWorkshopFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamId" ,"paramtype": "class CSteamID"}, -{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, -{ "paramname": "pRequiredTags" ,"paramtype": "struct SteamParamStringArray_t *"}, -{ "paramname": "pExcludedTags" ,"paramtype": "struct SteamParamStringArray_t *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "PublishVideo", "callresult": "RemoteStoragePublishFileProgress_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "eVideoProvider" ,"paramtype": "EWorkshopVideoProvider"}, -{ "paramname": "pchVideoAccount" ,"paramtype": "const char *"}, -{ "paramname": "pchVideoIdentifier" ,"paramtype": "const char *"}, -{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, -{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, -{ "paramname": "pchTitle" ,"paramtype": "const char *"}, -{ "paramname": "pchDescription" ,"paramtype": "const char *"}, -{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, -{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "SetUserPublishedFileAction", "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "EnumeratePublishedFilesByUserAction", "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"}, -{ "paramname": "unStartIndex" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "EnumeratePublishedWorkshopFiles", "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "eEnumerationType" ,"paramtype": "EWorkshopEnumerationType"}, -{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, -{ "paramname": "unCount" ,"paramtype": "uint32"}, -{ "paramname": "unDays" ,"paramtype": "uint32"}, -{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, -{ "paramname": "pUserTags" ,"paramtype": "struct SteamParamStringArray_t *"} - ] -} -,{ - "classname": "ISteamRemoteStorage", - "methodname": "UGCDownloadToLocation", "callresult": "RemoteStorageDownloadUGCResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, -{ "paramname": "pchLocation" ,"paramtype": "const char *"}, -{ "paramname": "unPriority" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "RequestCurrentStats", "callback": "UserStatsReceived_t", - "returntype": "bool" -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetStat", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "int32 *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetStat", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "float *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "SetStat", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "nData" ,"paramtype": "int32"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "SetStat", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "fData" ,"paramtype": "float"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "UpdateAvgRateStat", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "flCountThisSession" ,"paramtype": "float"}, -{ "paramname": "dSessionLength" ,"paramtype": "double"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetAchievement", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pbAchieved" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "SetAchievement", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "ClearAchievement", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetAchievementAndUnlockTime", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, -{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "StoreStats", - "returntype": "bool" -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetAchievementIcon", - "returntype": "int", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetAchievementDisplayAttribute", - "returntype": "const char *", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "IndicateAchievementProgress", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "nCurProgress" ,"paramtype": "uint32"}, -{ "paramname": "nMaxProgress" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetNumAchievements", - "returntype": "uint32" -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetAchievementName", - "returntype": "const char *", - "params": [ -{ "paramname": "iAchievement" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "RequestUserStats", "callresult": "UserStatsReceived_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetUserStat", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "int32 *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetUserStat", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "float *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetUserAchievement", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pbAchieved" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetUserAchievementAndUnlockTime", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, -{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "ResetAllStats", - "returntype": "bool", - "params": [ -{ "paramname": "bAchievementsToo" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "FindOrCreateLeaderboard", "callresult": "LeaderboardFindResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"}, -{ "paramname": "eLeaderboardSortMethod" ,"paramtype": "ELeaderboardSortMethod"}, -{ "paramname": "eLeaderboardDisplayType" ,"paramtype": "ELeaderboardDisplayType"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "FindLeaderboard", "callresult": "LeaderboardFindResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetLeaderboardName", - "returntype": "const char *", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetLeaderboardEntryCount", - "returntype": "int", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetLeaderboardSortMethod", - "returntype": "ELeaderboardSortMethod", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetLeaderboardDisplayType", - "returntype": "ELeaderboardDisplayType", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "DownloadLeaderboardEntries", "callresult": "LeaderboardScoresDownloaded_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, -{ "paramname": "eLeaderboardDataRequest" ,"paramtype": "ELeaderboardDataRequest"}, -{ "paramname": "nRangeStart" ,"paramtype": "int"}, -{ "paramname": "nRangeEnd" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "DownloadLeaderboardEntriesForUsers", "callresult": "LeaderboardScoresDownloaded_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, -{ "paramname": "prgUsers" ,"array_count": "cUsers" ,"desc": "Array of users to retrieve" ,"paramtype": "class CSteamID *"}, -{ "paramname": "cUsers" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetDownloadedLeaderboardEntry", - "returntype": "bool", - "params": [ -{ "paramname": "hSteamLeaderboardEntries" ,"paramtype": "SteamLeaderboardEntries_t"}, -{ "paramname": "index" ,"paramtype": "int"}, -{ "paramname": "pLeaderboardEntry" ,"paramtype": "struct LeaderboardEntry_t *"}, -{ "paramname": "pDetails" ,"paramtype": "int32 *"}, -{ "paramname": "cDetailsMax" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "UploadLeaderboardScore", "callresult": "LeaderboardScoreUploaded_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, -{ "paramname": "eLeaderboardUploadScoreMethod" ,"paramtype": "ELeaderboardUploadScoreMethod"}, -{ "paramname": "nScore" ,"paramtype": "int32"}, -{ "paramname": "pScoreDetails" ,"paramtype": "const int32 *"}, -{ "paramname": "cScoreDetailsCount" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "AttachLeaderboardUGC", "callresult": "LeaderboardUGCSet_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, -{ "paramname": "hUGC" ,"paramtype": "UGCHandle_t"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetNumberOfCurrentPlayers", "callresult": "NumberOfCurrentPlayers_t", - "returntype": "SteamAPICall_t" -} -,{ - "classname": "ISteamUserStats", - "methodname": "RequestGlobalAchievementPercentages", "callresult": "GlobalAchievementPercentagesReady_t", - "returntype": "SteamAPICall_t" -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetMostAchievedAchievementInfo", - "returntype": "int", - "params": [ -{ "paramname": "pchName" ,"paramtype": "char *"}, -{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, -{ "paramname": "pflPercent" ,"paramtype": "float *"}, -{ "paramname": "pbAchieved" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetNextMostAchievedAchievementInfo", - "returntype": "int", - "params": [ -{ "paramname": "iIteratorPrevious" ,"paramtype": "int"}, -{ "paramname": "pchName" ,"paramtype": "char *"}, -{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, -{ "paramname": "pflPercent" ,"paramtype": "float *"}, -{ "paramname": "pbAchieved" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetAchievementAchievedPercent", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pflPercent" ,"paramtype": "float *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "RequestGlobalStats", "callresult": "GlobalStatsReceived_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nHistoryDays" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetGlobalStat", - "returntype": "bool", - "params": [ -{ "paramname": "pchStatName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "int64 *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetGlobalStat", - "returntype": "bool", - "params": [ -{ "paramname": "pchStatName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "double *"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetGlobalStatHistory", - "returntype": "int32", - "params": [ -{ "paramname": "pchStatName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "int64 *"}, -{ "paramname": "cubData" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUserStats", - "methodname": "GetGlobalStatHistory", - "returntype": "int32", - "params": [ -{ "paramname": "pchStatName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "double *"}, -{ "paramname": "cubData" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "BIsSubscribed", - "returntype": "bool" -} -,{ - "classname": "ISteamApps", - "methodname": "BIsLowViolence", - "returntype": "bool" -} -,{ - "classname": "ISteamApps", - "methodname": "BIsCybercafe", - "returntype": "bool" -} -,{ - "classname": "ISteamApps", - "methodname": "BIsVACBanned", - "returntype": "bool" -} -,{ - "classname": "ISteamApps", - "methodname": "GetCurrentGameLanguage", - "returntype": "const char *" -} -,{ - "classname": "ISteamApps", - "methodname": "GetAvailableGameLanguages", - "returntype": "const char *" -} -,{ - "classname": "ISteamApps", - "methodname": "BIsSubscribedApp", - "returntype": "bool", - "params": [ -{ "paramname": "appID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "BIsDlcInstalled", - "returntype": "bool", - "params": [ -{ "paramname": "appID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetEarliestPurchaseUnixTime", - "returntype": "uint32", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "BIsSubscribedFromFreeWeekend", - "returntype": "bool" -} -,{ - "classname": "ISteamApps", - "methodname": "GetDLCCount", - "returntype": "int" -} -,{ - "classname": "ISteamApps", - "methodname": "BGetDLCDataByIndex", - "returntype": "bool", - "params": [ -{ "paramname": "iDLC" ,"paramtype": "int"}, -{ "paramname": "pAppID" ,"paramtype": "AppId_t *"}, -{ "paramname": "pbAvailable" ,"paramtype": "bool *"}, -{ "paramname": "pchName" ,"paramtype": "char *"}, -{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "InstallDLC", - "returntype": "void", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "UninstallDLC", - "returntype": "void", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "RequestAppProofOfPurchaseKey", - "returntype": "void", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetCurrentBetaName", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "char *"}, -{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "MarkContentCorrupt", - "returntype": "bool", - "params": [ -{ "paramname": "bMissingFilesOnly" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetInstalledDepots", - "returntype": "uint32", - "params": [ -{ "paramname": "appID" ,"paramtype": "AppId_t"}, -{ "paramname": "pvecDepots" ,"paramtype": "DepotId_t *"}, -{ "paramname": "cMaxDepots" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetAppInstallDir", - "returntype": "uint32", - "params": [ -{ "paramname": "appID" ,"paramtype": "AppId_t"}, -{ "paramname": "pchFolder" ,"paramtype": "char *"}, -{ "paramname": "cchFolderBufferSize" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "BIsAppInstalled", - "returntype": "bool", - "params": [ -{ "paramname": "appID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetAppOwner", - "returntype": "class CSteamID" -} -,{ - "classname": "ISteamApps", - "methodname": "GetLaunchQueryParam", - "returntype": "const char *", - "params": [ -{ "paramname": "pchKey" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetDlcDownloadProgress", - "returntype": "bool", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, -{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetAppBuildId", - "returntype": "int" -} -,{ - "classname": "ISteamApps", - "methodname": "RequestAllProofOfPurchaseKeys", - "returntype": "void" -} -,{ - "classname": "ISteamApps", - "methodname": "GetFileDetails", "callresult": "FileDetailsResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pszFileName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "GetLaunchCommandLine", - "returntype": "int", - "params": [ -{ "paramname": "pszCommandLine" ,"paramtype": "char *"}, -{ "paramname": "cubCommandLine" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamApps", - "methodname": "BIsSubscribedFromFamilySharing", - "returntype": "bool" -} -,{ - "classname": "ISteamNetworking", - "methodname": "SendP2PPacket", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, -{ "paramname": "pubData" ,"paramtype": "const void *"}, -{ "paramname": "cubData" ,"paramtype": "uint32"}, -{ "paramname": "eP2PSendType" ,"paramtype": "EP2PSend"}, -{ "paramname": "nChannel" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "IsP2PPacketAvailable", - "returntype": "bool", - "params": [ -{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, -{ "paramname": "nChannel" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "ReadP2PPacket", - "returntype": "bool", - "params": [ -{ "paramname": "pubDest" ,"paramtype": "void *"}, -{ "paramname": "cubDest" ,"paramtype": "uint32"}, -{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, -{ "paramname": "psteamIDRemote" ,"paramtype": "class CSteamID *"}, -{ "paramname": "nChannel" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "AcceptP2PSessionWithUser", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "CloseP2PSessionWithUser", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "CloseP2PChannelWithUser", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, -{ "paramname": "nChannel" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "GetP2PSessionState", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, -{ "paramname": "pConnectionState" ,"paramtype": "struct P2PSessionState_t *"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "AllowP2PPacketRelay", - "returntype": "bool", - "params": [ -{ "paramname": "bAllow" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "CreateListenSocket", - "returntype": "SNetListenSocket_t", - "params": [ -{ "paramname": "nVirtualP2PPort" ,"paramtype": "int"}, -{ "paramname": "nIP" ,"paramtype": "uint32"}, -{ "paramname": "nPort" ,"paramtype": "uint16"}, -{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "CreateP2PConnectionSocket", - "returntype": "SNetSocket_t", - "params": [ -{ "paramname": "steamIDTarget" ,"paramtype": "class CSteamID"}, -{ "paramname": "nVirtualPort" ,"paramtype": "int"}, -{ "paramname": "nTimeoutSec" ,"paramtype": "int"}, -{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "CreateConnectionSocket", - "returntype": "SNetSocket_t", - "params": [ -{ "paramname": "nIP" ,"paramtype": "uint32"}, -{ "paramname": "nPort" ,"paramtype": "uint16"}, -{ "paramname": "nTimeoutSec" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "DestroySocket", - "returntype": "bool", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, -{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "DestroyListenSocket", - "returntype": "bool", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetListenSocket_t"}, -{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "SendDataOnSocket", - "returntype": "bool", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, -{ "paramname": "pubData" ,"paramtype": "void *"}, -{ "paramname": "cubData" ,"paramtype": "uint32"}, -{ "paramname": "bReliable" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "IsDataAvailableOnSocket", - "returntype": "bool", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, -{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "RetrieveDataFromSocket", - "returntype": "bool", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, -{ "paramname": "pubDest" ,"paramtype": "void *"}, -{ "paramname": "cubDest" ,"paramtype": "uint32"}, -{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "IsDataAvailable", - "returntype": "bool", - "params": [ -{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, -{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, -{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "RetrieveData", - "returntype": "bool", - "params": [ -{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, -{ "paramname": "pubDest" ,"paramtype": "void *"}, -{ "paramname": "cubDest" ,"paramtype": "uint32"}, -{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, -{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "GetSocketInfo", - "returntype": "bool", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, -{ "paramname": "pSteamIDRemote" ,"paramtype": "class CSteamID *"}, -{ "paramname": "peSocketStatus" ,"paramtype": "int *"}, -{ "paramname": "punIPRemote" ,"paramtype": "uint32 *"}, -{ "paramname": "punPortRemote" ,"paramtype": "uint16 *"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "GetListenSocketInfo", - "returntype": "bool", - "params": [ -{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, -{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, -{ "paramname": "pnPort" ,"paramtype": "uint16 *"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "GetSocketConnectionType", - "returntype": "ESNetSocketConnectionType", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} - ] -} -,{ - "classname": "ISteamNetworking", - "methodname": "GetMaxPacketSize", - "returntype": "int", - "params": [ -{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} - ] -} -,{ - "classname": "ISteamScreenshots", - "methodname": "WriteScreenshot", - "returntype": "ScreenshotHandle", - "params": [ -{ "paramname": "pubRGB" ,"paramtype": "void *"}, -{ "paramname": "cubRGB" ,"paramtype": "uint32"}, -{ "paramname": "nWidth" ,"paramtype": "int"}, -{ "paramname": "nHeight" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamScreenshots", - "methodname": "AddScreenshotToLibrary", - "returntype": "ScreenshotHandle", - "params": [ -{ "paramname": "pchFilename" ,"paramtype": "const char *"}, -{ "paramname": "pchThumbnailFilename" ,"paramtype": "const char *"}, -{ "paramname": "nWidth" ,"paramtype": "int"}, -{ "paramname": "nHeight" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamScreenshots", - "methodname": "TriggerScreenshot", - "returntype": "void" -} -,{ - "classname": "ISteamScreenshots", - "methodname": "HookScreenshots", - "returntype": "void", - "params": [ -{ "paramname": "bHook" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamScreenshots", - "methodname": "SetLocation", - "returntype": "bool", - "params": [ -{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, -{ "paramname": "pchLocation" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamScreenshots", - "methodname": "TagUser", - "returntype": "bool", - "params": [ -{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamScreenshots", - "methodname": "TagPublishedFile", - "returntype": "bool", - "params": [ -{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, -{ "paramname": "unPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamScreenshots", - "methodname": "IsScreenshotsHooked", - "returntype": "bool" -} -,{ - "classname": "ISteamScreenshots", - "methodname": "AddVRScreenshotToLibrary", - "returntype": "ScreenshotHandle", - "params": [ -{ "paramname": "eType" ,"paramtype": "EVRScreenshotType"}, -{ "paramname": "pchFilename" ,"paramtype": "const char *"}, -{ "paramname": "pchVRFilename" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMusic", - "methodname": "BIsEnabled", - "returntype": "bool" -} -,{ - "classname": "ISteamMusic", - "methodname": "BIsPlaying", - "returntype": "bool" -} -,{ - "classname": "ISteamMusic", - "methodname": "GetPlaybackStatus", - "returntype": "AudioPlayback_Status" -} -,{ - "classname": "ISteamMusic", - "methodname": "Play", - "returntype": "void" -} -,{ - "classname": "ISteamMusic", - "methodname": "Pause", - "returntype": "void" -} -,{ - "classname": "ISteamMusic", - "methodname": "PlayPrevious", - "returntype": "void" -} -,{ - "classname": "ISteamMusic", - "methodname": "PlayNext", - "returntype": "void" -} -,{ - "classname": "ISteamMusic", - "methodname": "SetVolume", - "returntype": "void", - "params": [ -{ "paramname": "flVolume" ,"paramtype": "float"} - ] -} -,{ - "classname": "ISteamMusic", - "methodname": "GetVolume", - "returntype": "float" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "RegisterSteamMusicRemote", - "returntype": "bool", - "params": [ -{ "paramname": "pchName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "DeregisterSteamMusicRemote", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "BIsCurrentMusicRemote", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "BActivationSuccess", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "SetDisplayName", - "returntype": "bool", - "params": [ -{ "paramname": "pchDisplayName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "SetPNGIcon_64x64", - "returntype": "bool", - "params": [ -{ "paramname": "pvBuffer" ,"paramtype": "void *"}, -{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "EnablePlayPrevious", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "EnablePlayNext", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "EnableShuffled", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "EnableLooped", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "EnableQueue", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "EnablePlaylists", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "UpdatePlaybackStatus", - "returntype": "bool", - "params": [ -{ "paramname": "nStatus" ,"paramtype": "AudioPlayback_Status"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "UpdateShuffled", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "UpdateLooped", - "returntype": "bool", - "params": [ -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "UpdateVolume", - "returntype": "bool", - "params": [ -{ "paramname": "flValue" ,"paramtype": "float"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "CurrentEntryWillChange", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "CurrentEntryIsAvailable", - "returntype": "bool", - "params": [ -{ "paramname": "bAvailable" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "UpdateCurrentEntryText", - "returntype": "bool", - "params": [ -{ "paramname": "pchText" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "UpdateCurrentEntryElapsedSeconds", - "returntype": "bool", - "params": [ -{ "paramname": "nValue" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "UpdateCurrentEntryCoverArt", - "returntype": "bool", - "params": [ -{ "paramname": "pvBuffer" ,"paramtype": "void *"}, -{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "CurrentEntryDidChange", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "QueueWillChange", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "ResetQueueEntries", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "SetQueueEntry", - "returntype": "bool", - "params": [ -{ "paramname": "nID" ,"paramtype": "int"}, -{ "paramname": "nPosition" ,"paramtype": "int"}, -{ "paramname": "pchEntryText" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "SetCurrentQueueEntry", - "returntype": "bool", - "params": [ -{ "paramname": "nID" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "QueueDidChange", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "PlaylistWillChange", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "ResetPlaylistEntries", - "returntype": "bool" -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "SetPlaylistEntry", - "returntype": "bool", - "params": [ -{ "paramname": "nID" ,"paramtype": "int"}, -{ "paramname": "nPosition" ,"paramtype": "int"}, -{ "paramname": "pchEntryText" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "SetCurrentPlaylistEntry", - "returntype": "bool", - "params": [ -{ "paramname": "nID" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamMusicRemote", - "methodname": "PlaylistDidChange", - "returntype": "bool" -} -,{ - "classname": "ISteamHTTP", - "methodname": "CreateHTTPRequest", - "returntype": "HTTPRequestHandle", - "params": [ -{ "paramname": "eHTTPRequestMethod" ,"paramtype": "EHTTPMethod"}, -{ "paramname": "pchAbsoluteURL" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestContextValue", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "ulContextValue" ,"paramtype": "uint64"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestNetworkActivityTimeout", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "unTimeoutSeconds" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestHeaderValue", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, -{ "paramname": "pchHeaderValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestGetOrPostParameter", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pchParamName" ,"paramtype": "const char *"}, -{ "paramname": "pchParamValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SendHTTPRequest", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SendHTTPRequestAndStreamResponse", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "DeferHTTPRequest", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "PrioritizeHTTPRequest", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "GetHTTPResponseHeaderSize", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, -{ "paramname": "unResponseHeaderSize" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "GetHTTPResponseHeaderValue", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, -{ "paramname": "pHeaderValueBuffer" ,"paramtype": "uint8 *"}, -{ "paramname": "unBufferSize" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "GetHTTPResponseBodySize", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "unBodySize" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "GetHTTPResponseBodyData", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, -{ "paramname": "unBufferSize" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "GetHTTPStreamingResponseBodyData", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "cOffset" ,"paramtype": "uint32"}, -{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, -{ "paramname": "unBufferSize" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "ReleaseHTTPRequest", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "GetHTTPDownloadProgressPct", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pflPercentOut" ,"paramtype": "float *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestRawPostBody", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pchContentType" ,"paramtype": "const char *"}, -{ "paramname": "pubBody" ,"paramtype": "uint8 *"}, -{ "paramname": "unBodyLen" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "CreateCookieContainer", - "returntype": "HTTPCookieContainerHandle", - "params": [ -{ "paramname": "bAllowResponsesToModify" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "ReleaseCookieContainer", - "returntype": "bool", - "params": [ -{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetCookie", - "returntype": "bool", - "params": [ -{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"}, -{ "paramname": "pchHost" ,"paramtype": "const char *"}, -{ "paramname": "pchUrl" ,"paramtype": "const char *"}, -{ "paramname": "pchCookie" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestCookieContainer", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestUserAgentInfo", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pchUserAgentInfo" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestRequiresVerifiedCertificate", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "bRequireVerifiedCertificate" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "SetHTTPRequestAbsoluteTimeoutMS", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "unMilliseconds" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTTP", - "methodname": "GetHTTPRequestWasTimedOut", - "returntype": "bool", - "params": [ -{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, -{ "paramname": "pbWasTimedOut" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "Init", - "returntype": "bool" -} -,{ - "classname": "ISteamInput", - "methodname": "Shutdown", - "returntype": "bool" -} -,{ - "classname": "ISteamInput", - "methodname": "RunFrame", - "returntype": "void" -} -,{ - "classname": "ISteamInput", - "methodname": "GetConnectedControllers", - "returntype": "int", - "params": [ -{ "paramname": "handlesOut" ,"paramtype": "InputHandle_t *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetActionSetHandle", - "returntype": "InputActionSetHandle_t", - "params": [ -{ "paramname": "pszActionSetName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "ActivateActionSet", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "actionSetHandle" ,"paramtype": "InputActionSetHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetCurrentActionSet", - "returntype": "InputActionSetHandle_t", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "ActivateActionSetLayer", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "actionSetLayerHandle" ,"paramtype": "InputActionSetHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "DeactivateActionSetLayer", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "actionSetLayerHandle" ,"paramtype": "InputActionSetHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "DeactivateAllActionSetLayers", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetActiveActionSetLayers", - "returntype": "int", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "handlesOut" ,"paramtype": "InputActionSetHandle_t *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetDigitalActionHandle", - "returntype": "InputDigitalActionHandle_t", - "params": [ -{ "paramname": "pszActionName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetDigitalActionData", - "returntype": "struct InputDigitalActionData_t", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "digitalActionHandle" ,"paramtype": "InputDigitalActionHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetDigitalActionOrigins", - "returntype": "int", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "actionSetHandle" ,"paramtype": "InputActionSetHandle_t"}, -{ "paramname": "digitalActionHandle" ,"paramtype": "InputDigitalActionHandle_t"}, -{ "paramname": "originsOut" ,"paramtype": "EInputActionOrigin *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetAnalogActionHandle", - "returntype": "InputAnalogActionHandle_t", - "params": [ -{ "paramname": "pszActionName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetAnalogActionData", - "returntype": "struct InputAnalogActionData_t", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "analogActionHandle" ,"paramtype": "InputAnalogActionHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetAnalogActionOrigins", - "returntype": "int", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "actionSetHandle" ,"paramtype": "InputActionSetHandle_t"}, -{ "paramname": "analogActionHandle" ,"paramtype": "InputAnalogActionHandle_t"}, -{ "paramname": "originsOut" ,"paramtype": "EInputActionOrigin *"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetGlyphForActionOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EInputActionOrigin"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetStringForActionOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EInputActionOrigin"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "StopAnalogActionMomentum", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "eAction" ,"paramtype": "InputAnalogActionHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetMotionData", - "returntype": "struct InputMotionData_t", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "TriggerVibration", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "usLeftSpeed" ,"paramtype": "unsigned short"}, -{ "paramname": "usRightSpeed" ,"paramtype": "unsigned short"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "SetLEDColor", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "nColorR" ,"paramtype": "uint8"}, -{ "paramname": "nColorG" ,"paramtype": "uint8"}, -{ "paramname": "nColorB" ,"paramtype": "uint8"}, -{ "paramname": "nFlags" ,"paramtype": "unsigned int"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "TriggerHapticPulse", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, -{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "TriggerRepeatedHapticPulse", - "returntype": "void", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, -{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"}, -{ "paramname": "usOffMicroSec" ,"paramtype": "unsigned short"}, -{ "paramname": "unRepeat" ,"paramtype": "unsigned short"}, -{ "paramname": "nFlags" ,"paramtype": "unsigned int"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "ShowBindingPanel", - "returntype": "bool", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetInputTypeForHandle", - "returntype": "ESteamInputType", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetControllerForGamepadIndex", - "returntype": "InputHandle_t", - "params": [ -{ "paramname": "nIndex" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetGamepadIndexForController", - "returntype": "int", - "params": [ -{ "paramname": "ulinputHandle" ,"paramtype": "InputHandle_t"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetStringForXboxOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EXboxOrigin"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetGlyphForXboxOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EXboxOrigin"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "GetActionOriginFromXboxOrigin", - "returntype": "EInputActionOrigin", - "params": [ -{ "paramname": "inputHandle" ,"paramtype": "InputHandle_t"}, -{ "paramname": "eOrigin" ,"paramtype": "EXboxOrigin"} - ] -} -,{ - "classname": "ISteamInput", - "methodname": "TranslateActionOrigin", - "returntype": "EInputActionOrigin", - "params": [ -{ "paramname": "eDestinationInputType" ,"paramtype": "ESteamInputType"}, -{ "paramname": "eSourceOrigin" ,"paramtype": "EInputActionOrigin"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "Init", - "returntype": "bool" -} -,{ - "classname": "ISteamController", - "methodname": "Shutdown", - "returntype": "bool" -} -,{ - "classname": "ISteamController", - "methodname": "RunFrame", - "returntype": "void" -} -,{ - "classname": "ISteamController", - "methodname": "GetConnectedControllers", - "returntype": "int", - "params": [ -{ "paramname": "handlesOut" ,"paramtype": "ControllerHandle_t *"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetActionSetHandle", - "returntype": "ControllerActionSetHandle_t", - "params": [ -{ "paramname": "pszActionSetName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "ActivateActionSet", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetCurrentActionSet", - "returntype": "ControllerActionSetHandle_t", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "ActivateActionSetLayer", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "actionSetLayerHandle" ,"paramtype": "ControllerActionSetHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "DeactivateActionSetLayer", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "actionSetLayerHandle" ,"paramtype": "ControllerActionSetHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "DeactivateAllActionSetLayers", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetActiveActionSetLayers", - "returntype": "int", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "handlesOut" ,"paramtype": "ControllerActionSetHandle_t *"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetDigitalActionHandle", - "returntype": "ControllerDigitalActionHandle_t", - "params": [ -{ "paramname": "pszActionName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetDigitalActionData", - "returntype": "struct InputDigitalActionData_t", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetDigitalActionOrigins", - "returntype": "int", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, -{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, -{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetAnalogActionHandle", - "returntype": "ControllerAnalogActionHandle_t", - "params": [ -{ "paramname": "pszActionName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetAnalogActionData", - "returntype": "struct InputAnalogActionData_t", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetAnalogActionOrigins", - "returntype": "int", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, -{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, -{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetGlyphForActionOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EControllerActionOrigin"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetStringForActionOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EControllerActionOrigin"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "StopAnalogActionMomentum", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "eAction" ,"paramtype": "ControllerAnalogActionHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetMotionData", - "returntype": "struct InputMotionData_t", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "TriggerHapticPulse", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, -{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "TriggerRepeatedHapticPulse", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, -{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"}, -{ "paramname": "usOffMicroSec" ,"paramtype": "unsigned short"}, -{ "paramname": "unRepeat" ,"paramtype": "unsigned short"}, -{ "paramname": "nFlags" ,"paramtype": "unsigned int"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "TriggerVibration", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "usLeftSpeed" ,"paramtype": "unsigned short"}, -{ "paramname": "usRightSpeed" ,"paramtype": "unsigned short"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "SetLEDColor", - "returntype": "void", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "nColorR" ,"paramtype": "uint8"}, -{ "paramname": "nColorG" ,"paramtype": "uint8"}, -{ "paramname": "nColorB" ,"paramtype": "uint8"}, -{ "paramname": "nFlags" ,"paramtype": "unsigned int"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "ShowBindingPanel", - "returntype": "bool", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetInputTypeForHandle", - "returntype": "ESteamInputType", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetControllerForGamepadIndex", - "returntype": "ControllerHandle_t", - "params": [ -{ "paramname": "nIndex" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetGamepadIndexForController", - "returntype": "int", - "params": [ -{ "paramname": "ulControllerHandle" ,"paramtype": "ControllerHandle_t"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetStringForXboxOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EXboxOrigin"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetGlyphForXboxOrigin", - "returntype": "const char *", - "params": [ -{ "paramname": "eOrigin" ,"paramtype": "EXboxOrigin"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "GetActionOriginFromXboxOrigin", - "returntype": "EControllerActionOrigin", - "params": [ -{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, -{ "paramname": "eOrigin" ,"paramtype": "EXboxOrigin"} - ] -} -,{ - "classname": "ISteamController", - "methodname": "TranslateActionOrigin", - "returntype": "EControllerActionOrigin", - "params": [ -{ "paramname": "eDestinationInputType" ,"paramtype": "ESteamInputType"}, -{ "paramname": "eSourceOrigin" ,"paramtype": "EControllerActionOrigin"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "CreateQueryUserUGCRequest", - "returntype": "UGCQueryHandle_t", - "params": [ -{ "paramname": "unAccountID" ,"paramtype": "AccountID_t"}, -{ "paramname": "eListType" ,"paramtype": "EUserUGCList"}, -{ "paramname": "eMatchingUGCType" ,"paramtype": "EUGCMatchingUGCType"}, -{ "paramname": "eSortOrder" ,"paramtype": "EUserUGCListSortOrder"}, -{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "unPage" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "CreateQueryAllUGCRequest", - "returntype": "UGCQueryHandle_t", - "params": [ -{ "paramname": "eQueryType" ,"paramtype": "EUGCQuery"}, -{ "paramname": "eMatchingeMatchingUGCTypeFileType" ,"paramtype": "EUGCMatchingUGCType"}, -{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "unPage" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "CreateQueryAllUGCRequest", - "returntype": "UGCQueryHandle_t", - "params": [ -{ "paramname": "eQueryType" ,"paramtype": "EUGCQuery"}, -{ "paramname": "eMatchingeMatchingUGCTypeFileType" ,"paramtype": "EUGCMatchingUGCType"}, -{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "pchCursor" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "CreateQueryUGCDetailsRequest", - "returntype": "UGCQueryHandle_t", - "params": [ -{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, -{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SendQueryUGCRequest", "callresult": "SteamUGCQueryCompleted_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCResult", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "pDetails" ,"paramtype": "struct SteamUGCDetails_t *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCPreviewURL", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "pchURL" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, -{ "paramname": "cchURLSize" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCMetadata", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "pchMetadata" ,"out_string_count": "cchMetadatasize" ,"paramtype": "char *"}, -{ "paramname": "cchMetadatasize" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCChildren", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, -{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCStatistic", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "eStatType" ,"paramtype": "EItemStatistic"}, -{ "paramname": "pStatValue" ,"paramtype": "uint64 *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCNumAdditionalPreviews", - "returntype": "uint32", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCAdditionalPreview", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "previewIndex" ,"paramtype": "uint32"}, -{ "paramname": "pchURLOrVideoID" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, -{ "paramname": "cchURLSize" ,"paramtype": "uint32"}, -{ "paramname": "pchOriginalFileName" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, -{ "paramname": "cchOriginalFileNameSize" ,"paramtype": "uint32"}, -{ "paramname": "pPreviewType" ,"paramtype": "EItemPreviewType *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCNumKeyValueTags", - "returntype": "uint32", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetQueryUGCKeyValueTag", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "keyValueTagIndex" ,"paramtype": "uint32"}, -{ "paramname": "pchKey" ,"out_string_count": "cchKeySize" ,"paramtype": "char *"}, -{ "paramname": "cchKeySize" ,"paramtype": "uint32"}, -{ "paramname": "pchValue" ,"out_string_count": "cchValueSize" ,"paramtype": "char *"}, -{ "paramname": "cchValueSize" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "ReleaseQueryUGCRequest", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddRequiredTag", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "pTagName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddExcludedTag", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "pTagName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnOnlyIDs", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bReturnOnlyIDs" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnKeyValueTags", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bReturnKeyValueTags" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnLongDescription", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bReturnLongDescription" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnMetadata", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bReturnMetadata" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnChildren", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bReturnChildren" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnAdditionalPreviews", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bReturnAdditionalPreviews" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnTotalOnly", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bReturnTotalOnly" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetReturnPlaytimeStats", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "unDays" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetLanguage", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "pchLanguage" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetAllowCachedResponse", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetCloudFileNameFilter", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "pMatchCloudFileName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetMatchAnyTag", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "bMatchAnyTag" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetSearchText", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "pSearchText" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetRankedByTrendDays", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "unDays" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddRequiredKeyValueTag", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, -{ "paramname": "pKey" ,"paramtype": "const char *"}, -{ "paramname": "pValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "RequestUGCDetails", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "CreateItem", "callresult": "CreateItemResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, -{ "paramname": "eFileType" ,"paramtype": "EWorkshopFileType"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "StartItemUpdate", - "returntype": "UGCUpdateHandle_t", - "params": [ -{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemTitle", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pchTitle" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemDescription", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pchDescription" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemUpdateLanguage", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pchLanguage" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemMetadata", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pchMetaData" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemVisibility", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemTags", - "returntype": "bool", - "params": [ -{ "paramname": "updateHandle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pTags" ,"paramtype": "const struct SteamParamStringArray_t *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemContent", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pszContentFolder" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetItemPreview", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetAllowLegacyUpload", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "bAllowLegacyUpload" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "RemoveItemKeyValueTags", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddItemKeyValueTag", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddItemPreviewFile", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"}, -{ "paramname": "type" ,"paramtype": "EItemPreviewType"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddItemPreviewVideo", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pszVideoID" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "UpdateItemPreviewFile", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "UpdateItemPreviewVideo", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"}, -{ "paramname": "pszVideoID" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "RemoveItemPreview", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "index" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SubmitItemUpdate", "callresult": "SubmitItemUpdateResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "pchChangeNote" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetItemUpdateProgress", - "returntype": "EItemUpdateStatus", - "params": [ -{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, -{ "paramname": "punBytesProcessed" ,"paramtype": "uint64 *"}, -{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SetUserItemVote", "callresult": "SetUserItemVoteResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "bVoteUp" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetUserItemVote", "callresult": "GetUserItemVoteResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddItemToFavorites", "callresult": "UserFavoriteItemsListChanged_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "RemoveItemFromFavorites", "callresult": "UserFavoriteItemsListChanged_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SubscribeItem", "callresult": "RemoteStorageSubscribePublishedFileResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "UnsubscribeItem", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetNumSubscribedItems", - "returntype": "uint32" -} -,{ - "classname": "ISteamUGC", - "methodname": "GetSubscribedItems", - "returntype": "uint32", - "params": [ -{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, -{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetItemState", - "returntype": "uint32", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetItemInstallInfo", - "returntype": "bool", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "punSizeOnDisk" ,"paramtype": "uint64 *"}, -{ "paramname": "pchFolder" ,"out_string_count": "cchFolderSize" ,"paramtype": "char *"}, -{ "paramname": "cchFolderSize" ,"paramtype": "uint32"}, -{ "paramname": "punTimeStamp" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetItemDownloadInfo", - "returntype": "bool", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, -{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "DownloadItem", - "returntype": "bool", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "bHighPriority" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "BInitWorkshopForGameServer", - "returntype": "bool", - "params": [ -{ "paramname": "unWorkshopDepotID" ,"paramtype": "DepotId_t"}, -{ "paramname": "pszFolder" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "SuspendDownloads", - "returntype": "void", - "params": [ -{ "paramname": "bSuspend" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "StartPlaytimeTracking", "callresult": "StartPlaytimeTrackingResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, -{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "StopPlaytimeTracking", "callresult": "StopPlaytimeTrackingResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, -{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "StopPlaytimeTrackingForAllItems", "callresult": "StopPlaytimeTrackingResult_t", - "returntype": "SteamAPICall_t" -} -,{ - "classname": "ISteamUGC", - "methodname": "AddDependency", "callresult": "AddUGCDependencyResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nParentPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "nChildPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "RemoveDependency", "callresult": "RemoveUGCDependencyResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nParentPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "nChildPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "AddAppDependency", "callresult": "AddAppDependencyResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "RemoveAppDependency", "callresult": "RemoveAppDependencyResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "GetAppDependencies", "callresult": "GetAppDependenciesResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamUGC", - "methodname": "DeleteItem", "callresult": "DeleteItemResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} - ] -} -,{ - "classname": "ISteamAppList", - "methodname": "GetNumInstalledApps", - "returntype": "uint32" -} -,{ - "classname": "ISteamAppList", - "methodname": "GetInstalledApps", - "returntype": "uint32", - "params": [ -{ "paramname": "pvecAppID" ,"paramtype": "AppId_t *"}, -{ "paramname": "unMaxAppIDs" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamAppList", - "methodname": "GetAppName", - "returntype": "int", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "pchName" ,"out_string": " " ,"paramtype": "char *"}, -{ "paramname": "cchNameMax" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamAppList", - "methodname": "GetAppInstallDir", - "returntype": "int", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "pchDirectory" ,"paramtype": "char *"}, -{ "paramname": "cchNameMax" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamAppList", - "methodname": "GetAppBuildId", - "returntype": "int", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "DestructISteamHTMLSurface", - "returntype": "void" -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "Init", - "returntype": "bool" -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "Shutdown", - "returntype": "bool" -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "CreateBrowser", "callresult": "HTML_BrowserReady_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pchUserAgent" ,"paramtype": "const char *"}, -{ "paramname": "pchUserCSS" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "RemoveBrowser", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "LoadURL", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "pchURL" ,"paramtype": "const char *"}, -{ "paramname": "pchPostData" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetSize", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "unWidth" ,"paramtype": "uint32"}, -{ "paramname": "unHeight" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "StopLoad", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "Reload", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "GoBack", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "GoForward", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "AddHeader", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "ExecuteJavascript", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "pchScript" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "MouseUp", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "MouseDown", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "MouseDoubleClick", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "MouseMove", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "x" ,"paramtype": "int"}, -{ "paramname": "y" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "MouseWheel", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "nDelta" ,"paramtype": "int32"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "KeyDown", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, -{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"}, -{ "paramname": "bIsSystemKey" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "KeyUp", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, -{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "KeyChar", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "cUnicodeChar" ,"paramtype": "uint32"}, -{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetHorizontalScroll", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetVerticalScroll", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetKeyFocus", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "bHasKeyFocus" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "ViewSource", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "CopyToClipboard", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "PasteFromClipboard", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "Find", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "pchSearchStr" ,"paramtype": "const char *"}, -{ "paramname": "bCurrentlyInFind" ,"paramtype": "bool"}, -{ "paramname": "bReverse" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "StopFind", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "GetLinkAtPosition", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "x" ,"paramtype": "int"}, -{ "paramname": "y" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetCookie", - "returntype": "void", - "params": [ -{ "paramname": "pchHostname" ,"paramtype": "const char *"}, -{ "paramname": "pchKey" ,"paramtype": "const char *"}, -{ "paramname": "pchValue" ,"paramtype": "const char *"}, -{ "paramname": "pchPath" ,"paramtype": "const char *"}, -{ "paramname": "nExpires" ,"paramtype": "RTime32"}, -{ "paramname": "bSecure" ,"paramtype": "bool"}, -{ "paramname": "bHTTPOnly" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetPageScaleFactor", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "flZoom" ,"paramtype": "float"}, -{ "paramname": "nPointX" ,"paramtype": "int"}, -{ "paramname": "nPointY" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetBackgroundMode", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "bBackgroundMode" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "SetDPIScalingFactor", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "flDPIScaling" ,"paramtype": "float"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "OpenDeveloperTools", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "AllowStartRequest", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "bAllowed" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamHTMLSurface", - "methodname": "JSDialogResponse", - "returntype": "void", - "params": [ -{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, -{ "paramname": "bResult" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetResultStatus", "desc": "Find out the status of an asynchronous inventory result handle.", - "returntype": "EResult", - "params": [ -{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetResultItems", "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", - "returntype": "bool", - "params": [ -{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, -{ "paramname": "pOutItemsArray" ,"out_array_count": "punOutItemsArraySize" ,"desc": "Output array" ,"paramtype": "struct SteamItemDetails_t *"}, -{ "paramname": "punOutItemsArraySize" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetResultItemProperty", - "returntype": "bool", - "params": [ -{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, -{ "paramname": "unItemIndex" ,"paramtype": "uint32"}, -{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, -{ "paramname": "pchValueBuffer" ,"out_string_count": "punValueBufferSizeOut" ,"paramtype": "char *"}, -{ "paramname": "punValueBufferSizeOut" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetResultTimestamp", "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", - "returntype": "uint32", - "params": [ -{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "CheckResultSteamID", "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", - "returntype": "bool", - "params": [ -{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, -{ "paramname": "steamIDExpected" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "DestroyResult", "desc": "Destroys a result handle and frees all associated memory.", - "returntype": "void", - "params": [ -{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetAllItems", "desc": "Captures the entire state of the current users Steam inventory.", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetItemsByID", "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "pInstanceIDs" ,"array_count": "unCountInstanceIDs" ,"paramtype": "const SteamItemInstanceID_t *"}, -{ "paramname": "unCountInstanceIDs" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "SerializeResult", - "returntype": "bool", - "params": [ -{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, -{ "paramname": "pOutBuffer" ,"out_buffer_count": "punOutBufferSize" ,"paramtype": "void *"}, -{ "paramname": "punOutBufferSize" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "DeserializeResult", - "returntype": "bool", - "params": [ -{ "paramname": "pOutResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "pBuffer" ,"buffer_count": "punOutBufferSize" ,"paramtype": "const void *"}, -{ "paramname": "unBufferSize" ,"paramtype": "uint32"}, -{ "paramname": "bRESERVED_MUST_BE_FALSE" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GenerateItems", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, -{ "paramname": "punArrayQuantity" ,"array_count": "unArrayLength" ,"paramtype": "const uint32 *"}, -{ "paramname": "unArrayLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GrantPromoItems", "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "AddPromoItem", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "itemDef" ,"paramtype": "SteamItemDef_t"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "AddPromoItems", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, -{ "paramname": "unArrayLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "ConsumeItem", "desc": "ConsumeItem() removes items from the inventory permanently.", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "itemConsume" ,"paramtype": "SteamItemInstanceID_t"}, -{ "paramname": "unQuantity" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "ExchangeItems", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "pArrayGenerate" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const SteamItemDef_t *"}, -{ "paramname": "punArrayGenerateQuantity" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const uint32 *"}, -{ "paramname": "unArrayGenerateLength" ,"paramtype": "uint32"}, -{ "paramname": "pArrayDestroy" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const SteamItemInstanceID_t *"}, -{ "paramname": "punArrayDestroyQuantity" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const uint32 *"}, -{ "paramname": "unArrayDestroyLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "TransferItemQuantity", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "itemIdSource" ,"paramtype": "SteamItemInstanceID_t"}, -{ "paramname": "unQuantity" ,"paramtype": "uint32"}, -{ "paramname": "itemIdDest" ,"paramtype": "SteamItemInstanceID_t"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "SendItemDropHeartbeat", "desc": "Deprecated method. Playtime accounting is performed on the Steam servers.", - "returntype": "void" -} -,{ - "classname": "ISteamInventory", - "methodname": "TriggerItemDrop", "desc": "Playtime credit must be consumed and turned into item drops by your game.", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "dropListDefinition" ,"paramtype": "SteamItemDef_t"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "TradeItems", - "returntype": "bool", - "params": [ -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, -{ "paramname": "steamIDTradePartner" ,"paramtype": "class CSteamID"}, -{ "paramname": "pArrayGive" ,"array_count": "nArrayGiveLength" ,"paramtype": "const SteamItemInstanceID_t *"}, -{ "paramname": "pArrayGiveQuantity" ,"array_count": "nArrayGiveLength" ,"paramtype": "const uint32 *"}, -{ "paramname": "nArrayGiveLength" ,"paramtype": "uint32"}, -{ "paramname": "pArrayGet" ,"array_count": "nArrayGetLength" ,"paramtype": "const SteamItemInstanceID_t *"}, -{ "paramname": "pArrayGetQuantity" ,"array_count": "nArrayGetLength" ,"paramtype": "const uint32 *"}, -{ "paramname": "nArrayGetLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "LoadItemDefinitions", "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", - "returntype": "bool" -} -,{ - "classname": "ISteamInventory", - "methodname": "GetItemDefinitionIDs", - "returntype": "bool", - "params": [ -{ "paramname": "pItemDefIDs" ,"out_array_count": "punItemDefIDsArraySize" ,"desc": "List of item definition IDs" ,"paramtype": "SteamItemDef_t *"}, -{ "paramname": "punItemDefIDsArraySize" ,"desc": "Size of array is passed in and actual size used is returned in this param" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetItemDefinitionProperty", - "returntype": "bool", - "params": [ -{ "paramname": "iDefinition" ,"paramtype": "SteamItemDef_t"}, -{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, -{ "paramname": "pchValueBuffer" ,"out_string_count": "punValueBufferSizeOut" ,"paramtype": "char *"}, -{ "paramname": "punValueBufferSizeOut" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "RequestEligiblePromoItemDefinitionsIDs", "callresult": "SteamInventoryEligiblePromoItemDefIDs_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetEligiblePromoItemDefinitionIDs", - "returntype": "bool", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, -{ "paramname": "pItemDefIDs" ,"out_array_count": "punItemDefIDsArraySize" ,"desc": "List of item definition IDs" ,"paramtype": "SteamItemDef_t *"}, -{ "paramname": "punItemDefIDsArraySize" ,"desc": "Size of array is passed in and actual size used is returned in this param" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "StartPurchase", "callresult": "SteamInventoryStartPurchaseResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, -{ "paramname": "punArrayQuantity" ,"array_count": "unArrayLength" ,"paramtype": "const uint32 *"}, -{ "paramname": "unArrayLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "RequestPrices", "callresult": "SteamInventoryRequestPricesResult_t", - "returntype": "SteamAPICall_t" -} -,{ - "classname": "ISteamInventory", - "methodname": "GetNumItemsWithPrices", - "returntype": "uint32" -} -,{ - "classname": "ISteamInventory", - "methodname": "GetItemsWithPrices", - "returntype": "bool", - "params": [ -{ "paramname": "pArrayItemDefs" ,"out_array_count": "pArrayItemDefs" ,"desc": "Items with prices" ,"paramtype": "SteamItemDef_t *"}, -{ "paramname": "pCurrentPrices" ,"out_array_count": "pPrices" ,"desc": "List of prices for the given item defs" ,"paramtype": "uint64 *"}, -{ "paramname": "pBasePrices" ,"out_array_count": "pPrices" ,"desc": "List of prices for the given item defs" ,"paramtype": "uint64 *"}, -{ "paramname": "unArrayLength" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "GetItemPrice", - "returntype": "bool", - "params": [ -{ "paramname": "iDefinition" ,"paramtype": "SteamItemDef_t"}, -{ "paramname": "pCurrentPrice" ,"paramtype": "uint64 *"}, -{ "paramname": "pBasePrice" ,"paramtype": "uint64 *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "StartUpdateProperties", - "returntype": "SteamInventoryUpdateHandle_t" -} -,{ - "classname": "ISteamInventory", - "methodname": "RemoveProperty", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "SteamInventoryUpdateHandle_t"}, -{ "paramname": "nItemID" ,"paramtype": "SteamItemInstanceID_t"}, -{ "paramname": "pchPropertyName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "SetProperty", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "SteamInventoryUpdateHandle_t"}, -{ "paramname": "nItemID" ,"paramtype": "SteamItemInstanceID_t"}, -{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, -{ "paramname": "pchPropertyValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "SetProperty", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "SteamInventoryUpdateHandle_t"}, -{ "paramname": "nItemID" ,"paramtype": "SteamItemInstanceID_t"}, -{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, -{ "paramname": "bValue" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "SetProperty", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "SteamInventoryUpdateHandle_t"}, -{ "paramname": "nItemID" ,"paramtype": "SteamItemInstanceID_t"}, -{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, -{ "paramname": "nValue" ,"paramtype": "int64"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "SetProperty", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "SteamInventoryUpdateHandle_t"}, -{ "paramname": "nItemID" ,"paramtype": "SteamItemInstanceID_t"}, -{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, -{ "paramname": "flValue" ,"paramtype": "float"} - ] -} -,{ - "classname": "ISteamInventory", - "methodname": "SubmitUpdateProperties", - "returntype": "bool", - "params": [ -{ "paramname": "handle" ,"paramtype": "SteamInventoryUpdateHandle_t"}, -{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} - ] -} -,{ - "classname": "ISteamVideo", - "methodname": "GetVideoURL", - "returntype": "void", - "params": [ -{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamVideo", - "methodname": "IsBroadcasting", - "returntype": "bool", - "params": [ -{ "paramname": "pnNumViewers" ,"paramtype": "int *"} - ] -} -,{ - "classname": "ISteamVideo", - "methodname": "GetOPFSettings", "callback": "GetOPFSettingsResult_t", - "returntype": "void", - "params": [ -{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamVideo", - "methodname": "GetOPFStringForApp", - "returntype": "bool", - "params": [ -{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"}, -{ "paramname": "pchBuffer" ,"paramtype": "char *"}, -{ "paramname": "pnBufferSize" ,"paramtype": "int32 *"} - ] -} -,{ - "classname": "ISteamParentalSettings", - "methodname": "BIsParentalLockEnabled", - "returntype": "bool" -} -,{ - "classname": "ISteamParentalSettings", - "methodname": "BIsParentalLockLocked", - "returntype": "bool" -} -,{ - "classname": "ISteamParentalSettings", - "methodname": "BIsAppBlocked", - "returntype": "bool", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamParentalSettings", - "methodname": "BIsAppInBlockList", - "returntype": "bool", - "params": [ -{ "paramname": "nAppID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamParentalSettings", - "methodname": "BIsFeatureBlocked", - "returntype": "bool", - "params": [ -{ "paramname": "eFeature" ,"paramtype": "EParentalFeature"} - ] -} -,{ - "classname": "ISteamParentalSettings", - "methodname": "BIsFeatureInBlockList", - "returntype": "bool", - "params": [ -{ "paramname": "eFeature" ,"paramtype": "EParentalFeature"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "InitGameServer", - "returntype": "bool", - "params": [ -{ "paramname": "unIP" ,"paramtype": "uint32"}, -{ "paramname": "usGamePort" ,"paramtype": "uint16"}, -{ "paramname": "usQueryPort" ,"paramtype": "uint16"}, -{ "paramname": "unFlags" ,"paramtype": "uint32"}, -{ "paramname": "nGameAppId" ,"paramtype": "AppId_t"}, -{ "paramname": "pchVersionString" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetProduct", - "returntype": "void", - "params": [ -{ "paramname": "pszProduct" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetGameDescription", - "returntype": "void", - "params": [ -{ "paramname": "pszGameDescription" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetModDir", - "returntype": "void", - "params": [ -{ "paramname": "pszModDir" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetDedicatedServer", - "returntype": "void", - "params": [ -{ "paramname": "bDedicated" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "LogOn", - "returntype": "void", - "params": [ -{ "paramname": "pszToken" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "LogOnAnonymous", - "returntype": "void" -} -,{ - "classname": "ISteamGameServer", - "methodname": "LogOff", - "returntype": "void" -} -,{ - "classname": "ISteamGameServer", - "methodname": "BLoggedOn", - "returntype": "bool" -} -,{ - "classname": "ISteamGameServer", - "methodname": "BSecure", - "returntype": "bool" -} -,{ - "classname": "ISteamGameServer", - "methodname": "GetSteamID", - "returntype": "class CSteamID" -} -,{ - "classname": "ISteamGameServer", - "methodname": "WasRestartRequested", - "returntype": "bool" -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetMaxPlayerCount", - "returntype": "void", - "params": [ -{ "paramname": "cPlayersMax" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetBotPlayerCount", - "returntype": "void", - "params": [ -{ "paramname": "cBotplayers" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetServerName", - "returntype": "void", - "params": [ -{ "paramname": "pszServerName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetMapName", - "returntype": "void", - "params": [ -{ "paramname": "pszMapName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetPasswordProtected", - "returntype": "void", - "params": [ -{ "paramname": "bPasswordProtected" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetSpectatorPort", - "returntype": "void", - "params": [ -{ "paramname": "unSpectatorPort" ,"paramtype": "uint16"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetSpectatorServerName", - "returntype": "void", - "params": [ -{ "paramname": "pszSpectatorServerName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "ClearAllKeyValues", - "returntype": "void" -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetKeyValue", - "returntype": "void", - "params": [ -{ "paramname": "pKey" ,"paramtype": "const char *"}, -{ "paramname": "pValue" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetGameTags", - "returntype": "void", - "params": [ -{ "paramname": "pchGameTags" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetGameData", - "returntype": "void", - "params": [ -{ "paramname": "pchGameData" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetRegion", - "returntype": "void", - "params": [ -{ "paramname": "pszRegion" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SendUserConnectAndAuthenticate", - "returntype": "bool", - "params": [ -{ "paramname": "unIPClient" ,"paramtype": "uint32"}, -{ "paramname": "pvAuthBlob" ,"paramtype": "const void *"}, -{ "paramname": "cubAuthBlobSize" ,"paramtype": "uint32"}, -{ "paramname": "pSteamIDUser" ,"paramtype": "class CSteamID *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "CreateUnauthenticatedUserConnection", - "returntype": "class CSteamID" -} -,{ - "classname": "ISteamGameServer", - "methodname": "SendUserDisconnect", - "returntype": "void", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "BUpdateUserData", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchPlayerName" ,"paramtype": "const char *"}, -{ "paramname": "uScore" ,"paramtype": "uint32"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "GetAuthSessionTicket", - "returntype": "HAuthTicket", - "params": [ -{ "paramname": "pTicket" ,"paramtype": "void *"}, -{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, -{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "BeginAuthSession", - "returntype": "EBeginAuthSessionResult", - "params": [ -{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, -{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "EndAuthSession", - "returntype": "void", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "CancelAuthTicket", - "returntype": "void", - "params": [ -{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "UserHasLicenseForApp", - "returntype": "EUserHasLicenseForAppResult", - "params": [ -{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, -{ "paramname": "appID" ,"paramtype": "AppId_t"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "RequestUserGroupStatus", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "steamIDGroup" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "GetGameplayStats", - "returntype": "void" -} -,{ - "classname": "ISteamGameServer", - "methodname": "GetServerReputation", "callresult": "GSReputation_t", - "returntype": "SteamAPICall_t" -} -,{ - "classname": "ISteamGameServer", - "methodname": "GetPublicIP", - "returntype": "uint32" -} -,{ - "classname": "ISteamGameServer", - "methodname": "HandleIncomingPacket", - "returntype": "bool", - "params": [ -{ "paramname": "pData" ,"paramtype": "const void *"}, -{ "paramname": "cbData" ,"paramtype": "int"}, -{ "paramname": "srcIP" ,"paramtype": "uint32"}, -{ "paramname": "srcPort" ,"paramtype": "uint16"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "GetNextOutgoingPacket", - "returntype": "int", - "params": [ -{ "paramname": "pOut" ,"paramtype": "void *"}, -{ "paramname": "cbMaxOut" ,"paramtype": "int"}, -{ "paramname": "pNetAdr" ,"paramtype": "uint32 *"}, -{ "paramname": "pPort" ,"paramtype": "uint16 *"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "EnableHeartbeats", - "returntype": "void", - "params": [ -{ "paramname": "bActive" ,"paramtype": "bool"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "SetHeartbeatInterval", - "returntype": "void", - "params": [ -{ "paramname": "iHeartbeatInterval" ,"paramtype": "int"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "ForceHeartbeat", - "returntype": "void" -} -,{ - "classname": "ISteamGameServer", - "methodname": "AssociateWithClan", "callresult": "AssociateWithClanResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamGameServer", - "methodname": "ComputeNewPlayerCompatibility", "callresult": "ComputeNewPlayerCompatibilityResult_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDNewPlayer" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "RequestUserStats", "callresult": "GSStatsReceived_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "GetUserStat", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "int32 *"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "GetUserStat", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pData" ,"paramtype": "float *"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "GetUserAchievement", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "pbAchieved" ,"paramtype": "bool *"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "SetUserStat", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "nData" ,"paramtype": "int32"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "SetUserStat", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "fData" ,"paramtype": "float"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "UpdateUserAvgRateStat", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"}, -{ "paramname": "flCountThisSession" ,"paramtype": "float"}, -{ "paramname": "dSessionLength" ,"paramtype": "double"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "SetUserAchievement", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "ClearUserAchievement", - "returntype": "bool", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, -{ "paramname": "pchName" ,"paramtype": "const char *"} - ] -} -,{ - "classname": "ISteamGameServerStats", - "methodname": "StoreUserStats", "callresult": "GSStatsStored_t", - "returntype": "SteamAPICall_t", - "params": [ -{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} - ] -} -] -} \ No newline at end of file diff --git a/Generator/steam_sdk/steam_api_common.h b/Generator/steam_sdk/steam_api_common.h index cc936de..005fb11 100644 --- a/Generator/steam_sdk/steam_api_common.h +++ b/Generator/steam_sdk/steam_api_common.h @@ -81,6 +81,9 @@ extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallback // // Callbacks and call-results are queued automatically and are only // delivered/executed when your application calls SteamAPI_RunCallbacks(). +// +// Note that there is an alternative, lower level callback dispatch mechanism. +// See SteamAPI_ManualDispatch_Init //----------------------------------------------------------------------------------------------------------------------------------------------------------// // Dispatch all queued Steamworks callbacks. @@ -150,6 +153,7 @@ public: void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } protected: + friend class CCallbackMgr; virtual void Run( void *pvParam ) = 0; virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } virtual int GetCallbackSizeBytes() { return sizeof_P; } diff --git a/Generator/steam_sdk/steam_api_flat.h b/Generator/steam_sdk/steam_api_flat.h index b8c579e..d0e3c48 100644 --- a/Generator/steam_sdk/steam_api_flat.h +++ b/Generator/steam_sdk/steam_api_flat.h @@ -1,925 +1,1274 @@ -//====== Copyright (c) 1996-2014, Valve Corporation, All rights reserved. ======= +//====== Copyright Valve Corporation, All rights reserved. ==================== // -// Purpose: Header for flatted SteamAPI. Use this for binding to other languages. +// Purpose: Header for "flat" SteamAPI. Use this for binding to other languages. // This file is auto-generated, do not edit it. // //============================================================================= #ifndef STEAMAPIFLAT_H #define STEAMAPIFLAT_H -#ifdef _WIN32 -#pragma once -#endif -#include +#include "steam/steam_api.h" +#include "steam/isteamgameserver.h" +#include "steam/isteamgameserverstats.h" - -typedef unsigned char uint8; -typedef unsigned char uint8; -typedef signed char int8; -typedef short int16; -typedef unsigned short uint16; -typedef int int32; -typedef unsigned int uint32; -typedef long long int64; -typedef unsigned long long uint64; -typedef int64 lint64; -typedef uint64 ulint64; -typedef uint8 Salt_t[8]; -typedef uint64 GID_t; -typedef uint64 JobID_t; -typedef GID_t TxnID_t; -typedef uint32 PackageId_t; -typedef uint32 BundleId_t; -typedef uint32 AppId_t; -typedef uint64 AssetClassId_t; -typedef uint32 PhysicalItemId_t; -typedef uint32 DepotId_t; -typedef uint32 RTime32; -typedef uint32 CellID_t; -typedef uint64 SteamAPICall_t; -typedef uint32 AccountID_t; -typedef uint32 PartnerId_t; -typedef uint64 ManifestId_t; -typedef uint64 SiteId_t; -typedef uint64 PartyBeaconID_t; -typedef uint32 HAuthTicket; -typedef void * BREAKPAD_HANDLE; -typedef char compile_time_assert_type[1]; -typedef int32 HSteamPipe; -typedef int32 HSteamUser; -typedef int16 FriendsGroupID_t; -typedef void * HServerListRequest; -typedef int HServerQuery; -typedef uint64 UGCHandle_t; -typedef uint64 PublishedFileUpdateHandle_t; -typedef uint64 PublishedFileId_t; -typedef uint64 UGCFileWriteStreamHandle_t; -typedef char compile_time_assert_type[1]; -typedef uint64 SteamLeaderboard_t; -typedef uint64 SteamLeaderboardEntries_t; -typedef uint32 SNetSocket_t; -typedef uint32 SNetListenSocket_t; -typedef uint32 ScreenshotHandle; -typedef uint32 HTTPRequestHandle; -typedef uint32 HTTPCookieContainerHandle; -typedef uint64 InputHandle_t; -typedef uint64 InputActionSetHandle_t; -typedef uint64 InputDigitalActionHandle_t; -typedef uint64 InputAnalogActionHandle_t; -typedef uint64 ControllerHandle_t; -typedef uint64 ControllerActionSetHandle_t; -typedef uint64 ControllerDigitalActionHandle_t; -typedef uint64 ControllerAnalogActionHandle_t; -typedef uint64 UGCQueryHandle_t; -typedef uint64 UGCUpdateHandle_t; -typedef uint32 HHTMLBrowser; -typedef uint64 SteamItemInstanceID_t; -typedef int32 SteamItemDef_t; -typedef int32 SteamInventoryResult_t; -typedef uint64 SteamInventoryUpdateHandle_t; -// OpenVR Constants -int const_k_iSteamUserCallbacks = 100; -int const_k_iSteamGameServerCallbacks = 200; -int const_k_iSteamFriendsCallbacks = 300; -int const_k_iSteamBillingCallbacks = 400; -int const_k_iSteamMatchmakingCallbacks = 500; -int const_k_iSteamContentServerCallbacks = 600; -int const_k_iSteamUtilsCallbacks = 700; -int const_k_iClientFriendsCallbacks = 800; -int const_k_iClientUserCallbacks = 900; -int const_k_iSteamAppsCallbacks = 1000; -int const_k_iSteamUserStatsCallbacks = 1100; -int const_k_iSteamNetworkingCallbacks = 1200; -int const_k_iSteamNetworkingSocketsCallbacks = 1220; -int const_k_iSteamNetworkingMessagesCallbacks = 1250; -int const_k_iClientRemoteStorageCallbacks = 1300; -int const_k_iClientDepotBuilderCallbacks = 1400; -int const_k_iSteamGameServerItemsCallbacks = 1500; -int const_k_iClientUtilsCallbacks = 1600; -int const_k_iSteamGameCoordinatorCallbacks = 1700; -int const_k_iSteamGameServerStatsCallbacks = 1800; -int const_k_iSteam2AsyncCallbacks = 1900; -int const_k_iSteamGameStatsCallbacks = 2000; -int const_k_iClientHTTPCallbacks = 2100; -int const_k_iClientScreenshotsCallbacks = 2200; -int const_k_iSteamScreenshotsCallbacks = 2300; -int const_k_iClientAudioCallbacks = 2400; -int const_k_iClientUnifiedMessagesCallbacks = 2500; -int const_k_iSteamStreamLauncherCallbacks = 2600; -int const_k_iClientControllerCallbacks = 2700; -int const_k_iSteamControllerCallbacks = 2800; -int const_k_iClientParentalSettingsCallbacks = 2900; -int const_k_iClientDeviceAuthCallbacks = 3000; -int const_k_iClientNetworkDeviceManagerCallbacks = 3100; -int const_k_iClientMusicCallbacks = 3200; -int const_k_iClientRemoteClientManagerCallbacks = 3300; -int const_k_iClientUGCCallbacks = 3400; -int const_k_iSteamStreamClientCallbacks = 3500; -int const_k_IClientProductBuilderCallbacks = 3600; -int const_k_iClientShortcutsCallbacks = 3700; -int const_k_iClientRemoteControlManagerCallbacks = 3800; -int const_k_iSteamAppListCallbacks = 3900; -int const_k_iSteamMusicCallbacks = 4000; -int const_k_iSteamMusicRemoteCallbacks = 4100; -int const_k_iClientVRCallbacks = 4200; -int const_k_iClientGameNotificationCallbacks = 4300; -int const_k_iSteamGameNotificationCallbacks = 4400; -int const_k_iSteamHTMLSurfaceCallbacks = 4500; -int const_k_iClientVideoCallbacks = 4600; -int const_k_iClientInventoryCallbacks = 4700; -int const_k_iClientBluetoothManagerCallbacks = 4800; -int const_k_iClientSharedConnectionCallbacks = 4900; -int const_k_ISteamParentalSettingsCallbacks = 5000; -int const_k_iClientShaderCallbacks = 5100; -int const_k_iSteamGameSearchCallbacks = 5200; -int const_k_iSteamPartiesCallbacks = 5300; -int const_k_iClientPartiesCallbacks = 5400; -int const_k_cchPersonaNameMax = 128; -int const_k_cwchPersonaNameMax = 32; -int const_k_cchMaxRichPresenceKeys = 30; -int const_k_cchMaxRichPresenceKeyLength = 64; -int const_k_cchMaxRichPresenceValueLength = 256; -int const_k_cchStatNameMax = 128; -int const_k_cchLeaderboardNameMax = 128; -int const_k_cLeaderboardDetailsMax = 64; -unsigned long const_k_SteamItemInstanceIDInvalid = 0xffffffff; -int const_k_SteamInventoryResultInvalid = -1; +typedef uint64 uint64_steamid; // Used when passing or returning CSteamID +typedef uint64 uint64_gameid; // Used when passing or return CGameID -// OpenVR Enums -// OpenVR Structs +// ISteamClient +S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe( ISteamClient* self ); +S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe( ISteamClient* self, HSteamPipe hSteamPipe ); +S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser( ISteamClient* self, HSteamPipe hSteamPipe ); +S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser( ISteamClient* self, HSteamPipe * phSteamPipe, EAccountType eAccountType ); +S_API void SteamAPI_ISteamClient_ReleaseUser( ISteamClient* self, HSteamPipe hSteamPipe, HSteamUser hUser ); +S_API ISteamUser * SteamAPI_ISteamClient_GetISteamUser( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API void SteamAPI_ISteamClient_SetLocalIPBinding( ISteamClient* self, const SteamIPAddress_t & unIP, uint16 usPort ); +S_API ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils( ISteamClient* self, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamApps * SteamAPI_ISteamClient_GetISteamApps( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamGameSearch * SteamAPI_ISteamClient_GetISteamGameSearch( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount( ISteamClient* self ); +S_API void SteamAPI_ISteamClient_SetWarningMessageHook( ISteamClient* self, SteamAPIWarningMessageHook_t pFunction ); +S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed( ISteamClient* self ); +S_API ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamController * SteamAPI_ISteamClient_GetISteamController( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamParentalSettings * SteamAPI_ISteamClient_GetISteamParentalSettings( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamInput * SteamAPI_ISteamClient_GetISteamInput( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamParties * SteamAPI_ISteamClient_GetISteamParties( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamRemotePlay * SteamAPI_ISteamClient_GetISteamRemotePlay( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +// ISteamUser +// A versioned accessor is exported by the library +S_API ISteamUser *SteamAPI_SteamUser_v021(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUser(), but using this ensures that you are using a matching library. +inline ISteamUser *SteamAPI_SteamUser() { return SteamAPI_SteamUser_v021(); } +S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BLoggedOn( ISteamUser* self ); +S_API uint64_steamid SteamAPI_ISteamUser_GetSteamID( ISteamUser* self ); +S_API int SteamAPI_ISteamUser_InitiateGameConnection_DEPRECATED( ISteamUser* self, void * pAuthBlob, int cbMaxAuthBlob, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ); +S_API void SteamAPI_ISteamUser_TerminateGameConnection_DEPRECATED( ISteamUser* self, uint32 unIPServer, uint16 usPortServer ); +S_API void SteamAPI_ISteamUser_TrackAppUsageEvent( ISteamUser* self, uint64_gameid gameID, int eAppUsageEvent, const char * pchExtraInfo ); +S_API bool SteamAPI_ISteamUser_GetUserDataFolder( ISteamUser* self, char * pchBuffer, int cubBuffer ); +S_API void SteamAPI_ISteamUser_StartVoiceRecording( ISteamUser* self ); +S_API void SteamAPI_ISteamUser_StopVoiceRecording( ISteamUser* self ); +S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice( ISteamUser* self, uint32 * pcbCompressed, uint32 * pcbUncompressed_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated ); +S_API EVoiceResult SteamAPI_ISteamUser_GetVoice( ISteamUser* self, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed_Deprecated, void * pUncompressedDestBuffer_Deprecated, uint32 cbUncompressedDestBufferSize_Deprecated, uint32 * nUncompressBytesWritten_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated ); +S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice( ISteamUser* self, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate ); +S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate( ISteamUser* self ); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession( ISteamUser* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); +S_API void SteamAPI_ISteamUser_EndAuthSession( ISteamUser* self, uint64_steamid steamID ); +S_API void SteamAPI_ISteamUser_CancelAuthTicket( ISteamUser* self, HAuthTicket hAuthTicket ); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp( ISteamUser* self, uint64_steamid steamID, AppId_t appID ); +S_API bool SteamAPI_ISteamUser_BIsBehindNAT( ISteamUser* self ); +S_API void SteamAPI_ISteamUser_AdvertiseGame( ISteamUser* self, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer ); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket( ISteamUser* self, void * pDataToInclude, int cbDataToInclude ); +S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API int SteamAPI_ISteamUser_GetGameBadgeLevel( ISteamUser* self, int nSeries, bool bFoil ); +S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel( ISteamUser* self ); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL( ISteamUser* self, const char * pchRedirectURL ); +S_API bool SteamAPI_ISteamUser_BIsPhoneVerified( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification( ISteamUser* self ); +S_API SteamAPICall_t SteamAPI_ISteamUser_GetMarketEligibility( ISteamUser* self ); +S_API SteamAPICall_t SteamAPI_ISteamUser_GetDurationControl( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BSetDurationControlOnlineState( ISteamUser* self, EDurationControlOnlineState eNewState ); -S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe(intptr_t instancePtr); -S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe(intptr_t instancePtr, HSteamPipe hSteamPipe); -S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser(intptr_t instancePtr, HSteamPipe hSteamPipe); -S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser(intptr_t instancePtr, HSteamPipe * phSteamPipe, EAccountType eAccountType); -S_API void SteamAPI_ISteamClient_ReleaseUser(intptr_t instancePtr, HSteamPipe hSteamPipe, HSteamUser hUser); -S_API class ISteamUser * SteamAPI_ISteamClient_GetISteamUser(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API void SteamAPI_ISteamClient_SetLocalIPBinding(intptr_t instancePtr, uint32 unIP, uint16 usPort); -S_API class ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils(intptr_t instancePtr, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamApps * SteamAPI_ISteamClient_GetISteamApps(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamGameSearch * SteamAPI_ISteamClient_GetISteamGameSearch(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount(intptr_t instancePtr); -S_API void SteamAPI_ISteamClient_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); -S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(intptr_t instancePtr); -S_API class ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamController * SteamAPI_ISteamClient_GetISteamController(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamParentalSettings * SteamAPI_ISteamClient_GetISteamParentalSettings(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamInput * SteamAPI_ISteamClient_GetISteamInput(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API class ISteamParties * SteamAPI_ISteamClient_GetISteamParties(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUser_BLoggedOn(intptr_t instancePtr); -S_API uint64 SteamAPI_ISteamUser_GetSteamID(intptr_t instancePtr); -S_API int SteamAPI_ISteamUser_InitiateGameConnection(intptr_t instancePtr, void * pAuthBlob, int cbMaxAuthBlob, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure); -S_API void SteamAPI_ISteamUser_TerminateGameConnection(intptr_t instancePtr, uint32 unIPServer, uint16 usPortServer); -S_API void SteamAPI_ISteamUser_TrackAppUsageEvent(intptr_t instancePtr, class CGameID gameID, int eAppUsageEvent, const char * pchExtraInfo); -S_API bool SteamAPI_ISteamUser_GetUserDataFolder(intptr_t instancePtr, char * pchBuffer, int cubBuffer); -S_API void SteamAPI_ISteamUser_StartVoiceRecording(intptr_t instancePtr); -S_API void SteamAPI_ISteamUser_StopVoiceRecording(intptr_t instancePtr); -S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice(intptr_t instancePtr, uint32 * pcbCompressed, uint32 * pcbUncompressed_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated); -S_API EVoiceResult SteamAPI_ISteamUser_GetVoice(intptr_t instancePtr, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed_Deprecated, void * pUncompressedDestBuffer_Deprecated, uint32 cbUncompressedDestBufferSize_Deprecated, uint32 * nUncompressBytesWritten_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated); -S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice(intptr_t instancePtr, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate); -S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(intptr_t instancePtr); -S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); -S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); -S_API void SteamAPI_ISteamUser_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); -S_API void SteamAPI_ISteamUser_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); -S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); -S_API bool SteamAPI_ISteamUser_BIsBehindNAT(intptr_t instancePtr); -S_API void SteamAPI_ISteamUser_AdvertiseGame(intptr_t instancePtr, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer); -S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket(intptr_t instancePtr, void * pDataToInclude, int cbDataToInclude); -S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); -S_API int SteamAPI_ISteamUser_GetGameBadgeLevel(intptr_t instancePtr, int nSeries, bool bFoil); -S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL(intptr_t instancePtr, const char * pchRedirectURL); -S_API bool SteamAPI_ISteamUser_BIsPhoneVerified(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamUser_GetMarketEligibility(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamFriends_GetPersonaName(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName(intptr_t instancePtr, const char * pchPersonaName); -S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState(intptr_t instancePtr); -S_API int SteamAPI_ISteamFriends_GetFriendCount(intptr_t instancePtr, int iFriendFlags); -S_API uint64 SteamAPI_ISteamFriends_GetFriendByIndex(intptr_t instancePtr, int iFriend, int iFriendFlags); -S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed(intptr_t instancePtr, class CSteamID steamIDFriend, struct FriendGameInfo_t * pFriendGameInfo); -S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(intptr_t instancePtr, class CSteamID steamIDFriend, int iPersonaName); -S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname(intptr_t instancePtr, class CSteamID steamIDPlayer); -S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount(intptr_t instancePtr); -S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(intptr_t instancePtr, int iFG); -S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); -S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); -S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(intptr_t instancePtr, FriendsGroupID_t friendsGroupID, class CSteamID * pOutSteamIDMembers, int nMembersCount); -S_API bool SteamAPI_ISteamFriends_HasFriend(intptr_t instancePtr, class CSteamID steamIDFriend, int iFriendFlags); -S_API int SteamAPI_ISteamFriends_GetClanCount(intptr_t instancePtr); -S_API uint64 SteamAPI_ISteamFriends_GetClanByIndex(intptr_t instancePtr, int iClan); -S_API const char * SteamAPI_ISteamFriends_GetClanName(intptr_t instancePtr, class CSteamID steamIDClan); -S_API const char * SteamAPI_ISteamFriends_GetClanTag(intptr_t instancePtr, class CSteamID steamIDClan); -S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts(intptr_t instancePtr, class CSteamID steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting); -S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts(intptr_t instancePtr, class CSteamID * psteamIDClans, int cClansToRequest); -S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource(intptr_t instancePtr, class CSteamID steamIDSource); -S_API uint64 SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(intptr_t instancePtr, class CSteamID steamIDSource, int iFriend); -S_API bool SteamAPI_ISteamFriends_IsUserInSource(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDSource); -S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(intptr_t instancePtr, class CSteamID steamIDUser, bool bSpeaking); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlay(intptr_t instancePtr, const char * pchDialog); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(intptr_t instancePtr, const char * pchDialog, class CSteamID steamID); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(intptr_t instancePtr, const char * pchURL, EActivateGameOverlayToWebPageMode eMode); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(intptr_t instancePtr, AppId_t nAppID, EOverlayToStoreFlag eFlag); -S_API void SteamAPI_ISteamFriends_SetPlayedWith(intptr_t instancePtr, class CSteamID steamIDUserPlayedWith); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API bool SteamAPI_ISteamFriends_RequestUserInformation(intptr_t instancePtr, class CSteamID steamIDUser, bool bRequireNameOnly); -S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList(intptr_t instancePtr, class CSteamID steamIDClan); -S_API uint64 SteamAPI_ISteamFriends_GetClanOwner(intptr_t instancePtr, class CSteamID steamIDClan); -S_API int SteamAPI_ISteamFriends_GetClanOfficerCount(intptr_t instancePtr, class CSteamID steamIDClan); -S_API uint64 SteamAPI_ISteamFriends_GetClanOfficerByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iOfficer); -S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions(intptr_t instancePtr); -S_API bool SteamAPI_ISteamFriends_SetRichPresence(intptr_t instancePtr, const char * pchKey, const char * pchValue); -S_API void SteamAPI_ISteamFriends_ClearRichPresence(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchKey); -S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(intptr_t instancePtr, class CSteamID steamIDFriend, int iKey); -S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API bool SteamAPI_ISteamFriends_InviteUserToGame(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchConnectString); -S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount(intptr_t instancePtr); -S_API uint64 SteamAPI_ISteamFriends_GetCoplayFriend(intptr_t instancePtr, int iCoplayFriend); -S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame(intptr_t instancePtr, class CSteamID steamIDFriend); -S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); -S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); -S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount(intptr_t instancePtr, class CSteamID steamIDClan); -S_API uint64 SteamAPI_ISteamFriends_GetChatMemberByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iUser); -S_API bool SteamAPI_ISteamFriends_SendClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, const char * pchText); -S_API int SteamAPI_ISteamFriends_GetClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, class CSteamID * psteamidChatter); -S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin(intptr_t instancePtr, class CSteamID steamIDClanChat, class CSteamID steamIDUser); -S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); -S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); -S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); -S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(intptr_t instancePtr, bool bInterceptEnabled); -S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchMsgToSend); -S_API int SteamAPI_ISteamFriends_GetFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType); -S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount(intptr_t instancePtr, class CSteamID steamID); -S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing(intptr_t instancePtr, class CSteamID steamID); -S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList(intptr_t instancePtr, uint32 unStartIndex); -S_API bool SteamAPI_ISteamFriends_IsClanPublic(intptr_t instancePtr, class CSteamID steamIDClan); -S_API bool SteamAPI_ISteamFriends_IsClanOfficialGameGroup(intptr_t instancePtr, class CSteamID steamIDClan); -S_API int SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(intptr_t instancePtr); -S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamUtils_GetIPCountry(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUtils_GetImageSize(intptr_t instancePtr, int iImage, uint32 * pnWidth, uint32 * pnHeight); -S_API bool SteamAPI_ISteamUtils_GetImageRGBA(intptr_t instancePtr, int iImage, uint8 * pubDest, int nDestBufferSize); -S_API bool SteamAPI_ISteamUtils_GetCSERIPPort(intptr_t instancePtr, uint32 * unIP, uint16 * usPort); -S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamUtils_GetAppID(intptr_t instancePtr); -S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(intptr_t instancePtr, ENotificationPosition eNotificationPosition); -S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, bool * pbFailed); -S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason(intptr_t instancePtr, SteamAPICall_t hSteamAPICall); -S_API bool SteamAPI_ISteamUtils_GetAPICallResult(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed); -S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount(intptr_t instancePtr); -S_API void SteamAPI_ISteamUtils_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); -S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature(intptr_t instancePtr, const char * szFileName); -S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput(intptr_t instancePtr, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText); -S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(intptr_t instancePtr, char * pchText, uint32 cchText); -S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR(intptr_t instancePtr); -S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset(intptr_t instancePtr, int nHorizontalInset, int nVerticalInset); -S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(intptr_t instancePtr); -S_API void SteamAPI_ISteamUtils_StartVRDashboard(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled(intptr_t instancePtr); -S_API void SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled(intptr_t instancePtr, bool bEnabled); -S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(intptr_t instancePtr, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer); -S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer); -S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags); -S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList(intptr_t instancePtr); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(intptr_t instancePtr, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToBeCloseTo); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(intptr_t instancePtr, int nSlotsAvailable); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(intptr_t instancePtr, ELobbyDistanceFilter eLobbyDistanceFilter); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(intptr_t instancePtr, int cMaxResults); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyByIndex(intptr_t instancePtr, int iLobby); -S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby(intptr_t instancePtr, ELobbyType eLobbyType, int cMaxMembers); -S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API void SteamAPI_ISteamMatchmaking_LeaveLobby(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDInvitee); -S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iMember); -S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); -S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize); -S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); -S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDUser, const char * pchKey); -S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); -S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(intptr_t instancePtr, class CSteamID steamIDLobby, const void * pvMsgBody, int cubMsgBody); -S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(intptr_t instancePtr, class CSteamID steamIDLobby, int iChatID, class CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType); -S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, class CSteamID steamIDGameServer); -S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, class CSteamID * psteamIDGameServer); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby, int cMaxMembers); -S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType(intptr_t instancePtr, class CSteamID steamIDLobby, ELobbyType eLobbyType); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(intptr_t instancePtr, class CSteamID steamIDLobby, bool bLobbyJoinable); -S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDNewOwner); -S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDLobbyDependent); -S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(intptr_t instancePtr, HServerListRequest hRequest, int iServer); -S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(intptr_t instancePtr, HServerListRequest hRequest, int iServer); -S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(intptr_t instancePtr, HServerListRequest hRequest, EMatchMakingServerResponse response); -S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(intptr_t instancePtr, class gameserveritem_t & server); -S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(intptr_t instancePtr); -S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(intptr_t instancePtr, const char * pchName, int nScore, float flTimePlayed); -S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(intptr_t instancePtr); -S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(intptr_t instancePtr); -S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(intptr_t instancePtr, const char * pchRule, const char * pchValue); -S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(intptr_t instancePtr); -S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(intptr_t instancePtr); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList(intptr_t instancePtr, AppId_t iApp, class ISteamMatchmakingServerListResponse * pRequestServersResponse); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); -S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(intptr_t instancePtr, HServerListRequest hServerListRequest); -S_API class gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails(intptr_t instancePtr, HServerListRequest hRequest, int iServer); -S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery(intptr_t instancePtr, HServerListRequest hRequest); -S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery(intptr_t instancePtr, HServerListRequest hRequest); -S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(intptr_t instancePtr, HServerListRequest hRequest); -S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount(intptr_t instancePtr, HServerListRequest hRequest); -S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer(intptr_t instancePtr, HServerListRequest hRequest, int iServer); -S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPingResponse * pRequestServersResponse); -S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPlayersResponse * pRequestServersResponse); -S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingRulesResponse * pRequestServersResponse); -S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(intptr_t instancePtr, HServerQuery hServerQuery); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AddGameSearchParams(intptr_t instancePtr, const char * pchKeyToFind, const char * pchValuesToFind); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameWithLobby(intptr_t instancePtr, class CSteamID steamIDLobby, int nPlayerMin, int nPlayerMax); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameSolo(intptr_t instancePtr, int nPlayerMin, int nPlayerMax); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AcceptGame(intptr_t instancePtr); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_DeclineGame(intptr_t instancePtr); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RetrieveConnectionDetails(intptr_t instancePtr, class CSteamID steamIDHost, char * pchConnectionDetails, int cubConnectionDetails); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGameSearch(intptr_t instancePtr); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetGameHostParams(intptr_t instancePtr, const char * pchKey, const char * pchValue); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetConnectionDetails(intptr_t instancePtr, const char * pchConnectionDetails, int cubConnectionDetails); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RequestPlayersForGame(intptr_t instancePtr, int nPlayerMin, int nPlayerMax, int nMaxTeamSize); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_HostConfirmGameStart(intptr_t instancePtr, uint64 ullUniqueGameID); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame(intptr_t instancePtr); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SubmitPlayerResult(intptr_t instancePtr, uint64 ullUniqueGameID, class CSteamID steamIDPlayer, EPlayerResult_t EPlayerResult); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGame(intptr_t instancePtr, uint64 ullUniqueGameID); -S_API uint32 SteamAPI_ISteamParties_GetNumActiveBeacons(intptr_t instancePtr); -S_API PartyBeaconID_t SteamAPI_ISteamParties_GetBeaconByIndex(intptr_t instancePtr, uint32 unIndex); -S_API bool SteamAPI_ISteamParties_GetBeaconDetails(intptr_t instancePtr, PartyBeaconID_t ulBeaconID, class CSteamID * pSteamIDBeaconOwner, struct SteamPartyBeaconLocation_t * pLocation, char * pchMetadata, int cchMetadata); -S_API SteamAPICall_t SteamAPI_ISteamParties_JoinParty(intptr_t instancePtr, PartyBeaconID_t ulBeaconID); -S_API bool SteamAPI_ISteamParties_GetNumAvailableBeaconLocations(intptr_t instancePtr, uint32 * puNumLocations); -S_API bool SteamAPI_ISteamParties_GetAvailableBeaconLocations(intptr_t instancePtr, struct SteamPartyBeaconLocation_t * pLocationList, uint32 uMaxNumLocations); -S_API SteamAPICall_t SteamAPI_ISteamParties_CreateBeacon(intptr_t instancePtr, uint32 unOpenSlots, struct SteamPartyBeaconLocation_t * pBeaconLocation, const char * pchConnectString, const char * pchMetadata); -S_API void SteamAPI_ISteamParties_OnReservationCompleted(intptr_t instancePtr, PartyBeaconID_t ulBeacon, class CSteamID steamIDUser); -S_API void SteamAPI_ISteamParties_CancelReservation(intptr_t instancePtr, PartyBeaconID_t ulBeacon, class CSteamID steamIDUser); -S_API SteamAPICall_t SteamAPI_ISteamParties_ChangeNumOpenSlots(intptr_t instancePtr, PartyBeaconID_t ulBeacon, uint32 unOpenSlots); -S_API bool SteamAPI_ISteamParties_DestroyBeacon(intptr_t instancePtr, PartyBeaconID_t ulBeacon); -S_API bool SteamAPI_ISteamParties_GetBeaconLocationData(intptr_t instancePtr, struct SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char * pchDataStringOut, int cchDataStringOut); -S_API bool SteamAPI_ISteamRemoteStorage_FileWrite(intptr_t instancePtr, const char * pchFile, const void * pvData, int32 cubData); -S_API int32 SteamAPI_ISteamRemoteStorage_FileRead(intptr_t instancePtr, const char * pchFile, void * pvData, int32 cubDataToRead); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync(intptr_t instancePtr, const char * pchFile, const void * pvData, uint32 cubData); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync(intptr_t instancePtr, const char * pchFile, uint32 nOffset, uint32 cubToRead); -S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(intptr_t instancePtr, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead); -S_API bool SteamAPI_ISteamRemoteStorage_FileForget(intptr_t instancePtr, const char * pchFile); -S_API bool SteamAPI_ISteamRemoteStorage_FileDelete(intptr_t instancePtr, const char * pchFile); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare(intptr_t instancePtr, const char * pchFile); -S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(intptr_t instancePtr, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform); -S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(intptr_t instancePtr, const char * pchFile); -S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData); -S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); -S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); -S_API bool SteamAPI_ISteamRemoteStorage_FileExists(intptr_t instancePtr, const char * pchFile); -S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted(intptr_t instancePtr, const char * pchFile); -S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize(intptr_t instancePtr, const char * pchFile); -S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp(intptr_t instancePtr, const char * pchFile); -S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(intptr_t instancePtr, const char * pchFile); -S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(intptr_t instancePtr, int iFile, int32 * pnFileSizeInBytes); -S_API bool SteamAPI_ISteamRemoteStorage_GetQuota(intptr_t instancePtr, uint64 * pnTotalBytes, uint64 * puAvailableBytes); -S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(intptr_t instancePtr); -S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(intptr_t instancePtr); -S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(intptr_t instancePtr, bool bEnabled); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload(intptr_t instancePtr, UGCHandle_t hContent, uint32 unPriority); -S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(intptr_t instancePtr, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected); -S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(intptr_t instancePtr, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, class CSteamID * pSteamIDOwner); -S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead(intptr_t instancePtr, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction); -S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(intptr_t instancePtr); -S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(intptr_t instancePtr, int32 iCachedContent); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(intptr_t instancePtr, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType); -S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchFile); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, struct SteamParamStringArray_t * pTags); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(intptr_t instancePtr, uint32 unStartIndex); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(intptr_t instancePtr, uint32 unStartIndex); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, bool bVoteUp); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(intptr_t instancePtr, class CSteamID steamId, uint32 unStartIndex, struct SteamParamStringArray_t * pRequiredTags, struct SteamParamStringArray_t * pExcludedTags); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo(intptr_t instancePtr, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(intptr_t instancePtr, EWorkshopFileAction eAction, uint32 unStartIndex); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(intptr_t instancePtr, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, struct SteamParamStringArray_t * pTags, struct SteamParamStringArray_t * pUserTags); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(intptr_t instancePtr, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority); -S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats(intptr_t instancePtr); -S_API bool SteamAPI_ISteamUserStats_GetStat(intptr_t instancePtr, const char * pchName, int32 * pData); -S_API bool SteamAPI_ISteamUserStats_GetStat0(intptr_t instancePtr, const char * pchName, float * pData); -S_API bool SteamAPI_ISteamUserStats_SetStat(intptr_t instancePtr, const char * pchName, int32 nData); -S_API bool SteamAPI_ISteamUserStats_SetStat0(intptr_t instancePtr, const char * pchName, float fData); -S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(intptr_t instancePtr, const char * pchName, float flCountThisSession, double dSessionLength); -S_API bool SteamAPI_ISteamUserStats_GetAchievement(intptr_t instancePtr, const char * pchName, bool * pbAchieved); -S_API bool SteamAPI_ISteamUserStats_SetAchievement(intptr_t instancePtr, const char * pchName); -S_API bool SteamAPI_ISteamUserStats_ClearAchievement(intptr_t instancePtr, const char * pchName); -S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(intptr_t instancePtr, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); -S_API bool SteamAPI_ISteamUserStats_StoreStats(intptr_t instancePtr); -S_API int SteamAPI_ISteamUserStats_GetAchievementIcon(intptr_t instancePtr, const char * pchName); -S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(intptr_t instancePtr, const char * pchName, const char * pchKey); -S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(intptr_t instancePtr, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress); -S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamUserStats_GetAchievementName(intptr_t instancePtr, uint32 iAchievement); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); -S_API bool SteamAPI_ISteamUserStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); -S_API bool SteamAPI_ISteamUserStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); -S_API bool SteamAPI_ISteamUserStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); -S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); -S_API bool SteamAPI_ISteamUserStats_ResetAllStats(intptr_t instancePtr, bool bAchievementsToo); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName); -S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); -S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); -S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); -S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, class CSteamID * prgUsers, int cUsers); -S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(intptr_t instancePtr, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, struct LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(intptr_t instancePtr); -S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(intptr_t instancePtr, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); -S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(intptr_t instancePtr, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); -S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(intptr_t instancePtr, const char * pchName, float * pflPercent); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats(intptr_t instancePtr, int nHistoryDays); -S_API bool SteamAPI_ISteamUserStats_GetGlobalStat(intptr_t instancePtr, const char * pchStatName, int64 * pData); -S_API bool SteamAPI_ISteamUserStats_GetGlobalStat0(intptr_t instancePtr, const char * pchStatName, double * pData); -S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory(intptr_t instancePtr, const char * pchStatName, int64 * pData, uint32 cubData); -S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory0(intptr_t instancePtr, const char * pchStatName, double * pData, uint32 cubData); -S_API bool SteamAPI_ISteamApps_BIsSubscribed(intptr_t instancePtr); -S_API bool SteamAPI_ISteamApps_BIsLowViolence(intptr_t instancePtr); -S_API bool SteamAPI_ISteamApps_BIsCybercafe(intptr_t instancePtr); -S_API bool SteamAPI_ISteamApps_BIsVACBanned(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages(intptr_t instancePtr); -S_API bool SteamAPI_ISteamApps_BIsSubscribedApp(intptr_t instancePtr, AppId_t appID); -S_API bool SteamAPI_ISteamApps_BIsDlcInstalled(intptr_t instancePtr, AppId_t appID); -S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(intptr_t instancePtr, AppId_t nAppID); -S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(intptr_t instancePtr); -S_API int SteamAPI_ISteamApps_GetDLCCount(intptr_t instancePtr); -S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex(intptr_t instancePtr, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize); -S_API void SteamAPI_ISteamApps_InstallDLC(intptr_t instancePtr, AppId_t nAppID); -S_API void SteamAPI_ISteamApps_UninstallDLC(intptr_t instancePtr, AppId_t nAppID); -S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(intptr_t instancePtr, AppId_t nAppID); -S_API bool SteamAPI_ISteamApps_GetCurrentBetaName(intptr_t instancePtr, char * pchName, int cchNameBufferSize); -S_API bool SteamAPI_ISteamApps_MarkContentCorrupt(intptr_t instancePtr, bool bMissingFilesOnly); -S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots(intptr_t instancePtr, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots); -S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir(intptr_t instancePtr, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize); -S_API bool SteamAPI_ISteamApps_BIsAppInstalled(intptr_t instancePtr, AppId_t appID); -S_API uint64 SteamAPI_ISteamApps_GetAppOwner(intptr_t instancePtr); -S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam(intptr_t instancePtr, const char * pchKey); -S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress(intptr_t instancePtr, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); -S_API int SteamAPI_ISteamApps_GetAppBuildId(intptr_t instancePtr); -S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails(intptr_t instancePtr, const char * pszFileName); -S_API int SteamAPI_ISteamApps_GetLaunchCommandLine(intptr_t instancePtr, char * pszCommandLine, int cubCommandLine); -S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing(intptr_t instancePtr); -S_API bool SteamAPI_ISteamNetworking_SendP2PPacket(intptr_t instancePtr, class CSteamID steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel); -S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(intptr_t instancePtr, uint32 * pcubMsgSize, int nChannel); -S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket(intptr_t instancePtr, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, class CSteamID * psteamIDRemote, int nChannel); -S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); -S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); -S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(intptr_t instancePtr, class CSteamID steamIDRemote, int nChannel); -S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState(intptr_t instancePtr, class CSteamID steamIDRemote, struct P2PSessionState_t * pConnectionState); -S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(intptr_t instancePtr, bool bAllow); -S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket(intptr_t instancePtr, int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay); -S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(intptr_t instancePtr, class CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); -S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket(intptr_t instancePtr, uint32 nIP, uint16 nPort, int nTimeoutSec); -S_API bool SteamAPI_ISteamNetworking_DestroySocket(intptr_t instancePtr, SNetSocket_t hSocket, bool bNotifyRemoteEnd); -S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket(intptr_t instancePtr, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd); -S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable); -S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, uint32 * pcubMsgSize); -S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize); -S_API bool SteamAPI_ISteamNetworking_IsDataAvailable(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket); -S_API bool SteamAPI_ISteamNetworking_RetrieveData(intptr_t instancePtr, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket); -S_API bool SteamAPI_ISteamNetworking_GetSocketInfo(intptr_t instancePtr, SNetSocket_t hSocket, class CSteamID * pSteamIDRemote, int * peSocketStatus, uint32 * punIPRemote, uint16 * punPortRemote); -S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pnIP, uint16 * pnPort); -S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType(intptr_t instancePtr, SNetSocket_t hSocket); -S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize(intptr_t instancePtr, SNetSocket_t hSocket); -S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot(intptr_t instancePtr, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight); -S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(intptr_t instancePtr, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight); -S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot(intptr_t instancePtr); -S_API void SteamAPI_ISteamScreenshots_HookScreenshots(intptr_t instancePtr, bool bHook); -S_API bool SteamAPI_ISteamScreenshots_SetLocation(intptr_t instancePtr, ScreenshotHandle hScreenshot, const char * pchLocation); -S_API bool SteamAPI_ISteamScreenshots_TagUser(intptr_t instancePtr, ScreenshotHandle hScreenshot, class CSteamID steamID); -S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile(intptr_t instancePtr, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID); -S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(intptr_t instancePtr); -S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(intptr_t instancePtr, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename); -S_API bool SteamAPI_ISteamMusic_BIsEnabled(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusic_BIsPlaying(intptr_t instancePtr); -S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus(intptr_t instancePtr); -S_API void SteamAPI_ISteamMusic_Play(intptr_t instancePtr); -S_API void SteamAPI_ISteamMusic_Pause(intptr_t instancePtr); -S_API void SteamAPI_ISteamMusic_PlayPrevious(intptr_t instancePtr); -S_API void SteamAPI_ISteamMusic_PlayNext(intptr_t instancePtr); -S_API void SteamAPI_ISteamMusic_SetVolume(intptr_t instancePtr, float flVolume); -S_API float SteamAPI_ISteamMusic_GetVolume(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(intptr_t instancePtr, const char * pchName); -S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName(intptr_t instancePtr, const char * pchDisplayName); -S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); -S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_EnableLooped(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_EnableQueue(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(intptr_t instancePtr, AudioPlayback_Status nStatus); -S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped(intptr_t instancePtr, bool bValue); -S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume(intptr_t instancePtr, float flValue); -S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(intptr_t instancePtr, bool bAvailable); -S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(intptr_t instancePtr, const char * pchText); -S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(intptr_t instancePtr, int nValue); -S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); -S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); -S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(intptr_t instancePtr, int nID); -S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(intptr_t instancePtr); -S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); -S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(intptr_t instancePtr, int nID); -S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(intptr_t instancePtr); -S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest(intptr_t instancePtr, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(intptr_t instancePtr, HTTPRequestHandle hRequest, uint64 ulContextValue); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue); -S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); -S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); -S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); -S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 * unBodySize); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize); -S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize); -S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); -S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(intptr_t instancePtr, HTTPRequestHandle hRequest, float * pflPercentOut); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen); -S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer(intptr_t instancePtr, bool bAllowResponsesToModify); -S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer); -S_API bool SteamAPI_ISteamHTTP_SetCookie(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(intptr_t instancePtr, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchUserAgentInfo); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(intptr_t instancePtr, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unMilliseconds); -S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(intptr_t instancePtr, HTTPRequestHandle hRequest, bool * pbWasTimedOut); -S_API bool SteamAPI_ISteamInput_Init(intptr_t instancePtr); -S_API bool SteamAPI_ISteamInput_Shutdown(intptr_t instancePtr); -S_API void SteamAPI_ISteamInput_RunFrame(intptr_t instancePtr); -S_API int SteamAPI_ISteamInput_GetConnectedControllers(intptr_t instancePtr, InputHandle_t * handlesOut); -S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetActionSetHandle(intptr_t instancePtr, const char * pszActionSetName); -S_API void SteamAPI_ISteamInput_ActivateActionSet(intptr_t instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle); -S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetCurrentActionSet(intptr_t instancePtr, InputHandle_t inputHandle); -S_API void SteamAPI_ISteamInput_ActivateActionSetLayer(intptr_t instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle); -S_API void SteamAPI_ISteamInput_DeactivateActionSetLayer(intptr_t instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle); -S_API void SteamAPI_ISteamInput_DeactivateAllActionSetLayers(intptr_t instancePtr, InputHandle_t inputHandle); -S_API int SteamAPI_ISteamInput_GetActiveActionSetLayers(intptr_t instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t * handlesOut); -S_API InputDigitalActionHandle_t SteamAPI_ISteamInput_GetDigitalActionHandle(intptr_t instancePtr, const char * pszActionName); -S_API struct InputDigitalActionData_t SteamAPI_ISteamInput_GetDigitalActionData(intptr_t instancePtr, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle); -S_API int SteamAPI_ISteamInput_GetDigitalActionOrigins(intptr_t instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin * originsOut); -S_API InputAnalogActionHandle_t SteamAPI_ISteamInput_GetAnalogActionHandle(intptr_t instancePtr, const char * pszActionName); -S_API struct InputAnalogActionData_t SteamAPI_ISteamInput_GetAnalogActionData(intptr_t instancePtr, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle); -S_API int SteamAPI_ISteamInput_GetAnalogActionOrigins(intptr_t instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin * originsOut); -S_API const char * SteamAPI_ISteamInput_GetGlyphForActionOrigin(intptr_t instancePtr, EInputActionOrigin eOrigin); -S_API const char * SteamAPI_ISteamInput_GetStringForActionOrigin(intptr_t instancePtr, EInputActionOrigin eOrigin); -S_API void SteamAPI_ISteamInput_StopAnalogActionMomentum(intptr_t instancePtr, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction); -S_API struct InputMotionData_t SteamAPI_ISteamInput_GetMotionData(intptr_t instancePtr, InputHandle_t inputHandle); -S_API void SteamAPI_ISteamInput_TriggerVibration(intptr_t instancePtr, InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed); -S_API void SteamAPI_ISteamInput_SetLEDColor(intptr_t instancePtr, InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags); -S_API void SteamAPI_ISteamInput_TriggerHapticPulse(intptr_t instancePtr, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec); -S_API void SteamAPI_ISteamInput_TriggerRepeatedHapticPulse(intptr_t instancePtr, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags); -S_API bool SteamAPI_ISteamInput_ShowBindingPanel(intptr_t instancePtr, InputHandle_t inputHandle); -S_API ESteamInputType SteamAPI_ISteamInput_GetInputTypeForHandle(intptr_t instancePtr, InputHandle_t inputHandle); -S_API InputHandle_t SteamAPI_ISteamInput_GetControllerForGamepadIndex(intptr_t instancePtr, int nIndex); -S_API int SteamAPI_ISteamInput_GetGamepadIndexForController(intptr_t instancePtr, InputHandle_t ulinputHandle); -S_API const char * SteamAPI_ISteamInput_GetStringForXboxOrigin(intptr_t instancePtr, EXboxOrigin eOrigin); -S_API const char * SteamAPI_ISteamInput_GetGlyphForXboxOrigin(intptr_t instancePtr, EXboxOrigin eOrigin); -S_API EInputActionOrigin SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin(intptr_t instancePtr, InputHandle_t inputHandle, EXboxOrigin eOrigin); -S_API EInputActionOrigin SteamAPI_ISteamInput_TranslateActionOrigin(intptr_t instancePtr, ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin); -S_API bool SteamAPI_ISteamController_Init(intptr_t instancePtr); -S_API bool SteamAPI_ISteamController_Shutdown(intptr_t instancePtr); -S_API void SteamAPI_ISteamController_RunFrame(intptr_t instancePtr); -S_API int SteamAPI_ISteamController_GetConnectedControllers(intptr_t instancePtr, ControllerHandle_t * handlesOut); -S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle(intptr_t instancePtr, const char * pszActionSetName); -S_API void SteamAPI_ISteamController_ActivateActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle); -S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle); -S_API void SteamAPI_ISteamController_ActivateActionSetLayer(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle); -S_API void SteamAPI_ISteamController_DeactivateActionSetLayer(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle); -S_API void SteamAPI_ISteamController_DeactivateAllActionSetLayers(intptr_t instancePtr, ControllerHandle_t controllerHandle); -S_API int SteamAPI_ISteamController_GetActiveActionSetLayers(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t * handlesOut); -S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle(intptr_t instancePtr, const char * pszActionName); -S_API struct InputDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle); -S_API int SteamAPI_ISteamController_GetDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut); -S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle(intptr_t instancePtr, const char * pszActionName); -S_API struct InputAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle); -S_API int SteamAPI_ISteamController_GetAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut); -S_API const char * SteamAPI_ISteamController_GetGlyphForActionOrigin(intptr_t instancePtr, EControllerActionOrigin eOrigin); -S_API const char * SteamAPI_ISteamController_GetStringForActionOrigin(intptr_t instancePtr, EControllerActionOrigin eOrigin); -S_API void SteamAPI_ISteamController_StopAnalogActionMomentum(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction); -S_API struct InputMotionData_t SteamAPI_ISteamController_GetMotionData(intptr_t instancePtr, ControllerHandle_t controllerHandle); -S_API void SteamAPI_ISteamController_TriggerHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec); -S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags); -S_API void SteamAPI_ISteamController_TriggerVibration(intptr_t instancePtr, ControllerHandle_t controllerHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed); -S_API void SteamAPI_ISteamController_SetLEDColor(intptr_t instancePtr, ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags); -S_API bool SteamAPI_ISteamController_ShowBindingPanel(intptr_t instancePtr, ControllerHandle_t controllerHandle); -S_API ESteamInputType SteamAPI_ISteamController_GetInputTypeForHandle(intptr_t instancePtr, ControllerHandle_t controllerHandle); -S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex(intptr_t instancePtr, int nIndex); -S_API int SteamAPI_ISteamController_GetGamepadIndexForController(intptr_t instancePtr, ControllerHandle_t ulControllerHandle); -S_API const char * SteamAPI_ISteamController_GetStringForXboxOrigin(intptr_t instancePtr, EXboxOrigin eOrigin); -S_API const char * SteamAPI_ISteamController_GetGlyphForXboxOrigin(intptr_t instancePtr, EXboxOrigin eOrigin); -S_API EControllerActionOrigin SteamAPI_ISteamController_GetActionOriginFromXboxOrigin(intptr_t instancePtr, ControllerHandle_t controllerHandle, EXboxOrigin eOrigin); -S_API EControllerActionOrigin SteamAPI_ISteamController_TranslateActionOrigin(intptr_t instancePtr, ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(intptr_t instancePtr, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(intptr_t instancePtr, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequest0(intptr_t instancePtr, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, struct SteamUGCDetails_t * pDetails); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue); -S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType); -S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize); -S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); -S_API bool SteamAPI_ISteamUGC_AddRequiredTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); -S_API bool SteamAPI_ISteamUGC_AddExcludedTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); -S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnOnlyIDs); -S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnKeyValueTags); -S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnLongDescription); -S_API bool SteamAPI_ISteamUGC_SetReturnMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnMetadata); -S_API bool SteamAPI_ISteamUGC_SetReturnChildren(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnChildren); -S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews); -S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnTotalOnly); -S_API bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unDays); -S_API bool SteamAPI_ISteamUGC_SetLanguage(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pchLanguage); -S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds); -S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pMatchCloudFileName); -S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag(intptr_t instancePtr, UGCQueryHandle_t handle, bool bMatchAnyTag); -S_API bool SteamAPI_ISteamUGC_SetSearchText(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pSearchText); -S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unDays); -S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pKey, const char * pValue); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds); -S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem(intptr_t instancePtr, AppId_t nConsumerAppId, EWorkshopFileType eFileType); -S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate(intptr_t instancePtr, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID); -S_API bool SteamAPI_ISteamUGC_SetItemTitle(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchTitle); -S_API bool SteamAPI_ISteamUGC_SetItemDescription(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchDescription); -S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchLanguage); -S_API bool SteamAPI_ISteamUGC_SetItemMetadata(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchMetaData); -S_API bool SteamAPI_ISteamUGC_SetItemVisibility(intptr_t instancePtr, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility); -S_API bool SteamAPI_ISteamUGC_SetItemTags(intptr_t instancePtr, UGCUpdateHandle_t updateHandle, const struct SteamParamStringArray_t * pTags); -S_API bool SteamAPI_ISteamUGC_SetItemContent(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszContentFolder); -S_API bool SteamAPI_ISteamUGC_SetItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile); -S_API bool SteamAPI_ISteamUGC_SetAllowLegacyUpload(intptr_t instancePtr, UGCUpdateHandle_t handle, bool bAllowLegacyUpload); -S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey); -S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue); -S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type); -S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszVideoID); -S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile); -S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID); -S_API bool SteamAPI_ISteamUGC_RemoveItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchChangeNote); -S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress(intptr_t instancePtr, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bVoteUp); -S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); -S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); -S_API uint32 SteamAPI_ISteamUGC_GetItemState(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); -S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp); -S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); -S_API bool SteamAPI_ISteamUGC_DownloadItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bHighPriority); -S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(intptr_t instancePtr, DepotId_t unWorkshopDepotID, const char * pszFolder); -S_API void SteamAPI_ISteamUGC_SuspendDownloads(intptr_t instancePtr, bool bSuspend); -S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); -S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); -S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamUGC_AddDependency(intptr_t instancePtr, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveDependency(intptr_t instancePtr, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_AddAppDependency(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, AppId_t nAppID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveAppDependency(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, AppId_t nAppID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); -S_API SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); -S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps(intptr_t instancePtr, AppId_t * pvecAppID, uint32 unMaxAppIDs); -S_API int SteamAPI_ISteamAppList_GetAppName(intptr_t instancePtr, AppId_t nAppID, char * pchName, int cchNameMax); -S_API int SteamAPI_ISteamAppList_GetAppInstallDir(intptr_t instancePtr, AppId_t nAppID, char * pchDirectory, int cchNameMax); -S_API int SteamAPI_ISteamAppList_GetAppBuildId(intptr_t instancePtr, AppId_t nAppID); -S_API void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(intptr_t instancePtr); -S_API bool SteamAPI_ISteamHTMLSurface_Init(intptr_t instancePtr); -S_API bool SteamAPI_ISteamHTMLSurface_Shutdown(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser(intptr_t instancePtr, const char * pchUserAgent, const char * pchUserCSS); -S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_LoadURL(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData); -S_API void SteamAPI_ISteamHTMLSurface_SetSize(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight); -S_API void SteamAPI_ISteamHTMLSurface_StopLoad(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_Reload(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_GoBack(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_GoForward(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_AddHeader(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue); -S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchScript); -S_API void SteamAPI_ISteamHTMLSurface_MouseUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); -S_API void SteamAPI_ISteamHTMLSurface_MouseDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); -S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); -S_API void SteamAPI_ISteamHTMLSurface_MouseMove(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); -S_API void SteamAPI_ISteamHTMLSurface_MouseWheel(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int32 nDelta); -S_API void SteamAPI_ISteamHTMLSurface_KeyDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers, bool bIsSystemKey); -S_API void SteamAPI_ISteamHTMLSurface_KeyUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); -S_API void SteamAPI_ISteamHTMLSurface_KeyChar(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); -S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); -S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); -S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus); -S_API void SteamAPI_ISteamHTMLSurface_ViewSource(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_Find(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse); -S_API void SteamAPI_ISteamHTMLSurface_StopFind(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); -S_API void SteamAPI_ISteamHTMLSurface_SetCookie(intptr_t instancePtr, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly); -S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY); -S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bBackgroundMode); -S_API void SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, float flDPIScaling); -S_API void SteamAPI_ISteamHTMLSurface_OpenDeveloperTools(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); -S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bAllowed); -S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bResult); -S_API EResult SteamAPI_ISteamInventory_GetResultStatus(intptr_t instancePtr, SteamInventoryResult_t resultHandle); -S_API bool SteamAPI_ISteamInventory_GetResultItems(intptr_t instancePtr, SteamInventoryResult_t resultHandle, struct SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize); -S_API bool SteamAPI_ISteamInventory_GetResultItemProperty(intptr_t instancePtr, SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut); -S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp(intptr_t instancePtr, SteamInventoryResult_t resultHandle); -S_API bool SteamAPI_ISteamInventory_CheckResultSteamID(intptr_t instancePtr, SteamInventoryResult_t resultHandle, class CSteamID steamIDExpected); -S_API void SteamAPI_ISteamInventory_DestroyResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle); -S_API bool SteamAPI_ISteamInventory_GetAllItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); -S_API bool SteamAPI_ISteamInventory_GetItemsByID(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs); -S_API bool SteamAPI_ISteamInventory_SerializeResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize); -S_API bool SteamAPI_ISteamInventory_DeserializeResult(intptr_t instancePtr, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE); -S_API bool SteamAPI_ISteamInventory_GenerateItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength); -S_API bool SteamAPI_ISteamInventory_GrantPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); -S_API bool SteamAPI_ISteamInventory_AddPromoItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef); -S_API bool SteamAPI_ISteamInventory_AddPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength); -S_API bool SteamAPI_ISteamInventory_ConsumeItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity); -S_API bool SteamAPI_ISteamInventory_ExchangeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength); -S_API bool SteamAPI_ISteamInventory_TransferItemQuantity(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest); -S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat(intptr_t instancePtr); -S_API bool SteamAPI_ISteamInventory_TriggerItemDrop(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition); -S_API bool SteamAPI_ISteamInventory_TradeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, class CSteamID steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength); -S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions(intptr_t instancePtr); -S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(intptr_t instancePtr, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize); -S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(intptr_t instancePtr, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut); -S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs(intptr_t instancePtr, class CSteamID steamID); -S_API bool SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs(intptr_t instancePtr, class CSteamID steamID, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize); -S_API SteamAPICall_t SteamAPI_ISteamInventory_StartPurchase(intptr_t instancePtr, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength); -S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestPrices(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamInventory_GetNumItemsWithPrices(intptr_t instancePtr); -S_API bool SteamAPI_ISteamInventory_GetItemsWithPrices(intptr_t instancePtr, SteamItemDef_t * pArrayItemDefs, uint64 * pCurrentPrices, uint64 * pBasePrices, uint32 unArrayLength); -S_API bool SteamAPI_ISteamInventory_GetItemPrice(intptr_t instancePtr, SteamItemDef_t iDefinition, uint64 * pCurrentPrice, uint64 * pBasePrice); -S_API SteamInventoryUpdateHandle_t SteamAPI_ISteamInventory_StartUpdateProperties(intptr_t instancePtr); -S_API bool SteamAPI_ISteamInventory_RemoveProperty(intptr_t instancePtr, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName); -S_API bool SteamAPI_ISteamInventory_SetProperty(intptr_t instancePtr, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, const char * pchPropertyValue); -S_API bool SteamAPI_ISteamInventory_SetProperty0(intptr_t instancePtr, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, bool bValue); -S_API bool SteamAPI_ISteamInventory_SetProperty1(intptr_t instancePtr, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, int64 nValue); -S_API bool SteamAPI_ISteamInventory_SetProperty2(intptr_t instancePtr, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, float flValue); -S_API bool SteamAPI_ISteamInventory_SubmitUpdateProperties(intptr_t instancePtr, SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle); -S_API void SteamAPI_ISteamVideo_GetVideoURL(intptr_t instancePtr, AppId_t unVideoAppID); -S_API bool SteamAPI_ISteamVideo_IsBroadcasting(intptr_t instancePtr, int * pnNumViewers); -S_API void SteamAPI_ISteamVideo_GetOPFSettings(intptr_t instancePtr, AppId_t unVideoAppID); -S_API bool SteamAPI_ISteamVideo_GetOPFStringForApp(intptr_t instancePtr, AppId_t unVideoAppID, char * pchBuffer, int32 * pnBufferSize); -S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled(intptr_t instancePtr); -S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockLocked(intptr_t instancePtr); -S_API bool SteamAPI_ISteamParentalSettings_BIsAppBlocked(intptr_t instancePtr, AppId_t nAppID); -S_API bool SteamAPI_ISteamParentalSettings_BIsAppInBlockList(intptr_t instancePtr, AppId_t nAppID); -S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureBlocked(intptr_t instancePtr, EParentalFeature eFeature); -S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList(intptr_t instancePtr, EParentalFeature eFeature); -S_API bool SteamAPI_ISteamGameServer_InitGameServer(intptr_t instancePtr, uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char * pchVersionString); -S_API void SteamAPI_ISteamGameServer_SetProduct(intptr_t instancePtr, const char * pszProduct); -S_API void SteamAPI_ISteamGameServer_SetGameDescription(intptr_t instancePtr, const char * pszGameDescription); -S_API void SteamAPI_ISteamGameServer_SetModDir(intptr_t instancePtr, const char * pszModDir); -S_API void SteamAPI_ISteamGameServer_SetDedicatedServer(intptr_t instancePtr, bool bDedicated); -S_API void SteamAPI_ISteamGameServer_LogOn(intptr_t instancePtr, const char * pszToken); -S_API void SteamAPI_ISteamGameServer_LogOnAnonymous(intptr_t instancePtr); -S_API void SteamAPI_ISteamGameServer_LogOff(intptr_t instancePtr); -S_API bool SteamAPI_ISteamGameServer_BLoggedOn(intptr_t instancePtr); -S_API bool SteamAPI_ISteamGameServer_BSecure(intptr_t instancePtr); -S_API uint64 SteamAPI_ISteamGameServer_GetSteamID(intptr_t instancePtr); -S_API bool SteamAPI_ISteamGameServer_WasRestartRequested(intptr_t instancePtr); -S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount(intptr_t instancePtr, int cPlayersMax); -S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount(intptr_t instancePtr, int cBotplayers); -S_API void SteamAPI_ISteamGameServer_SetServerName(intptr_t instancePtr, const char * pszServerName); -S_API void SteamAPI_ISteamGameServer_SetMapName(intptr_t instancePtr, const char * pszMapName); -S_API void SteamAPI_ISteamGameServer_SetPasswordProtected(intptr_t instancePtr, bool bPasswordProtected); -S_API void SteamAPI_ISteamGameServer_SetSpectatorPort(intptr_t instancePtr, uint16 unSpectatorPort); -S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName(intptr_t instancePtr, const char * pszSpectatorServerName); -S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues(intptr_t instancePtr); -S_API void SteamAPI_ISteamGameServer_SetKeyValue(intptr_t instancePtr, const char * pKey, const char * pValue); -S_API void SteamAPI_ISteamGameServer_SetGameTags(intptr_t instancePtr, const char * pchGameTags); -S_API void SteamAPI_ISteamGameServer_SetGameData(intptr_t instancePtr, const char * pchGameData); -S_API void SteamAPI_ISteamGameServer_SetRegion(intptr_t instancePtr, const char * pszRegion); -S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(intptr_t instancePtr, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, class CSteamID * pSteamIDUser); -S_API uint64 SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(intptr_t instancePtr); -S_API void SteamAPI_ISteamGameServer_SendUserDisconnect(intptr_t instancePtr, class CSteamID steamIDUser); -S_API bool SteamAPI_ISteamGameServer_BUpdateUserData(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchPlayerName, uint32 uScore); -S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); -S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); -S_API void SteamAPI_ISteamGameServer_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); -S_API void SteamAPI_ISteamGameServer_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); -S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); -S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDGroup); -S_API void SteamAPI_ISteamGameServer_GetGameplayStats(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamGameServer_GetPublicIP(intptr_t instancePtr); -S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket(intptr_t instancePtr, const void * pData, int cbData, uint32 srcIP, uint16 srcPort); -S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(intptr_t instancePtr, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort); -S_API void SteamAPI_ISteamGameServer_EnableHeartbeats(intptr_t instancePtr, bool bActive); -S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval(intptr_t instancePtr, int iHeartbeatInterval); -S_API void SteamAPI_ISteamGameServer_ForceHeartbeat(intptr_t instancePtr); -S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan(intptr_t instancePtr, class CSteamID steamIDClan); -S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(intptr_t instancePtr, class CSteamID steamIDNewPlayer); -S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); -S_API bool SteamAPI_ISteamGameServerStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); -S_API bool SteamAPI_ISteamGameServerStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); -S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); -S_API bool SteamAPI_ISteamGameServerStats_SetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 nData); -S_API bool SteamAPI_ISteamGameServerStats_SetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float fData); -S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength); -S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); -S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); -S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +// ISteamFriends + +// A versioned accessor is exported by the library +S_API ISteamFriends *SteamAPI_SteamFriends_v017(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamFriends(), but using this ensures that you are using a matching library. +inline ISteamFriends *SteamAPI_SteamFriends() { return SteamAPI_SteamFriends_v017(); } +S_API const char * SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends* self ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName( ISteamFriends* self, const char * pchPersonaName ); +S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState( ISteamFriends* self ); +S_API int SteamAPI_ISteamFriends_GetFriendCount( ISteamFriends* self, int iFriendFlags ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetFriendByIndex( ISteamFriends* self, int iFriend, int iFriendFlags ); +S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed( ISteamFriends* self, uint64_steamid steamIDFriend, FriendGameInfo_t * pFriendGameInfo ); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory( ISteamFriends* self, uint64_steamid steamIDFriend, int iPersonaName ); +S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname( ISteamFriends* self, uint64_steamid steamIDPlayer ); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount( ISteamFriends* self ); +S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex( ISteamFriends* self, int iFG ); +S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName( ISteamFriends* self, FriendsGroupID_t friendsGroupID ); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount( ISteamFriends* self, FriendsGroupID_t friendsGroupID ); +S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList( ISteamFriends* self, FriendsGroupID_t friendsGroupID, CSteamID * pOutSteamIDMembers, int nMembersCount ); +S_API bool SteamAPI_ISteamFriends_HasFriend( ISteamFriends* self, uint64_steamid steamIDFriend, int iFriendFlags ); +S_API int SteamAPI_ISteamFriends_GetClanCount( ISteamFriends* self ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetClanByIndex( ISteamFriends* self, int iClan ); +S_API const char * SteamAPI_ISteamFriends_GetClanName( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API const char * SteamAPI_ISteamFriends_GetClanTag( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts( ISteamFriends* self, uint64_steamid steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts( ISteamFriends* self, CSteamID * psteamIDClans, int cClansToRequest ); +S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource( ISteamFriends* self, uint64_steamid steamIDSource ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetFriendFromSourceByIndex( ISteamFriends* self, uint64_steamid steamIDSource, int iFriend ); +S_API bool SteamAPI_ISteamFriends_IsUserInSource( ISteamFriends* self, uint64_steamid steamIDUser, uint64_steamid steamIDSource ); +S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking( ISteamFriends* self, uint64_steamid steamIDUser, bool bSpeaking ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlay( ISteamFriends* self, const char * pchDialog ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser( ISteamFriends* self, const char * pchDialog, uint64_steamid steamID ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage( ISteamFriends* self, const char * pchURL, EActivateGameOverlayToWebPageMode eMode ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore( ISteamFriends* self, AppId_t nAppID, EOverlayToStoreFlag eFlag ); +S_API void SteamAPI_ISteamFriends_SetPlayedWith( ISteamFriends* self, uint64_steamid steamIDUserPlayedWith ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog( ISteamFriends* self, uint64_steamid steamIDLobby ); +S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API bool SteamAPI_ISteamFriends_RequestUserInformation( ISteamFriends* self, uint64_steamid steamIDUser, bool bRequireNameOnly ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetClanOwner( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API int SteamAPI_ISteamFriends_GetClanOfficerCount( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetClanOfficerByIndex( ISteamFriends* self, uint64_steamid steamIDClan, int iOfficer ); +S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions( ISteamFriends* self ); +S_API bool SteamAPI_ISteamFriends_SetRichPresence( ISteamFriends* self, const char * pchKey, const char * pchValue ); +S_API void SteamAPI_ISteamFriends_ClearRichPresence( ISteamFriends* self ); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchKey ); +S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex( ISteamFriends* self, uint64_steamid steamIDFriend, int iKey ); +S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API bool SteamAPI_ISteamFriends_InviteUserToGame( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchConnectString ); +S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount( ISteamFriends* self ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetCoplayFriend( ISteamFriends* self, int iCoplayFriend ); +S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetChatMemberByIndex( ISteamFriends* self, uint64_steamid steamIDClan, int iUser ); +S_API bool SteamAPI_ISteamFriends_SendClanChatMessage( ISteamFriends* self, uint64_steamid steamIDClanChat, const char * pchText ); +S_API int SteamAPI_ISteamFriends_GetClanChatMessage( ISteamFriends* self, uint64_steamid steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, CSteamID * psteamidChatter ); +S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin( ISteamFriends* self, uint64_steamid steamIDClanChat, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); +S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); +S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); +S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages( ISteamFriends* self, bool bInterceptEnabled ); +S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchMsgToSend ); +S_API int SteamAPI_ISteamFriends_GetFriendMessage( ISteamFriends* self, uint64_steamid steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount( ISteamFriends* self, uint64_steamid steamID ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing( ISteamFriends* self, uint64_steamid steamID ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList( ISteamFriends* self, uint32 unStartIndex ); +S_API bool SteamAPI_ISteamFriends_IsClanPublic( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API bool SteamAPI_ISteamFriends_IsClanOfficialGameGroup( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API int SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages( ISteamFriends* self ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog( ISteamFriends* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser( ISteamFriends* self, const char * pchProtocol ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString( ISteamFriends* self, const char * pchConnectString ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestEquippedProfileItems( ISteamFriends* self, uint64_steamid steamID ); +S_API bool SteamAPI_ISteamFriends_BHasEquippedProfileItem( ISteamFriends* self, uint64_steamid steamID, ECommunityProfileItemType itemType ); +S_API const char * SteamAPI_ISteamFriends_GetProfileItemPropertyString( ISteamFriends* self, uint64_steamid steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ); +S_API uint32 SteamAPI_ISteamFriends_GetProfileItemPropertyUint( ISteamFriends* self, uint64_steamid steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ); + +// ISteamUtils + +// A versioned accessor is exported by the library +S_API ISteamUtils *SteamAPI_SteamUtils_v010(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUtils(), but using this ensures that you are using a matching library. +inline ISteamUtils *SteamAPI_SteamUtils() { return SteamAPI_SteamUtils_v010(); } + +// A versioned accessor is exported by the library +S_API ISteamUtils *SteamAPI_SteamGameServerUtils_v010(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerUtils(), but using this ensures that you are using a matching library. +inline ISteamUtils *SteamAPI_SteamGameServerUtils() { return SteamAPI_SteamGameServerUtils_v010(); } +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive( ISteamUtils* self ); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive( ISteamUtils* self ); +S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse( ISteamUtils* self ); +S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime( ISteamUtils* self ); +S_API const char * SteamAPI_ISteamUtils_GetIPCountry( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_GetImageSize( ISteamUtils* self, int iImage, uint32 * pnWidth, uint32 * pnHeight ); +S_API bool SteamAPI_ISteamUtils_GetImageRGBA( ISteamUtils* self, int iImage, uint8 * pubDest, int nDestBufferSize ); +S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower( ISteamUtils* self ); +S_API uint32 SteamAPI_ISteamUtils_GetAppID( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition( ISteamUtils* self, ENotificationPosition eNotificationPosition ); +S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted( ISteamUtils* self, SteamAPICall_t hSteamAPICall, bool * pbFailed ); +S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason( ISteamUtils* self, SteamAPICall_t hSteamAPICall ); +S_API bool SteamAPI_ISteamUtils_GetAPICallResult( ISteamUtils* self, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed ); +S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetWarningMessageHook( ISteamUtils* self, SteamAPIWarningMessageHook_t pFunction ); +S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent( ISteamUtils* self ); +S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature( ISteamUtils* self, const char * szFileName ); +S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput( ISteamUtils* self, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText ); +S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput( ISteamUtils* self, char * pchText, uint32 cchText ); +S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset( ISteamUtils* self, int nHorizontalInset, int nVerticalInset ); +S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_StartVRDashboard( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled( ISteamUtils* self, bool bEnabled ); +S_API bool SteamAPI_ISteamUtils_IsSteamChinaLauncher( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_InitFilterText( ISteamUtils* self, uint32 unFilterOptions ); +S_API int SteamAPI_ISteamUtils_FilterText( ISteamUtils* self, ETextFilteringContext eContext, uint64_steamid sourceSteamID, const char * pchInputMessage, char * pchOutFilteredText, uint32 nByteSizeOutFilteredText ); +S_API ESteamIPv6ConnectivityState SteamAPI_ISteamUtils_GetIPv6ConnectivityState( ISteamUtils* self, ESteamIPv6ConnectivityProtocol eProtocol ); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_ShowFloatingGamepadTextInput( ISteamUtils* self, EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight ); +S_API void SteamAPI_ISteamUtils_SetGameLauncherMode( ISteamUtils* self, bool bLauncherMode ); +S_API bool SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput( ISteamUtils* self ); + +// ISteamMatchmaking + +// A versioned accessor is exported by the library +S_API ISteamMatchmaking *SteamAPI_SteamMatchmaking_v009(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMatchmaking(), but using this ensures that you are using a matching library. +inline ISteamMatchmaking *SteamAPI_SteamMatchmaking() { return SteamAPI_SteamMatchmaking_v009(); } +S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount( ISteamMatchmaking* self ); +S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame( ISteamMatchmaking* self, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer ); +S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame( ISteamMatchmaking* self, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ); +S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame( ISteamMatchmaking* self, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList( ISteamMatchmaking* self ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, int nValueToBeCloseTo ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable( ISteamMatchmaking* self, int nSlotsAvailable ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter( ISteamMatchmaking* self, ELobbyDistanceFilter eLobbyDistanceFilter ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter( ISteamMatchmaking* self, int cMaxResults ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyByIndex( ISteamMatchmaking* self, int iLobby ); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby( ISteamMatchmaking* self, ELobbyType eLobbyType, int cMaxMembers ); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API void SteamAPI_ISteamMatchmaking_LeaveLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDInvitee ); +S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iMember ); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey, const char * pchValue ); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize ); +S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey ); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDUser, const char * pchKey ); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey, const char * pchValue ); +S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const void * pvMsgBody, int cubMsgBody ); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iChatID, CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType ); +S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, uint64_steamid steamIDGameServer ); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, CSteamID * psteamIDGameServer ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int cMaxMembers ); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType( ISteamMatchmaking* self, uint64_steamid steamIDLobby, ELobbyType eLobbyType ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable( ISteamMatchmaking* self, uint64_steamid steamIDLobby, bool bLobbyJoinable ); +S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyOwner( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDNewOwner ); +S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDLobbyDependent ); + +// ISteamMatchmakingServerListResponse +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, int iServer ); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, int iServer ); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, EMatchMakingServerResponse response ); + +// ISteamMatchmakingPingResponse +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded( ISteamMatchmakingPingResponse* self, gameserveritem_t & server ); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond( ISteamMatchmakingPingResponse* self ); + +// ISteamMatchmakingPlayersResponse +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList( ISteamMatchmakingPlayersResponse* self, const char * pchName, int nScore, float flTimePlayed ); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond( ISteamMatchmakingPlayersResponse* self ); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete( ISteamMatchmakingPlayersResponse* self ); + +// ISteamMatchmakingRulesResponse +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded( ISteamMatchmakingRulesResponse* self, const char * pchRule, const char * pchValue ); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond( ISteamMatchmakingRulesResponse* self ); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete( ISteamMatchmakingRulesResponse* self ); + +// ISteamMatchmakingServers + +// A versioned accessor is exported by the library +S_API ISteamMatchmakingServers *SteamAPI_SteamMatchmakingServers_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMatchmakingServers(), but using this ensures that you are using a matching library. +inline ISteamMatchmakingServers *SteamAPI_SteamMatchmakingServers() { return SteamAPI_SteamMatchmakingServers_v002(); } +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList( ISteamMatchmakingServers* self, AppId_t iApp, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest( ISteamMatchmakingServers* self, HServerListRequest hServerListRequest ); +S_API gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails( ISteamMatchmakingServers* self, HServerListRequest hRequest, int iServer ); +S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer( ISteamMatchmakingServers* self, HServerListRequest hRequest, int iServer ); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse * pRequestServersResponse ); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse * pRequestServersResponse ); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse * pRequestServersResponse ); +S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery( ISteamMatchmakingServers* self, HServerQuery hServerQuery ); + +// ISteamGameSearch + +// A versioned accessor is exported by the library +S_API ISteamGameSearch *SteamAPI_SteamGameSearch_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameSearch(), but using this ensures that you are using a matching library. +inline ISteamGameSearch *SteamAPI_SteamGameSearch() { return SteamAPI_SteamGameSearch_v001(); } +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AddGameSearchParams( ISteamGameSearch* self, const char * pchKeyToFind, const char * pchValuesToFind ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameWithLobby( ISteamGameSearch* self, uint64_steamid steamIDLobby, int nPlayerMin, int nPlayerMax ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameSolo( ISteamGameSearch* self, int nPlayerMin, int nPlayerMax ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AcceptGame( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_DeclineGame( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RetrieveConnectionDetails( ISteamGameSearch* self, uint64_steamid steamIDHost, char * pchConnectionDetails, int cubConnectionDetails ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGameSearch( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetGameHostParams( ISteamGameSearch* self, const char * pchKey, const char * pchValue ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetConnectionDetails( ISteamGameSearch* self, const char * pchConnectionDetails, int cubConnectionDetails ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RequestPlayersForGame( ISteamGameSearch* self, int nPlayerMin, int nPlayerMax, int nMaxTeamSize ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_HostConfirmGameStart( ISteamGameSearch* self, uint64 ullUniqueGameID ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SubmitPlayerResult( ISteamGameSearch* self, uint64 ullUniqueGameID, uint64_steamid steamIDPlayer, EPlayerResult_t EPlayerResult ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGame( ISteamGameSearch* self, uint64 ullUniqueGameID ); + +// ISteamParties + +// A versioned accessor is exported by the library +S_API ISteamParties *SteamAPI_SteamParties_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamParties(), but using this ensures that you are using a matching library. +inline ISteamParties *SteamAPI_SteamParties() { return SteamAPI_SteamParties_v002(); } +S_API uint32 SteamAPI_ISteamParties_GetNumActiveBeacons( ISteamParties* self ); +S_API PartyBeaconID_t SteamAPI_ISteamParties_GetBeaconByIndex( ISteamParties* self, uint32 unIndex ); +S_API bool SteamAPI_ISteamParties_GetBeaconDetails( ISteamParties* self, PartyBeaconID_t ulBeaconID, CSteamID * pSteamIDBeaconOwner, SteamPartyBeaconLocation_t * pLocation, char * pchMetadata, int cchMetadata ); +S_API SteamAPICall_t SteamAPI_ISteamParties_JoinParty( ISteamParties* self, PartyBeaconID_t ulBeaconID ); +S_API bool SteamAPI_ISteamParties_GetNumAvailableBeaconLocations( ISteamParties* self, uint32 * puNumLocations ); +S_API bool SteamAPI_ISteamParties_GetAvailableBeaconLocations( ISteamParties* self, SteamPartyBeaconLocation_t * pLocationList, uint32 uMaxNumLocations ); +S_API SteamAPICall_t SteamAPI_ISteamParties_CreateBeacon( ISteamParties* self, uint32 unOpenSlots, SteamPartyBeaconLocation_t * pBeaconLocation, const char * pchConnectString, const char * pchMetadata ); +S_API void SteamAPI_ISteamParties_OnReservationCompleted( ISteamParties* self, PartyBeaconID_t ulBeacon, uint64_steamid steamIDUser ); +S_API void SteamAPI_ISteamParties_CancelReservation( ISteamParties* self, PartyBeaconID_t ulBeacon, uint64_steamid steamIDUser ); +S_API SteamAPICall_t SteamAPI_ISteamParties_ChangeNumOpenSlots( ISteamParties* self, PartyBeaconID_t ulBeacon, uint32 unOpenSlots ); +S_API bool SteamAPI_ISteamParties_DestroyBeacon( ISteamParties* self, PartyBeaconID_t ulBeacon ); +S_API bool SteamAPI_ISteamParties_GetBeaconLocationData( ISteamParties* self, SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char * pchDataStringOut, int cchDataStringOut ); + +// ISteamRemoteStorage + +// A versioned accessor is exported by the library +S_API ISteamRemoteStorage *SteamAPI_SteamRemoteStorage_v016(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamRemoteStorage(), but using this ensures that you are using a matching library. +inline ISteamRemoteStorage *SteamAPI_SteamRemoteStorage() { return SteamAPI_SteamRemoteStorage_v016(); } +S_API bool SteamAPI_ISteamRemoteStorage_FileWrite( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, int32 cubData ); +S_API int32 SteamAPI_ISteamRemoteStorage_FileRead( ISteamRemoteStorage* self, const char * pchFile, void * pvData, int32 cubDataToRead ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, uint32 cubData ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync( ISteamRemoteStorage* self, const char * pchFile, uint32 nOffset, uint32 cubToRead ); +S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete( ISteamRemoteStorage* self, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead ); +S_API bool SteamAPI_ISteamRemoteStorage_FileForget( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_FileDelete( ISteamRemoteStorage* self, const char * pchFile ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms( ISteamRemoteStorage* self, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ); +S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData ); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle ); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle ); +S_API bool SteamAPI_ISteamRemoteStorage_FileExists( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted( ISteamRemoteStorage* self, const char * pchFile ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize( ISteamRemoteStorage* self, const char * pchFile ); +S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp( ISteamRemoteStorage* self, const char * pchFile ); +S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms( ISteamRemoteStorage* self, const char * pchFile ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount( ISteamRemoteStorage* self ); +S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize( ISteamRemoteStorage* self, int iFile, int32 * pnFileSizeInBytes ); +S_API bool SteamAPI_ISteamRemoteStorage_GetQuota( ISteamRemoteStorage* self, uint64 * pnTotalBytes, uint64 * puAvailableBytes ); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount( ISteamRemoteStorage* self ); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp( ISteamRemoteStorage* self ); +S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp( ISteamRemoteStorage* self, bool bEnabled ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload( ISteamRemoteStorage* self, UGCHandle_t hContent, uint32 unPriority ); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress( ISteamRemoteStorage* self, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected ); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails( ISteamRemoteStorage* self, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, CSteamID * pSteamIDOwner ); +S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead( ISteamRemoteStorage* self, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount( ISteamRemoteStorage* self ); +S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle( ISteamRemoteStorage* self, int32 iCachedContent ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile( ISteamRemoteStorage* self, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType ); +S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t * pTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles( ISteamRemoteStorage* self, uint32 unStartIndex ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles( ISteamRemoteStorage* self, uint32 unStartIndex ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, bool bVoteUp ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles( ISteamRemoteStorage* self, uint64_steamid steamId, uint32 unStartIndex, SteamParamStringArray_t * pRequiredTags, SteamParamStringArray_t * pExcludedTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo( ISteamRemoteStorage* self, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t * pTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction( ISteamRemoteStorage* self, EWorkshopFileAction eAction, uint32 unStartIndex ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles( ISteamRemoteStorage* self, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t * pTags, SteamParamStringArray_t * pUserTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation( ISteamRemoteStorage* self, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetLocalFileChangeCount( ISteamRemoteStorage* self ); +S_API const char * SteamAPI_ISteamRemoteStorage_GetLocalFileChange( ISteamRemoteStorage* self, int iFile, ERemoteStorageLocalFileChange * pEChangeType, ERemoteStorageFilePathType * pEFilePathType ); +S_API bool SteamAPI_ISteamRemoteStorage_BeginFileWriteBatch( ISteamRemoteStorage* self ); +S_API bool SteamAPI_ISteamRemoteStorage_EndFileWriteBatch( ISteamRemoteStorage* self ); + +// ISteamUserStats + +// A versioned accessor is exported by the library +S_API ISteamUserStats *SteamAPI_SteamUserStats_v012(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUserStats(), but using this ensures that you are using a matching library. +inline ISteamUserStats *SteamAPI_SteamUserStats() { return SteamAPI_SteamUserStats_v012(); } +S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats( ISteamUserStats* self ); +S_API bool SteamAPI_ISteamUserStats_GetStatInt32( ISteamUserStats* self, const char * pchName, int32 * pData ); +S_API bool SteamAPI_ISteamUserStats_GetStatFloat( ISteamUserStats* self, const char * pchName, float * pData ); +S_API bool SteamAPI_ISteamUserStats_SetStatInt32( ISteamUserStats* self, const char * pchName, int32 nData ); +S_API bool SteamAPI_ISteamUserStats_SetStatFloat( ISteamUserStats* self, const char * pchName, float fData ); +S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat( ISteamUserStats* self, const char * pchName, float flCountThisSession, double dSessionLength ); +S_API bool SteamAPI_ISteamUserStats_GetAchievement( ISteamUserStats* self, const char * pchName, bool * pbAchieved ); +S_API bool SteamAPI_ISteamUserStats_SetAchievement( ISteamUserStats* self, const char * pchName ); +S_API bool SteamAPI_ISteamUserStats_ClearAchievement( ISteamUserStats* self, const char * pchName ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime( ISteamUserStats* self, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime ); +S_API bool SteamAPI_ISteamUserStats_StoreStats( ISteamUserStats* self ); +S_API int SteamAPI_ISteamUserStats_GetAchievementIcon( ISteamUserStats* self, const char * pchName ); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute( ISteamUserStats* self, const char * pchName, const char * pchKey ); +S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress( ISteamUserStats* self, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress ); +S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements( ISteamUserStats* self ); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementName( ISteamUserStats* self, uint32 iAchievement ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats( ISteamUserStats* self, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamUserStats_GetUserStatInt32( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, int32 * pData ); +S_API bool SteamAPI_ISteamUserStats_GetUserStatFloat( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, float * pData ); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievement( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved ); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime ); +S_API bool SteamAPI_ISteamUserStats_ResetAllStats( ISteamUserStats* self, bool bAchievementsToo ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard( ISteamUserStats* self, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard( ISteamUserStats* self, const char * pchLeaderboardName ); +S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, CSteamID * prgUsers, int cUsers ); +S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry( ISteamUserStats* self, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers( ISteamUserStats* self ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages( ISteamUserStats* self ); +S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo( ISteamUserStats* self, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved ); +S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo( ISteamUserStats* self, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent( ISteamUserStats* self, const char * pchName, float * pflPercent ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats( ISteamUserStats* self, int nHistoryDays ); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStatInt64( ISteamUserStats* self, const char * pchStatName, int64 * pData ); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStatDouble( ISteamUserStats* self, const char * pchStatName, double * pData ); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64( ISteamUserStats* self, const char * pchStatName, int64 * pData, uint32 cubData ); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble( ISteamUserStats* self, const char * pchStatName, double * pData, uint32 cubData ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32( ISteamUserStats* self, const char * pchName, int32 * pnMinProgress, int32 * pnMaxProgress ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat( ISteamUserStats* self, const char * pchName, float * pfMinProgress, float * pfMaxProgress ); + +// ISteamApps + +// A versioned accessor is exported by the library +S_API ISteamApps *SteamAPI_SteamApps_v008(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamApps(), but using this ensures that you are using a matching library. +inline ISteamApps *SteamAPI_SteamApps() { return SteamAPI_SteamApps_v008(); } +S_API bool SteamAPI_ISteamApps_BIsSubscribed( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsLowViolence( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsCybercafe( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsVACBanned( ISteamApps* self ); +S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage( ISteamApps* self ); +S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsSubscribedApp( ISteamApps* self, AppId_t appID ); +S_API bool SteamAPI_ISteamApps_BIsDlcInstalled( ISteamApps* self, AppId_t appID ); +S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime( ISteamApps* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend( ISteamApps* self ); +S_API int SteamAPI_ISteamApps_GetDLCCount( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex( ISteamApps* self, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize ); +S_API void SteamAPI_ISteamApps_InstallDLC( ISteamApps* self, AppId_t nAppID ); +S_API void SteamAPI_ISteamApps_UninstallDLC( ISteamApps* self, AppId_t nAppID ); +S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey( ISteamApps* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamApps_GetCurrentBetaName( ISteamApps* self, char * pchName, int cchNameBufferSize ); +S_API bool SteamAPI_ISteamApps_MarkContentCorrupt( ISteamApps* self, bool bMissingFilesOnly ); +S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots( ISteamApps* self, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots ); +S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir( ISteamApps* self, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize ); +S_API bool SteamAPI_ISteamApps_BIsAppInstalled( ISteamApps* self, AppId_t appID ); +S_API uint64_steamid SteamAPI_ISteamApps_GetAppOwner( ISteamApps* self ); +S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam( ISteamApps* self, const char * pchKey ); +S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress( ISteamApps* self, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal ); +S_API int SteamAPI_ISteamApps_GetAppBuildId( ISteamApps* self ); +S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys( ISteamApps* self ); +S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails( ISteamApps* self, const char * pszFileName ); +S_API int SteamAPI_ISteamApps_GetLaunchCommandLine( ISteamApps* self, char * pszCommandLine, int cubCommandLine ); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsTimedTrial( ISteamApps* self, uint32 * punSecondsAllowed, uint32 * punSecondsPlayed ); +S_API bool SteamAPI_ISteamApps_SetDlcContext( ISteamApps* self, AppId_t nAppID ); + +// ISteamNetworking + +// A versioned accessor is exported by the library +S_API ISteamNetworking *SteamAPI_SteamNetworking_v006(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworking(), but using this ensures that you are using a matching library. +inline ISteamNetworking *SteamAPI_SteamNetworking() { return SteamAPI_SteamNetworking_v006(); } + +// A versioned accessor is exported by the library +S_API ISteamNetworking *SteamAPI_SteamGameServerNetworking_v006(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerNetworking(), but using this ensures that you are using a matching library. +inline ISteamNetworking *SteamAPI_SteamGameServerNetworking() { return SteamAPI_SteamGameServerNetworking_v006(); } +S_API bool SteamAPI_ISteamNetworking_SendP2PPacket( ISteamNetworking* self, uint64_steamid steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable( ISteamNetworking* self, uint32 * pcubMsgSize, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket( ISteamNetworking* self, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, CSteamID * psteamIDRemote, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote ); +S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote ); +S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState( ISteamNetworking* self, uint64_steamid steamIDRemote, P2PSessionState_t * pConnectionState ); +S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay( ISteamNetworking* self, bool bAllow ); +S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket( ISteamNetworking* self, int nVirtualP2PPort, SteamIPAddress_t nIP, uint16 nPort, bool bAllowUseOfPacketRelay ); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket( ISteamNetworking* self, uint64_steamid steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket( ISteamNetworking* self, SteamIPAddress_t nIP, uint16 nPort, int nTimeoutSec ); +S_API bool SteamAPI_ISteamNetworking_DestroySocket( ISteamNetworking* self, SNetSocket_t hSocket, bool bNotifyRemoteEnd ); +S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket( ISteamNetworking* self, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ); +S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket( ISteamNetworking* self, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable ); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket( ISteamNetworking* self, SNetSocket_t hSocket, uint32 * pcubMsgSize ); +S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket( ISteamNetworking* self, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize ); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailable( ISteamNetworking* self, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket ); +S_API bool SteamAPI_ISteamNetworking_RetrieveData( ISteamNetworking* self, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket ); +S_API bool SteamAPI_ISteamNetworking_GetSocketInfo( ISteamNetworking* self, SNetSocket_t hSocket, CSteamID * pSteamIDRemote, int * peSocketStatus, SteamIPAddress_t * punIPRemote, uint16 * punPortRemote ); +S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo( ISteamNetworking* self, SNetListenSocket_t hListenSocket, SteamIPAddress_t * pnIP, uint16 * pnPort ); +S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType( ISteamNetworking* self, SNetSocket_t hSocket ); +S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize( ISteamNetworking* self, SNetSocket_t hSocket ); + +// ISteamScreenshots + +// A versioned accessor is exported by the library +S_API ISteamScreenshots *SteamAPI_SteamScreenshots_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamScreenshots(), but using this ensures that you are using a matching library. +inline ISteamScreenshots *SteamAPI_SteamScreenshots() { return SteamAPI_SteamScreenshots_v003(); } +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot( ISteamScreenshots* self, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight ); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary( ISteamScreenshots* self, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight ); +S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot( ISteamScreenshots* self ); +S_API void SteamAPI_ISteamScreenshots_HookScreenshots( ISteamScreenshots* self, bool bHook ); +S_API bool SteamAPI_ISteamScreenshots_SetLocation( ISteamScreenshots* self, ScreenshotHandle hScreenshot, const char * pchLocation ); +S_API bool SteamAPI_ISteamScreenshots_TagUser( ISteamScreenshots* self, ScreenshotHandle hScreenshot, uint64_steamid steamID ); +S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile( ISteamScreenshots* self, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ); +S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked( ISteamScreenshots* self ); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary( ISteamScreenshots* self, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename ); + +// ISteamMusic + +// A versioned accessor is exported by the library +S_API ISteamMusic *SteamAPI_SteamMusic_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMusic(), but using this ensures that you are using a matching library. +inline ISteamMusic *SteamAPI_SteamMusic() { return SteamAPI_SteamMusic_v001(); } +S_API bool SteamAPI_ISteamMusic_BIsEnabled( ISteamMusic* self ); +S_API bool SteamAPI_ISteamMusic_BIsPlaying( ISteamMusic* self ); +S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_Play( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_Pause( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_PlayPrevious( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_PlayNext( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_SetVolume( ISteamMusic* self, float flVolume ); +S_API float SteamAPI_ISteamMusic_GetVolume( ISteamMusic* self ); + +// ISteamMusicRemote + +// A versioned accessor is exported by the library +S_API ISteamMusicRemote *SteamAPI_SteamMusicRemote_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMusicRemote(), but using this ensures that you are using a matching library. +inline ISteamMusicRemote *SteamAPI_SteamMusicRemote() { return SteamAPI_SteamMusicRemote_v001(); } +S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote( ISteamMusicRemote* self, const char * pchName ); +S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName( ISteamMusicRemote* self, const char * pchDisplayName ); +S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64( ISteamMusicRemote* self, void * pvBuffer, uint32 cbBufferLength ); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnableLooped( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnableQueue( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus( ISteamMusicRemote* self, AudioPlayback_Status nStatus ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume( ISteamMusicRemote* self, float flValue ); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable( ISteamMusicRemote* self, bool bAvailable ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText( ISteamMusicRemote* self, const char * pchText ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds( ISteamMusicRemote* self, int nValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt( ISteamMusicRemote* self, void * pvBuffer, uint32 cbBufferLength ); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry( ISteamMusicRemote* self, int nID, int nPosition, const char * pchEntryText ); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry( ISteamMusicRemote* self, int nID ); +S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry( ISteamMusicRemote* self, int nID, int nPosition, const char * pchEntryText ); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry( ISteamMusicRemote* self, int nID ); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange( ISteamMusicRemote* self ); + +// ISteamHTTP + +// A versioned accessor is exported by the library +S_API ISteamHTTP *SteamAPI_SteamHTTP_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamHTTP(), but using this ensures that you are using a matching library. +inline ISteamHTTP *SteamAPI_SteamHTTP() { return SteamAPI_SteamHTTP_v003(); } + +// A versioned accessor is exported by the library +S_API ISteamHTTP *SteamAPI_SteamGameServerHTTP_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerHTTP(), but using this ensures that you are using a matching library. +inline ISteamHTTP *SteamAPI_SteamGameServerHTTP() { return SteamAPI_SteamGameServerHTTP_v003(); } +S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest( ISteamHTTP* self, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue( ISteamHTTP* self, HTTPRequestHandle hRequest, uint64 ulContextValue ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue ); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle ); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse( ISteamHTTP* self, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle ); +S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); +S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 * unBodySize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData( ISteamHTTP* self, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize ); +S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct( ISteamHTTP* self, HTTPRequestHandle hRequest, float * pflPercentOut ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen ); +S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer( ISteamHTTP* self, bool bAllowResponsesToModify ); +S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer( ISteamHTTP* self, HTTPCookieContainerHandle hCookieContainer ); +S_API bool SteamAPI_ISteamHTTP_SetCookie( ISteamHTTP* self, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer( ISteamHTTP* self, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchUserAgentInfo ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate( ISteamHTTP* self, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 unMilliseconds ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut( ISteamHTTP* self, HTTPRequestHandle hRequest, bool * pbWasTimedOut ); + +// ISteamInput + +// A versioned accessor is exported by the library +S_API ISteamInput *SteamAPI_SteamInput_v006(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamInput(), but using this ensures that you are using a matching library. +inline ISteamInput *SteamAPI_SteamInput() { return SteamAPI_SteamInput_v006(); } +S_API bool SteamAPI_ISteamInput_Init( ISteamInput* self, bool bExplicitlyCallRunFrame ); +S_API bool SteamAPI_ISteamInput_Shutdown( ISteamInput* self ); +S_API bool SteamAPI_ISteamInput_SetInputActionManifestFilePath( ISteamInput* self, const char * pchInputActionManifestAbsolutePath ); +S_API void SteamAPI_ISteamInput_RunFrame( ISteamInput* self, bool bReservedValue ); +S_API bool SteamAPI_ISteamInput_BWaitForData( ISteamInput* self, bool bWaitForever, uint32 unTimeout ); +S_API bool SteamAPI_ISteamInput_BNewDataAvailable( ISteamInput* self ); +S_API int SteamAPI_ISteamInput_GetConnectedControllers( ISteamInput* self, InputHandle_t * handlesOut ); +S_API void SteamAPI_ISteamInput_EnableDeviceCallbacks( ISteamInput* self ); +S_API void SteamAPI_ISteamInput_EnableActionEventCallbacks( ISteamInput* self, SteamInputActionEventCallbackPointer pCallback ); +S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetActionSetHandle( ISteamInput* self, const char * pszActionSetName ); +S_API void SteamAPI_ISteamInput_ActivateActionSet( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ); +S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetCurrentActionSet( ISteamInput* self, InputHandle_t inputHandle ); +S_API void SteamAPI_ISteamInput_ActivateActionSetLayer( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamInput_DeactivateActionSetLayer( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamInput_DeactivateAllActionSetLayers( ISteamInput* self, InputHandle_t inputHandle ); +S_API int SteamAPI_ISteamInput_GetActiveActionSetLayers( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t * handlesOut ); +S_API InputDigitalActionHandle_t SteamAPI_ISteamInput_GetDigitalActionHandle( ISteamInput* self, const char * pszActionName ); +S_API InputDigitalActionData_t SteamAPI_ISteamInput_GetDigitalActionData( ISteamInput* self, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ); +S_API int SteamAPI_ISteamInput_GetDigitalActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin * originsOut ); +S_API const char * SteamAPI_ISteamInput_GetStringForDigitalActionName( ISteamInput* self, InputDigitalActionHandle_t eActionHandle ); +S_API InputAnalogActionHandle_t SteamAPI_ISteamInput_GetAnalogActionHandle( ISteamInput* self, const char * pszActionName ); +S_API InputAnalogActionData_t SteamAPI_ISteamInput_GetAnalogActionData( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ); +S_API int SteamAPI_ISteamInput_GetAnalogActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin * originsOut ); +S_API const char * SteamAPI_ISteamInput_GetGlyphPNGForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin, ESteamInputGlyphSize eSize, uint32 unFlags ); +S_API const char * SteamAPI_ISteamInput_GetGlyphSVGForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin, uint32 unFlags ); +S_API const char * SteamAPI_ISteamInput_GetGlyphForActionOrigin_Legacy( ISteamInput* self, EInputActionOrigin eOrigin ); +S_API const char * SteamAPI_ISteamInput_GetStringForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin ); +S_API const char * SteamAPI_ISteamInput_GetStringForAnalogActionName( ISteamInput* self, InputAnalogActionHandle_t eActionHandle ); +S_API void SteamAPI_ISteamInput_StopAnalogActionMomentum( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ); +S_API InputMotionData_t SteamAPI_ISteamInput_GetMotionData( ISteamInput* self, InputHandle_t inputHandle ); +S_API void SteamAPI_ISteamInput_TriggerVibration( ISteamInput* self, InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ); +S_API void SteamAPI_ISteamInput_TriggerVibrationExtended( ISteamInput* self, InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed, unsigned short usLeftTriggerSpeed, unsigned short usRightTriggerSpeed ); +S_API void SteamAPI_ISteamInput_TriggerSimpleHapticEvent( ISteamInput* self, InputHandle_t inputHandle, EControllerHapticLocation eHapticLocation, uint8 nIntensity, char nGainDB, uint8 nOtherIntensity, char nOtherGainDB ); +S_API void SteamAPI_ISteamInput_SetLEDColor( ISteamInput* self, InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ); +S_API void SteamAPI_ISteamInput_Legacy_TriggerHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); +S_API void SteamAPI_ISteamInput_Legacy_TriggerRepeatedHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); +S_API bool SteamAPI_ISteamInput_ShowBindingPanel( ISteamInput* self, InputHandle_t inputHandle ); +S_API ESteamInputType SteamAPI_ISteamInput_GetInputTypeForHandle( ISteamInput* self, InputHandle_t inputHandle ); +S_API InputHandle_t SteamAPI_ISteamInput_GetControllerForGamepadIndex( ISteamInput* self, int nIndex ); +S_API int SteamAPI_ISteamInput_GetGamepadIndexForController( ISteamInput* self, InputHandle_t ulinputHandle ); +S_API const char * SteamAPI_ISteamInput_GetStringForXboxOrigin( ISteamInput* self, EXboxOrigin eOrigin ); +S_API const char * SteamAPI_ISteamInput_GetGlyphForXboxOrigin( ISteamInput* self, EXboxOrigin eOrigin ); +S_API EInputActionOrigin SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin( ISteamInput* self, InputHandle_t inputHandle, EXboxOrigin eOrigin ); +S_API EInputActionOrigin SteamAPI_ISteamInput_TranslateActionOrigin( ISteamInput* self, ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ); +S_API bool SteamAPI_ISteamInput_GetDeviceBindingRevision( ISteamInput* self, InputHandle_t inputHandle, int * pMajor, int * pMinor ); +S_API uint32 SteamAPI_ISteamInput_GetRemotePlaySessionID( ISteamInput* self, InputHandle_t inputHandle ); +S_API uint16 SteamAPI_ISteamInput_GetSessionInputConfigurationSettings( ISteamInput* self ); +S_API void SteamAPI_ISteamInput_SetDualSenseTriggerEffect( ISteamInput* self, InputHandle_t inputHandle, const ScePadTriggerEffectParam * pParam ); + +// ISteamController + +// A versioned accessor is exported by the library +S_API ISteamController *SteamAPI_SteamController_v008(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamController(), but using this ensures that you are using a matching library. +inline ISteamController *SteamAPI_SteamController() { return SteamAPI_SteamController_v008(); } +S_API bool SteamAPI_ISteamController_Init( ISteamController* self ); +S_API bool SteamAPI_ISteamController_Shutdown( ISteamController* self ); +S_API void SteamAPI_ISteamController_RunFrame( ISteamController* self ); +S_API int SteamAPI_ISteamController_GetConnectedControllers( ISteamController* self, ControllerHandle_t * handlesOut ); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle( ISteamController* self, const char * pszActionSetName ); +S_API void SteamAPI_ISteamController_ActivateActionSet( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API void SteamAPI_ISteamController_ActivateActionSetLayer( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamController_DeactivateActionSetLayer( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamController_DeactivateAllActionSetLayers( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API int SteamAPI_ISteamController_GetActiveActionSetLayers( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t * handlesOut ); +S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle( ISteamController* self, const char * pszActionName ); +S_API InputDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData( ISteamController* self, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ); +S_API int SteamAPI_ISteamController_GetDigitalActionOrigins( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut ); +S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle( ISteamController* self, const char * pszActionName ); +S_API InputAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData( ISteamController* self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ); +S_API int SteamAPI_ISteamController_GetAnalogActionOrigins( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut ); +S_API const char * SteamAPI_ISteamController_GetGlyphForActionOrigin( ISteamController* self, EControllerActionOrigin eOrigin ); +S_API const char * SteamAPI_ISteamController_GetStringForActionOrigin( ISteamController* self, EControllerActionOrigin eOrigin ); +S_API void SteamAPI_ISteamController_StopAnalogActionMomentum( ISteamController* self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ); +S_API InputMotionData_t SteamAPI_ISteamController_GetMotionData( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API void SteamAPI_ISteamController_TriggerHapticPulse( ISteamController* self, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); +S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse( ISteamController* self, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); +S_API void SteamAPI_ISteamController_TriggerVibration( ISteamController* self, ControllerHandle_t controllerHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ); +S_API void SteamAPI_ISteamController_SetLEDColor( ISteamController* self, ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ); +S_API bool SteamAPI_ISteamController_ShowBindingPanel( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API ESteamInputType SteamAPI_ISteamController_GetInputTypeForHandle( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex( ISteamController* self, int nIndex ); +S_API int SteamAPI_ISteamController_GetGamepadIndexForController( ISteamController* self, ControllerHandle_t ulControllerHandle ); +S_API const char * SteamAPI_ISteamController_GetStringForXboxOrigin( ISteamController* self, EXboxOrigin eOrigin ); +S_API const char * SteamAPI_ISteamController_GetGlyphForXboxOrigin( ISteamController* self, EXboxOrigin eOrigin ); +S_API EControllerActionOrigin SteamAPI_ISteamController_GetActionOriginFromXboxOrigin( ISteamController* self, ControllerHandle_t controllerHandle, EXboxOrigin eOrigin ); +S_API EControllerActionOrigin SteamAPI_ISteamController_TranslateActionOrigin( ISteamController* self, ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin ); +S_API bool SteamAPI_ISteamController_GetControllerBindingRevision( ISteamController* self, ControllerHandle_t controllerHandle, int * pMajor, int * pMinor ); + +// ISteamUGC + +// A versioned accessor is exported by the library +S_API ISteamUGC *SteamAPI_SteamUGC_v016(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUGC(), but using this ensures that you are using a matching library. +inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v016(); } + +// A versioned accessor is exported by the library +S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v016(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerUGC(), but using this ensures that you are using a matching library. +inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v016(); } +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t * pDetails ); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 indexTag, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 indexTag, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue ); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType ); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, const char * pchKey, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); +S_API bool SteamAPI_ISteamUGC_AddRequiredTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); +S_API bool SteamAPI_ISteamUGC_AddRequiredTagGroup( ISteamUGC* self, UGCQueryHandle_t handle, const SteamParamStringArray_t * pTagGroups ); +S_API bool SteamAPI_ISteamUGC_AddExcludedTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); +S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnOnlyIDs ); +S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnKeyValueTags ); +S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnLongDescription ); +S_API bool SteamAPI_ISteamUGC_SetReturnMetadata( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnMetadata ); +S_API bool SteamAPI_ISteamUGC_SetReturnChildren( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnChildren ); +S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ); +S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnTotalOnly ); +S_API bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); +S_API bool SteamAPI_ISteamUGC_SetLanguage( ISteamUGC* self, UGCQueryHandle_t handle, const char * pchLanguage ); +S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ); +S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter( ISteamUGC* self, UGCQueryHandle_t handle, const char * pMatchCloudFileName ); +S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag( ISteamUGC* self, UGCQueryHandle_t handle, bool bMatchAnyTag ); +S_API bool SteamAPI_ISteamUGC_SetSearchText( ISteamUGC* self, UGCQueryHandle_t handle, const char * pSearchText ); +S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); +S_API bool SteamAPI_ISteamUGC_SetTimeCreatedDateRange( ISteamUGC* self, UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); +S_API bool SteamAPI_ISteamUGC_SetTimeUpdatedDateRange( ISteamUGC* self, UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); +S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pKey, const char * pValue ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem( ISteamUGC* self, AppId_t nConsumerAppId, EWorkshopFileType eFileType ); +S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate( ISteamUGC* self, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ); +S_API bool SteamAPI_ISteamUGC_SetItemTitle( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchTitle ); +S_API bool SteamAPI_ISteamUGC_SetItemDescription( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchDescription ); +S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchLanguage ); +S_API bool SteamAPI_ISteamUGC_SetItemMetadata( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchMetaData ); +S_API bool SteamAPI_ISteamUGC_SetItemVisibility( ISteamUGC* self, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ); +S_API bool SteamAPI_ISteamUGC_SetItemTags( ISteamUGC* self, UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t * pTags ); +S_API bool SteamAPI_ISteamUGC_SetItemContent( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszContentFolder ); +S_API bool SteamAPI_ISteamUGC_SetItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszPreviewFile ); +S_API bool SteamAPI_ISteamUGC_SetAllowLegacyUpload( ISteamUGC* self, UGCUpdateHandle_t handle, bool bAllowLegacyUpload ); +S_API bool SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags( ISteamUGC* self, UGCUpdateHandle_t handle ); +S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchKey ); +S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue ); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type ); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszVideoID ); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile ); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID ); +S_API bool SteamAPI_ISteamUGC_RemoveItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchChangeNote ); +S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress( ISteamUGC* self, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bVoteUp ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites( ISteamUGC* self, AppId_t nAppId, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites( ISteamUGC* self, AppId_t nAppId, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self ); +S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries ); +S_API uint32 SteamAPI_ISteamUGC_GetItemState( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp ); +S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal ); +S_API bool SteamAPI_ISteamUGC_DownloadItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bHighPriority ); +S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer( ISteamUGC* self, DepotId_t unWorkshopDepotID, const char * pszFolder ); +S_API void SteamAPI_ISteamUGC_SuspendDownloads( ISteamUGC* self, bool bSuspend ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems( ISteamUGC* self ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddDependency( ISteamUGC* self, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveDependency( ISteamUGC* self, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddAppDependency( ISteamUGC* self, PublishedFileId_t nPublishedFileID, AppId_t nAppID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveAppDependency( ISteamUGC* self, PublishedFileId_t nPublishedFileID, AppId_t nAppID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API bool SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self ); + +// ISteamAppList + +// A versioned accessor is exported by the library +S_API ISteamAppList *SteamAPI_SteamAppList_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamAppList(), but using this ensures that you are using a matching library. +inline ISteamAppList *SteamAPI_SteamAppList() { return SteamAPI_SteamAppList_v001(); } +S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps( ISteamAppList* self ); +S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps( ISteamAppList* self, AppId_t * pvecAppID, uint32 unMaxAppIDs ); +S_API int SteamAPI_ISteamAppList_GetAppName( ISteamAppList* self, AppId_t nAppID, char * pchName, int cchNameMax ); +S_API int SteamAPI_ISteamAppList_GetAppInstallDir( ISteamAppList* self, AppId_t nAppID, char * pchDirectory, int cchNameMax ); +S_API int SteamAPI_ISteamAppList_GetAppBuildId( ISteamAppList* self, AppId_t nAppID ); + +// ISteamHTMLSurface + +// A versioned accessor is exported by the library +S_API ISteamHTMLSurface *SteamAPI_SteamHTMLSurface_v005(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamHTMLSurface(), but using this ensures that you are using a matching library. +inline ISteamHTMLSurface *SteamAPI_SteamHTMLSurface() { return SteamAPI_SteamHTMLSurface_v005(); } +S_API bool SteamAPI_ISteamHTMLSurface_Init( ISteamHTMLSurface* self ); +S_API bool SteamAPI_ISteamHTMLSurface_Shutdown( ISteamHTMLSurface* self ); +S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser( ISteamHTMLSurface* self, const char * pchUserAgent, const char * pchUserCSS ); +S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_LoadURL( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData ); +S_API void SteamAPI_ISteamHTMLSurface_SetSize( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ); +S_API void SteamAPI_ISteamHTMLSurface_StopLoad( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_Reload( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_GoBack( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_GoForward( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_AddHeader( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue ); +S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchScript ); +S_API void SteamAPI_ISteamHTMLSurface_MouseUp( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); +S_API void SteamAPI_ISteamHTMLSurface_MouseDown( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); +S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); +S_API void SteamAPI_ISteamHTMLSurface_MouseMove( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int x, int y ); +S_API void SteamAPI_ISteamHTMLSurface_MouseWheel( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int32 nDelta ); +S_API void SteamAPI_ISteamHTMLSurface_KeyDown( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers, bool bIsSystemKey ); +S_API void SteamAPI_ISteamHTMLSurface_KeyUp( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers ); +S_API void SteamAPI_ISteamHTMLSurface_KeyChar( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers ); +S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ); +S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ); +S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ); +S_API void SteamAPI_ISteamHTMLSurface_ViewSource( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_Find( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse ); +S_API void SteamAPI_ISteamHTMLSurface_StopFind( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int x, int y ); +S_API void SteamAPI_ISteamHTMLSurface_SetCookie( ISteamHTMLSurface* self, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly ); +S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ); +S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bBackgroundMode ); +S_API void SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, float flDPIScaling ); +S_API void SteamAPI_ISteamHTMLSurface_OpenDeveloperTools( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bAllowed ); +S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bResult ); +S_API void SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char ** pchSelectedFiles ); + +// ISteamInventory + +// A versioned accessor is exported by the library +S_API ISteamInventory *SteamAPI_SteamInventory_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamInventory(), but using this ensures that you are using a matching library. +inline ISteamInventory *SteamAPI_SteamInventory() { return SteamAPI_SteamInventory_v003(); } + +// A versioned accessor is exported by the library +S_API ISteamInventory *SteamAPI_SteamGameServerInventory_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerInventory(), but using this ensures that you are using a matching library. +inline ISteamInventory *SteamAPI_SteamGameServerInventory() { return SteamAPI_SteamGameServerInventory_v003(); } +S_API EResult SteamAPI_ISteamInventory_GetResultStatus( ISteamInventory* self, SteamInventoryResult_t resultHandle ); +S_API bool SteamAPI_ISteamInventory_GetResultItems( ISteamInventory* self, SteamInventoryResult_t resultHandle, SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize ); +S_API bool SteamAPI_ISteamInventory_GetResultItemProperty( ISteamInventory* self, SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut ); +S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp( ISteamInventory* self, SteamInventoryResult_t resultHandle ); +S_API bool SteamAPI_ISteamInventory_CheckResultSteamID( ISteamInventory* self, SteamInventoryResult_t resultHandle, uint64_steamid steamIDExpected ); +S_API void SteamAPI_ISteamInventory_DestroyResult( ISteamInventory* self, SteamInventoryResult_t resultHandle ); +S_API bool SteamAPI_ISteamInventory_GetAllItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle ); +S_API bool SteamAPI_ISteamInventory_GetItemsByID( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs ); +S_API bool SteamAPI_ISteamInventory_SerializeResult( ISteamInventory* self, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize ); +S_API bool SteamAPI_ISteamInventory_DeserializeResult( ISteamInventory* self, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE ); +S_API bool SteamAPI_ISteamInventory_GenerateItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength ); +S_API bool SteamAPI_ISteamInventory_GrantPromoItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle ); +S_API bool SteamAPI_ISteamInventory_AddPromoItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef ); +S_API bool SteamAPI_ISteamInventory_AddPromoItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength ); +S_API bool SteamAPI_ISteamInventory_ConsumeItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ); +S_API bool SteamAPI_ISteamInventory_ExchangeItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength ); +S_API bool SteamAPI_ISteamInventory_TransferItemQuantity( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ); +S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_TriggerItemDrop( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition ); +S_API bool SteamAPI_ISteamInventory_TradeItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, uint64_steamid steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength ); +S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs( ISteamInventory* self, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize ); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty( ISteamInventory* self, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut ); +S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs( ISteamInventory* self, uint64_steamid steamID ); +S_API bool SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs( ISteamInventory* self, uint64_steamid steamID, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize ); +S_API SteamAPICall_t SteamAPI_ISteamInventory_StartPurchase( ISteamInventory* self, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength ); +S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestPrices( ISteamInventory* self ); +S_API uint32 SteamAPI_ISteamInventory_GetNumItemsWithPrices( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_GetItemsWithPrices( ISteamInventory* self, SteamItemDef_t * pArrayItemDefs, uint64 * pCurrentPrices, uint64 * pBasePrices, uint32 unArrayLength ); +S_API bool SteamAPI_ISteamInventory_GetItemPrice( ISteamInventory* self, SteamItemDef_t iDefinition, uint64 * pCurrentPrice, uint64 * pBasePrice ); +S_API SteamInventoryUpdateHandle_t SteamAPI_ISteamInventory_StartUpdateProperties( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_RemoveProperty( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName ); +S_API bool SteamAPI_ISteamInventory_SetPropertyString( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, const char * pchPropertyValue ); +S_API bool SteamAPI_ISteamInventory_SetPropertyBool( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, bool bValue ); +S_API bool SteamAPI_ISteamInventory_SetPropertyInt64( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, int64 nValue ); +S_API bool SteamAPI_ISteamInventory_SetPropertyFloat( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, float flValue ); +S_API bool SteamAPI_ISteamInventory_SubmitUpdateProperties( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ); +S_API bool SteamAPI_ISteamInventory_InspectItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const char * pchItemToken ); + +// ISteamVideo + +// A versioned accessor is exported by the library +S_API ISteamVideo *SteamAPI_SteamVideo_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamVideo(), but using this ensures that you are using a matching library. +inline ISteamVideo *SteamAPI_SteamVideo() { return SteamAPI_SteamVideo_v002(); } +S_API void SteamAPI_ISteamVideo_GetVideoURL( ISteamVideo* self, AppId_t unVideoAppID ); +S_API bool SteamAPI_ISteamVideo_IsBroadcasting( ISteamVideo* self, int * pnNumViewers ); +S_API void SteamAPI_ISteamVideo_GetOPFSettings( ISteamVideo* self, AppId_t unVideoAppID ); +S_API bool SteamAPI_ISteamVideo_GetOPFStringForApp( ISteamVideo* self, AppId_t unVideoAppID, char * pchBuffer, int32 * pnBufferSize ); + +// ISteamParentalSettings + +// A versioned accessor is exported by the library +S_API ISteamParentalSettings *SteamAPI_SteamParentalSettings_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamParentalSettings(), but using this ensures that you are using a matching library. +inline ISteamParentalSettings *SteamAPI_SteamParentalSettings() { return SteamAPI_SteamParentalSettings_v001(); } +S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled( ISteamParentalSettings* self ); +S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockLocked( ISteamParentalSettings* self ); +S_API bool SteamAPI_ISteamParentalSettings_BIsAppBlocked( ISteamParentalSettings* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamParentalSettings_BIsAppInBlockList( ISteamParentalSettings* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureBlocked( ISteamParentalSettings* self, EParentalFeature eFeature ); +S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList( ISteamParentalSettings* self, EParentalFeature eFeature ); + +// ISteamRemotePlay + +// A versioned accessor is exported by the library +S_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamRemotePlay(), but using this ensures that you are using a matching library. +inline ISteamRemotePlay *SteamAPI_SteamRemotePlay() { return SteamAPI_SteamRemotePlay_v001(); } +S_API uint32 SteamAPI_ISteamRemotePlay_GetSessionCount( ISteamRemotePlay* self ); +S_API RemotePlaySessionID_t SteamAPI_ISteamRemotePlay_GetSessionID( ISteamRemotePlay* self, int iSessionIndex ); +S_API uint64_steamid SteamAPI_ISteamRemotePlay_GetSessionSteamID( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); +S_API const char * SteamAPI_ISteamRemotePlay_GetSessionClientName( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); +S_API ESteamDeviceFormFactor SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); +S_API bool SteamAPI_ISteamRemotePlay_BGetSessionClientResolution( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, int * pnResolutionX, int * pnResolutionY ); +S_API bool SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite( ISteamRemotePlay* self, uint64_steamid steamIDFriend ); + +// ISteamNetworkingMessages + +// A versioned accessor is exported by the library +S_API ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworkingMessages_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_SteamAPI() { return SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); } + +// A versioned accessor is exported by the library +S_API ISteamNetworkingMessages *SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerNetworkingMessages_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingMessages *SteamAPI_SteamGameServerNetworkingMessages_SteamAPI() { return SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); } +S_API EResult SteamAPI_ISteamNetworkingMessages_SendMessageToUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, const void * pubData, uint32 cubData, int nSendFlags, int nRemoteChannel ); +S_API int SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel( ISteamNetworkingMessages* self, int nLocalChannel, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API bool SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); +S_API bool SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); +S_API bool SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, int nLocalChannel ); +S_API ESteamNetworkingConnectionState SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, SteamNetConnectionInfo_t * pConnectionInfo, SteamNetConnectionRealTimeStatus_t * pQuickStatus ); + +// ISteamNetworkingSockets + +// A versioned accessor is exported by the library +S_API ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI_v012(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworkingSockets_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI() { return SteamAPI_SteamNetworkingSockets_SteamAPI_v012(); } + +// A versioned accessor is exported by the library +S_API ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerNetworkingSockets_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI() { return SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012(); } +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & localAddress, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & address, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectP2P( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityRemote, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API EResult SteamAPI_ISteamNetworkingSockets_AcceptConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn ); +S_API bool SteamAPI_ISteamNetworkingSockets_CloseConnection( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, int nReason, const char * pszDebug, bool bEnableLinger ); +S_API bool SteamAPI_ISteamNetworkingSockets_CloseListenSocket( ISteamNetworkingSockets* self, HSteamListenSocket hSocket ); +S_API bool SteamAPI_ISteamNetworkingSockets_SetConnectionUserData( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, int64 nUserData ); +S_API int64 SteamAPI_ISteamNetworkingSockets_GetConnectionUserData( ISteamNetworkingSockets* self, HSteamNetConnection hPeer ); +S_API void SteamAPI_ISteamNetworkingSockets_SetConnectionName( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, const char * pszName ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetConnectionName( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, char * pszName, int nMaxLen ); +S_API EResult SteamAPI_ISteamNetworkingSockets_SendMessageToConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, const void * pData, uint32 cbData, int nSendFlags, int64 * pOutMessageNumber ); +S_API void SteamAPI_ISteamNetworkingSockets_SendMessages( ISteamNetworkingSockets* self, int nMessages, SteamNetworkingMessage_t *const * pMessages, int64 * pOutMessageNumberOrResult ); +S_API EResult SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn ); +S_API int SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetConnectionInfo( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetConnectionInfo_t * pInfo ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetConnectionRealTimeStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetConnectionRealTimeStatus_t * pStatus, int nLanes, SteamNetConnectionRealTimeLaneStatus_t * pLanes ); +S_API int SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, char * pszBuf, int cbBuf ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress( ISteamNetworkingSockets* self, HSteamListenSocket hSocket, SteamNetworkingIPAddr * address ); +S_API bool SteamAPI_ISteamNetworkingSockets_CreateSocketPair( ISteamNetworkingSockets* self, HSteamNetConnection * pOutConnection1, HSteamNetConnection * pOutConnection2, bool bUseNetworkLoopback, const SteamNetworkingIdentity * pIdentity1, const SteamNetworkingIdentity * pIdentity2 ); +S_API EResult SteamAPI_ISteamNetworkingSockets_ConfigureConnectionLanes( ISteamNetworkingSockets* self, HSteamNetConnection hConn, int nNumLanes, const int * pLanePriorities, const uint16 * pLaneWeights ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetIdentity( ISteamNetworkingSockets* self, SteamNetworkingIdentity * pIdentity ); +S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_InitAuthentication( ISteamNetworkingSockets* self ); +S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus( ISteamNetworkingSockets* self, SteamNetAuthenticationStatus_t * pDetails ); +S_API HSteamNetPollGroup SteamAPI_ISteamNetworkingSockets_CreatePollGroup( ISteamNetworkingSockets* self ); +S_API bool SteamAPI_ISteamNetworkingSockets_DestroyPollGroup( ISteamNetworkingSockets* self, HSteamNetPollGroup hPollGroup ); +S_API bool SteamAPI_ISteamNetworkingSockets_SetConnectionPollGroup( ISteamNetworkingSockets* self, HSteamNetConnection hConn, HSteamNetPollGroup hPollGroup ); +S_API int SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnPollGroup( ISteamNetworkingSockets* self, HSteamNetPollGroup hPollGroup, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API bool SteamAPI_ISteamNetworkingSockets_ReceivedRelayAuthTicket( ISteamNetworkingSockets* self, const void * pvTicket, int cbTicket, SteamDatagramRelayAuthTicket * pOutParsedTicket ); +S_API int SteamAPI_ISteamNetworkingSockets_FindRelayAuthTicketForServer( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityGameServer, int nRemoteVirtualPort, SteamDatagramRelayAuthTicket * pOutParsedTicket ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectToHostedDedicatedServer( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityTarget, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API uint16 SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPort( ISteamNetworkingSockets* self ); +S_API SteamNetworkingPOPID SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPOPID( ISteamNetworkingSockets* self ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerAddress( ISteamNetworkingSockets* self, SteamDatagramHostedAddress * pRouting ); +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin( ISteamNetworkingSockets* self, SteamDatagramGameCoordinatorServerLogin * pLoginInfo, int * pcbSignedBlob, void * pBlob ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling( ISteamNetworkingSockets* self, ISteamNetworkingConnectionSignaling * pSignaling, const SteamNetworkingIdentity * pPeerIdentity, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API bool SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal( ISteamNetworkingSockets* self, const void * pMsg, int cbMsg, ISteamNetworkingSignalingRecvContext * pContext ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetCertificateRequest( ISteamNetworkingSockets* self, int * pcbBlob, void * pBlob, SteamNetworkingErrMsg & errMsg ); +S_API bool SteamAPI_ISteamNetworkingSockets_SetCertificate( ISteamNetworkingSockets* self, const void * pCertificate, int cbCertificate, SteamNetworkingErrMsg & errMsg ); +S_API void SteamAPI_ISteamNetworkingSockets_ResetIdentity( ISteamNetworkingSockets* self, const SteamNetworkingIdentity * pIdentity ); +S_API void SteamAPI_ISteamNetworkingSockets_RunCallbacks( ISteamNetworkingSockets* self ); +S_API bool SteamAPI_ISteamNetworkingSockets_BeginAsyncRequestFakeIP( ISteamNetworkingSockets* self, int nNumPorts ); +S_API void SteamAPI_ISteamNetworkingSockets_GetFakeIP( ISteamNetworkingSockets* self, int idxFirstPort, SteamNetworkingFakeIPResult_t * pInfo ); +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2PFakeIP( ISteamNetworkingSockets* self, int idxFakePort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetRemoteFakeIPForConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingIPAddr * pOutAddr ); +S_API ISteamNetworkingFakeUDPPort * SteamAPI_ISteamNetworkingSockets_CreateFakeUDPPort( ISteamNetworkingSockets* self, int idxFakeServerPort ); + +// ISteamNetworkingUtils + +// A versioned accessor is exported by the library +S_API ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI_v004(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworkingUtils_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI() { return SteamAPI_SteamNetworkingUtils_SteamAPI_v004(); } +S_API SteamNetworkingMessage_t * SteamAPI_ISteamNetworkingUtils_AllocateMessage( ISteamNetworkingUtils* self, int cbAllocateBuffer ); +S_API void SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess( ISteamNetworkingUtils* self ); +S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus( ISteamNetworkingUtils* self, SteamRelayNetworkStatus_t * pDetails ); +S_API float SteamAPI_ISteamNetworkingUtils_GetLocalPingLocation( ISteamNetworkingUtils* self, SteamNetworkPingLocation_t & result ); +S_API int SteamAPI_ISteamNetworkingUtils_EstimatePingTimeBetweenTwoLocations( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & location1, const SteamNetworkPingLocation_t & location2 ); +S_API int SteamAPI_ISteamNetworkingUtils_EstimatePingTimeFromLocalHost( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & remoteLocation ); +S_API void SteamAPI_ISteamNetworkingUtils_ConvertPingLocationToString( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & location, char * pszBuf, int cchBufSize ); +S_API bool SteamAPI_ISteamNetworkingUtils_ParsePingLocationString( ISteamNetworkingUtils* self, const char * pszString, SteamNetworkPingLocation_t & result ); +S_API bool SteamAPI_ISteamNetworkingUtils_CheckPingDataUpToDate( ISteamNetworkingUtils* self, float flMaxAgeSeconds ); +S_API int SteamAPI_ISteamNetworkingUtils_GetPingToDataCenter( ISteamNetworkingUtils* self, SteamNetworkingPOPID popID, SteamNetworkingPOPID * pViaRelayPoP ); +S_API int SteamAPI_ISteamNetworkingUtils_GetDirectPingToPOP( ISteamNetworkingUtils* self, SteamNetworkingPOPID popID ); +S_API int SteamAPI_ISteamNetworkingUtils_GetPOPCount( ISteamNetworkingUtils* self ); +S_API int SteamAPI_ISteamNetworkingUtils_GetPOPList( ISteamNetworkingUtils* self, SteamNetworkingPOPID * list, int nListSz ); +S_API SteamNetworkingMicroseconds SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp( ISteamNetworkingUtils* self ); +S_API void SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction( ISteamNetworkingUtils* self, ESteamNetworkingSocketsDebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ); +S_API bool SteamAPI_ISteamNetworkingUtils_IsFakeIPv4( ISteamNetworkingUtils* self, uint32 nIPv4 ); +S_API ESteamNetworkingFakeIPType SteamAPI_ISteamNetworkingUtils_GetIPv4FakeIPType( ISteamNetworkingUtils* self, uint32 nIPv4 ); +S_API EResult SteamAPI_ISteamNetworkingUtils_GetRealIdentityForFakeIP( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & fakeIP, SteamNetworkingIdentity * pOutRealIdentity ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, int32 val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, float val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, const char * val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValuePtr( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, void * val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueInt32( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, int32 val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueFloat( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, float val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, const char * val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged( ISteamNetworkingUtils* self, FnSteamNetConnectionStatusChanged fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged( ISteamNetworkingUtils* self, FnSteamNetAuthenticationStatusChanged fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged( ISteamNetworkingUtils* self, FnSteamRelayNetworkStatusChanged fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_FakeIPResult( ISteamNetworkingUtils* self, FnSteamNetworkingFakeIPResult fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionRequest fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionFailed fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void * pArg ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct( ISteamNetworkingUtils* self, const SteamNetworkingConfigValue_t & opt, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj ); +S_API ESteamNetworkingGetConfigValueResult SteamAPI_ISteamNetworkingUtils_GetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType * pOutDataType, void * pResult, size_t * cbResult ); +S_API const char * SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigDataType * pOutDataType, ESteamNetworkingConfigScope * pOutScope ); +S_API ESteamNetworkingConfigValue SteamAPI_ISteamNetworkingUtils_IterateGenericEditableConfigValues( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eCurrent, bool bEnumerateDevVars ); +S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & addr, char * buf, uint32 cbBuf, bool bWithPort ); +S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIPAddr * pAddr, const char * pszStr ); +S_API ESteamNetworkingFakeIPType SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & addr ); +S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIdentity & identity, char * buf, uint32 cbBuf ); +S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIdentity * pIdentity, const char * pszStr ); + +// ISteamGameServer + +// A versioned accessor is exported by the library +S_API ISteamGameServer *SteamAPI_SteamGameServer_v014(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServer(), but using this ensures that you are using a matching library. +inline ISteamGameServer *SteamAPI_SteamGameServer() { return SteamAPI_SteamGameServer_v014(); } +S_API void SteamAPI_ISteamGameServer_SetProduct( ISteamGameServer* self, const char * pszProduct ); +S_API void SteamAPI_ISteamGameServer_SetGameDescription( ISteamGameServer* self, const char * pszGameDescription ); +S_API void SteamAPI_ISteamGameServer_SetModDir( ISteamGameServer* self, const char * pszModDir ); +S_API void SteamAPI_ISteamGameServer_SetDedicatedServer( ISteamGameServer* self, bool bDedicated ); +S_API void SteamAPI_ISteamGameServer_LogOn( ISteamGameServer* self, const char * pszToken ); +S_API void SteamAPI_ISteamGameServer_LogOnAnonymous( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_LogOff( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_BLoggedOn( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_BSecure( ISteamGameServer* self ); +S_API uint64_steamid SteamAPI_ISteamGameServer_GetSteamID( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_WasRestartRequested( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount( ISteamGameServer* self, int cPlayersMax ); +S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount( ISteamGameServer* self, int cBotplayers ); +S_API void SteamAPI_ISteamGameServer_SetServerName( ISteamGameServer* self, const char * pszServerName ); +S_API void SteamAPI_ISteamGameServer_SetMapName( ISteamGameServer* self, const char * pszMapName ); +S_API void SteamAPI_ISteamGameServer_SetPasswordProtected( ISteamGameServer* self, bool bPasswordProtected ); +S_API void SteamAPI_ISteamGameServer_SetSpectatorPort( ISteamGameServer* self, uint16 unSpectatorPort ); +S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName( ISteamGameServer* self, const char * pszSpectatorServerName ); +S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_SetKeyValue( ISteamGameServer* self, const char * pKey, const char * pValue ); +S_API void SteamAPI_ISteamGameServer_SetGameTags( ISteamGameServer* self, const char * pchGameTags ); +S_API void SteamAPI_ISteamGameServer_SetGameData( ISteamGameServer* self, const char * pchGameData ); +S_API void SteamAPI_ISteamGameServer_SetRegion( ISteamGameServer* self, const char * pszRegion ); +S_API void SteamAPI_ISteamGameServer_SetAdvertiseServerActive( ISteamGameServer* self, bool bActive ); +S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket( ISteamGameServer* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession( ISteamGameServer* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); +S_API void SteamAPI_ISteamGameServer_EndAuthSession( ISteamGameServer* self, uint64_steamid steamID ); +S_API void SteamAPI_ISteamGameServer_CancelAuthTicket( ISteamGameServer* self, HAuthTicket hAuthTicket ); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp( ISteamGameServer* self, uint64_steamid steamID, AppId_t appID ); +S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus( ISteamGameServer* self, uint64_steamid steamIDUser, uint64_steamid steamIDGroup ); +S_API void SteamAPI_ISteamGameServer_GetGameplayStats( ISteamGameServer* self ); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation( ISteamGameServer* self ); +S_API SteamIPAddress_t SteamAPI_ISteamGameServer_GetPublicIP( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket( ISteamGameServer* self, const void * pData, int cbData, uint32 srcIP, uint16 srcPort ); +S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket( ISteamGameServer* self, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort ); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan( ISteamGameServer* self, uint64_steamid steamIDClan ); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility( ISteamGameServer* self, uint64_steamid steamIDNewPlayer ); +S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED( ISteamGameServer* self, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, CSteamID * pSteamIDUser ); +S_API uint64_steamid SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_SendUserDisconnect_DEPRECATED( ISteamGameServer* self, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamGameServer_BUpdateUserData( ISteamGameServer* self, uint64_steamid steamIDUser, const char * pchPlayerName, uint32 uScore ); + +// ISteamGameServerStats + +// A versioned accessor is exported by the library +S_API ISteamGameServerStats *SteamAPI_SteamGameServerStats_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerStats(), but using this ensures that you are using a matching library. +inline ISteamGameServerStats *SteamAPI_SteamGameServerStats() { return SteamAPI_SteamGameServerStats_v001(); } +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStatInt32( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, int32 * pData ); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStatFloat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float * pData ); +S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved ); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStatInt32( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, int32 nData ); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStatFloat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float fData ); +S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength ); +S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName ); +S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName ); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); + +// ISteamNetworkingFakeUDPPort +S_API void SteamAPI_ISteamNetworkingFakeUDPPort_DestroyFakeUDPPort( ISteamNetworkingFakeUDPPort* self ); +S_API EResult SteamAPI_ISteamNetworkingFakeUDPPort_SendMessageToFakeIP( ISteamNetworkingFakeUDPPort* self, const SteamNetworkingIPAddr & remoteAddress, const void * pData, uint32 cbData, int nSendFlags ); +S_API int SteamAPI_ISteamNetworkingFakeUDPPort_ReceiveMessages( ISteamNetworkingFakeUDPPort* self, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API void SteamAPI_ISteamNetworkingFakeUDPPort_ScheduleCleanup( ISteamNetworkingFakeUDPPort* self, const SteamNetworkingIPAddr & remoteAddress ); + +// SteamIPAddress_t +S_API bool SteamAPI_SteamIPAddress_t_IsSet( SteamIPAddress_t* self ); + +// MatchMakingKeyValuePair_t +S_API void SteamAPI_MatchMakingKeyValuePair_t_Construct( MatchMakingKeyValuePair_t* self ); + +// servernetadr_t +S_API void SteamAPI_servernetadr_t_Construct( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_Init( servernetadr_t* self, unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); +S_API uint16 SteamAPI_servernetadr_t_GetQueryPort( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_SetQueryPort( servernetadr_t* self, uint16 usPort ); +S_API uint16 SteamAPI_servernetadr_t_GetConnectionPort( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_SetConnectionPort( servernetadr_t* self, uint16 usPort ); +S_API uint32 SteamAPI_servernetadr_t_GetIP( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_SetIP( servernetadr_t* self, uint32 unIP ); +S_API const char * SteamAPI_servernetadr_t_GetConnectionAddressString( servernetadr_t* self ); +S_API const char * SteamAPI_servernetadr_t_GetQueryAddressString( servernetadr_t* self ); +S_API bool SteamAPI_servernetadr_t_IsLessThan( servernetadr_t* self, const servernetadr_t & netadr ); +S_API void SteamAPI_servernetadr_t_Assign( servernetadr_t* self, const servernetadr_t & that ); + +// gameserveritem_t +S_API void SteamAPI_gameserveritem_t_Construct( gameserveritem_t* self ); +S_API const char * SteamAPI_gameserveritem_t_GetName( gameserveritem_t* self ); +S_API void SteamAPI_gameserveritem_t_SetName( gameserveritem_t* self, const char * pName ); + +// SteamNetworkingIPAddr +S_API void SteamAPI_SteamNetworkingIPAddr_Clear( SteamNetworkingIPAddr* self ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros( SteamNetworkingIPAddr* self ); +S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv6( SteamNetworkingIPAddr* self, const uint8 * ipv6, uint16 nPort ); +S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv4( SteamNetworkingIPAddr* self, uint32 nIP, uint16 nPort ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsIPv4( SteamNetworkingIPAddr* self ); +S_API uint32 SteamAPI_SteamNetworkingIPAddr_GetIPv4( SteamNetworkingIPAddr* self ); +S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost( SteamNetworkingIPAddr* self, uint16 nPort ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsLocalHost( SteamNetworkingIPAddr* self ); +S_API void SteamAPI_SteamNetworkingIPAddr_ToString( SteamNetworkingIPAddr* self, char * buf, uint32 cbBuf, bool bWithPort ); +S_API bool SteamAPI_SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr* self, const char * pszStr ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsEqualTo( SteamNetworkingIPAddr* self, const SteamNetworkingIPAddr & x ); +S_API ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIPAddr_GetFakeIPType( SteamNetworkingIPAddr* self ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsFakeIP( SteamNetworkingIPAddr* self ); + +// SteamNetworkingIdentity +S_API void SteamAPI_SteamNetworkingIdentity_Clear( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsInvalid( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetSteamID( SteamNetworkingIdentity* self, uint64_steamid steamID ); +S_API uint64_steamid SteamAPI_SteamNetworkingIdentity_GetSteamID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetSteamID64( SteamNetworkingIdentity* self, uint64 steamID ); +S_API uint64 SteamAPI_SteamNetworkingIdentity_GetSteamID64( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_SetXboxPairwiseID( SteamNetworkingIdentity* self, const char * pszString ); +S_API const char * SteamAPI_SteamNetworkingIdentity_GetXboxPairwiseID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetPSNID( SteamNetworkingIdentity* self, uint64 id ); +S_API uint64 SteamAPI_SteamNetworkingIdentity_GetPSNID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetStadiaID( SteamNetworkingIdentity* self, uint64 id ); +S_API uint64 SteamAPI_SteamNetworkingIdentity_GetStadiaID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetIPAddr( SteamNetworkingIdentity* self, const SteamNetworkingIPAddr & addr ); +S_API const SteamNetworkingIPAddr * SteamAPI_SteamNetworkingIdentity_GetIPAddr( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetIPv4Addr( SteamNetworkingIdentity* self, uint32 nIPv4, uint16 nPort ); +S_API uint32 SteamAPI_SteamNetworkingIdentity_GetIPv4( SteamNetworkingIdentity* self ); +S_API ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIdentity_GetFakeIPType( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsFakeIP( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetLocalHost( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsLocalHost( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_SetGenericString( SteamNetworkingIdentity* self, const char * pszString ); +S_API const char * SteamAPI_SteamNetworkingIdentity_GetGenericString( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_SetGenericBytes( SteamNetworkingIdentity* self, const void * data, uint32 cbLen ); +S_API const uint8 * SteamAPI_SteamNetworkingIdentity_GetGenericBytes( SteamNetworkingIdentity* self, int & cbLen ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsEqualTo( SteamNetworkingIdentity* self, const SteamNetworkingIdentity & x ); +S_API void SteamAPI_SteamNetworkingIdentity_ToString( SteamNetworkingIdentity* self, char * buf, uint32 cbBuf ); +S_API bool SteamAPI_SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity* self, const char * pszStr ); + +// SteamNetworkingMessage_t +S_API void SteamAPI_SteamNetworkingMessage_t_Release( SteamNetworkingMessage_t* self ); + +// SteamNetworkingConfigValue_t +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetInt32( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, int32_t data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetInt64( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, int64_t data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetFloat( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, float data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetPtr( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, void * data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetString( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, const char * data ); + +// SteamDatagramHostedAddress +S_API void SteamAPI_SteamDatagramHostedAddress_Clear( SteamDatagramHostedAddress* self ); +S_API SteamNetworkingPOPID SteamAPI_SteamDatagramHostedAddress_GetPopID( SteamDatagramHostedAddress* self ); +S_API void SteamAPI_SteamDatagramHostedAddress_SetDevAddress( SteamDatagramHostedAddress* self, uint32 nIP, uint16 nPort, SteamNetworkingPOPID popid ); #endif // STEAMAPIFLAT_H - - diff --git a/Generator/steam_sdk/steam_api_internal.h b/Generator/steam_sdk/steam_api_internal.h index 6c98b25..fcebd7b 100644 --- a/Generator/steam_sdk/steam_api_internal.h +++ b/Generator/steam_sdk/steam_api_internal.h @@ -13,13 +13,7 @@ #include -// Internal functions used by the utility CCallback objects to receive callbacks -S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); -S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); -// Internal functions used by the utility CCallResult objects to receive async call results -S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); -S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); - +// Internal functions used to locate/create interfaces S_API HSteamPipe S_CALLTYPE SteamAPI_GetHSteamPipe(); S_API HSteamUser S_CALLTYPE SteamAPI_GetHSteamUser(); S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); @@ -29,6 +23,37 @@ S_API void *S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); S_API void *S_CALLTYPE SteamInternal_FindOrCreateUserInterface( HSteamUser hSteamUser, const char *pszVersion ); S_API void *S_CALLTYPE SteamInternal_FindOrCreateGameServerInterface( HSteamUser hSteamUser, const char *pszVersion ); +// Macro used to define a type-safe accessor that will always return the version +// of the interface of the *header file* you are compiling with! We also bounce +// through a safety function that checks for interfaces being created or destroyed. +// +// SteamInternal_ContextInit takes a base pointer for the equivalent of +// struct { void (*pFn)(void* pCtx); uintptr_t counter; void *ptr; } +// Do not change layout or add non-pointer aligned data! +#define STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, expr, kind, version ) \ + inline void S_CALLTYPE SteamInternal_Init_ ## name( type *p ) { *p = (type)( expr ); } \ + STEAM_CLANG_ATTR( "interface_accessor_kind:" kind ";interface_accessor_version:" version ";" ) \ + inline type name() { \ + static void* s_CallbackCounterAndContext[ 3 ] = { (void*)&SteamInternal_Init_ ## name, 0, 0 }; \ + return *(type*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); \ + } + +#define STEAM_DEFINE_USER_INTERFACE_ACCESSOR( type, name, version ) \ + STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateUserInterface( SteamAPI_GetHSteamUser(), version ), "user", version ) +#define STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( type, name, version ) \ + STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateGameServerInterface( SteamGameServer_GetHSteamUser(), version ), "gameserver", version ) + +// +// Internal stuff used for the standard, higher-level callback mechanism +// + +// Internal functions used by the utility CCallback objects to receive callbacks +S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); +// Internal functions used by the utility CCallResult objects to receive async call results +S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); + // disable this warning; this pattern need for steam callback registration #ifdef _MSVC_VER #pragma warning( push ) @@ -53,6 +78,8 @@ S_API void *S_CALLTYPE SteamInternal_FindOrCreateGameServerInterface( HSteamUser #define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ CCallback< thisclass, param, true > var; void func( param *pParam ) +#ifndef API_GEN + template< class T, class P > inline CCallResult::CCallResult() { @@ -154,10 +181,29 @@ inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) (m_pObj->*m_Func)((P *)pvParam); } -//----------------------------------------------------------------------------- -// Macros to define steam callback structures. Used internally for debugging -//----------------------------------------------------------------------------- +#endif // #ifndef API_GEN +// structure that contains client callback data +// see callbacks documentation for more details +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +/// Internal structure used in manual callback dispatch +struct CallbackMsg_t +{ + HSteamUser m_hSteamUser; // Specific user to whom this callback applies. + int m_iCallback; // Callback identifier. (Corresponds to the k_iCallback enum in the callback structure.) + uint8 *m_pubParam; // Points to the callback structure + int m_cubParam; // Size of the data pointed to by m_pubParam +}; +#pragma pack( pop ) + +// Macros to define steam callback structures. Used internally for debugging #ifdef STEAM_CALLBACK_INSPECTION_ENABLED #include "../../clientdll/steam_api_callback_inspection.h" #else @@ -196,6 +242,7 @@ class ISteamParentalSettings; class ISteamGameSearch; class ISteamInput; class ISteamParties; +class ISteamRemotePlay; //----------------------------------------------------------------------------- // Purpose: Base values for callback identifiers, each callback must @@ -208,90 +255,66 @@ enum { k_iSteamBillingCallbacks = 400 }; enum { k_iSteamMatchmakingCallbacks = 500 }; enum { k_iSteamContentServerCallbacks = 600 }; enum { k_iSteamUtilsCallbacks = 700 }; -enum { k_iClientFriendsCallbacks = 800 }; -enum { k_iClientUserCallbacks = 900 }; enum { k_iSteamAppsCallbacks = 1000 }; enum { k_iSteamUserStatsCallbacks = 1100 }; enum { k_iSteamNetworkingCallbacks = 1200 }; enum { k_iSteamNetworkingSocketsCallbacks = 1220 }; enum { k_iSteamNetworkingMessagesCallbacks = 1250 }; -enum { k_iClientRemoteStorageCallbacks = 1300 }; -enum { k_iClientDepotBuilderCallbacks = 1400 }; +enum { k_iSteamNetworkingUtilsCallbacks = 1280 }; +enum { k_iSteamRemoteStorageCallbacks = 1300 }; enum { k_iSteamGameServerItemsCallbacks = 1500 }; -enum { k_iClientUtilsCallbacks = 1600 }; enum { k_iSteamGameCoordinatorCallbacks = 1700 }; enum { k_iSteamGameServerStatsCallbacks = 1800 }; enum { k_iSteam2AsyncCallbacks = 1900 }; enum { k_iSteamGameStatsCallbacks = 2000 }; -enum { k_iClientHTTPCallbacks = 2100 }; -enum { k_iClientScreenshotsCallbacks = 2200 }; +enum { k_iSteamHTTPCallbacks = 2100 }; enum { k_iSteamScreenshotsCallbacks = 2300 }; -enum { k_iClientAudioCallbacks = 2400 }; -enum { k_iClientUnifiedMessagesCallbacks = 2500 }; +// NOTE: 2500-2599 are reserved enum { k_iSteamStreamLauncherCallbacks = 2600 }; -enum { k_iClientControllerCallbacks = 2700 }; enum { k_iSteamControllerCallbacks = 2800 }; -enum { k_iClientParentalSettingsCallbacks = 2900 }; -enum { k_iClientDeviceAuthCallbacks = 3000 }; -enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; -enum { k_iClientMusicCallbacks = 3200 }; -enum { k_iClientRemoteClientManagerCallbacks = 3300 }; -enum { k_iClientUGCCallbacks = 3400 }; +enum { k_iSteamUGCCallbacks = 3400 }; enum { k_iSteamStreamClientCallbacks = 3500 }; -enum { k_IClientProductBuilderCallbacks = 3600 }; -enum { k_iClientShortcutsCallbacks = 3700 }; -enum { k_iClientRemoteControlManagerCallbacks = 3800 }; enum { k_iSteamAppListCallbacks = 3900 }; enum { k_iSteamMusicCallbacks = 4000 }; enum { k_iSteamMusicRemoteCallbacks = 4100 }; -enum { k_iClientVRCallbacks = 4200 }; -enum { k_iClientGameNotificationCallbacks = 4300 }; enum { k_iSteamGameNotificationCallbacks = 4400 }; enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; -enum { k_iClientVideoCallbacks = 4600 }; -enum { k_iClientInventoryCallbacks = 4700 }; -enum { k_iClientBluetoothManagerCallbacks = 4800 }; -enum { k_iClientSharedConnectionCallbacks = 4900 }; +enum { k_iSteamVideoCallbacks = 4600 }; +enum { k_iSteamInventoryCallbacks = 4700 }; enum { k_ISteamParentalSettingsCallbacks = 5000 }; -enum { k_iClientShaderCallbacks = 5100 }; enum { k_iSteamGameSearchCallbacks = 5200 }; enum { k_iSteamPartiesCallbacks = 5300 }; -enum { k_iClientPartiesCallbacks = 5400 }; - -// Macro used to define a type-safe accessor that will always return the version -// of the interface of the *header file* you are compiling with! We also bounce -// through a safety function that checks for interfaces being created or destroyed. -#ifndef STEAM_API_EXPORTS - // SteamInternal_ContextInit takes a base pointer for the equivalent of - // struct { void (*pFn)(void* pCtx); uintp counter; CSteamAPIContext ctx; } - // Do not change layout of 2 + sizeof... or add non-pointer aligned data! - // NOTE: declaring "static CSteamAPIConext" creates a large function - // which queries the initialization status of the object. We know that - // it is pointer-aligned and fully memset with zeros, so just alias a - // static buffer of the appropriate size and call it a CSteamAPIContext. - #define STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, expr ) \ - inline void S_CALLTYPE SteamInternal_Init_ ## name( type *p ) { *p = (type)( expr ); } \ - inline type name() { \ - static void* s_CallbackCounterAndContext[ 3 ] = { (void*)&SteamInternal_Init_ ## name, 0, 0 }; \ - return *(type*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); \ - } - -#else - // Stub when we're compiling steam_api.dll itself. These are inline - // functions defined when the header is included. not functions exported - // by the lib! - #define STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, expr ) -#endif - -#define STEAM_DEFINE_USER_INTERFACE_ACCESSOR( type, name, version ) \ - STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateUserInterface( SteamAPI_GetHSteamUser(), version ) ) -#define STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( type, name, version ) \ - STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateGameServerInterface( SteamGameServer_GetHSteamUser(), version ) ) +enum { k_iSteamSTARCallbacks = 5500 }; +enum { k_iSteamRemotePlayCallbacks = 5700 }; +enum { k_iSteamChatCallbacks = 5900 }; +// NOTE: Internal "IClientXxx" callback IDs go in clientenums.h #ifdef _MSVC_VER #pragma warning( pop ) #endif +// Macros used to annotate various Steamworks interfaces to generate the +// flat API +#ifdef API_GEN +# define STEAM_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define STEAM_CLANG_ATTR(ATTR) +#endif + +#define STEAM_OUT_STRUCT() STEAM_CLANG_ATTR( "out_struct: ;" ) +#define STEAM_OUT_STRING() STEAM_CLANG_ATTR( "out_string: ;" ) +#define STEAM_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) STEAM_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define STEAM_OUT_ARRAY_COUNT(COUNTER, DESC) STEAM_CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) +#define STEAM_ARRAY_COUNT(COUNTER) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define STEAM_ARRAY_COUNT_D(COUNTER, DESC) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define STEAM_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define STEAM_OUT_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define STEAM_OUT_STRING_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) +#define STEAM_DESC(DESC) STEAM_CLANG_ATTR("desc:" #DESC ";") +#define STEAM_CALL_RESULT(RESULT_TYPE) STEAM_CLANG_ATTR("callresult:" #RESULT_TYPE ";") +#define STEAM_CALL_BACK(RESULT_TYPE) STEAM_CLANG_ATTR("callback:" #RESULT_TYPE ";") +#define STEAM_FLAT_NAME(NAME) STEAM_CLANG_ATTR("flat_name:" #NAME ";") + // CSteamAPIContext encapsulates the Steamworks API global accessors into // a single object. // @@ -368,7 +391,6 @@ public: ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } ISteamInventory *SteamInventory() const { return m_pSteamInventory; } ISteamUGC *SteamUGC() const { return m_pSteamUGC; } - ISteamApps *SteamApps() const { return m_pSteamApps; } private: ISteamClient *m_pSteamClient; @@ -379,7 +401,6 @@ private: ISteamHTTP *m_pSteamHTTP; ISteamInventory *m_pSteamInventory; ISteamUGC *m_pSteamUGC; - ISteamApps *m_pSteamApps; }; diff --git a/Generator/steam_sdk/steam_api_interop.cs b/Generator/steam_sdk/steam_api_interop.cs deleted file mode 100644 index 52bff12..0000000 --- a/Generator/steam_sdk/steam_api_interop.cs +++ /dev/null @@ -1,12741 +0,0 @@ -//====== Copyright 1996-2016, Valve Corporation, All rights reserved. ======= -// -// Purpose: This file contains C#/managed code bindings for the SteamAPI interfaces -// This file is auto-generated, do not edit it. -// -//============================================================================= - -using System; -using System.Runtime.InteropServices; -using Valve.Steamworks; -using Valve.Interop; - -namespace Valve.Interop -{ - -public class NativeEntrypoints -{ - - -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe")] -internal static extern uint SteamAPI_ISteamClient_CreateSteamPipe(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BReleaseSteamPipe")] -internal static extern bool SteamAPI_ISteamClient_BReleaseSteamPipe(IntPtr instancePtr, uint hSteamPipe); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ConnectToGlobalUser")] -internal static extern uint SteamAPI_ISteamClient_ConnectToGlobalUser(IntPtr instancePtr, uint hSteamPipe); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateLocalUser")] -internal static extern uint SteamAPI_ISteamClient_CreateLocalUser(IntPtr instancePtr, ref uint phSteamPipe, uint eAccountType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ReleaseUser")] -internal static extern void SteamAPI_ISteamClient_ReleaseUser(IntPtr instancePtr, uint hSteamPipe, uint hUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUser")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUser(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServer")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServer(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetLocalIPBinding")] -internal static extern void SteamAPI_ISteamClient_SetLocalIPBinding(IntPtr instancePtr, uint unIP, char usPort); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamFriends")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamFriends(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUtils")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUtils(IntPtr instancePtr, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmaking")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmaking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmakingServers")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmakingServers(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGenericInterface")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGenericInterface(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUserStats")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUserStats(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServerStats")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServerStats(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamApps")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamApps(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamNetworking")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamNetworking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamRemoteStorage")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamRemoteStorage(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamScreenshots")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamScreenshots(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameSearch")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameSearch(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetIPCCallCount")] -internal static extern uint SteamAPI_ISteamClient_GetIPCCallCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetWarningMessageHook")] -internal static extern void SteamAPI_ISteamClient_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed")] -internal static extern bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTTP")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTTP(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamController")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamController(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUGC")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUGC(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamAppList")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamAppList(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusic")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusic(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusicRemote")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusicRemote(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTMLSurface")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTMLSurface(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamInventory")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamInventory(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamVideo")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamVideo(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamParentalSettings")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamParentalSettings(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamInput")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamInput(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamParties")] -internal static extern IntPtr SteamAPI_ISteamClient_GetISteamParties(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetHSteamUser")] -internal static extern uint SteamAPI_ISteamUser_GetHSteamUser(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BLoggedOn")] -internal static extern bool SteamAPI_ISteamUser_BLoggedOn(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetSteamID")] -internal static extern ulong SteamAPI_ISteamUser_GetSteamID(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection")] -internal static extern int SteamAPI_ISteamUser_InitiateGameConnection(IntPtr instancePtr, IntPtr pAuthBlob, int cbMaxAuthBlob, ulong steamIDGameServer, uint unIPServer, char usPortServer, bool bSecure); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection")] -internal static extern void SteamAPI_ISteamUser_TerminateGameConnection(IntPtr instancePtr, uint unIPServer, char usPortServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TrackAppUsageEvent")] -internal static extern void SteamAPI_ISteamUser_TrackAppUsageEvent(IntPtr instancePtr, ulong gameID, int eAppUsageEvent, string pchExtraInfo); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetUserDataFolder")] -internal static extern bool SteamAPI_ISteamUser_GetUserDataFolder(IntPtr instancePtr, string pchBuffer, int cubBuffer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StartVoiceRecording")] -internal static extern void SteamAPI_ISteamUser_StartVoiceRecording(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StopVoiceRecording")] -internal static extern void SteamAPI_ISteamUser_StopVoiceRecording(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAvailableVoice")] -internal static extern uint SteamAPI_ISteamUser_GetAvailableVoice(IntPtr instancePtr, ref uint pcbCompressed, ref uint pcbUncompressed_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoice")] -internal static extern uint SteamAPI_ISteamUser_GetVoice(IntPtr instancePtr, bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, bool bWantUncompressed_Deprecated, IntPtr pUncompressedDestBuffer_Deprecated, uint cbUncompressedDestBufferSize_Deprecated, ref uint nUncompressBytesWritten_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_DecompressVoice")] -internal static extern uint SteamAPI_ISteamUser_DecompressVoice(IntPtr instancePtr, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate")] -internal static extern uint SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAuthSessionTicket")] -internal static extern uint SteamAPI_ISteamUser_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BeginAuthSession")] -internal static extern uint SteamAPI_ISteamUser_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_EndAuthSession")] -internal static extern void SteamAPI_ISteamUser_EndAuthSession(IntPtr instancePtr, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_CancelAuthTicket")] -internal static extern void SteamAPI_ISteamUser_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_UserHasLicenseForApp")] -internal static extern uint SteamAPI_ISteamUser_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsBehindNAT")] -internal static extern bool SteamAPI_ISteamUser_BIsBehindNAT(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_AdvertiseGame")] -internal static extern void SteamAPI_ISteamUser_AdvertiseGame(IntPtr instancePtr, ulong steamIDGameServer, uint unIPServer, char usPortServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestEncryptedAppTicket")] -internal static extern ulong SteamAPI_ISteamUser_RequestEncryptedAppTicket(IntPtr instancePtr, IntPtr pDataToInclude, int cbDataToInclude); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetEncryptedAppTicket")] -internal static extern bool SteamAPI_ISteamUser_GetEncryptedAppTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetGameBadgeLevel")] -internal static extern int SteamAPI_ISteamUser_GetGameBadgeLevel(IntPtr instancePtr, int nSeries, bool bFoil); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetPlayerSteamLevel")] -internal static extern int SteamAPI_ISteamUser_GetPlayerSteamLevel(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestStoreAuthURL")] -internal static extern ulong SteamAPI_ISteamUser_RequestStoreAuthURL(IntPtr instancePtr, string pchRedirectURL); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneVerified")] -internal static extern bool SteamAPI_ISteamUser_BIsPhoneVerified(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsTwoFactorEnabled")] -internal static extern bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneIdentifying")] -internal static extern bool SteamAPI_ISteamUser_BIsPhoneIdentifying(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneRequiringVerification")] -internal static extern bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetMarketEligibility")] -internal static extern ulong SteamAPI_ISteamUser_GetMarketEligibility(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaName")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetPersonaName(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPersonaName")] -internal static extern ulong SteamAPI_ISteamFriends_SetPersonaName(IntPtr instancePtr, string pchPersonaName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaState")] -internal static extern uint SteamAPI_ISteamFriends_GetPersonaState(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCount")] -internal static extern int SteamAPI_ISteamFriends_GetFriendCount(IntPtr instancePtr, int iFriendFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendByIndex")] -internal static extern ulong SteamAPI_ISteamFriends_GetFriendByIndex(IntPtr instancePtr, int iFriend, int iFriendFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRelationship")] -internal static extern uint SteamAPI_ISteamFriends_GetFriendRelationship(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaState")] -internal static extern uint SteamAPI_ISteamFriends_GetFriendPersonaState(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaName")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaName(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendGamePlayed")] -internal static extern bool SteamAPI_ISteamFriends_GetFriendGamePlayed(IntPtr instancePtr, ulong steamIDFriend, ref FriendGameInfo_t pFriendGameInfo); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(IntPtr instancePtr, ulong steamIDFriend, int iPersonaName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendSteamLevel")] -internal static extern int SteamAPI_ISteamFriends_GetFriendSteamLevel(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPlayerNickname")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetPlayerNickname(IntPtr instancePtr, ulong steamIDPlayer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupCount")] -internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex")] -internal static extern char SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(IntPtr instancePtr, int iFG); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupName")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendsGroupName(IntPtr instancePtr, char friendsGroupID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount")] -internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(IntPtr instancePtr, char friendsGroupID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersList")] -internal static extern void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(IntPtr instancePtr, char friendsGroupID, [In, Out] CSteamID[] pOutSteamIDMembers, int nMembersCount); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_HasFriend")] -internal static extern bool SteamAPI_ISteamFriends_HasFriend(IntPtr instancePtr, ulong steamIDFriend, int iFriendFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanCount")] -internal static extern int SteamAPI_ISteamFriends_GetClanCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanByIndex")] -internal static extern ulong SteamAPI_ISteamFriends_GetClanByIndex(IntPtr instancePtr, int iClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanName")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetClanName(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanTag")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetClanTag(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanActivityCounts")] -internal static extern bool SteamAPI_ISteamFriends_GetClanActivityCounts(IntPtr instancePtr, ulong steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_DownloadClanActivityCounts")] -internal static extern ulong SteamAPI_ISteamFriends_DownloadClanActivityCounts(IntPtr instancePtr, [In, Out] CSteamID[] psteamIDClans, int cClansToRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCountFromSource")] -internal static extern int SteamAPI_ISteamFriends_GetFriendCountFromSource(IntPtr instancePtr, ulong steamIDSource); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex")] -internal static extern ulong SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(IntPtr instancePtr, ulong steamIDSource, int iFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsUserInSource")] -internal static extern bool SteamAPI_ISteamFriends_IsUserInSource(IntPtr instancePtr, ulong steamIDUser, ulong steamIDSource); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking")] -internal static extern void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(IntPtr instancePtr, ulong steamIDUser, bool bSpeaking); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlay")] -internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlay(IntPtr instancePtr, string pchDialog); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToUser")] -internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(IntPtr instancePtr, string pchDialog, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage")] -internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(IntPtr instancePtr, string pchURL, uint eMode); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToStore")] -internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(IntPtr instancePtr, uint nAppID, char eFlag); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPlayedWith")] -internal static extern void SteamAPI_ISteamFriends_SetPlayedWith(IntPtr instancePtr, ulong steamIDUserPlayedWith); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog")] -internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetSmallFriendAvatar")] -internal static extern int SteamAPI_ISteamFriends_GetSmallFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetMediumFriendAvatar")] -internal static extern int SteamAPI_ISteamFriends_GetMediumFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetLargeFriendAvatar")] -internal static extern int SteamAPI_ISteamFriends_GetLargeFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestUserInformation")] -internal static extern bool SteamAPI_ISteamFriends_RequestUserInformation(IntPtr instancePtr, ulong steamIDUser, bool bRequireNameOnly); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestClanOfficerList")] -internal static extern ulong SteamAPI_ISteamFriends_RequestClanOfficerList(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOwner")] -internal static extern ulong SteamAPI_ISteamFriends_GetClanOwner(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerCount")] -internal static extern int SteamAPI_ISteamFriends_GetClanOfficerCount(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerByIndex")] -internal static extern ulong SteamAPI_ISteamFriends_GetClanOfficerByIndex(IntPtr instancePtr, ulong steamIDClan, int iOfficer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetUserRestrictions")] -internal static extern uint SteamAPI_ISteamFriends_GetUserRestrictions(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetRichPresence")] -internal static extern bool SteamAPI_ISteamFriends_SetRichPresence(IntPtr instancePtr, string pchKey, string pchValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ClearRichPresence")] -internal static extern void SteamAPI_ISteamFriends_ClearRichPresence(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresence")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend, string pchKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount")] -internal static extern int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex")] -internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(IntPtr instancePtr, ulong steamIDFriend, int iKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestFriendRichPresence")] -internal static extern void SteamAPI_ISteamFriends_RequestFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_InviteUserToGame")] -internal static extern bool SteamAPI_ISteamFriends_InviteUserToGame(IntPtr instancePtr, ulong steamIDFriend, string pchConnectString); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriendCount")] -internal static extern int SteamAPI_ISteamFriends_GetCoplayFriendCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriend")] -internal static extern ulong SteamAPI_ISteamFriends_GetCoplayFriend(IntPtr instancePtr, int iCoplayFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayTime")] -internal static extern int SteamAPI_ISteamFriends_GetFriendCoplayTime(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayGame")] -internal static extern uint SteamAPI_ISteamFriends_GetFriendCoplayGame(IntPtr instancePtr, ulong steamIDFriend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_JoinClanChatRoom")] -internal static extern ulong SteamAPI_ISteamFriends_JoinClanChatRoom(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_LeaveClanChatRoom")] -internal static extern bool SteamAPI_ISteamFriends_LeaveClanChatRoom(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMemberCount")] -internal static extern int SteamAPI_ISteamFriends_GetClanChatMemberCount(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetChatMemberByIndex")] -internal static extern ulong SteamAPI_ISteamFriends_GetChatMemberByIndex(IntPtr instancePtr, ulong steamIDClan, int iUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SendClanChatMessage")] -internal static extern bool SteamAPI_ISteamFriends_SendClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, string pchText); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMessage")] -internal static extern int SteamAPI_ISteamFriends_GetClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref uint peChatEntryType, ref CSteamID psteamidChatter); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatAdmin")] -internal static extern bool SteamAPI_ISteamFriends_IsClanChatAdmin(IntPtr instancePtr, ulong steamIDClanChat, ulong steamIDUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam")] -internal static extern bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(IntPtr instancePtr, ulong steamIDClanChat); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam")] -internal static extern bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam")] -internal static extern bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetListenForFriendsMessages")] -internal static extern bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(IntPtr instancePtr, bool bInterceptEnabled); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ReplyToFriendMessage")] -internal static extern bool SteamAPI_ISteamFriends_ReplyToFriendMessage(IntPtr instancePtr, ulong steamIDFriend, string pchMsgToSend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendMessage")] -internal static extern int SteamAPI_ISteamFriends_GetFriendMessage(IntPtr instancePtr, ulong steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref uint peChatEntryType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFollowerCount")] -internal static extern ulong SteamAPI_ISteamFriends_GetFollowerCount(IntPtr instancePtr, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsFollowing")] -internal static extern ulong SteamAPI_ISteamFriends_IsFollowing(IntPtr instancePtr, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_EnumerateFollowingList")] -internal static extern ulong SteamAPI_ISteamFriends_EnumerateFollowingList(IntPtr instancePtr, uint unStartIndex); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanPublic")] -internal static extern bool SteamAPI_ISteamFriends_IsClanPublic(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanOfficialGameGroup")] -internal static extern bool SteamAPI_ISteamFriends_IsClanOfficialGameGroup(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages")] -internal static extern int SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceAppActive")] -internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceAppActive(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive")] -internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetConnectedUniverse")] -internal static extern int SteamAPI_ISteamUtils_GetConnectedUniverse(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetServerRealTime")] -internal static extern uint SteamAPI_ISteamUtils_GetServerRealTime(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCountry")] -internal static extern IntPtr SteamAPI_ISteamUtils_GetIPCountry(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageSize")] -internal static extern bool SteamAPI_ISteamUtils_GetImageSize(IntPtr instancePtr, int iImage, ref uint pnWidth, ref uint pnHeight); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageRGBA")] -internal static extern bool SteamAPI_ISteamUtils_GetImageRGBA(IntPtr instancePtr, int iImage, IntPtr pubDest, int nDestBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCSERIPPort")] -internal static extern bool SteamAPI_ISteamUtils_GetCSERIPPort(IntPtr instancePtr, ref uint unIP, ref char usPort); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCurrentBatteryPower")] -internal static extern byte SteamAPI_ISteamUtils_GetCurrentBatteryPower(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAppID")] -internal static extern uint SteamAPI_ISteamUtils_GetAppID(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationPosition")] -internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(IntPtr instancePtr, uint eNotificationPosition); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsAPICallCompleted")] -internal static extern bool SteamAPI_ISteamUtils_IsAPICallCompleted(IntPtr instancePtr, ulong hSteamAPICall, ref bool pbFailed); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallFailureReason")] -internal static extern int SteamAPI_ISteamUtils_GetAPICallFailureReason(IntPtr instancePtr, ulong hSteamAPICall); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallResult")] -internal static extern bool SteamAPI_ISteamUtils_GetAPICallResult(IntPtr instancePtr, ulong hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, ref bool pbFailed); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCCallCount")] -internal static extern uint SteamAPI_ISteamUtils_GetIPCCallCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetWarningMessageHook")] -internal static extern void SteamAPI_ISteamUtils_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsOverlayEnabled")] -internal static extern bool SteamAPI_ISteamUtils_IsOverlayEnabled(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_BOverlayNeedsPresent")] -internal static extern bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_CheckFileSignature")] -internal static extern ulong SteamAPI_ISteamUtils_CheckFileSignature(IntPtr instancePtr, string szFileName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_ShowGamepadTextInput")] -internal static extern bool SteamAPI_ISteamUtils_ShowGamepadTextInput(IntPtr instancePtr, int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength")] -internal static extern uint SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput")] -internal static extern bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(IntPtr instancePtr, string pchText, uint cchText); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSteamUILanguage")] -internal static extern IntPtr SteamAPI_ISteamUtils_GetSteamUILanguage(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningInVR")] -internal static extern bool SteamAPI_ISteamUtils_IsSteamRunningInVR(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationInset")] -internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationInset(IntPtr instancePtr, int nHorizontalInset, int nVerticalInset); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamInBigPictureMode")] -internal static extern bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard")] -internal static extern void SteamAPI_ISteamUtils_StartVRDashboard(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled")] -internal static extern bool SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled")] -internal static extern void SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled(IntPtr instancePtr, bool bEnabled); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount")] -internal static extern int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame")] -internal static extern bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(IntPtr instancePtr, int iGame, ref uint pnAppID, ref uint pnIP, ref char pnConnPort, ref char pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddFavoriteGame")] -internal static extern int SteamAPI_ISteamMatchmaking_AddFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame")] -internal static extern bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyList")] -internal static extern ulong SteamAPI_ISteamMatchmaking_RequestLobbyList(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter")] -internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(IntPtr instancePtr, string pchKeyToMatch, string pchValueToMatch, uint eComparisonType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter")] -internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToMatch, uint eComparisonType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter")] -internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToBeCloseTo); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable")] -internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(IntPtr instancePtr, int nSlotsAvailable); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter")] -internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(IntPtr instancePtr, uint eLobbyDistanceFilter); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter")] -internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(IntPtr instancePtr, int cMaxResults); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter")] -internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyByIndex")] -internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyByIndex(IntPtr instancePtr, int iLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_CreateLobby")] -internal static extern ulong SteamAPI_ISteamMatchmaking_CreateLobby(IntPtr instancePtr, uint eLobbyType, int cMaxMembers); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_JoinLobby")] -internal static extern ulong SteamAPI_ISteamMatchmaking_JoinLobby(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_LeaveLobby")] -internal static extern void SteamAPI_ISteamMatchmaking_LeaveLobby(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_InviteUserToLobby")] -internal static extern bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDInvitee); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers")] -internal static extern int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex")] -internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(IntPtr instancePtr, ulong steamIDLobby, int iMember); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyData")] -internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyData")] -internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataCount")] -internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex")] -internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(IntPtr instancePtr, ulong steamIDLobby, int iLobbyData, string pchKey, int cchKeyBufferSize, string pchValue, int cchValueBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_DeleteLobbyData")] -internal static extern bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberData")] -internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDUser, string pchKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberData")] -internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg")] -internal static extern bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(IntPtr instancePtr, ulong steamIDLobby, IntPtr pvMsgBody, int cubMsgBody); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry")] -internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(IntPtr instancePtr, ulong steamIDLobby, int iChatID, ref CSteamID pSteamIDUser, IntPtr pvData, int cubData, ref uint peChatEntryType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyData")] -internal static extern bool SteamAPI_ISteamMatchmaking_RequestLobbyData(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyGameServer")] -internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, uint unGameServerIP, char unGameServerPort, ulong steamIDGameServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyGameServer")] -internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, ref uint punGameServerIP, ref char punGameServerPort, ref CSteamID psteamIDGameServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit")] -internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby, int cMaxMembers); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit")] -internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyType")] -internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyType(IntPtr instancePtr, ulong steamIDLobby, uint eLobbyType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyJoinable")] -internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(IntPtr instancePtr, ulong steamIDLobby, bool bLobbyJoinable); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyOwner")] -internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyOwner")] -internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDNewOwner); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLinkedLobby")] -internal static extern bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDLobbyDependent); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded")] -internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(IntPtr instancePtr, uint hRequest, int iServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond")] -internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(IntPtr instancePtr, uint hRequest, int iServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete")] -internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(IntPtr instancePtr, uint hRequest, uint response); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded")] -internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(IntPtr instancePtr, IntPtr server); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond")] -internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList")] -internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(IntPtr instancePtr, string pchName, int nScore, float flTimePlayed); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond")] -internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete")] -internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded")] -internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(IntPtr instancePtr, string pchRule, string pchValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond")] -internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete")] -internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestLANServerList")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestLANServerList(IntPtr instancePtr, uint iApp, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ReleaseRequest")] -internal static extern void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(IntPtr instancePtr, uint hServerListRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerDetails")] -internal static extern IntPtr SteamAPI_ISteamMatchmakingServers_GetServerDetails(IntPtr instancePtr, uint hRequest, int iServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelQuery")] -internal static extern void SteamAPI_ISteamMatchmakingServers_CancelQuery(IntPtr instancePtr, uint hRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshQuery")] -internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshQuery(IntPtr instancePtr, uint hRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_IsRefreshing")] -internal static extern bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(IntPtr instancePtr, uint hRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerCount")] -internal static extern int SteamAPI_ISteamMatchmakingServers_GetServerCount(IntPtr instancePtr, uint hRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshServer")] -internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshServer(IntPtr instancePtr, uint hRequest, int iServer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PingServer")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_PingServer(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PlayerDetails")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_PlayerDetails(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ServerRules")] -internal static extern uint SteamAPI_ISteamMatchmakingServers_ServerRules(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelServerQuery")] -internal static extern void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(IntPtr instancePtr, uint hServerQuery); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_AddGameSearchParams")] -internal static extern uint SteamAPI_ISteamGameSearch_AddGameSearchParams(IntPtr instancePtr, string pchKeyToFind, string pchValuesToFind); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_SearchForGameWithLobby")] -internal static extern uint SteamAPI_ISteamGameSearch_SearchForGameWithLobby(IntPtr instancePtr, ulong steamIDLobby, int nPlayerMin, int nPlayerMax); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_SearchForGameSolo")] -internal static extern uint SteamAPI_ISteamGameSearch_SearchForGameSolo(IntPtr instancePtr, int nPlayerMin, int nPlayerMax); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_AcceptGame")] -internal static extern uint SteamAPI_ISteamGameSearch_AcceptGame(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_DeclineGame")] -internal static extern uint SteamAPI_ISteamGameSearch_DeclineGame(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_RetrieveConnectionDetails")] -internal static extern uint SteamAPI_ISteamGameSearch_RetrieveConnectionDetails(IntPtr instancePtr, ulong steamIDHost, string pchConnectionDetails, int cubConnectionDetails); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_EndGameSearch")] -internal static extern uint SteamAPI_ISteamGameSearch_EndGameSearch(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_SetGameHostParams")] -internal static extern uint SteamAPI_ISteamGameSearch_SetGameHostParams(IntPtr instancePtr, string pchKey, string pchValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_SetConnectionDetails")] -internal static extern uint SteamAPI_ISteamGameSearch_SetConnectionDetails(IntPtr instancePtr, string pchConnectionDetails, int cubConnectionDetails); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_RequestPlayersForGame")] -internal static extern uint SteamAPI_ISteamGameSearch_RequestPlayersForGame(IntPtr instancePtr, int nPlayerMin, int nPlayerMax, int nMaxTeamSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_HostConfirmGameStart")] -internal static extern uint SteamAPI_ISteamGameSearch_HostConfirmGameStart(IntPtr instancePtr, ulong ullUniqueGameID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame")] -internal static extern uint SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_SubmitPlayerResult")] -internal static extern uint SteamAPI_ISteamGameSearch_SubmitPlayerResult(IntPtr instancePtr, ulong ullUniqueGameID, ulong steamIDPlayer, uint EPlayerResult); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameSearch_EndGame")] -internal static extern uint SteamAPI_ISteamGameSearch_EndGame(IntPtr instancePtr, ulong ullUniqueGameID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_GetNumActiveBeacons")] -internal static extern uint SteamAPI_ISteamParties_GetNumActiveBeacons(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_GetBeaconByIndex")] -internal static extern ulong SteamAPI_ISteamParties_GetBeaconByIndex(IntPtr instancePtr, uint unIndex); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_GetBeaconDetails")] -internal static extern bool SteamAPI_ISteamParties_GetBeaconDetails(IntPtr instancePtr, ulong ulBeaconID, ref CSteamID pSteamIDBeaconOwner, ref SteamPartyBeaconLocation_t pLocation, System.Text.StringBuilder pchMetadata, int cchMetadata); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_JoinParty")] -internal static extern ulong SteamAPI_ISteamParties_JoinParty(IntPtr instancePtr, ulong ulBeaconID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_GetNumAvailableBeaconLocations")] -internal static extern bool SteamAPI_ISteamParties_GetNumAvailableBeaconLocations(IntPtr instancePtr, ref uint puNumLocations); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_GetAvailableBeaconLocations")] -internal static extern bool SteamAPI_ISteamParties_GetAvailableBeaconLocations(IntPtr instancePtr, ref SteamPartyBeaconLocation_t pLocationList, uint uMaxNumLocations); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_CreateBeacon")] -internal static extern ulong SteamAPI_ISteamParties_CreateBeacon(IntPtr instancePtr, uint unOpenSlots, ref SteamPartyBeaconLocation_t pBeaconLocation, string pchConnectString, string pchMetadata); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_OnReservationCompleted")] -internal static extern void SteamAPI_ISteamParties_OnReservationCompleted(IntPtr instancePtr, ulong ulBeacon, ulong steamIDUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_CancelReservation")] -internal static extern void SteamAPI_ISteamParties_CancelReservation(IntPtr instancePtr, ulong ulBeacon, ulong steamIDUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_ChangeNumOpenSlots")] -internal static extern ulong SteamAPI_ISteamParties_ChangeNumOpenSlots(IntPtr instancePtr, ulong ulBeacon, uint unOpenSlots); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_DestroyBeacon")] -internal static extern bool SteamAPI_ISteamParties_DestroyBeacon(IntPtr instancePtr, ulong ulBeacon); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParties_GetBeaconLocationData")] -internal static extern bool SteamAPI_ISteamParties_GetBeaconLocationData(IntPtr instancePtr, SteamPartyBeaconLocation_t BeaconLocation, uint eData, System.Text.StringBuilder pchDataStringOut, int cchDataStringOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWrite")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileWrite(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileRead")] -internal static extern int SteamAPI_ISteamRemoteStorage_FileRead(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubDataToRead); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteAsync")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteAsync(IntPtr instancePtr, string pchFile, IntPtr pvData, uint cubData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsync")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_FileReadAsync(IntPtr instancePtr, string pchFile, uint nOffset, uint cubToRead); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(IntPtr instancePtr, ulong hReadCall, IntPtr pvBuffer, uint cubToRead); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileForget")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileForget(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileDelete")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileDelete(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileShare")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_FileShare(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms")] -internal static extern bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(IntPtr instancePtr, string pchFile, uint eRemoteStoragePlatform); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(IntPtr instancePtr, ulong writeHandle, IntPtr pvData, int cubData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(IntPtr instancePtr, ulong writeHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(IntPtr instancePtr, ulong writeHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileExists")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FileExists(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FilePersisted")] -internal static extern bool SteamAPI_ISteamRemoteStorage_FilePersisted(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileSize")] -internal static extern int SteamAPI_ISteamRemoteStorage_GetFileSize(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileTimestamp")] -internal static extern long SteamAPI_ISteamRemoteStorage_GetFileTimestamp(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms")] -internal static extern uint SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(IntPtr instancePtr, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileCount")] -internal static extern int SteamAPI_ISteamRemoteStorage_GetFileCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize")] -internal static extern IntPtr SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(IntPtr instancePtr, int iFile, ref int pnFileSizeInBytes); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetQuota")] -internal static extern bool SteamAPI_ISteamRemoteStorage_GetQuota(IntPtr instancePtr, ref ulong pnTotalBytes, ref ulong puAvailableBytes); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount")] -internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp")] -internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp")] -internal static extern void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(IntPtr instancePtr, bool bEnabled); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownload")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownload(IntPtr instancePtr, ulong hContent, uint unPriority); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress")] -internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(IntPtr instancePtr, ulong hContent, ref int pnBytesDownloaded, ref int pnBytesExpected); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDetails")] -internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(IntPtr instancePtr, ulong hContent, ref uint pnAppID, System.Text.StringBuilder ppchName, ref int pnFileSizeInBytes, ref CSteamID pSteamIDOwner); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCRead")] -internal static extern int SteamAPI_ISteamRemoteStorage_UGCRead(IntPtr instancePtr, ulong hContent, IntPtr pvData, int cubDataToRead, uint cOffset, uint eAction); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount")] -internal static extern int SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(IntPtr instancePtr, int iCachedContent); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(IntPtr instancePtr, string pchFile, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags, uint eWorkshopFileType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(IntPtr instancePtr, ulong unPublishedFileId); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile")] -internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(IntPtr instancePtr, ulong updateHandle, string pchFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile")] -internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(IntPtr instancePtr, ulong updateHandle, string pchPreviewFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle")] -internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(IntPtr instancePtr, ulong updateHandle, string pchTitle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription")] -internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(IntPtr instancePtr, ulong updateHandle, string pchDescription); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility")] -internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(IntPtr instancePtr, ulong updateHandle, uint eVisibility); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags")] -internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(IntPtr instancePtr, ulong updateHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(IntPtr instancePtr, ulong unPublishedFileId, uint unMaxSecondsOld); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_DeletePublishedFile")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_DeletePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(IntPtr instancePtr, uint unStartIndex); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(IntPtr instancePtr, uint unStartIndex); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription")] -internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(IntPtr instancePtr, ulong updateHandle, string pchChangeDescription); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(IntPtr instancePtr, ulong unPublishedFileId, bool bVoteUp); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(IntPtr instancePtr, ulong steamId, uint unStartIndex, ref SteamParamStringArray_t pRequiredTags, ref SteamParamStringArray_t pExcludedTags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishVideo")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishVideo(IntPtr instancePtr, uint eVideoProvider, string pchVideoAccount, string pchVideoIdentifier, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(IntPtr instancePtr, ulong unPublishedFileId, uint eAction); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(IntPtr instancePtr, uint eAction, uint unStartIndex); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(IntPtr instancePtr, uint eEnumerationType, uint unStartIndex, uint unCount, uint unDays, ref SteamParamStringArray_t pTags, ref SteamParamStringArray_t pUserTags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation")] -internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(IntPtr instancePtr, ulong hContent, string pchLocation, uint unPriority); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestCurrentStats")] -internal static extern bool SteamAPI_ISteamUserStats_RequestCurrentStats(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat")] -internal static extern bool SteamAPI_ISteamUserStats_GetStat(IntPtr instancePtr, string pchName, ref int pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat0")] -internal static extern bool SteamAPI_ISteamUserStats_GetStat0(IntPtr instancePtr, string pchName, ref float pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat")] -internal static extern bool SteamAPI_ISteamUserStats_SetStat(IntPtr instancePtr, string pchName, int nData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat0")] -internal static extern bool SteamAPI_ISteamUserStats_SetStat0(IntPtr instancePtr, string pchName, float fData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UpdateAvgRateStat")] -internal static extern bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(IntPtr instancePtr, string pchName, float flCountThisSession, double dSessionLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievement")] -internal static extern bool SteamAPI_ISteamUserStats_GetAchievement(IntPtr instancePtr, string pchName, ref bool pbAchieved); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetAchievement")] -internal static extern bool SteamAPI_ISteamUserStats_SetAchievement(IntPtr instancePtr, string pchName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ClearAchievement")] -internal static extern bool SteamAPI_ISteamUserStats_ClearAchievement(IntPtr instancePtr, string pchName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime")] -internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(IntPtr instancePtr, string pchName, ref bool pbAchieved, ref uint punUnlockTime); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_StoreStats")] -internal static extern bool SteamAPI_ISteamUserStats_StoreStats(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementIcon")] -internal static extern int SteamAPI_ISteamUserStats_GetAchievementIcon(IntPtr instancePtr, string pchName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute")] -internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(IntPtr instancePtr, string pchName, string pchKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_IndicateAchievementProgress")] -internal static extern bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(IntPtr instancePtr, string pchName, uint nCurProgress, uint nMaxProgress); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumAchievements")] -internal static extern uint SteamAPI_ISteamUserStats_GetNumAchievements(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementName")] -internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementName(IntPtr instancePtr, uint iAchievement); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestUserStats")] -internal static extern ulong SteamAPI_ISteamUserStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat")] -internal static extern bool SteamAPI_ISteamUserStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat0")] -internal static extern bool SteamAPI_ISteamUserStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievement")] -internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime")] -internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved, ref uint punUnlockTime); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ResetAllStats")] -internal static extern bool SteamAPI_ISteamUserStats_ResetAllStats(IntPtr instancePtr, bool bAchievementsToo); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard")] -internal static extern ulong SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(IntPtr instancePtr, string pchLeaderboardName, uint eLeaderboardSortMethod, uint eLeaderboardDisplayType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindLeaderboard")] -internal static extern ulong SteamAPI_ISteamUserStats_FindLeaderboard(IntPtr instancePtr, string pchLeaderboardName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardName")] -internal static extern IntPtr SteamAPI_ISteamUserStats_GetLeaderboardName(IntPtr instancePtr, ulong hSteamLeaderboard); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount")] -internal static extern int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(IntPtr instancePtr, ulong hSteamLeaderboard); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod")] -internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(IntPtr instancePtr, ulong hSteamLeaderboard); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType")] -internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(IntPtr instancePtr, ulong hSteamLeaderboard); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries")] -internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers")] -internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(IntPtr instancePtr, ulong hSteamLeaderboard, [In, Out] CSteamID[] prgUsers, int cUsers); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry")] -internal static extern bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(IntPtr instancePtr, ulong hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, ref int pDetails, int cDetailsMax); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UploadLeaderboardScore")] -internal static extern ulong SteamAPI_ISteamUserStats_UploadLeaderboardScore(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardUploadScoreMethod, int nScore, ref int pScoreDetails, int cScoreDetailsCount); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_AttachLeaderboardUGC")] -internal static extern ulong SteamAPI_ISteamUserStats_AttachLeaderboardUGC(IntPtr instancePtr, ulong hSteamLeaderboard, ulong hUGC); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers")] -internal static extern ulong SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages")] -internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo")] -internal static extern int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(IntPtr instancePtr, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo")] -internal static extern int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(IntPtr instancePtr, int iIteratorPrevious, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent")] -internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(IntPtr instancePtr, string pchName, ref float pflPercent); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalStats")] -internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalStats(IntPtr instancePtr, int nHistoryDays); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat")] -internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat(IntPtr instancePtr, string pchStatName, ref long pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat0")] -internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat0(IntPtr instancePtr, string pchStatName, ref double pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory")] -internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory(IntPtr instancePtr, string pchStatName, [In, Out] long[] pData, uint cubData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory0")] -internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory0(IntPtr instancePtr, string pchStatName, [In, Out] double[] pData, uint cubData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribed")] -internal static extern bool SteamAPI_ISteamApps_BIsSubscribed(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsLowViolence")] -internal static extern bool SteamAPI_ISteamApps_BIsLowViolence(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsCybercafe")] -internal static extern bool SteamAPI_ISteamApps_BIsCybercafe(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsVACBanned")] -internal static extern bool SteamAPI_ISteamApps_BIsVACBanned(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentGameLanguage")] -internal static extern IntPtr SteamAPI_ISteamApps_GetCurrentGameLanguage(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAvailableGameLanguages")] -internal static extern IntPtr SteamAPI_ISteamApps_GetAvailableGameLanguages(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedApp")] -internal static extern bool SteamAPI_ISteamApps_BIsSubscribedApp(IntPtr instancePtr, uint appID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsDlcInstalled")] -internal static extern bool SteamAPI_ISteamApps_BIsDlcInstalled(IntPtr instancePtr, uint appID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime")] -internal static extern uint SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(IntPtr instancePtr, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend")] -internal static extern bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDLCCount")] -internal static extern int SteamAPI_ISteamApps_GetDLCCount(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BGetDLCDataByIndex")] -internal static extern bool SteamAPI_ISteamApps_BGetDLCDataByIndex(IntPtr instancePtr, int iDLC, ref uint pAppID, ref bool pbAvailable, string pchName, int cchNameBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_InstallDLC")] -internal static extern void SteamAPI_ISteamApps_InstallDLC(IntPtr instancePtr, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_UninstallDLC")] -internal static extern void SteamAPI_ISteamApps_UninstallDLC(IntPtr instancePtr, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey")] -internal static extern void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(IntPtr instancePtr, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentBetaName")] -internal static extern bool SteamAPI_ISteamApps_GetCurrentBetaName(IntPtr instancePtr, string pchName, int cchNameBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_MarkContentCorrupt")] -internal static extern bool SteamAPI_ISteamApps_MarkContentCorrupt(IntPtr instancePtr, bool bMissingFilesOnly); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetInstalledDepots")] -internal static extern uint SteamAPI_ISteamApps_GetInstalledDepots(IntPtr instancePtr, uint appID, ref uint pvecDepots, uint cMaxDepots); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppInstallDir")] -internal static extern uint SteamAPI_ISteamApps_GetAppInstallDir(IntPtr instancePtr, uint appID, string pchFolder, uint cchFolderBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsAppInstalled")] -internal static extern bool SteamAPI_ISteamApps_BIsAppInstalled(IntPtr instancePtr, uint appID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppOwner")] -internal static extern ulong SteamAPI_ISteamApps_GetAppOwner(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetLaunchQueryParam")] -internal static extern IntPtr SteamAPI_ISteamApps_GetLaunchQueryParam(IntPtr instancePtr, string pchKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDlcDownloadProgress")] -internal static extern bool SteamAPI_ISteamApps_GetDlcDownloadProgress(IntPtr instancePtr, uint nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppBuildId")] -internal static extern int SteamAPI_ISteamApps_GetAppBuildId(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys")] -internal static extern void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetFileDetails")] -internal static extern ulong SteamAPI_ISteamApps_GetFileDetails(IntPtr instancePtr, string pszFileName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetLaunchCommandLine")] -internal static extern int SteamAPI_ISteamApps_GetLaunchCommandLine(IntPtr instancePtr, string pszCommandLine, int cubCommandLine); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing")] -internal static extern bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendP2PPacket")] -internal static extern bool SteamAPI_ISteamNetworking_SendP2PPacket(IntPtr instancePtr, ulong steamIDRemote, IntPtr pubData, uint cubData, uint eP2PSendType, int nChannel); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsP2PPacketAvailable")] -internal static extern bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(IntPtr instancePtr, ref uint pcubMsgSize, int nChannel); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_ReadP2PPacket")] -internal static extern bool SteamAPI_ISteamNetworking_ReadP2PPacket(IntPtr instancePtr, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref CSteamID psteamIDRemote, int nChannel); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser")] -internal static extern bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser")] -internal static extern bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser")] -internal static extern bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(IntPtr instancePtr, ulong steamIDRemote, int nChannel); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetP2PSessionState")] -internal static extern bool SteamAPI_ISteamNetworking_GetP2PSessionState(IntPtr instancePtr, ulong steamIDRemote, ref P2PSessionState_t pConnectionState); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AllowP2PPacketRelay")] -internal static extern bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(IntPtr instancePtr, bool bAllow); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateListenSocket")] -internal static extern uint SteamAPI_ISteamNetworking_CreateListenSocket(IntPtr instancePtr, int nVirtualP2PPort, uint nIP, char nPort, bool bAllowUseOfPacketRelay); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket")] -internal static extern uint SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(IntPtr instancePtr, ulong steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateConnectionSocket")] -internal static extern uint SteamAPI_ISteamNetworking_CreateConnectionSocket(IntPtr instancePtr, uint nIP, char nPort, int nTimeoutSec); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroySocket")] -internal static extern bool SteamAPI_ISteamNetworking_DestroySocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroyListenSocket")] -internal static extern bool SteamAPI_ISteamNetworking_DestroyListenSocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendDataOnSocket")] -internal static extern bool SteamAPI_ISteamNetworking_SendDataOnSocket(IntPtr instancePtr, uint hSocket, IntPtr pubData, uint cubData, bool bReliable); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket")] -internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(IntPtr instancePtr, uint hSocket, ref uint pcubMsgSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveDataFromSocket")] -internal static extern bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(IntPtr instancePtr, uint hSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailable")] -internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailable(IntPtr instancePtr, uint hListenSocket, ref uint pcubMsgSize, ref uint phSocket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveData")] -internal static extern bool SteamAPI_ISteamNetworking_RetrieveData(IntPtr instancePtr, uint hListenSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref uint phSocket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketInfo")] -internal static extern bool SteamAPI_ISteamNetworking_GetSocketInfo(IntPtr instancePtr, uint hSocket, ref CSteamID pSteamIDRemote, ref int peSocketStatus, ref uint punIPRemote, ref char punPortRemote); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetListenSocketInfo")] -internal static extern bool SteamAPI_ISteamNetworking_GetListenSocketInfo(IntPtr instancePtr, uint hListenSocket, ref uint pnIP, ref char pnPort); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketConnectionType")] -internal static extern uint SteamAPI_ISteamNetworking_GetSocketConnectionType(IntPtr instancePtr, uint hSocket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetMaxPacketSize")] -internal static extern int SteamAPI_ISteamNetworking_GetMaxPacketSize(IntPtr instancePtr, uint hSocket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_WriteScreenshot")] -internal static extern uint SteamAPI_ISteamScreenshots_WriteScreenshot(IntPtr instancePtr, IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary")] -internal static extern uint SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(IntPtr instancePtr, string pchFilename, string pchThumbnailFilename, int nWidth, int nHeight); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TriggerScreenshot")] -internal static extern void SteamAPI_ISteamScreenshots_TriggerScreenshot(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_HookScreenshots")] -internal static extern void SteamAPI_ISteamScreenshots_HookScreenshots(IntPtr instancePtr, bool bHook); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_SetLocation")] -internal static extern bool SteamAPI_ISteamScreenshots_SetLocation(IntPtr instancePtr, uint hScreenshot, string pchLocation); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagUser")] -internal static extern bool SteamAPI_ISteamScreenshots_TagUser(IntPtr instancePtr, uint hScreenshot, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagPublishedFile")] -internal static extern bool SteamAPI_ISteamScreenshots_TagPublishedFile(IntPtr instancePtr, uint hScreenshot, ulong unPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_IsScreenshotsHooked")] -internal static extern bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary")] -internal static extern uint SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(IntPtr instancePtr, uint eType, string pchFilename, string pchVRFilename); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsEnabled")] -internal static extern bool SteamAPI_ISteamMusic_BIsEnabled(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsPlaying")] -internal static extern bool SteamAPI_ISteamMusic_BIsPlaying(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetPlaybackStatus")] -internal static extern int SteamAPI_ISteamMusic_GetPlaybackStatus(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Play")] -internal static extern void SteamAPI_ISteamMusic_Play(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Pause")] -internal static extern void SteamAPI_ISteamMusic_Pause(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayPrevious")] -internal static extern void SteamAPI_ISteamMusic_PlayPrevious(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayNext")] -internal static extern void SteamAPI_ISteamMusic_PlayNext(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_SetVolume")] -internal static extern void SteamAPI_ISteamMusic_SetVolume(IntPtr instancePtr, float flVolume); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetVolume")] -internal static extern float SteamAPI_ISteamMusic_GetVolume(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote")] -internal static extern bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(IntPtr instancePtr, string pchName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote")] -internal static extern bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote")] -internal static extern bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BActivationSuccess")] -internal static extern bool SteamAPI_ISteamMusicRemote_BActivationSuccess(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetDisplayName")] -internal static extern bool SteamAPI_ISteamMusicRemote_SetDisplayName(IntPtr instancePtr, string pchDisplayName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64")] -internal static extern bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayPrevious")] -internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayNext")] -internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayNext(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableShuffled")] -internal static extern bool SteamAPI_ISteamMusicRemote_EnableShuffled(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableLooped")] -internal static extern bool SteamAPI_ISteamMusicRemote_EnableLooped(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableQueue")] -internal static extern bool SteamAPI_ISteamMusicRemote_EnableQueue(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlaylists")] -internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlaylists(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus")] -internal static extern bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(IntPtr instancePtr, int nStatus); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateShuffled")] -internal static extern bool SteamAPI_ISteamMusicRemote_UpdateShuffled(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateLooped")] -internal static extern bool SteamAPI_ISteamMusicRemote_UpdateLooped(IntPtr instancePtr, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateVolume")] -internal static extern bool SteamAPI_ISteamMusicRemote_UpdateVolume(IntPtr instancePtr, float flValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange")] -internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable")] -internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(IntPtr instancePtr, bool bAvailable); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText")] -internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(IntPtr instancePtr, string pchText); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds")] -internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(IntPtr instancePtr, int nValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt")] -internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange")] -internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueWillChange")] -internal static extern bool SteamAPI_ISteamMusicRemote_QueueWillChange(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetQueueEntries")] -internal static extern bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetQueueEntry")] -internal static extern bool SteamAPI_ISteamMusicRemote_SetQueueEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry")] -internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(IntPtr instancePtr, int nID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueDidChange")] -internal static extern bool SteamAPI_ISteamMusicRemote_QueueDidChange(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistWillChange")] -internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries")] -internal static extern bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPlaylistEntry")] -internal static extern bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry")] -internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(IntPtr instancePtr, int nID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistDidChange")] -internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateHTTPRequest")] -internal static extern uint SteamAPI_ISteamHTTP_CreateHTTPRequest(IntPtr instancePtr, uint eHTTPRequestMethod, string pchAbsoluteURL); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(IntPtr instancePtr, uint hRequest, ulong ulContextValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(IntPtr instancePtr, uint hRequest, uint unTimeoutSeconds); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, string pchHeaderValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(IntPtr instancePtr, uint hRequest, string pchParamName, string pchParamValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequest")] -internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequest(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse")] -internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_DeferHTTPRequest")] -internal static extern bool SteamAPI_ISteamHTTP_DeferHTTPRequest(IntPtr instancePtr, uint hRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest")] -internal static extern bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(IntPtr instancePtr, uint hRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize")] -internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(IntPtr instancePtr, uint hRequest, string pchHeaderName, ref uint unResponseHeaderSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue")] -internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, IntPtr pHeaderValueBuffer, uint unBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize")] -internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(IntPtr instancePtr, uint hRequest, ref uint unBodySize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData")] -internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(IntPtr instancePtr, uint hRequest, IntPtr pBodyDataBuffer, uint unBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData")] -internal static extern bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(IntPtr instancePtr, uint hRequest, uint cOffset, IntPtr pBodyDataBuffer, uint unBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseHTTPRequest")] -internal static extern bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(IntPtr instancePtr, uint hRequest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct")] -internal static extern bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(IntPtr instancePtr, uint hRequest, ref float pflPercentOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(IntPtr instancePtr, uint hRequest, string pchContentType, IntPtr pubBody, uint unBodyLen); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateCookieContainer")] -internal static extern uint SteamAPI_ISteamHTTP_CreateCookieContainer(IntPtr instancePtr, bool bAllowResponsesToModify); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseCookieContainer")] -internal static extern bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(IntPtr instancePtr, uint hCookieContainer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetCookie")] -internal static extern bool SteamAPI_ISteamHTTP_SetCookie(IntPtr instancePtr, uint hCookieContainer, string pchHost, string pchUrl, string pchCookie); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(IntPtr instancePtr, uint hRequest, uint hCookieContainer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(IntPtr instancePtr, uint hRequest, string pchUserAgentInfo); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(IntPtr instancePtr, uint hRequest, bool bRequireVerifiedCertificate); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS")] -internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(IntPtr instancePtr, uint hRequest, uint unMilliseconds); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut")] -internal static extern bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(IntPtr instancePtr, uint hRequest, ref bool pbWasTimedOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_Init")] -internal static extern bool SteamAPI_ISteamInput_Init(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_Shutdown")] -internal static extern bool SteamAPI_ISteamInput_Shutdown(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_RunFrame")] -internal static extern void SteamAPI_ISteamInput_RunFrame(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetConnectedControllers")] -internal static extern int SteamAPI_ISteamInput_GetConnectedControllers(IntPtr instancePtr, ref ulong handlesOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetActionSetHandle")] -internal static extern ulong SteamAPI_ISteamInput_GetActionSetHandle(IntPtr instancePtr, string pszActionSetName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_ActivateActionSet")] -internal static extern void SteamAPI_ISteamInput_ActivateActionSet(IntPtr instancePtr, ulong inputHandle, ulong actionSetHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetCurrentActionSet")] -internal static extern ulong SteamAPI_ISteamInput_GetCurrentActionSet(IntPtr instancePtr, ulong inputHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_ActivateActionSetLayer")] -internal static extern void SteamAPI_ISteamInput_ActivateActionSetLayer(IntPtr instancePtr, ulong inputHandle, ulong actionSetLayerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_DeactivateActionSetLayer")] -internal static extern void SteamAPI_ISteamInput_DeactivateActionSetLayer(IntPtr instancePtr, ulong inputHandle, ulong actionSetLayerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_DeactivateAllActionSetLayers")] -internal static extern void SteamAPI_ISteamInput_DeactivateAllActionSetLayers(IntPtr instancePtr, ulong inputHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetActiveActionSetLayers")] -internal static extern int SteamAPI_ISteamInput_GetActiveActionSetLayers(IntPtr instancePtr, ulong inputHandle, ref ulong handlesOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetDigitalActionHandle")] -internal static extern ulong SteamAPI_ISteamInput_GetDigitalActionHandle(IntPtr instancePtr, string pszActionName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetDigitalActionData")] -internal static extern InputDigitalActionData_t SteamAPI_ISteamInput_GetDigitalActionData(IntPtr instancePtr, ulong inputHandle, ulong digitalActionHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetDigitalActionOrigins")] -internal static extern int SteamAPI_ISteamInput_GetDigitalActionOrigins(IntPtr instancePtr, ulong inputHandle, ulong actionSetHandle, ulong digitalActionHandle, ref uint originsOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionHandle")] -internal static extern ulong SteamAPI_ISteamInput_GetAnalogActionHandle(IntPtr instancePtr, string pszActionName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionData")] -internal static extern InputAnalogActionData_t SteamAPI_ISteamInput_GetAnalogActionData(IntPtr instancePtr, ulong inputHandle, ulong analogActionHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionOrigins")] -internal static extern int SteamAPI_ISteamInput_GetAnalogActionOrigins(IntPtr instancePtr, ulong inputHandle, ulong actionSetHandle, ulong analogActionHandle, ref uint originsOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetGlyphForActionOrigin")] -internal static extern IntPtr SteamAPI_ISteamInput_GetGlyphForActionOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetStringForActionOrigin")] -internal static extern IntPtr SteamAPI_ISteamInput_GetStringForActionOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_StopAnalogActionMomentum")] -internal static extern void SteamAPI_ISteamInput_StopAnalogActionMomentum(IntPtr instancePtr, ulong inputHandle, ulong eAction); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetMotionData")] -internal static extern InputMotionData_t SteamAPI_ISteamInput_GetMotionData(IntPtr instancePtr, ulong inputHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_TriggerVibration")] -internal static extern void SteamAPI_ISteamInput_TriggerVibration(IntPtr instancePtr, ulong inputHandle, char usLeftSpeed, char usRightSpeed); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_SetLEDColor")] -internal static extern void SteamAPI_ISteamInput_SetLEDColor(IntPtr instancePtr, ulong inputHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_TriggerHapticPulse")] -internal static extern void SteamAPI_ISteamInput_TriggerHapticPulse(IntPtr instancePtr, ulong inputHandle, uint eTargetPad, char usDurationMicroSec); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_TriggerRepeatedHapticPulse")] -internal static extern void SteamAPI_ISteamInput_TriggerRepeatedHapticPulse(IntPtr instancePtr, ulong inputHandle, uint eTargetPad, char usDurationMicroSec, char usOffMicroSec, char unRepeat, uint nFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_ShowBindingPanel")] -internal static extern bool SteamAPI_ISteamInput_ShowBindingPanel(IntPtr instancePtr, ulong inputHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetInputTypeForHandle")] -internal static extern uint SteamAPI_ISteamInput_GetInputTypeForHandle(IntPtr instancePtr, ulong inputHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetControllerForGamepadIndex")] -internal static extern ulong SteamAPI_ISteamInput_GetControllerForGamepadIndex(IntPtr instancePtr, int nIndex); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetGamepadIndexForController")] -internal static extern int SteamAPI_ISteamInput_GetGamepadIndexForController(IntPtr instancePtr, ulong ulinputHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetStringForXboxOrigin")] -internal static extern IntPtr SteamAPI_ISteamInput_GetStringForXboxOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetGlyphForXboxOrigin")] -internal static extern IntPtr SteamAPI_ISteamInput_GetGlyphForXboxOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin")] -internal static extern uint SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin(IntPtr instancePtr, ulong inputHandle, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInput_TranslateActionOrigin")] -internal static extern uint SteamAPI_ISteamInput_TranslateActionOrigin(IntPtr instancePtr, uint eDestinationInputType, uint eSourceOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Init")] -internal static extern bool SteamAPI_ISteamController_Init(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Shutdown")] -internal static extern bool SteamAPI_ISteamController_Shutdown(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_RunFrame")] -internal static extern void SteamAPI_ISteamController_RunFrame(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetConnectedControllers")] -internal static extern int SteamAPI_ISteamController_GetConnectedControllers(IntPtr instancePtr, ref ulong handlesOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetActionSetHandle")] -internal static extern ulong SteamAPI_ISteamController_GetActionSetHandle(IntPtr instancePtr, string pszActionSetName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ActivateActionSet")] -internal static extern void SteamAPI_ISteamController_ActivateActionSet(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetCurrentActionSet")] -internal static extern ulong SteamAPI_ISteamController_GetCurrentActionSet(IntPtr instancePtr, ulong controllerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ActivateActionSetLayer")] -internal static extern void SteamAPI_ISteamController_ActivateActionSetLayer(IntPtr instancePtr, ulong controllerHandle, ulong actionSetLayerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_DeactivateActionSetLayer")] -internal static extern void SteamAPI_ISteamController_DeactivateActionSetLayer(IntPtr instancePtr, ulong controllerHandle, ulong actionSetLayerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_DeactivateAllActionSetLayers")] -internal static extern void SteamAPI_ISteamController_DeactivateAllActionSetLayers(IntPtr instancePtr, ulong controllerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetActiveActionSetLayers")] -internal static extern int SteamAPI_ISteamController_GetActiveActionSetLayers(IntPtr instancePtr, ulong controllerHandle, ref ulong handlesOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionHandle")] -internal static extern ulong SteamAPI_ISteamController_GetDigitalActionHandle(IntPtr instancePtr, string pszActionName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionData")] -internal static extern InputDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionOrigins")] -internal static extern int SteamAPI_ISteamController_GetDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong digitalActionHandle, ref uint originsOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionHandle")] -internal static extern ulong SteamAPI_ISteamController_GetAnalogActionHandle(IntPtr instancePtr, string pszActionName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionData")] -internal static extern InputAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionOrigins")] -internal static extern int SteamAPI_ISteamController_GetAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong analogActionHandle, ref uint originsOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetGlyphForActionOrigin")] -internal static extern IntPtr SteamAPI_ISteamController_GetGlyphForActionOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetStringForActionOrigin")] -internal static extern IntPtr SteamAPI_ISteamController_GetStringForActionOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_StopAnalogActionMomentum")] -internal static extern void SteamAPI_ISteamController_StopAnalogActionMomentum(IntPtr instancePtr, ulong controllerHandle, ulong eAction); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetMotionData")] -internal static extern InputMotionData_t SteamAPI_ISteamController_GetMotionData(IntPtr instancePtr, ulong controllerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerHapticPulse")] -internal static extern void SteamAPI_ISteamController_TriggerHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerRepeatedHapticPulse")] -internal static extern void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec, char usOffMicroSec, char unRepeat, uint nFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerVibration")] -internal static extern void SteamAPI_ISteamController_TriggerVibration(IntPtr instancePtr, ulong controllerHandle, char usLeftSpeed, char usRightSpeed); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_SetLEDColor")] -internal static extern void SteamAPI_ISteamController_SetLEDColor(IntPtr instancePtr, ulong controllerHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowBindingPanel")] -internal static extern bool SteamAPI_ISteamController_ShowBindingPanel(IntPtr instancePtr, ulong controllerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetInputTypeForHandle")] -internal static extern uint SteamAPI_ISteamController_GetInputTypeForHandle(IntPtr instancePtr, ulong controllerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetControllerForGamepadIndex")] -internal static extern ulong SteamAPI_ISteamController_GetControllerForGamepadIndex(IntPtr instancePtr, int nIndex); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetGamepadIndexForController")] -internal static extern int SteamAPI_ISteamController_GetGamepadIndexForController(IntPtr instancePtr, ulong ulControllerHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetStringForXboxOrigin")] -internal static extern IntPtr SteamAPI_ISteamController_GetStringForXboxOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetGlyphForXboxOrigin")] -internal static extern IntPtr SteamAPI_ISteamController_GetGlyphForXboxOrigin(IntPtr instancePtr, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetActionOriginFromXboxOrigin")] -internal static extern uint SteamAPI_ISteamController_GetActionOriginFromXboxOrigin(IntPtr instancePtr, ulong controllerHandle, uint eOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TranslateActionOrigin")] -internal static extern uint SteamAPI_ISteamController_TranslateActionOrigin(IntPtr instancePtr, uint eDestinationInputType, uint eSourceOrigin); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest")] -internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(IntPtr instancePtr, uint unAccountID, uint eListType, uint eMatchingUGCType, uint eSortOrder, uint nCreatorAppID, uint nConsumerAppID, uint unPage); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequest")] -internal static extern ulong SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(IntPtr instancePtr, uint eQueryType, uint eMatchingeMatchingUGCTypeFileType, uint nCreatorAppID, uint nConsumerAppID, uint unPage); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequest0")] -internal static extern ulong SteamAPI_ISteamUGC_CreateQueryAllUGCRequest0(IntPtr instancePtr, uint eQueryType, uint eMatchingeMatchingUGCTypeFileType, uint nCreatorAppID, uint nConsumerAppID, string pchCursor); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest")] -internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SendQueryUGCRequest")] -internal static extern ulong SteamAPI_ISteamUGC_SendQueryUGCRequest(IntPtr instancePtr, ulong handle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCResult")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCResult(IntPtr instancePtr, ulong handle, uint index, ref SteamUGCDetails_t pDetails); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchURL, uint cchURLSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCMetadata")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchMetadata, uint cchMetadatasize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCChildren")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCChildren(IntPtr instancePtr, ulong handle, uint index, ref ulong pvecPublishedFileID, uint cMaxEntries); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCStatistic")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(IntPtr instancePtr, ulong handle, uint index, uint eStatType, ref ulong pStatValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews")] -internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(IntPtr instancePtr, ulong handle, uint index); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(IntPtr instancePtr, ulong handle, uint index, uint previewIndex, System.Text.StringBuilder pchURLOrVideoID, uint cchURLSize, System.Text.StringBuilder pchOriginalFileName, uint cchOriginalFileNameSize, ref uint pPreviewType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags")] -internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(IntPtr instancePtr, ulong handle, uint index); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(IntPtr instancePtr, ulong handle, uint index, uint keyValueTagIndex, System.Text.StringBuilder pchKey, uint cchKeySize, System.Text.StringBuilder pchValue, uint cchValueSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest")] -internal static extern bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(IntPtr instancePtr, ulong handle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredTag")] -internal static extern bool SteamAPI_ISteamUGC_AddRequiredTag(IntPtr instancePtr, ulong handle, string pTagName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddExcludedTag")] -internal static extern bool SteamAPI_ISteamUGC_AddExcludedTag(IntPtr instancePtr, ulong handle, string pTagName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnOnlyIDs")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(IntPtr instancePtr, ulong handle, bool bReturnOnlyIDs); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnKeyValueTags")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(IntPtr instancePtr, ulong handle, bool bReturnKeyValueTags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnLongDescription")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnLongDescription(IntPtr instancePtr, ulong handle, bool bReturnLongDescription); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnMetadata")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnMetadata(IntPtr instancePtr, ulong handle, bool bReturnMetadata); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnChildren")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnChildren(IntPtr instancePtr, ulong handle, bool bReturnChildren); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(IntPtr instancePtr, ulong handle, bool bReturnAdditionalPreviews); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnTotalOnly")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnTotalOnly(IntPtr instancePtr, ulong handle, bool bReturnTotalOnly); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnPlaytimeStats")] -internal static extern bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats(IntPtr instancePtr, ulong handle, uint unDays); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetLanguage")] -internal static extern bool SteamAPI_ISteamUGC_SetLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetAllowCachedResponse")] -internal static extern bool SteamAPI_ISteamUGC_SetAllowCachedResponse(IntPtr instancePtr, ulong handle, uint unMaxAgeSeconds); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetCloudFileNameFilter")] -internal static extern bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(IntPtr instancePtr, ulong handle, string pMatchCloudFileName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetMatchAnyTag")] -internal static extern bool SteamAPI_ISteamUGC_SetMatchAnyTag(IntPtr instancePtr, ulong handle, bool bMatchAnyTag); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetSearchText")] -internal static extern bool SteamAPI_ISteamUGC_SetSearchText(IntPtr instancePtr, ulong handle, string pSearchText); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetRankedByTrendDays")] -internal static extern bool SteamAPI_ISteamUGC_SetRankedByTrendDays(IntPtr instancePtr, ulong handle, uint unDays); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredKeyValueTag")] -internal static extern bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(IntPtr instancePtr, ulong handle, string pKey, string pValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RequestUGCDetails")] -internal static extern ulong SteamAPI_ISteamUGC_RequestUGCDetails(IntPtr instancePtr, ulong nPublishedFileID, uint unMaxAgeSeconds); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateItem")] -internal static extern ulong SteamAPI_ISteamUGC_CreateItem(IntPtr instancePtr, uint nConsumerAppId, uint eFileType); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartItemUpdate")] -internal static extern ulong SteamAPI_ISteamUGC_StartItemUpdate(IntPtr instancePtr, uint nConsumerAppId, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTitle")] -internal static extern bool SteamAPI_ISteamUGC_SetItemTitle(IntPtr instancePtr, ulong handle, string pchTitle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemDescription")] -internal static extern bool SteamAPI_ISteamUGC_SetItemDescription(IntPtr instancePtr, ulong handle, string pchDescription); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemUpdateLanguage")] -internal static extern bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemMetadata")] -internal static extern bool SteamAPI_ISteamUGC_SetItemMetadata(IntPtr instancePtr, ulong handle, string pchMetaData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemVisibility")] -internal static extern bool SteamAPI_ISteamUGC_SetItemVisibility(IntPtr instancePtr, ulong handle, uint eVisibility); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTags")] -internal static extern bool SteamAPI_ISteamUGC_SetItemTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemContent")] -internal static extern bool SteamAPI_ISteamUGC_SetItemContent(IntPtr instancePtr, ulong handle, string pszContentFolder); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemPreview")] -internal static extern bool SteamAPI_ISteamUGC_SetItemPreview(IntPtr instancePtr, ulong handle, string pszPreviewFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetAllowLegacyUpload")] -internal static extern bool SteamAPI_ISteamUGC_SetAllowLegacyUpload(IntPtr instancePtr, ulong handle, bool bAllowLegacyUpload); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemKeyValueTags")] -internal static extern bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(IntPtr instancePtr, ulong handle, string pchKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemKeyValueTag")] -internal static extern bool SteamAPI_ISteamUGC_AddItemKeyValueTag(IntPtr instancePtr, ulong handle, string pchKey, string pchValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewFile")] -internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewFile(IntPtr instancePtr, ulong handle, string pszPreviewFile, uint type); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewVideo")] -internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewVideo(IntPtr instancePtr, ulong handle, string pszVideoID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewFile")] -internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(IntPtr instancePtr, ulong handle, uint index, string pszPreviewFile); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewVideo")] -internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(IntPtr instancePtr, ulong handle, uint index, string pszVideoID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemPreview")] -internal static extern bool SteamAPI_ISteamUGC_RemoveItemPreview(IntPtr instancePtr, ulong handle, uint index); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate")] -internal static extern ulong SteamAPI_ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, ulong handle, string pchChangeNote); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemUpdateProgress")] -internal static extern uint SteamAPI_ISteamUGC_GetItemUpdateProgress(IntPtr instancePtr, ulong handle, ref ulong punBytesProcessed, ref ulong punBytesTotal); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetUserItemVote")] -internal static extern ulong SteamAPI_ISteamUGC_SetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID, bool bVoteUp); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetUserItemVote")] -internal static extern ulong SteamAPI_ISteamUGC_GetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemToFavorites")] -internal static extern ulong SteamAPI_ISteamUGC_AddItemToFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemFromFavorites")] -internal static extern ulong SteamAPI_ISteamUGC_RemoveItemFromFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubscribeItem")] -internal static extern ulong SteamAPI_ISteamUGC_SubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UnsubscribeItem")] -internal static extern ulong SteamAPI_ISteamUGC_UnsubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetNumSubscribedItems")] -internal static extern uint SteamAPI_ISteamUGC_GetNumSubscribedItems(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetSubscribedItems")] -internal static extern uint SteamAPI_ISteamUGC_GetSubscribedItems(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint cMaxEntries); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemState")] -internal static extern uint SteamAPI_ISteamUGC_GetItemState(IntPtr instancePtr, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemInstallInfo")] -internal static extern bool SteamAPI_ISteamUGC_GetItemInstallInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punSizeOnDisk, System.Text.StringBuilder pchFolder, uint cchFolderSize, ref uint punTimeStamp); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemDownloadInfo")] -internal static extern bool SteamAPI_ISteamUGC_GetItemDownloadInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_DownloadItem")] -internal static extern bool SteamAPI_ISteamUGC_DownloadItem(IntPtr instancePtr, ulong nPublishedFileID, bool bHighPriority); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_BInitWorkshopForGameServer")] -internal static extern bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(IntPtr instancePtr, uint unWorkshopDepotID, string pszFolder); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SuspendDownloads")] -internal static extern void SteamAPI_ISteamUGC_SuspendDownloads(IntPtr instancePtr, bool bSuspend); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartPlaytimeTracking")] -internal static extern ulong SteamAPI_ISteamUGC_StartPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTracking")] -internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems")] -internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddDependency")] -internal static extern ulong SteamAPI_ISteamUGC_AddDependency(IntPtr instancePtr, ulong nParentPublishedFileID, ulong nChildPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveDependency")] -internal static extern ulong SteamAPI_ISteamUGC_RemoveDependency(IntPtr instancePtr, ulong nParentPublishedFileID, ulong nChildPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddAppDependency")] -internal static extern ulong SteamAPI_ISteamUGC_AddAppDependency(IntPtr instancePtr, ulong nPublishedFileID, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveAppDependency")] -internal static extern ulong SteamAPI_ISteamUGC_RemoveAppDependency(IntPtr instancePtr, ulong nPublishedFileID, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetAppDependencies")] -internal static extern ulong SteamAPI_ISteamUGC_GetAppDependencies(IntPtr instancePtr, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_DeleteItem")] -internal static extern ulong SteamAPI_ISteamUGC_DeleteItem(IntPtr instancePtr, ulong nPublishedFileID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetNumInstalledApps")] -internal static extern uint SteamAPI_ISteamAppList_GetNumInstalledApps(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetInstalledApps")] -internal static extern uint SteamAPI_ISteamAppList_GetInstalledApps(IntPtr instancePtr, ref uint pvecAppID, uint unMaxAppIDs); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppName")] -internal static extern int SteamAPI_ISteamAppList_GetAppName(IntPtr instancePtr, uint nAppID, System.Text.StringBuilder pchName, int cchNameMax); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppInstallDir")] -internal static extern int SteamAPI_ISteamAppList_GetAppInstallDir(IntPtr instancePtr, uint nAppID, string pchDirectory, int cchNameMax); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppBuildId")] -internal static extern int SteamAPI_ISteamAppList_GetAppBuildId(IntPtr instancePtr, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface")] -internal static extern void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Init")] -internal static extern bool SteamAPI_ISteamHTMLSurface_Init(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Shutdown")] -internal static extern bool SteamAPI_ISteamHTMLSurface_Shutdown(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CreateBrowser")] -internal static extern ulong SteamAPI_ISteamHTMLSurface_CreateBrowser(IntPtr instancePtr, string pchUserAgent, string pchUserCSS); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_RemoveBrowser")] -internal static extern void SteamAPI_ISteamHTMLSurface_RemoveBrowser(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_LoadURL")] -internal static extern void SteamAPI_ISteamHTMLSurface_LoadURL(IntPtr instancePtr, uint unBrowserHandle, string pchURL, string pchPostData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetSize")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetSize(IntPtr instancePtr, uint unBrowserHandle, uint unWidth, uint unHeight); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopLoad")] -internal static extern void SteamAPI_ISteamHTMLSurface_StopLoad(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Reload")] -internal static extern void SteamAPI_ISteamHTMLSurface_Reload(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoBack")] -internal static extern void SteamAPI_ISteamHTMLSurface_GoBack(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoForward")] -internal static extern void SteamAPI_ISteamHTMLSurface_GoForward(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AddHeader")] -internal static extern void SteamAPI_ISteamHTMLSurface_AddHeader(IntPtr instancePtr, uint unBrowserHandle, string pchKey, string pchValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ExecuteJavascript")] -internal static extern void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(IntPtr instancePtr, uint unBrowserHandle, string pchScript); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseUp")] -internal static extern void SteamAPI_ISteamHTMLSurface_MouseUp(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDown")] -internal static extern void SteamAPI_ISteamHTMLSurface_MouseDown(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDoubleClick")] -internal static extern void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseMove")] -internal static extern void SteamAPI_ISteamHTMLSurface_MouseMove(IntPtr instancePtr, uint unBrowserHandle, int x, int y); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseWheel")] -internal static extern void SteamAPI_ISteamHTMLSurface_MouseWheel(IntPtr instancePtr, uint unBrowserHandle, int nDelta); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyDown")] -internal static extern void SteamAPI_ISteamHTMLSurface_KeyDown(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers, bool bIsSystemKey); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyUp")] -internal static extern void SteamAPI_ISteamHTMLSurface_KeyUp(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyChar")] -internal static extern void SteamAPI_ISteamHTMLSurface_KeyChar(IntPtr instancePtr, uint unBrowserHandle, uint cUnicodeChar, uint eHTMLKeyModifiers); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetVerticalScroll")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetKeyFocus")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetKeyFocus(IntPtr instancePtr, uint unBrowserHandle, bool bHasKeyFocus); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ViewSource")] -internal static extern void SteamAPI_ISteamHTMLSurface_ViewSource(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CopyToClipboard")] -internal static extern void SteamAPI_ISteamHTMLSurface_CopyToClipboard(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_PasteFromClipboard")] -internal static extern void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Find")] -internal static extern void SteamAPI_ISteamHTMLSurface_Find(IntPtr instancePtr, uint unBrowserHandle, string pchSearchStr, bool bCurrentlyInFind, bool bReverse); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopFind")] -internal static extern void SteamAPI_ISteamHTMLSurface_StopFind(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition")] -internal static extern void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(IntPtr instancePtr, uint unBrowserHandle, int x, int y); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetCookie")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetCookie(IntPtr instancePtr, string pchHostname, string pchKey, string pchValue, string pchPath, ulong nExpires, bool bSecure, bool bHTTPOnly); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(IntPtr instancePtr, uint unBrowserHandle, float flZoom, int nPointX, int nPointY); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetBackgroundMode")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(IntPtr instancePtr, uint unBrowserHandle, bool bBackgroundMode); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor")] -internal static extern void SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor(IntPtr instancePtr, uint unBrowserHandle, float flDPIScaling); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_OpenDeveloperTools")] -internal static extern void SteamAPI_ISteamHTMLSurface_OpenDeveloperTools(IntPtr instancePtr, uint unBrowserHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AllowStartRequest")] -internal static extern void SteamAPI_ISteamHTMLSurface_AllowStartRequest(IntPtr instancePtr, uint unBrowserHandle, bool bAllowed); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_JSDialogResponse")] -internal static extern void SteamAPI_ISteamHTMLSurface_JSDialogResponse(IntPtr instancePtr, uint unBrowserHandle, bool bResult); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus")] -internal static extern uint SteamAPI_ISteamInventory_GetResultStatus(IntPtr instancePtr, int resultHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItems")] -internal static extern bool SteamAPI_ISteamInventory_GetResultItems(IntPtr instancePtr, int resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItemProperty")] -internal static extern bool SteamAPI_ISteamInventory_GetResultItemProperty(IntPtr instancePtr, int resultHandle, uint unItemIndex, string pchPropertyName, System.Text.StringBuilder pchValueBuffer, ref uint punValueBufferSizeOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultTimestamp")] -internal static extern uint SteamAPI_ISteamInventory_GetResultTimestamp(IntPtr instancePtr, int resultHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_CheckResultSteamID")] -internal static extern bool SteamAPI_ISteamInventory_CheckResultSteamID(IntPtr instancePtr, int resultHandle, ulong steamIDExpected); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DestroyResult")] -internal static extern void SteamAPI_ISteamInventory_DestroyResult(IntPtr instancePtr, int resultHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetAllItems")] -internal static extern bool SteamAPI_ISteamInventory_GetAllItems(IntPtr instancePtr, ref int pResultHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemsByID")] -internal static extern bool SteamAPI_ISteamInventory_GetItemsByID(IntPtr instancePtr, ref int pResultHandle, [In, Out] ulong[] pInstanceIDs, uint unCountInstanceIDs); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SerializeResult")] -internal static extern bool SteamAPI_ISteamInventory_SerializeResult(IntPtr instancePtr, int resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DeserializeResult")] -internal static extern bool SteamAPI_ISteamInventory_DeserializeResult(IntPtr instancePtr, ref int pOutResultHandle, IntPtr pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GenerateItems")] -internal static extern bool SteamAPI_ISteamInventory_GenerateItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GrantPromoItems")] -internal static extern bool SteamAPI_ISteamInventory_GrantPromoItems(IntPtr instancePtr, ref int pResultHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItem")] -internal static extern bool SteamAPI_ISteamInventory_AddPromoItem(IntPtr instancePtr, ref int pResultHandle, int itemDef); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItems")] -internal static extern bool SteamAPI_ISteamInventory_AddPromoItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, uint unArrayLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ConsumeItem")] -internal static extern bool SteamAPI_ISteamInventory_ConsumeItem(IntPtr instancePtr, ref int pResultHandle, ulong itemConsume, uint unQuantity); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ExchangeItems")] -internal static extern bool SteamAPI_ISteamInventory_ExchangeItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayGenerate, [In, Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In, Out] ulong[] pArrayDestroy, [In, Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TransferItemQuantity")] -internal static extern bool SteamAPI_ISteamInventory_TransferItemQuantity(IntPtr instancePtr, ref int pResultHandle, ulong itemIdSource, uint unQuantity, ulong itemIdDest); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SendItemDropHeartbeat")] -internal static extern void SteamAPI_ISteamInventory_SendItemDropHeartbeat(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TriggerItemDrop")] -internal static extern bool SteamAPI_ISteamInventory_TriggerItemDrop(IntPtr instancePtr, ref int pResultHandle, int dropListDefinition); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TradeItems")] -internal static extern bool SteamAPI_ISteamInventory_TradeItems(IntPtr instancePtr, ref int pResultHandle, ulong steamIDTradePartner, [In, Out] ulong[] pArrayGive, [In, Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In, Out] ulong[] pArrayGet, [In, Out] uint[] pArrayGetQuantity, uint nArrayGetLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_LoadItemDefinitions")] -internal static extern bool SteamAPI_ISteamInventory_LoadItemDefinitions(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionIDs")] -internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(IntPtr instancePtr, [In, Out] int[] pItemDefIDs, ref uint punItemDefIDsArraySize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionProperty")] -internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(IntPtr instancePtr, int iDefinition, string pchPropertyName, System.Text.StringBuilder pchValueBuffer, ref uint punValueBufferSizeOut); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs")] -internal static extern ulong SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs(IntPtr instancePtr, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs")] -internal static extern bool SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs(IntPtr instancePtr, ulong steamID, [In, Out] int[] pItemDefIDs, ref uint punItemDefIDsArraySize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_StartPurchase")] -internal static extern ulong SteamAPI_ISteamInventory_StartPurchase(IntPtr instancePtr, [In, Out] int[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_RequestPrices")] -internal static extern ulong SteamAPI_ISteamInventory_RequestPrices(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetNumItemsWithPrices")] -internal static extern uint SteamAPI_ISteamInventory_GetNumItemsWithPrices(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemsWithPrices")] -internal static extern bool SteamAPI_ISteamInventory_GetItemsWithPrices(IntPtr instancePtr, [In, Out] int[] pArrayItemDefs, [In, Out] ulong[] pCurrentPrices, [In, Out] ulong[] pBasePrices, uint unArrayLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemPrice")] -internal static extern bool SteamAPI_ISteamInventory_GetItemPrice(IntPtr instancePtr, int iDefinition, ref ulong pCurrentPrice, ref ulong pBasePrice); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_StartUpdateProperties")] -internal static extern ulong SteamAPI_ISteamInventory_StartUpdateProperties(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_RemoveProperty")] -internal static extern bool SteamAPI_ISteamInventory_RemoveProperty(IntPtr instancePtr, ulong handle, ulong nItemID, string pchPropertyName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SetProperty")] -internal static extern bool SteamAPI_ISteamInventory_SetProperty(IntPtr instancePtr, ulong handle, ulong nItemID, string pchPropertyName, string pchPropertyValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SetProperty0")] -internal static extern bool SteamAPI_ISteamInventory_SetProperty0(IntPtr instancePtr, ulong handle, ulong nItemID, string pchPropertyName, bool bValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SetProperty1")] -internal static extern bool SteamAPI_ISteamInventory_SetProperty1(IntPtr instancePtr, ulong handle, ulong nItemID, string pchPropertyName, long nValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SetProperty2")] -internal static extern bool SteamAPI_ISteamInventory_SetProperty2(IntPtr instancePtr, ulong handle, ulong nItemID, string pchPropertyName, float flValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SubmitUpdateProperties")] -internal static extern bool SteamAPI_ISteamInventory_SubmitUpdateProperties(IntPtr instancePtr, ulong handle, ref int pResultHandle); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL")] -internal static extern void SteamAPI_ISteamVideo_GetVideoURL(IntPtr instancePtr, uint unVideoAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_IsBroadcasting")] -internal static extern bool SteamAPI_ISteamVideo_IsBroadcasting(IntPtr instancePtr, ref int pnNumViewers); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetOPFSettings")] -internal static extern void SteamAPI_ISteamVideo_GetOPFSettings(IntPtr instancePtr, uint unVideoAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetOPFStringForApp")] -internal static extern bool SteamAPI_ISteamVideo_GetOPFStringForApp(IntPtr instancePtr, uint unVideoAppID, string pchBuffer, ref int pnBufferSize); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled")] -internal static extern bool SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParentalSettings_BIsParentalLockLocked")] -internal static extern bool SteamAPI_ISteamParentalSettings_BIsParentalLockLocked(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParentalSettings_BIsAppBlocked")] -internal static extern bool SteamAPI_ISteamParentalSettings_BIsAppBlocked(IntPtr instancePtr, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParentalSettings_BIsAppInBlockList")] -internal static extern bool SteamAPI_ISteamParentalSettings_BIsAppInBlockList(IntPtr instancePtr, uint nAppID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParentalSettings_BIsFeatureBlocked")] -internal static extern bool SteamAPI_ISteamParentalSettings_BIsFeatureBlocked(IntPtr instancePtr, uint eFeature); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList")] -internal static extern bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList(IntPtr instancePtr, uint eFeature); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_InitGameServer")] -internal static extern bool SteamAPI_ISteamGameServer_InitGameServer(IntPtr instancePtr, uint unIP, char usGamePort, char usQueryPort, uint unFlags, uint nGameAppId, string pchVersionString); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetProduct")] -internal static extern void SteamAPI_ISteamGameServer_SetProduct(IntPtr instancePtr, string pszProduct); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameDescription")] -internal static extern void SteamAPI_ISteamGameServer_SetGameDescription(IntPtr instancePtr, string pszGameDescription); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetModDir")] -internal static extern void SteamAPI_ISteamGameServer_SetModDir(IntPtr instancePtr, string pszModDir); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetDedicatedServer")] -internal static extern void SteamAPI_ISteamGameServer_SetDedicatedServer(IntPtr instancePtr, bool bDedicated); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOn")] -internal static extern void SteamAPI_ISteamGameServer_LogOn(IntPtr instancePtr, string pszToken); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOnAnonymous")] -internal static extern void SteamAPI_ISteamGameServer_LogOnAnonymous(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOff")] -internal static extern void SteamAPI_ISteamGameServer_LogOff(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BLoggedOn")] -internal static extern bool SteamAPI_ISteamGameServer_BLoggedOn(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BSecure")] -internal static extern bool SteamAPI_ISteamGameServer_BSecure(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetSteamID")] -internal static extern ulong SteamAPI_ISteamGameServer_GetSteamID(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_WasRestartRequested")] -internal static extern bool SteamAPI_ISteamGameServer_WasRestartRequested(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMaxPlayerCount")] -internal static extern void SteamAPI_ISteamGameServer_SetMaxPlayerCount(IntPtr instancePtr, int cPlayersMax); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetBotPlayerCount")] -internal static extern void SteamAPI_ISteamGameServer_SetBotPlayerCount(IntPtr instancePtr, int cBotplayers); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetServerName")] -internal static extern void SteamAPI_ISteamGameServer_SetServerName(IntPtr instancePtr, string pszServerName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMapName")] -internal static extern void SteamAPI_ISteamGameServer_SetMapName(IntPtr instancePtr, string pszMapName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetPasswordProtected")] -internal static extern void SteamAPI_ISteamGameServer_SetPasswordProtected(IntPtr instancePtr, bool bPasswordProtected); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorPort")] -internal static extern void SteamAPI_ISteamGameServer_SetSpectatorPort(IntPtr instancePtr, char unSpectatorPort); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorServerName")] -internal static extern void SteamAPI_ISteamGameServer_SetSpectatorServerName(IntPtr instancePtr, string pszSpectatorServerName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ClearAllKeyValues")] -internal static extern void SteamAPI_ISteamGameServer_ClearAllKeyValues(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetKeyValue")] -internal static extern void SteamAPI_ISteamGameServer_SetKeyValue(IntPtr instancePtr, string pKey, string pValue); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameTags")] -internal static extern void SteamAPI_ISteamGameServer_SetGameTags(IntPtr instancePtr, string pchGameTags); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameData")] -internal static extern void SteamAPI_ISteamGameServer_SetGameData(IntPtr instancePtr, string pchGameData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetRegion")] -internal static extern void SteamAPI_ISteamGameServer_SetRegion(IntPtr instancePtr, string pszRegion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate")] -internal static extern bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(IntPtr instancePtr, uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref CSteamID pSteamIDUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection")] -internal static extern ulong SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect")] -internal static extern void SteamAPI_ISteamGameServer_SendUserDisconnect(IntPtr instancePtr, ulong steamIDUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData")] -internal static extern bool SteamAPI_ISteamGameServer_BUpdateUserData(IntPtr instancePtr, ulong steamIDUser, string pchPlayerName, uint uScore); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket")] -internal static extern uint SteamAPI_ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BeginAuthSession")] -internal static extern uint SteamAPI_ISteamGameServer_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EndAuthSession")] -internal static extern void SteamAPI_ISteamGameServer_EndAuthSession(IntPtr instancePtr, ulong steamID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CancelAuthTicket")] -internal static extern void SteamAPI_ISteamGameServer_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_UserHasLicenseForApp")] -internal static extern uint SteamAPI_ISteamGameServer_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_RequestUserGroupStatus")] -internal static extern bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(IntPtr instancePtr, ulong steamIDUser, ulong steamIDGroup); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetGameplayStats")] -internal static extern void SteamAPI_ISteamGameServer_GetGameplayStats(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetServerReputation")] -internal static extern ulong SteamAPI_ISteamGameServer_GetServerReputation(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetPublicIP")] -internal static extern uint SteamAPI_ISteamGameServer_GetPublicIP(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_HandleIncomingPacket")] -internal static extern bool SteamAPI_ISteamGameServer_HandleIncomingPacket(IntPtr instancePtr, IntPtr pData, int cbData, uint srcIP, char srcPort); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetNextOutgoingPacket")] -internal static extern int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(IntPtr instancePtr, IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref char pPort); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EnableHeartbeats")] -internal static extern void SteamAPI_ISteamGameServer_EnableHeartbeats(IntPtr instancePtr, bool bActive); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetHeartbeatInterval")] -internal static extern void SteamAPI_ISteamGameServer_SetHeartbeatInterval(IntPtr instancePtr, int iHeartbeatInterval); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ForceHeartbeat")] -internal static extern void SteamAPI_ISteamGameServer_ForceHeartbeat(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_AssociateWithClan")] -internal static extern ulong SteamAPI_ISteamGameServer_AssociateWithClan(IntPtr instancePtr, ulong steamIDClan); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility")] -internal static extern ulong SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(IntPtr instancePtr, ulong steamIDNewPlayer); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_RequestUserStats")] -internal static extern ulong SteamAPI_ISteamGameServerStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat")] -internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat0")] -internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserAchievement")] -internal static extern bool SteamAPI_ISteamGameServerStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat")] -internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, int nData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat0")] -internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, float fData); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat")] -internal static extern bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(IntPtr instancePtr, ulong steamIDUser, string pchName, float flCountThisSession, double dSessionLength); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserAchievement")] -internal static extern bool SteamAPI_ISteamGameServerStats_SetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_ClearUserAchievement")] -internal static extern bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_StoreUserStats")] -internal static extern ulong SteamAPI_ISteamGameServerStats_StoreUserStats(IntPtr instancePtr, ulong steamIDUser); -public delegate void SteamAPI_UserStatsReceived_t_Callback(UserStatsReceived_t pUserStatsReceived_t); -[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallback")] -public static extern ulong CUserStatsReceived_t_SetCallback(SteamAPI_UserStatsReceived_t_Callback func); -[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallback")] -public static extern ulong CUserStatsReceived_t_RemoveCallback(ulong handle); -public delegate void SteamAPI_GetOPFSettingsResult_t_Callback(GetOPFSettingsResult_t pGetOPFSettingsResult_t); -[DllImportAttribute("Steam_api", EntryPoint = "CGetOPFSettingsResult_t_SetCallback")] -public static extern ulong CGetOPFSettingsResult_t_SetCallback(SteamAPI_GetOPFSettingsResult_t_Callback func); -[DllImportAttribute("Steam_api", EntryPoint = "CGetOPFSettingsResult_t_RemoveCallback")] -public static extern ulong CGetOPFSettingsResult_t_RemoveCallback(ulong handle); -public delegate void SteamAPI_SteamInventoryStartPurchaseResult_t_CallResult(SteamInventoryStartPurchaseResult_t pSteamInventoryStartPurchaseResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamInventoryStartPurchaseResult_t_SetCallResult")] -public static extern ulong CSteamInventoryStartPurchaseResult_t_SetCallResult(ulong hAPICall, SteamAPI_SteamInventoryStartPurchaseResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamInventoryStartPurchaseResult_t_RemoveCallResult")] -public static extern ulong CSteamInventoryStartPurchaseResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult(RemoteStorageFileReadAsyncComplete_t pRemoteStorageFileReadAsyncComplete_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_SetCallResult")] -public static extern ulong CRemoteStorageFileReadAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult")] -public static extern ulong CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult(RemoteStorageGetPublishedItemVoteDetailsResult_t pRemoteStorageGetPublishedItemVoteDetailsResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult")] -public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_FileDetailsResult_t_CallResult(FileDetailsResult_t pFileDetailsResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_SetCallResult")] -public static extern ulong CFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_FileDetailsResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_RemoveCallResult")] -public static extern ulong CFileDetailsResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_GSStatsStored_t_CallResult(GSStatsStored_t pGSStatsStored_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_SetCallResult")] -public static extern ulong CGSStatsStored_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsStored_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_RemoveCallResult")] -public static extern ulong CGSStatsStored_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_StartPlaytimeTrackingResult_t_CallResult(StartPlaytimeTrackingResult_t pStartPlaytimeTrackingResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CStartPlaytimeTrackingResult_t_SetCallResult")] -public static extern ulong CStartPlaytimeTrackingResult_t_SetCallResult(ulong hAPICall, SteamAPI_StartPlaytimeTrackingResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CStartPlaytimeTrackingResult_t_RemoveCallResult")] -public static extern ulong CStartPlaytimeTrackingResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_FriendsGetFollowerCount_t_CallResult(FriendsGetFollowerCount_t pFriendsGetFollowerCount_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_SetCallResult")] -public static extern ulong CFriendsGetFollowerCount_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsGetFollowerCount_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_RemoveCallResult")] -public static extern ulong CFriendsGetFollowerCount_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_FriendsIsFollowing_t_CallResult(FriendsIsFollowing_t pFriendsIsFollowing_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_SetCallResult")] -public static extern ulong CFriendsIsFollowing_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsIsFollowing_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_RemoveCallResult")] -public static extern ulong CFriendsIsFollowing_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_LobbyMatchList_t_CallResult(LobbyMatchList_t pLobbyMatchList_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_SetCallResult")] -public static extern ulong CLobbyMatchList_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyMatchList_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_RemoveCallResult")] -public static extern ulong CLobbyMatchList_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult(RemoteStorageUpdatePublishedFileResult_t pRemoteStorageUpdatePublishedFileResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_SetCallResult")] -public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_StoreAuthURLResponse_t_CallResult(StoreAuthURLResponse_t pStoreAuthURLResponse_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_SetCallResult")] -public static extern ulong CStoreAuthURLResponse_t_SetCallResult(ulong hAPICall, SteamAPI_StoreAuthURLResponse_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_RemoveCallResult")] -public static extern ulong CStoreAuthURLResponse_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_LobbyCreated_t_CallResult(LobbyCreated_t pLobbyCreated_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_SetCallResult")] -public static extern ulong CLobbyCreated_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyCreated_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_RemoveCallResult")] -public static extern ulong CLobbyCreated_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult(RemoteStorageFileWriteAsyncComplete_t pRemoteStorageFileWriteAsyncComplete_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_SetCallResult")] -public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult")] -public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult(RemoteStorageDeletePublishedFileResult_t pRemoteStorageDeletePublishedFileResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_SetCallResult")] -public static extern ulong CRemoteStorageDeletePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult(RemoteStorageGetPublishedFileDetailsResult_t pRemoteStorageGetPublishedFileDetailsResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult")] -public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_AddUGCDependencyResult_t_CallResult(AddUGCDependencyResult_t pAddUGCDependencyResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CAddUGCDependencyResult_t_SetCallResult")] -public static extern ulong CAddUGCDependencyResult_t_SetCallResult(ulong hAPICall, SteamAPI_AddUGCDependencyResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CAddUGCDependencyResult_t_RemoveCallResult")] -public static extern ulong CAddUGCDependencyResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult(RemoteStorageDownloadUGCResult_t pRemoteStorageDownloadUGCResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_SetCallResult")] -public static extern ulong CRemoteStorageDownloadUGCResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageDownloadUGCResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_SteamUGCQueryCompleted_t_CallResult(SteamUGCQueryCompleted_t pSteamUGCQueryCompleted_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_SetCallResult")] -public static extern ulong CSteamUGCQueryCompleted_t_SetCallResult(ulong hAPICall, SteamAPI_SteamUGCQueryCompleted_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_RemoveCallResult")] -public static extern ulong CSteamUGCQueryCompleted_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageFileShareResult_t_CallResult(RemoteStorageFileShareResult_t pRemoteStorageFileShareResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_SetCallResult")] -public static extern ulong CRemoteStorageFileShareResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileShareResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageFileShareResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_LobbyEnter_t_CallResult(LobbyEnter_t pLobbyEnter_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_SetCallResult")] -public static extern ulong CLobbyEnter_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyEnter_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_RemoveCallResult")] -public static extern ulong CLobbyEnter_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_SubmitItemUpdateResult_t_CallResult(SubmitItemUpdateResult_t pSubmitItemUpdateResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_SetCallResult")] -public static extern ulong CSubmitItemUpdateResult_t_SetCallResult(ulong hAPICall, SteamAPI_SubmitItemUpdateResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_RemoveCallResult")] -public static extern ulong CSubmitItemUpdateResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_NumberOfCurrentPlayers_t_CallResult(NumberOfCurrentPlayers_t pNumberOfCurrentPlayers_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_SetCallResult")] -public static extern ulong CNumberOfCurrentPlayers_t_SetCallResult(ulong hAPICall, SteamAPI_NumberOfCurrentPlayers_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_RemoveCallResult")] -public static extern ulong CNumberOfCurrentPlayers_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_GSStatsReceived_t_CallResult(GSStatsReceived_t pGSStatsReceived_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_SetCallResult")] -public static extern ulong CGSStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsReceived_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_RemoveCallResult")] -public static extern ulong CGSStatsReceived_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_HTML_BrowserReady_t_CallResult(HTML_BrowserReady_t pHTML_BrowserReady_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_SetCallResult")] -public static extern ulong CHTML_BrowserReady_t_SetCallResult(ulong hAPICall, SteamAPI_HTML_BrowserReady_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_RemoveCallResult")] -public static extern ulong CHTML_BrowserReady_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_MarketEligibilityResponse_t_CallResult(MarketEligibilityResponse_t pMarketEligibilityResponse_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CMarketEligibilityResponse_t_SetCallResult")] -public static extern ulong CMarketEligibilityResponse_t_SetCallResult(ulong hAPICall, SteamAPI_MarketEligibilityResponse_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CMarketEligibilityResponse_t_RemoveCallResult")] -public static extern ulong CMarketEligibilityResponse_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_LeaderboardScoresDownloaded_t_CallResult(LeaderboardScoresDownloaded_t pLeaderboardScoresDownloaded_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_SetCallResult")] -public static extern ulong CLeaderboardScoresDownloaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoresDownloaded_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_RemoveCallResult")] -public static extern ulong CLeaderboardScoresDownloaded_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult(RemoteStorageUpdateUserPublishedItemVoteResult_t pRemoteStorageUpdateUserPublishedItemVoteResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult")] -public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_CreateBeaconCallback_t_CallResult(CreateBeaconCallback_t pCreateBeaconCallback_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CCreateBeaconCallback_t_SetCallResult")] -public static extern ulong CCreateBeaconCallback_t_SetCallResult(ulong hAPICall, SteamAPI_CreateBeaconCallback_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CCreateBeaconCallback_t_RemoveCallResult")] -public static extern ulong CCreateBeaconCallback_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_CreateItemResult_t_CallResult(CreateItemResult_t pCreateItemResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_SetCallResult")] -public static extern ulong CCreateItemResult_t_SetCallResult(ulong hAPICall, SteamAPI_CreateItemResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_RemoveCallResult")] -public static extern ulong CCreateItemResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_DeleteItemResult_t_CallResult(DeleteItemResult_t pDeleteItemResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CDeleteItemResult_t_SetCallResult")] -public static extern ulong CDeleteItemResult_t_SetCallResult(ulong hAPICall, SteamAPI_DeleteItemResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CDeleteItemResult_t_RemoveCallResult")] -public static extern ulong CDeleteItemResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_SetUserItemVoteResult_t_CallResult(SetUserItemVoteResult_t pSetUserItemVoteResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_SetCallResult")] -public static extern ulong CSetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_SetUserItemVoteResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_RemoveCallResult")] -public static extern ulong CSetUserItemVoteResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_SteamInventoryRequestPricesResult_t_CallResult(SteamInventoryRequestPricesResult_t pSteamInventoryRequestPricesResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamInventoryRequestPricesResult_t_SetCallResult")] -public static extern ulong CSteamInventoryRequestPricesResult_t_SetCallResult(ulong hAPICall, SteamAPI_SteamInventoryRequestPricesResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamInventoryRequestPricesResult_t_RemoveCallResult")] -public static extern ulong CSteamInventoryRequestPricesResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult(ComputeNewPlayerCompatibilityResult_t pComputeNewPlayerCompatibilityResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_SetCallResult")] -public static extern ulong CComputeNewPlayerCompatibilityResult_t_SetCallResult(ulong hAPICall, SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_RemoveCallResult")] -public static extern ulong CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_LeaderboardScoreUploaded_t_CallResult(LeaderboardScoreUploaded_t pLeaderboardScoreUploaded_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_SetCallResult")] -public static extern ulong CLeaderboardScoreUploaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoreUploaded_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_RemoveCallResult")] -public static extern ulong CLeaderboardScoreUploaded_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_JoinPartyCallback_t_CallResult(JoinPartyCallback_t pJoinPartyCallback_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CJoinPartyCallback_t_SetCallResult")] -public static extern ulong CJoinPartyCallback_t_SetCallResult(ulong hAPICall, SteamAPI_JoinPartyCallback_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CJoinPartyCallback_t_RemoveCallResult")] -public static extern ulong CJoinPartyCallback_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult(RemoteStorageEnumerateUserSubscribedFilesResult_t pRemoteStorageEnumerateUserSubscribedFilesResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult")] -public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_GlobalStatsReceived_t_CallResult(GlobalStatsReceived_t pGlobalStatsReceived_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_SetCallResult")] -public static extern ulong CGlobalStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalStatsReceived_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_RemoveCallResult")] -public static extern ulong CGlobalStatsReceived_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult(RemoteStorageEnumeratePublishedFilesByUserActionResult_t pRemoteStorageEnumeratePublishedFilesByUserActionResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult")] -public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_ClanOfficerListResponse_t_CallResult(ClanOfficerListResponse_t pClanOfficerListResponse_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_SetCallResult")] -public static extern ulong CClanOfficerListResponse_t_SetCallResult(ulong hAPICall, SteamAPI_ClanOfficerListResponse_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_RemoveCallResult")] -public static extern ulong CClanOfficerListResponse_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStoragePublishFileProgress_t_CallResult(RemoteStoragePublishFileProgress_t pRemoteStoragePublishFileProgress_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_SetCallResult")] -public static extern ulong CRemoteStoragePublishFileProgress_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_RemoveCallResult")] -public static extern ulong CRemoteStoragePublishFileProgress_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult(RemoteStorageEnumerateWorkshopFilesResult_t pRemoteStorageEnumerateWorkshopFilesResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult")] -public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoveUGCDependencyResult_t_CallResult(RemoveUGCDependencyResult_t pRemoveUGCDependencyResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoveUGCDependencyResult_t_SetCallResult")] -public static extern ulong CRemoveUGCDependencyResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoveUGCDependencyResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoveUGCDependencyResult_t_RemoveCallResult")] -public static extern ulong CRemoveUGCDependencyResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_GSReputation_t_CallResult(GSReputation_t pGSReputation_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_SetCallResult")] -public static extern ulong CGSReputation_t_SetCallResult(ulong hAPICall, SteamAPI_GSReputation_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_RemoveCallResult")] -public static extern ulong CGSReputation_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_GlobalAchievementPercentagesReady_t_CallResult(GlobalAchievementPercentagesReady_t pGlobalAchievementPercentagesReady_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_SetCallResult")] -public static extern ulong CGlobalAchievementPercentagesReady_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_RemoveCallResult")] -public static extern ulong CGlobalAchievementPercentagesReady_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_UserFavoriteItemsListChanged_t_CallResult(UserFavoriteItemsListChanged_t pUserFavoriteItemsListChanged_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_SetCallResult")] -public static extern ulong CUserFavoriteItemsListChanged_t_SetCallResult(ulong hAPICall, SteamAPI_UserFavoriteItemsListChanged_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_RemoveCallResult")] -public static extern ulong CUserFavoriteItemsListChanged_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_AddAppDependencyResult_t_CallResult(AddAppDependencyResult_t pAddAppDependencyResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CAddAppDependencyResult_t_SetCallResult")] -public static extern ulong CAddAppDependencyResult_t_SetCallResult(ulong hAPICall, SteamAPI_AddAppDependencyResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CAddAppDependencyResult_t_RemoveCallResult")] -public static extern ulong CAddAppDependencyResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_EncryptedAppTicketResponse_t_CallResult(EncryptedAppTicketResponse_t pEncryptedAppTicketResponse_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_SetCallResult")] -public static extern ulong CEncryptedAppTicketResponse_t_SetCallResult(ulong hAPICall, SteamAPI_EncryptedAppTicketResponse_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_RemoveCallResult")] -public static extern ulong CEncryptedAppTicketResponse_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult(RemoteStorageSetUserPublishedFileActionResult_t pRemoteStorageSetUserPublishedFileActionResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult")] -public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_StopPlaytimeTrackingResult_t_CallResult(StopPlaytimeTrackingResult_t pStopPlaytimeTrackingResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CStopPlaytimeTrackingResult_t_SetCallResult")] -public static extern ulong CStopPlaytimeTrackingResult_t_SetCallResult(ulong hAPICall, SteamAPI_StopPlaytimeTrackingResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CStopPlaytimeTrackingResult_t_RemoveCallResult")] -public static extern ulong CStopPlaytimeTrackingResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult(RemoteStorageEnumerateUserPublishedFilesResult_t pRemoteStorageEnumerateUserPublishedFilesResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult")] -public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_FriendsEnumerateFollowingList_t_CallResult(FriendsEnumerateFollowingList_t pFriendsEnumerateFollowingList_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_SetCallResult")] -public static extern ulong CFriendsEnumerateFollowingList_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsEnumerateFollowingList_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_RemoveCallResult")] -public static extern ulong CFriendsEnumerateFollowingList_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_ChangeNumOpenSlotsCallback_t_CallResult(ChangeNumOpenSlotsCallback_t pChangeNumOpenSlotsCallback_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CChangeNumOpenSlotsCallback_t_SetCallResult")] -public static extern ulong CChangeNumOpenSlotsCallback_t_SetCallResult(ulong hAPICall, SteamAPI_ChangeNumOpenSlotsCallback_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CChangeNumOpenSlotsCallback_t_RemoveCallResult")] -public static extern ulong CChangeNumOpenSlotsCallback_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult(RemoteStorageSubscribePublishedFileResult_t pRemoteStorageSubscribePublishedFileResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_SetCallResult")] -public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_GetUserItemVoteResult_t_CallResult(GetUserItemVoteResult_t pGetUserItemVoteResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_SetCallResult")] -public static extern ulong CGetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_GetUserItemVoteResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_RemoveCallResult")] -public static extern ulong CGetUserItemVoteResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_AssociateWithClanResult_t_CallResult(AssociateWithClanResult_t pAssociateWithClanResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_SetCallResult")] -public static extern ulong CAssociateWithClanResult_t_SetCallResult(ulong hAPICall, SteamAPI_AssociateWithClanResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_RemoveCallResult")] -public static extern ulong CAssociateWithClanResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_LeaderboardUGCSet_t_CallResult(LeaderboardUGCSet_t pLeaderboardUGCSet_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_SetCallResult")] -public static extern ulong CLeaderboardUGCSet_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardUGCSet_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_RemoveCallResult")] -public static extern ulong CLeaderboardUGCSet_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_CheckFileSignature_t_CallResult(CheckFileSignature_t pCheckFileSignature_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_SetCallResult")] -public static extern ulong CCheckFileSignature_t_SetCallResult(ulong hAPICall, SteamAPI_CheckFileSignature_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_RemoveCallResult")] -public static extern ulong CCheckFileSignature_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_GetAppDependenciesResult_t_CallResult(GetAppDependenciesResult_t pGetAppDependenciesResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CGetAppDependenciesResult_t_SetCallResult")] -public static extern ulong CGetAppDependenciesResult_t_SetCallResult(ulong hAPICall, SteamAPI_GetAppDependenciesResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CGetAppDependenciesResult_t_RemoveCallResult")] -public static extern ulong CGetAppDependenciesResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult(RemoteStorageUnsubscribePublishedFileResult_t pRemoteStorageUnsubscribePublishedFileResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult")] -public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult")] -public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_SetPersonaNameResponse_t_CallResult(SetPersonaNameResponse_t pSetPersonaNameResponse_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_SetCallResult")] -public static extern ulong CSetPersonaNameResponse_t_SetCallResult(ulong hAPICall, SteamAPI_SetPersonaNameResponse_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_RemoveCallResult")] -public static extern ulong CSetPersonaNameResponse_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_RemoveAppDependencyResult_t_CallResult(RemoveAppDependencyResult_t pRemoveAppDependencyResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoveAppDependencyResult_t_SetCallResult")] -public static extern ulong CRemoveAppDependencyResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoveAppDependencyResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CRemoveAppDependencyResult_t_RemoveCallResult")] -public static extern ulong CRemoveAppDependencyResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_UserStatsReceived_t_CallResult(UserStatsReceived_t pUserStatsReceived_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallResult")] -public static extern ulong CUserStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_UserStatsReceived_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallResult")] -public static extern ulong CUserStatsReceived_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_SteamInventoryEligiblePromoItemDefIDs_t_CallResult(SteamInventoryEligiblePromoItemDefIDs_t pSteamInventoryEligiblePromoItemDefIDs_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamInventoryEligiblePromoItemDefIDs_t_SetCallResult")] -public static extern ulong CSteamInventoryEligiblePromoItemDefIDs_t_SetCallResult(ulong hAPICall, SteamAPI_SteamInventoryEligiblePromoItemDefIDs_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CSteamInventoryEligiblePromoItemDefIDs_t_RemoveCallResult")] -public static extern ulong CSteamInventoryEligiblePromoItemDefIDs_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult(JoinClanChatRoomCompletionResult_t pJoinClanChatRoomCompletionResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_SetCallResult")] -public static extern ulong CJoinClanChatRoomCompletionResult_t_SetCallResult(ulong hAPICall, SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_RemoveCallResult")] -public static extern ulong CJoinClanChatRoomCompletionResult_t_RemoveCallResult(ulong handle); -public delegate void SteamAPI_LeaderboardFindResult_t_CallResult(LeaderboardFindResult_t pLeaderboardFindResult_t, bool bIOFailure); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_SetCallResult")] -public static extern ulong CLeaderboardFindResult_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardFindResult_t_CallResult func); -[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_RemoveCallResult")] -public static extern ulong CLeaderboardFindResult_t_RemoveCallResult(ulong handle); - -} - -} - -namespace Valve.Steamworks -{ - - public abstract class ISteamClient - { - public abstract IntPtr GetIntPtr(); - public abstract uint CreateSteamPipe(); - public abstract bool BReleaseSteamPipe(uint hSteamPipe); - public abstract uint ConnectToGlobalUser(uint hSteamPipe); - public abstract uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType); - public abstract void ReleaseUser(uint hSteamPipe,uint hUser); - public abstract ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract void SetLocalIPBinding(uint unIP,char usPort); - public abstract ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion); - public abstract ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamGameSearch GetISteamGameSearch(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract uint GetIPCCallCount(); - public abstract void SetWarningMessageHook(IntPtr pFunction); - public abstract bool BShutdownIfAllPipesClosed(); - public abstract ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamParentalSettings GetISteamParentalSettings(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract ISteamInput GetISteamInput(uint hSteamUser,uint hSteamPipe,string pchVersion); - public abstract ISteamParties GetISteamParties(uint hSteamUser,uint hSteamPipe,string pchVersion); - } - - - public abstract class ISteamUser - { - public abstract IntPtr GetIntPtr(); - public abstract uint GetHSteamUser(); - public abstract bool BLoggedOn(); - public abstract ulong GetSteamID(); - public abstract int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure); - public abstract void TerminateGameConnection(uint unIPServer,char usPortServer); - public abstract void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo); - public abstract bool GetUserDataFolder(string pchBuffer,int cubBuffer); - public abstract void StartVoiceRecording(); - public abstract void StopVoiceRecording(); - public abstract uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated); - public abstract uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed_Deprecated,IntPtr pUncompressedDestBuffer_Deprecated,uint cbUncompressedDestBufferSize_Deprecated,ref uint nUncompressBytesWritten_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated); - public abstract uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate); - public abstract uint GetVoiceOptimalSampleRate(); - public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); - public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); - public abstract void EndAuthSession(ulong steamID); - public abstract void CancelAuthTicket(uint hAuthTicket); - public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); - public abstract bool BIsBehindNAT(); - public abstract void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer); - public abstract ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude); - public abstract bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); - public abstract int GetGameBadgeLevel(int nSeries,bool bFoil); - public abstract int GetPlayerSteamLevel(); - public abstract ulong RequestStoreAuthURL(string pchRedirectURL); - public abstract bool BIsPhoneVerified(); - public abstract bool BIsTwoFactorEnabled(); - public abstract bool BIsPhoneIdentifying(); - public abstract bool BIsPhoneRequiringVerification(); - public abstract ulong GetMarketEligibility(); - } - - - public abstract class ISteamFriends - { - public abstract IntPtr GetIntPtr(); - public abstract string GetPersonaName(); - public abstract ulong SetPersonaName(string pchPersonaName); - public abstract uint GetPersonaState(); - public abstract int GetFriendCount(int iFriendFlags); - public abstract ulong GetFriendByIndex(int iFriend,int iFriendFlags); - public abstract uint GetFriendRelationship(ulong steamIDFriend); - public abstract uint GetFriendPersonaState(ulong steamIDFriend); - public abstract string GetFriendPersonaName(ulong steamIDFriend); - public abstract bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo); - public abstract string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName); - public abstract int GetFriendSteamLevel(ulong steamIDFriend); - public abstract string GetPlayerNickname(ulong steamIDPlayer); - public abstract int GetFriendsGroupCount(); - public abstract char GetFriendsGroupIDByIndex(int iFG); - public abstract string GetFriendsGroupName(char friendsGroupID); - public abstract int GetFriendsGroupMembersCount(char friendsGroupID); - public abstract void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers); - public abstract bool HasFriend(ulong steamIDFriend,int iFriendFlags); - public abstract int GetClanCount(); - public abstract ulong GetClanByIndex(int iClan); - public abstract string GetClanName(ulong steamIDClan); - public abstract string GetClanTag(ulong steamIDClan); - public abstract bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting); - public abstract ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans); - public abstract int GetFriendCountFromSource(ulong steamIDSource); - public abstract ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend); - public abstract bool IsUserInSource(ulong steamIDUser,ulong steamIDSource); - public abstract void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking); - public abstract void ActivateGameOverlay(string pchDialog); - public abstract void ActivateGameOverlayToUser(string pchDialog,ulong steamID); - public abstract void ActivateGameOverlayToWebPage(string pchURL,uint eMode); - public abstract void ActivateGameOverlayToStore(uint nAppID,char eFlag); - public abstract void SetPlayedWith(ulong steamIDUserPlayedWith); - public abstract void ActivateGameOverlayInviteDialog(ulong steamIDLobby); - public abstract int GetSmallFriendAvatar(ulong steamIDFriend); - public abstract int GetMediumFriendAvatar(ulong steamIDFriend); - public abstract int GetLargeFriendAvatar(ulong steamIDFriend); - public abstract bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly); - public abstract ulong RequestClanOfficerList(ulong steamIDClan); - public abstract ulong GetClanOwner(ulong steamIDClan); - public abstract int GetClanOfficerCount(ulong steamIDClan); - public abstract ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer); - public abstract uint GetUserRestrictions(); - public abstract bool SetRichPresence(string pchKey,string pchValue); - public abstract void ClearRichPresence(); - public abstract string GetFriendRichPresence(ulong steamIDFriend,string pchKey); - public abstract int GetFriendRichPresenceKeyCount(ulong steamIDFriend); - public abstract string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey); - public abstract void RequestFriendRichPresence(ulong steamIDFriend); - public abstract bool InviteUserToGame(ulong steamIDFriend,string pchConnectString); - public abstract int GetCoplayFriendCount(); - public abstract ulong GetCoplayFriend(int iCoplayFriend); - public abstract int GetFriendCoplayTime(ulong steamIDFriend); - public abstract uint GetFriendCoplayGame(ulong steamIDFriend); - public abstract ulong JoinClanChatRoom(ulong steamIDClan); - public abstract bool LeaveClanChatRoom(ulong steamIDClan); - public abstract int GetClanChatMemberCount(ulong steamIDClan); - public abstract ulong GetChatMemberByIndex(ulong steamIDClan,int iUser); - public abstract bool SendClanChatMessage(ulong steamIDClanChat,string pchText); - public abstract int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter); - public abstract bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser); - public abstract bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat); - public abstract bool OpenClanChatWindowInSteam(ulong steamIDClanChat); - public abstract bool CloseClanChatWindowInSteam(ulong steamIDClanChat); - public abstract bool SetListenForFriendsMessages(bool bInterceptEnabled); - public abstract bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend); - public abstract int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType); - public abstract ulong GetFollowerCount(ulong steamID); - public abstract ulong IsFollowing(ulong steamID); - public abstract ulong EnumerateFollowingList(uint unStartIndex); - public abstract bool IsClanPublic(ulong steamIDClan); - public abstract bool IsClanOfficialGameGroup(ulong steamIDClan); - public abstract int GetNumChatsWithUnreadPriorityMessages(); - } - - - public abstract class ISteamUtils - { - public abstract IntPtr GetIntPtr(); - public abstract uint GetSecondsSinceAppActive(); - public abstract uint GetSecondsSinceComputerActive(); - public abstract int GetConnectedUniverse(); - public abstract uint GetServerRealTime(); - public abstract string GetIPCountry(); - public abstract bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight); - public abstract bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize); - public abstract bool GetCSERIPPort(ref uint unIP,ref char usPort); - public abstract byte GetCurrentBatteryPower(); - public abstract uint GetAppID(); - public abstract void SetOverlayNotificationPosition(uint eNotificationPosition); - public abstract bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed); - public abstract int GetAPICallFailureReason(ulong hSteamAPICall); - public abstract bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed); - public abstract uint GetIPCCallCount(); - public abstract void SetWarningMessageHook(IntPtr pFunction); - public abstract bool IsOverlayEnabled(); - public abstract bool BOverlayNeedsPresent(); - public abstract ulong CheckFileSignature(string szFileName); - public abstract bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText); - public abstract uint GetEnteredGamepadTextLength(); - public abstract bool GetEnteredGamepadTextInput(string pchText,uint cchText); - public abstract string GetSteamUILanguage(); - public abstract bool IsSteamRunningInVR(); - public abstract void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset); - public abstract bool IsSteamInBigPictureMode(); - public abstract void StartVRDashboard(); - public abstract bool IsVRHeadsetStreamingEnabled(); - public abstract void SetVRHeadsetStreamingEnabled(bool bEnabled); - } - - - public abstract class ISteamMatchmaking - { - public abstract IntPtr GetIntPtr(); - public abstract int GetFavoriteGameCount(); - public abstract bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer); - public abstract int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer); - public abstract bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags); - public abstract ulong RequestLobbyList(); - public abstract void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType); - public abstract void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType); - public abstract void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo); - public abstract void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable); - public abstract void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter); - public abstract void AddRequestLobbyListResultCountFilter(int cMaxResults); - public abstract void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby); - public abstract ulong GetLobbyByIndex(int iLobby); - public abstract ulong CreateLobby(uint eLobbyType,int cMaxMembers); - public abstract ulong JoinLobby(ulong steamIDLobby); - public abstract void LeaveLobby(ulong steamIDLobby); - public abstract bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee); - public abstract int GetNumLobbyMembers(ulong steamIDLobby); - public abstract ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember); - public abstract string GetLobbyData(ulong steamIDLobby,string pchKey); - public abstract bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue); - public abstract int GetLobbyDataCount(ulong steamIDLobby); - public abstract bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize); - public abstract bool DeleteLobbyData(ulong steamIDLobby,string pchKey); - public abstract string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey); - public abstract void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue); - public abstract bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody); - public abstract int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType); - public abstract bool RequestLobbyData(ulong steamIDLobby); - public abstract void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer); - public abstract bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer); - public abstract bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers); - public abstract int GetLobbyMemberLimit(ulong steamIDLobby); - public abstract bool SetLobbyType(ulong steamIDLobby,uint eLobbyType); - public abstract bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable); - public abstract ulong GetLobbyOwner(ulong steamIDLobby); - public abstract bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner); - public abstract bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent); - } - - - public abstract class ISteamMatchmakingServerListResponse - { - public abstract IntPtr GetIntPtr(); - public abstract void ServerResponded(uint hRequest,int iServer); - public abstract void ServerFailedToRespond(uint hRequest,int iServer); - public abstract void RefreshComplete(uint hRequest,uint response); - } - - - public abstract class ISteamMatchmakingPingResponse - { - public abstract IntPtr GetIntPtr(); - public abstract void ServerResponded(IntPtr server); - public abstract void ServerFailedToRespond(); - } - - - public abstract class ISteamMatchmakingPlayersResponse - { - public abstract IntPtr GetIntPtr(); - public abstract void AddPlayerToList(string pchName,int nScore,float flTimePlayed); - public abstract void PlayersFailedToRespond(); - public abstract void PlayersRefreshComplete(); - } - - - public abstract class ISteamMatchmakingRulesResponse - { - public abstract IntPtr GetIntPtr(); - public abstract void RulesResponded(string pchRule,string pchValue); - public abstract void RulesFailedToRespond(); - public abstract void RulesRefreshComplete(); - } - - - public abstract class ISteamMatchmakingServers - { - public abstract IntPtr GetIntPtr(); - public abstract uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); - public abstract uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse); - public abstract uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); - public abstract uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); - public abstract uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); - public abstract uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); - public abstract void ReleaseRequest(uint hServerListRequest); - public abstract gameserveritem_t GetServerDetails(uint hRequest,int iServer); - public abstract void CancelQuery(uint hRequest); - public abstract void RefreshQuery(uint hRequest); - public abstract bool IsRefreshing(uint hRequest); - public abstract int GetServerCount(uint hRequest); - public abstract void RefreshServer(uint hRequest,int iServer); - public abstract uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse); - public abstract uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse); - public abstract uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse); - public abstract void CancelServerQuery(uint hServerQuery); - } - - - public abstract class ISteamGameSearch - { - public abstract IntPtr GetIntPtr(); - public abstract uint AddGameSearchParams(string pchKeyToFind,string pchValuesToFind); - public abstract uint SearchForGameWithLobby(ulong steamIDLobby,int nPlayerMin,int nPlayerMax); - public abstract uint SearchForGameSolo(int nPlayerMin,int nPlayerMax); - public abstract uint AcceptGame(); - public abstract uint DeclineGame(); - public abstract uint RetrieveConnectionDetails(ulong steamIDHost,string pchConnectionDetails,int cubConnectionDetails); - public abstract uint EndGameSearch(); - public abstract uint SetGameHostParams(string pchKey,string pchValue); - public abstract uint SetConnectionDetails(string pchConnectionDetails,int cubConnectionDetails); - public abstract uint RequestPlayersForGame(int nPlayerMin,int nPlayerMax,int nMaxTeamSize); - public abstract uint HostConfirmGameStart(ulong ullUniqueGameID); - public abstract uint CancelRequestPlayersForGame(); - public abstract uint SubmitPlayerResult(ulong ullUniqueGameID,ulong steamIDPlayer,uint EPlayerResult); - public abstract uint EndGame(ulong ullUniqueGameID); - } - - - public abstract class ISteamParties - { - public abstract IntPtr GetIntPtr(); - public abstract uint GetNumActiveBeacons(); - public abstract ulong GetBeaconByIndex(uint unIndex); - public abstract bool GetBeaconDetails(ulong ulBeaconID,ref CSteamID pSteamIDBeaconOwner,out SteamPartyBeaconLocation_t pLocation,out string pchMetadata); - public abstract ulong JoinParty(ulong ulBeaconID); - public abstract bool GetNumAvailableBeaconLocations(ref uint puNumLocations); - public abstract bool GetAvailableBeaconLocations(ref SteamPartyBeaconLocation_t pLocationList,uint uMaxNumLocations); - public abstract ulong CreateBeacon(uint unOpenSlots,ref SteamPartyBeaconLocation_t pBeaconLocation,string pchConnectString,string pchMetadata); - public abstract void OnReservationCompleted(ulong ulBeacon,ulong steamIDUser); - public abstract void CancelReservation(ulong ulBeacon,ulong steamIDUser); - public abstract ulong ChangeNumOpenSlots(ulong ulBeacon,uint unOpenSlots); - public abstract bool DestroyBeacon(ulong ulBeacon); - public abstract bool GetBeaconLocationData(SteamPartyBeaconLocation_t BeaconLocation,uint eData,out string pchDataStringOut); - } - - - public abstract class ISteamRemoteStorage - { - public abstract IntPtr GetIntPtr(); - public abstract bool FileWrite(string pchFile,IntPtr pvData,int cubData); - public abstract int FileRead(string pchFile,IntPtr pvData,int cubDataToRead); - public abstract ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData); - public abstract ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead); - public abstract bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead); - public abstract bool FileForget(string pchFile); - public abstract bool FileDelete(string pchFile); - public abstract ulong FileShare(string pchFile); - public abstract bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform); - public abstract ulong FileWriteStreamOpen(string pchFile); - public abstract bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData); - public abstract bool FileWriteStreamClose(ulong writeHandle); - public abstract bool FileWriteStreamCancel(ulong writeHandle); - public abstract bool FileExists(string pchFile); - public abstract bool FilePersisted(string pchFile); - public abstract int GetFileSize(string pchFile); - public abstract long GetFileTimestamp(string pchFile); - public abstract uint GetSyncPlatforms(string pchFile); - public abstract int GetFileCount(); - public abstract string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes); - public abstract bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes); - public abstract bool IsCloudEnabledForAccount(); - public abstract bool IsCloudEnabledForApp(); - public abstract void SetCloudEnabledForApp(bool bEnabled); - public abstract ulong UGCDownload(ulong hContent,uint unPriority); - public abstract bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected); - public abstract bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner); - public abstract int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction); - public abstract int GetCachedUGCCount(); - public abstract ulong GetCachedUGCHandle(int iCachedContent); - public abstract ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType); - public abstract ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId); - public abstract bool UpdatePublishedFileFile(ulong updateHandle,string pchFile); - public abstract bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile); - public abstract bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle); - public abstract bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription); - public abstract bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility); - public abstract bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags); - public abstract ulong CommitPublishedFileUpdate(ulong updateHandle); - public abstract ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld); - public abstract ulong DeletePublishedFile(ulong unPublishedFileId); - public abstract ulong EnumerateUserPublishedFiles(uint unStartIndex); - public abstract ulong SubscribePublishedFile(ulong unPublishedFileId); - public abstract ulong EnumerateUserSubscribedFiles(uint unStartIndex); - public abstract ulong UnsubscribePublishedFile(ulong unPublishedFileId); - public abstract bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription); - public abstract ulong GetPublishedItemVoteDetails(ulong unPublishedFileId); - public abstract ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp); - public abstract ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId); - public abstract ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags); - public abstract ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags); - public abstract ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction); - public abstract ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex); - public abstract ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags); - public abstract ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority); - } - - - public abstract class ISteamUserStats - { - public abstract IntPtr GetIntPtr(); - public abstract bool RequestCurrentStats(); - public abstract bool GetStat(string pchName,ref int pData); - public abstract bool GetStat0(string pchName,ref float pData); - public abstract bool SetStat(string pchName,int nData); - public abstract bool SetStat0(string pchName,float fData); - public abstract bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength); - public abstract bool GetAchievement(string pchName,ref bool pbAchieved); - public abstract bool SetAchievement(string pchName); - public abstract bool ClearAchievement(string pchName); - public abstract bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime); - public abstract bool StoreStats(); - public abstract int GetAchievementIcon(string pchName); - public abstract string GetAchievementDisplayAttribute(string pchName,string pchKey); - public abstract bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress); - public abstract uint GetNumAchievements(); - public abstract string GetAchievementName(uint iAchievement); - public abstract ulong RequestUserStats(ulong steamIDUser); - public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); - public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); - public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); - public abstract bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime); - public abstract bool ResetAllStats(bool bAchievementsToo); - public abstract ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType); - public abstract ulong FindLeaderboard(string pchLeaderboardName); - public abstract string GetLeaderboardName(ulong hSteamLeaderboard); - public abstract int GetLeaderboardEntryCount(ulong hSteamLeaderboard); - public abstract uint GetLeaderboardSortMethod(ulong hSteamLeaderboard); - public abstract uint GetLeaderboardDisplayType(ulong hSteamLeaderboard); - public abstract ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd); - public abstract ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers); - public abstract bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax); - public abstract ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount); - public abstract ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC); - public abstract ulong GetNumberOfCurrentPlayers(); - public abstract ulong RequestGlobalAchievementPercentages(); - public abstract int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); - public abstract int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); - public abstract bool GetAchievementAchievedPercent(string pchName,ref float pflPercent); - public abstract ulong RequestGlobalStats(int nHistoryDays); - public abstract bool GetGlobalStat(string pchStatName,ref long pData); - public abstract bool GetGlobalStat0(string pchStatName,ref double pData); - public abstract int GetGlobalStatHistory(string pchStatName,long [] pData); - public abstract int GetGlobalStatHistory0(string pchStatName,double [] pData); - } - - - public abstract class ISteamApps - { - public abstract IntPtr GetIntPtr(); - public abstract bool BIsSubscribed(); - public abstract bool BIsLowViolence(); - public abstract bool BIsCybercafe(); - public abstract bool BIsVACBanned(); - public abstract string GetCurrentGameLanguage(); - public abstract string GetAvailableGameLanguages(); - public abstract bool BIsSubscribedApp(uint appID); - public abstract bool BIsDlcInstalled(uint appID); - public abstract uint GetEarliestPurchaseUnixTime(uint nAppID); - public abstract bool BIsSubscribedFromFreeWeekend(); - public abstract int GetDLCCount(); - public abstract bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize); - public abstract void InstallDLC(uint nAppID); - public abstract void UninstallDLC(uint nAppID); - public abstract void RequestAppProofOfPurchaseKey(uint nAppID); - public abstract bool GetCurrentBetaName(string pchName,int cchNameBufferSize); - public abstract bool MarkContentCorrupt(bool bMissingFilesOnly); - public abstract uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots); - public abstract uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize); - public abstract bool BIsAppInstalled(uint appID); - public abstract ulong GetAppOwner(); - public abstract string GetLaunchQueryParam(string pchKey); - public abstract bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); - public abstract int GetAppBuildId(); - public abstract void RequestAllProofOfPurchaseKeys(); - public abstract ulong GetFileDetails(string pszFileName); - public abstract int GetLaunchCommandLine(string pszCommandLine,int cubCommandLine); - public abstract bool BIsSubscribedFromFamilySharing(); - } - - - public abstract class ISteamNetworking - { - public abstract IntPtr GetIntPtr(); - public abstract bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel); - public abstract bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel); - public abstract bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel); - public abstract bool AcceptP2PSessionWithUser(ulong steamIDRemote); - public abstract bool CloseP2PSessionWithUser(ulong steamIDRemote); - public abstract bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel); - public abstract bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState); - public abstract bool AllowP2PPacketRelay(bool bAllow); - public abstract uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay); - public abstract uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay); - public abstract uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec); - public abstract bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd); - public abstract bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd); - public abstract bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable); - public abstract bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize); - public abstract bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize); - public abstract bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket); - public abstract bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket); - public abstract bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote); - public abstract bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort); - public abstract uint GetSocketConnectionType(uint hSocket); - public abstract int GetMaxPacketSize(uint hSocket); - } - - - public abstract class ISteamScreenshots - { - public abstract IntPtr GetIntPtr(); - public abstract uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight); - public abstract uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight); - public abstract void TriggerScreenshot(); - public abstract void HookScreenshots(bool bHook); - public abstract bool SetLocation(uint hScreenshot,string pchLocation); - public abstract bool TagUser(uint hScreenshot,ulong steamID); - public abstract bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID); - public abstract bool IsScreenshotsHooked(); - public abstract uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename); - } - - - public abstract class ISteamMusic - { - public abstract IntPtr GetIntPtr(); - public abstract bool BIsEnabled(); - public abstract bool BIsPlaying(); - public abstract int GetPlaybackStatus(); - public abstract void Play(); - public abstract void Pause(); - public abstract void PlayPrevious(); - public abstract void PlayNext(); - public abstract void SetVolume(float flVolume); - public abstract float GetVolume(); - } - - - public abstract class ISteamMusicRemote - { - public abstract IntPtr GetIntPtr(); - public abstract bool RegisterSteamMusicRemote(string pchName); - public abstract bool DeregisterSteamMusicRemote(); - public abstract bool BIsCurrentMusicRemote(); - public abstract bool BActivationSuccess(bool bValue); - public abstract bool SetDisplayName(string pchDisplayName); - public abstract bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength); - public abstract bool EnablePlayPrevious(bool bValue); - public abstract bool EnablePlayNext(bool bValue); - public abstract bool EnableShuffled(bool bValue); - public abstract bool EnableLooped(bool bValue); - public abstract bool EnableQueue(bool bValue); - public abstract bool EnablePlaylists(bool bValue); - public abstract bool UpdatePlaybackStatus(int nStatus); - public abstract bool UpdateShuffled(bool bValue); - public abstract bool UpdateLooped(bool bValue); - public abstract bool UpdateVolume(float flValue); - public abstract bool CurrentEntryWillChange(); - public abstract bool CurrentEntryIsAvailable(bool bAvailable); - public abstract bool UpdateCurrentEntryText(string pchText); - public abstract bool UpdateCurrentEntryElapsedSeconds(int nValue); - public abstract bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength); - public abstract bool CurrentEntryDidChange(); - public abstract bool QueueWillChange(); - public abstract bool ResetQueueEntries(); - public abstract bool SetQueueEntry(int nID,int nPosition,string pchEntryText); - public abstract bool SetCurrentQueueEntry(int nID); - public abstract bool QueueDidChange(); - public abstract bool PlaylistWillChange(); - public abstract bool ResetPlaylistEntries(); - public abstract bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText); - public abstract bool SetCurrentPlaylistEntry(int nID); - public abstract bool PlaylistDidChange(); - } - - - public abstract class ISteamHTTP - { - public abstract IntPtr GetIntPtr(); - public abstract uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL); - public abstract bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue); - public abstract bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds); - public abstract bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue); - public abstract bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue); - public abstract bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle); - public abstract bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle); - public abstract bool DeferHTTPRequest(uint hRequest); - public abstract bool PrioritizeHTTPRequest(uint hRequest); - public abstract bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize); - public abstract bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize); - public abstract bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize); - public abstract bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize); - public abstract bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize); - public abstract bool ReleaseHTTPRequest(uint hRequest); - public abstract bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut); - public abstract bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen); - public abstract uint CreateCookieContainer(bool bAllowResponsesToModify); - public abstract bool ReleaseCookieContainer(uint hCookieContainer); - public abstract bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie); - public abstract bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer); - public abstract bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo); - public abstract bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate); - public abstract bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds); - public abstract bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut); - } - - - public abstract class ISteamInput - { - public abstract IntPtr GetIntPtr(); - public abstract bool Init(); - public abstract bool Shutdown(); - public abstract void RunFrame(); - public abstract int GetConnectedControllers(ref ulong handlesOut); - public abstract ulong GetActionSetHandle(string pszActionSetName); - public abstract void ActivateActionSet(ulong inputHandle,ulong actionSetHandle); - public abstract ulong GetCurrentActionSet(ulong inputHandle); - public abstract void ActivateActionSetLayer(ulong inputHandle,ulong actionSetLayerHandle); - public abstract void DeactivateActionSetLayer(ulong inputHandle,ulong actionSetLayerHandle); - public abstract void DeactivateAllActionSetLayers(ulong inputHandle); - public abstract int GetActiveActionSetLayers(ulong inputHandle,ref ulong handlesOut); - public abstract ulong GetDigitalActionHandle(string pszActionName); - public abstract InputDigitalActionData_t GetDigitalActionData(ulong inputHandle,ulong digitalActionHandle); - public abstract int GetDigitalActionOrigins(ulong inputHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut); - public abstract ulong GetAnalogActionHandle(string pszActionName); - public abstract InputAnalogActionData_t GetAnalogActionData(ulong inputHandle,ulong analogActionHandle); - public abstract int GetAnalogActionOrigins(ulong inputHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut); - public abstract string GetGlyphForActionOrigin(uint eOrigin); - public abstract string GetStringForActionOrigin(uint eOrigin); - public abstract void StopAnalogActionMomentum(ulong inputHandle,ulong eAction); - public abstract InputMotionData_t GetMotionData(ulong inputHandle); - public abstract void TriggerVibration(ulong inputHandle,char usLeftSpeed,char usRightSpeed); - public abstract void SetLEDColor(ulong inputHandle,byte nColorR,byte nColorG,byte nColorB,uint nFlags); - public abstract void TriggerHapticPulse(ulong inputHandle,uint eTargetPad,char usDurationMicroSec); - public abstract void TriggerRepeatedHapticPulse(ulong inputHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags); - public abstract bool ShowBindingPanel(ulong inputHandle); - public abstract uint GetInputTypeForHandle(ulong inputHandle); - public abstract ulong GetControllerForGamepadIndex(int nIndex); - public abstract int GetGamepadIndexForController(ulong ulinputHandle); - public abstract string GetStringForXboxOrigin(uint eOrigin); - public abstract string GetGlyphForXboxOrigin(uint eOrigin); - public abstract uint GetActionOriginFromXboxOrigin(ulong inputHandle,uint eOrigin); - public abstract uint TranslateActionOrigin(uint eDestinationInputType,uint eSourceOrigin); - } - - - public abstract class ISteamController - { - public abstract IntPtr GetIntPtr(); - public abstract bool Init(); - public abstract bool Shutdown(); - public abstract void RunFrame(); - public abstract int GetConnectedControllers(ref ulong handlesOut); - public abstract ulong GetActionSetHandle(string pszActionSetName); - public abstract void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle); - public abstract ulong GetCurrentActionSet(ulong controllerHandle); - public abstract void ActivateActionSetLayer(ulong controllerHandle,ulong actionSetLayerHandle); - public abstract void DeactivateActionSetLayer(ulong controllerHandle,ulong actionSetLayerHandle); - public abstract void DeactivateAllActionSetLayers(ulong controllerHandle); - public abstract int GetActiveActionSetLayers(ulong controllerHandle,ref ulong handlesOut); - public abstract ulong GetDigitalActionHandle(string pszActionName); - public abstract InputDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle); - public abstract int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut); - public abstract ulong GetAnalogActionHandle(string pszActionName); - public abstract InputAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle); - public abstract int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut); - public abstract string GetGlyphForActionOrigin(uint eOrigin); - public abstract string GetStringForActionOrigin(uint eOrigin); - public abstract void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction); - public abstract InputMotionData_t GetMotionData(ulong controllerHandle); - public abstract void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec); - public abstract void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags); - public abstract void TriggerVibration(ulong controllerHandle,char usLeftSpeed,char usRightSpeed); - public abstract void SetLEDColor(ulong controllerHandle,byte nColorR,byte nColorG,byte nColorB,uint nFlags); - public abstract bool ShowBindingPanel(ulong controllerHandle); - public abstract uint GetInputTypeForHandle(ulong controllerHandle); - public abstract ulong GetControllerForGamepadIndex(int nIndex); - public abstract int GetGamepadIndexForController(ulong ulControllerHandle); - public abstract string GetStringForXboxOrigin(uint eOrigin); - public abstract string GetGlyphForXboxOrigin(uint eOrigin); - public abstract uint GetActionOriginFromXboxOrigin(ulong controllerHandle,uint eOrigin); - public abstract uint TranslateActionOrigin(uint eDestinationInputType,uint eSourceOrigin); - } - - - public abstract class ISteamUGC - { - public abstract IntPtr GetIntPtr(); - public abstract ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage); - public abstract ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage); - public abstract ulong CreateQueryAllUGCRequest0(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,string pchCursor); - public abstract ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); - public abstract ulong SendQueryUGCRequest(ulong handle); - public abstract bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails); - public abstract bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL); - public abstract bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata); - public abstract bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries); - public abstract bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue); - public abstract uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index); - public abstract bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType); - public abstract uint GetQueryUGCNumKeyValueTags(ulong handle,uint index); - public abstract bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue); - public abstract bool ReleaseQueryUGCRequest(ulong handle); - public abstract bool AddRequiredTag(ulong handle,string pTagName); - public abstract bool AddExcludedTag(ulong handle,string pTagName); - public abstract bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs); - public abstract bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags); - public abstract bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription); - public abstract bool SetReturnMetadata(ulong handle,bool bReturnMetadata); - public abstract bool SetReturnChildren(ulong handle,bool bReturnChildren); - public abstract bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews); - public abstract bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly); - public abstract bool SetReturnPlaytimeStats(ulong handle,uint unDays); - public abstract bool SetLanguage(ulong handle,string pchLanguage); - public abstract bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds); - public abstract bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName); - public abstract bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag); - public abstract bool SetSearchText(ulong handle,string pSearchText); - public abstract bool SetRankedByTrendDays(ulong handle,uint unDays); - public abstract bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue); - public abstract ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds); - public abstract ulong CreateItem(uint nConsumerAppId,uint eFileType); - public abstract ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID); - public abstract bool SetItemTitle(ulong handle,string pchTitle); - public abstract bool SetItemDescription(ulong handle,string pchDescription); - public abstract bool SetItemUpdateLanguage(ulong handle,string pchLanguage); - public abstract bool SetItemMetadata(ulong handle,string pchMetaData); - public abstract bool SetItemVisibility(ulong handle,uint eVisibility); - public abstract bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags); - public abstract bool SetItemContent(ulong handle,string pszContentFolder); - public abstract bool SetItemPreview(ulong handle,string pszPreviewFile); - public abstract bool SetAllowLegacyUpload(ulong handle,bool bAllowLegacyUpload); - public abstract bool RemoveItemKeyValueTags(ulong handle,string pchKey); - public abstract bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue); - public abstract bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type); - public abstract bool AddItemPreviewVideo(ulong handle,string pszVideoID); - public abstract bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile); - public abstract bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID); - public abstract bool RemoveItemPreview(ulong handle,uint index); - public abstract ulong SubmitItemUpdate(ulong handle,string pchChangeNote); - public abstract uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal); - public abstract ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp); - public abstract ulong GetUserItemVote(ulong nPublishedFileID); - public abstract ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID); - public abstract ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID); - public abstract ulong SubscribeItem(ulong nPublishedFileID); - public abstract ulong UnsubscribeItem(ulong nPublishedFileID); - public abstract uint GetNumSubscribedItems(); - public abstract uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries); - public abstract uint GetItemState(ulong nPublishedFileID); - public abstract bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp); - public abstract bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); - public abstract bool DownloadItem(ulong nPublishedFileID,bool bHighPriority); - public abstract bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder); - public abstract void SuspendDownloads(bool bSuspend); - public abstract ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); - public abstract ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); - public abstract ulong StopPlaytimeTrackingForAllItems(); - public abstract ulong AddDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID); - public abstract ulong RemoveDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID); - public abstract ulong AddAppDependency(ulong nPublishedFileID,uint nAppID); - public abstract ulong RemoveAppDependency(ulong nPublishedFileID,uint nAppID); - public abstract ulong GetAppDependencies(ulong nPublishedFileID); - public abstract ulong DeleteItem(ulong nPublishedFileID); - } - - - public abstract class ISteamAppList - { - public abstract IntPtr GetIntPtr(); - public abstract uint GetNumInstalledApps(); - public abstract uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs); - public abstract int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax); - public abstract int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax); - public abstract int GetAppBuildId(uint nAppID); - } - - - public abstract class ISteamHTMLSurface - { - public abstract IntPtr GetIntPtr(); - public abstract void DestructISteamHTMLSurface(); - public abstract bool Init(); - public abstract bool Shutdown(); - public abstract ulong CreateBrowser(string pchUserAgent,string pchUserCSS); - public abstract void RemoveBrowser(uint unBrowserHandle); - public abstract void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData); - public abstract void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight); - public abstract void StopLoad(uint unBrowserHandle); - public abstract void Reload(uint unBrowserHandle); - public abstract void GoBack(uint unBrowserHandle); - public abstract void GoForward(uint unBrowserHandle); - public abstract void AddHeader(uint unBrowserHandle,string pchKey,string pchValue); - public abstract void ExecuteJavascript(uint unBrowserHandle,string pchScript); - public abstract void MouseUp(uint unBrowserHandle,uint eMouseButton); - public abstract void MouseDown(uint unBrowserHandle,uint eMouseButton); - public abstract void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton); - public abstract void MouseMove(uint unBrowserHandle,int x,int y); - public abstract void MouseWheel(uint unBrowserHandle,int nDelta); - public abstract void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers,bool bIsSystemKey); - public abstract void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); - public abstract void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers); - public abstract void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); - public abstract void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); - public abstract void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus); - public abstract void ViewSource(uint unBrowserHandle); - public abstract void CopyToClipboard(uint unBrowserHandle); - public abstract void PasteFromClipboard(uint unBrowserHandle); - public abstract void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse); - public abstract void StopFind(uint unBrowserHandle); - public abstract void GetLinkAtPosition(uint unBrowserHandle,int x,int y); - public abstract void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly); - public abstract void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY); - public abstract void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode); - public abstract void SetDPIScalingFactor(uint unBrowserHandle,float flDPIScaling); - public abstract void OpenDeveloperTools(uint unBrowserHandle); - public abstract void AllowStartRequest(uint unBrowserHandle,bool bAllowed); - public abstract void JSDialogResponse(uint unBrowserHandle,bool bResult); - } - - - public abstract class ISteamInventory - { - public abstract IntPtr GetIntPtr(); - public abstract uint GetResultStatus(int resultHandle); - public abstract bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray); - public abstract bool GetResultItemProperty(int resultHandle,uint unItemIndex,string pchPropertyName,out string pchValueBuffer); - public abstract uint GetResultTimestamp(int resultHandle); - public abstract bool CheckResultSteamID(int resultHandle,ulong steamIDExpected); - public abstract void DestroyResult(int resultHandle); - public abstract bool GetAllItems(ref int pResultHandle); - public abstract bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs); - public abstract bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize); - public abstract bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE); - public abstract bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity); - public abstract bool GrantPromoItems(ref int pResultHandle); - public abstract bool AddPromoItem(ref int pResultHandle,int itemDef); - public abstract bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs); - public abstract bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity); - public abstract bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity); - public abstract bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest); - public abstract void SendItemDropHeartbeat(); - public abstract bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition); - public abstract bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity); - public abstract bool LoadItemDefinitions(); - public abstract bool GetItemDefinitionIDs(out int [] pItemDefIDs); - public abstract bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer); - public abstract ulong RequestEligiblePromoItemDefinitionsIDs(ulong steamID); - public abstract bool GetEligiblePromoItemDefinitionIDs(ulong steamID,out int [] pItemDefIDs); - public abstract ulong StartPurchase(int [] pArrayItemDefs,uint [] punArrayQuantity); - public abstract ulong RequestPrices(); - public abstract uint GetNumItemsWithPrices(); - public abstract bool GetItemsWithPrices(out int [] pArrayItemDefs,out ulong [] pCurrentPrices,out ulong [] pBasePrices,uint unArrayLength); - public abstract bool GetItemPrice(int iDefinition,ref ulong pCurrentPrice,ref ulong pBasePrice); - public abstract ulong StartUpdateProperties(); - public abstract bool RemoveProperty(ulong handle,ulong nItemID,string pchPropertyName); - public abstract bool SetProperty(ulong handle,ulong nItemID,string pchPropertyName,string pchPropertyValue); - public abstract bool SetProperty0(ulong handle,ulong nItemID,string pchPropertyName,bool bValue); - public abstract bool SetProperty1(ulong handle,ulong nItemID,string pchPropertyName,long nValue); - public abstract bool SetProperty2(ulong handle,ulong nItemID,string pchPropertyName,float flValue); - public abstract bool SubmitUpdateProperties(ulong handle,ref int pResultHandle); - } - - - public abstract class ISteamVideo - { - public abstract IntPtr GetIntPtr(); - public abstract void GetVideoURL(uint unVideoAppID); - public abstract bool IsBroadcasting(ref int pnNumViewers); - public abstract void GetOPFSettings(uint unVideoAppID); - public abstract bool GetOPFStringForApp(uint unVideoAppID,string pchBuffer,ref int pnBufferSize); - } - - - public abstract class ISteamParentalSettings - { - public abstract IntPtr GetIntPtr(); - public abstract bool BIsParentalLockEnabled(); - public abstract bool BIsParentalLockLocked(); - public abstract bool BIsAppBlocked(uint nAppID); - public abstract bool BIsAppInBlockList(uint nAppID); - public abstract bool BIsFeatureBlocked(uint eFeature); - public abstract bool BIsFeatureInBlockList(uint eFeature); - } - - - public abstract class ISteamGameServer - { - public abstract IntPtr GetIntPtr(); - public abstract bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString); - public abstract void SetProduct(string pszProduct); - public abstract void SetGameDescription(string pszGameDescription); - public abstract void SetModDir(string pszModDir); - public abstract void SetDedicatedServer(bool bDedicated); - public abstract void LogOn(string pszToken); - public abstract void LogOnAnonymous(); - public abstract void LogOff(); - public abstract bool BLoggedOn(); - public abstract bool BSecure(); - public abstract ulong GetSteamID(); - public abstract bool WasRestartRequested(); - public abstract void SetMaxPlayerCount(int cPlayersMax); - public abstract void SetBotPlayerCount(int cBotplayers); - public abstract void SetServerName(string pszServerName); - public abstract void SetMapName(string pszMapName); - public abstract void SetPasswordProtected(bool bPasswordProtected); - public abstract void SetSpectatorPort(char unSpectatorPort); - public abstract void SetSpectatorServerName(string pszSpectatorServerName); - public abstract void ClearAllKeyValues(); - public abstract void SetKeyValue(string pKey,string pValue); - public abstract void SetGameTags(string pchGameTags); - public abstract void SetGameData(string pchGameData); - public abstract void SetRegion(string pszRegion); - public abstract bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser); - public abstract ulong CreateUnauthenticatedUserConnection(); - public abstract void SendUserDisconnect(ulong steamIDUser); - public abstract bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore); - public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); - public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); - public abstract void EndAuthSession(ulong steamID); - public abstract void CancelAuthTicket(uint hAuthTicket); - public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); - public abstract bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup); - public abstract void GetGameplayStats(); - public abstract ulong GetServerReputation(); - public abstract uint GetPublicIP(); - public abstract bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort); - public abstract int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort); - public abstract void EnableHeartbeats(bool bActive); - public abstract void SetHeartbeatInterval(int iHeartbeatInterval); - public abstract void ForceHeartbeat(); - public abstract ulong AssociateWithClan(ulong steamIDClan); - public abstract ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer); - } - - - public abstract class ISteamGameServerStats - { - public abstract IntPtr GetIntPtr(); - public abstract ulong RequestUserStats(ulong steamIDUser); - public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); - public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); - public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); - public abstract bool SetUserStat(ulong steamIDUser,string pchName,int nData); - public abstract bool SetUserStat0(ulong steamIDUser,string pchName,float fData); - public abstract bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength); - public abstract bool SetUserAchievement(ulong steamIDUser,string pchName); - public abstract bool ClearUserAchievement(ulong steamIDUser,string pchName); - public abstract ulong StoreUserStats(ulong steamIDUser); - } - - -public class CSteamClient : ISteamClient -{ -public CSteamClient(IntPtr SteamClient) -{ - m_pSteamClient = SteamClient; -} -IntPtr m_pSteamClient; - -public override IntPtr GetIntPtr() { return m_pSteamClient; } - -private void CheckIfUsable() -{ - if (m_pSteamClient == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint CreateSteamPipe() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateSteamPipe(m_pSteamClient); - return result; -} -public override bool BReleaseSteamPipe(uint hSteamPipe) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamClient_BReleaseSteamPipe(m_pSteamClient,hSteamPipe); - return result; -} -public override uint ConnectToGlobalUser(uint hSteamPipe) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamClient_ConnectToGlobalUser(m_pSteamClient,hSteamPipe); - return result; -} -public override uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType) -{ - CheckIfUsable(); - phSteamPipe = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateLocalUser(m_pSteamClient,ref phSteamPipe,eAccountType); - return result; -} -public override void ReleaseUser(uint hSteamPipe,uint hUser) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamClient_ReleaseUser(m_pSteamClient,hSteamPipe,hUser); -} -public override ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUser(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamUser) Marshal.PtrToStructure(result, typeof(ISteamUser)); -} -public override ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServer(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamGameServer) Marshal.PtrToStructure(result, typeof(ISteamGameServer)); -} -public override void SetLocalIPBinding(uint unIP,char usPort) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamClient_SetLocalIPBinding(m_pSteamClient,unIP,usPort); -} -public override ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamFriends(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamFriends) Marshal.PtrToStructure(result, typeof(ISteamFriends)); -} -public override ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUtils(m_pSteamClient,hSteamPipe,pchVersion); - return (ISteamUtils) Marshal.PtrToStructure(result, typeof(ISteamUtils)); -} -public override ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmaking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamMatchmaking) Marshal.PtrToStructure(result, typeof(ISteamMatchmaking)); -} -public override ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmakingServers(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamMatchmakingServers) Marshal.PtrToStructure(result, typeof(ISteamMatchmakingServers)); -} -public override IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGenericInterface(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (IntPtr) Marshal.PtrToStructure(result, typeof(IntPtr)); -} -public override ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUserStats(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamUserStats) Marshal.PtrToStructure(result, typeof(ISteamUserStats)); -} -public override ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServerStats(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamGameServerStats) Marshal.PtrToStructure(result, typeof(ISteamGameServerStats)); -} -public override ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamApps(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamApps) Marshal.PtrToStructure(result, typeof(ISteamApps)); -} -public override ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamNetworking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamNetworking) Marshal.PtrToStructure(result, typeof(ISteamNetworking)); -} -public override ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamRemoteStorage(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamRemoteStorage) Marshal.PtrToStructure(result, typeof(ISteamRemoteStorage)); -} -public override ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamScreenshots(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamScreenshots) Marshal.PtrToStructure(result, typeof(ISteamScreenshots)); -} -public override ISteamGameSearch GetISteamGameSearch(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameSearch(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamGameSearch) Marshal.PtrToStructure(result, typeof(ISteamGameSearch)); -} -public override uint GetIPCCallCount() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamClient_GetIPCCallCount(m_pSteamClient); - return result; -} -public override void SetWarningMessageHook(IntPtr pFunction) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamClient_SetWarningMessageHook(m_pSteamClient,pFunction); -} -public override bool BShutdownIfAllPipesClosed() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(m_pSteamClient); - return result; -} -public override ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTTP(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamHTTP) Marshal.PtrToStructure(result, typeof(ISteamHTTP)); -} -public override ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamController(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamController) Marshal.PtrToStructure(result, typeof(ISteamController)); -} -public override ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUGC(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamUGC) Marshal.PtrToStructure(result, typeof(ISteamUGC)); -} -public override ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamAppList(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamAppList) Marshal.PtrToStructure(result, typeof(ISteamAppList)); -} -public override ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusic(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamMusic) Marshal.PtrToStructure(result, typeof(ISteamMusic)); -} -public override ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusicRemote(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamMusicRemote) Marshal.PtrToStructure(result, typeof(ISteamMusicRemote)); -} -public override ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTMLSurface(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamHTMLSurface) Marshal.PtrToStructure(result, typeof(ISteamHTMLSurface)); -} -public override ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamInventory(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamInventory) Marshal.PtrToStructure(result, typeof(ISteamInventory)); -} -public override ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamVideo(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamVideo) Marshal.PtrToStructure(result, typeof(ISteamVideo)); -} -public override ISteamParentalSettings GetISteamParentalSettings(uint hSteamuser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamParentalSettings(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); - return (ISteamParentalSettings) Marshal.PtrToStructure(result, typeof(ISteamParentalSettings)); -} -public override ISteamInput GetISteamInput(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamInput(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamInput) Marshal.PtrToStructure(result, typeof(ISteamInput)); -} -public override ISteamParties GetISteamParties(uint hSteamUser,uint hSteamPipe,string pchVersion) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamParties(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); - return (ISteamParties) Marshal.PtrToStructure(result, typeof(ISteamParties)); -} -} - - -public class CSteamUser : ISteamUser -{ -public CSteamUser(IntPtr SteamUser) -{ - m_pSteamUser = SteamUser; -} -IntPtr m_pSteamUser; - -public override IntPtr GetIntPtr() { return m_pSteamUser; } - -private void CheckIfUsable() -{ - if (m_pSteamUser == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint GetHSteamUser() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetHSteamUser(m_pSteamUser); - return result; -} -public override bool BLoggedOn() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUser_BLoggedOn(m_pSteamUser); - return result; -} -public override ulong GetSteamID() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUser_GetSteamID(m_pSteamUser); - return result; -} -public override int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUser_InitiateGameConnection(m_pSteamUser,pAuthBlob,cbMaxAuthBlob,steamIDGameServer,unIPServer,usPortServer,bSecure); - return result; -} -public override void TerminateGameConnection(uint unIPServer,char usPortServer) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUser_TerminateGameConnection(m_pSteamUser,unIPServer,usPortServer); -} -public override void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUser_TrackAppUsageEvent(m_pSteamUser,gameID,eAppUsageEvent,pchExtraInfo); -} -public override bool GetUserDataFolder(string pchBuffer,int cubBuffer) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetUserDataFolder(m_pSteamUser,pchBuffer,cubBuffer); - return result; -} -public override void StartVoiceRecording() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUser_StartVoiceRecording(m_pSteamUser); -} -public override void StopVoiceRecording() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUser_StopVoiceRecording(m_pSteamUser); -} -public override uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated) -{ - CheckIfUsable(); - pcbCompressed = 0; - pcbUncompressed_Deprecated = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAvailableVoice(m_pSteamUser,ref pcbCompressed,ref pcbUncompressed_Deprecated,nUncompressedVoiceDesiredSampleRate_Deprecated); - return result; -} -public override uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed_Deprecated,IntPtr pUncompressedDestBuffer_Deprecated,uint cbUncompressedDestBufferSize_Deprecated,ref uint nUncompressBytesWritten_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated) -{ - CheckIfUsable(); - nBytesWritten = 0; - nUncompressBytesWritten_Deprecated = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoice(m_pSteamUser,bWantCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,bWantUncompressed_Deprecated,pUncompressedDestBuffer_Deprecated,cbUncompressedDestBufferSize_Deprecated,ref nUncompressBytesWritten_Deprecated,nUncompressedVoiceDesiredSampleRate_Deprecated); - return result; -} -public override uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate) -{ - CheckIfUsable(); - nBytesWritten = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUser_DecompressVoice(m_pSteamUser,pCompressed,cbCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,nDesiredSampleRate); - return result; -} -public override uint GetVoiceOptimalSampleRate() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(m_pSteamUser); - return result; -} -public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) -{ - CheckIfUsable(); - pcbTicket = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAuthSessionTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); - return result; -} -public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUser_BeginAuthSession(m_pSteamUser,pAuthTicket,cbAuthTicket,steamID); - return result; -} -public override void EndAuthSession(ulong steamID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUser_EndAuthSession(m_pSteamUser,steamID); -} -public override void CancelAuthTicket(uint hAuthTicket) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUser_CancelAuthTicket(m_pSteamUser,hAuthTicket); -} -public override uint UserHasLicenseForApp(ulong steamID,uint appID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUser_UserHasLicenseForApp(m_pSteamUser,steamID,appID); - return result; -} -public override bool BIsBehindNAT() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsBehindNAT(m_pSteamUser); - return result; -} -public override void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUser_AdvertiseGame(m_pSteamUser,steamIDGameServer,unIPServer,usPortServer); -} -public override ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestEncryptedAppTicket(m_pSteamUser,pDataToInclude,cbDataToInclude); - return result; -} -public override bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) -{ - CheckIfUsable(); - pcbTicket = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetEncryptedAppTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); - return result; -} -public override int GetGameBadgeLevel(int nSeries,bool bFoil) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUser_GetGameBadgeLevel(m_pSteamUser,nSeries,bFoil); - return result; -} -public override int GetPlayerSteamLevel() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUser_GetPlayerSteamLevel(m_pSteamUser); - return result; -} -public override ulong RequestStoreAuthURL(string pchRedirectURL) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestStoreAuthURL(m_pSteamUser,pchRedirectURL); - return result; -} -public override bool BIsPhoneVerified() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneVerified(m_pSteamUser); - return result; -} -public override bool BIsTwoFactorEnabled() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsTwoFactorEnabled(m_pSteamUser); - return result; -} -public override bool BIsPhoneIdentifying() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneIdentifying(m_pSteamUser); - return result; -} -public override bool BIsPhoneRequiringVerification() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneRequiringVerification(m_pSteamUser); - return result; -} -public override ulong GetMarketEligibility() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUser_GetMarketEligibility(m_pSteamUser); - return result; -} -} - - -public class CSteamFriends : ISteamFriends -{ -public CSteamFriends(IntPtr SteamFriends) -{ - m_pSteamFriends = SteamFriends; -} -IntPtr m_pSteamFriends; - -public override IntPtr GetIntPtr() { return m_pSteamFriends; } - -private void CheckIfUsable() -{ - if (m_pSteamFriends == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override string GetPersonaName() -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaName(m_pSteamFriends); - return Marshal.PtrToStringAnsi(result); -} -public override ulong SetPersonaName(string pchPersonaName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_SetPersonaName(m_pSteamFriends,pchPersonaName); - return result; -} -public override uint GetPersonaState() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaState(m_pSteamFriends); - return result; -} -public override int GetFriendCount(int iFriendFlags) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCount(m_pSteamFriends,iFriendFlags); - return result; -} -public override ulong GetFriendByIndex(int iFriend,int iFriendFlags) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendByIndex(m_pSteamFriends,iFriend,iFriendFlags); - return result; -} -public override uint GetFriendRelationship(ulong steamIDFriend) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRelationship(m_pSteamFriends,steamIDFriend); - return result; -} -public override uint GetFriendPersonaState(ulong steamIDFriend) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaState(m_pSteamFriends,steamIDFriend); - return result; -} -public override string GetFriendPersonaName(ulong steamIDFriend) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaName(m_pSteamFriends,steamIDFriend); - return Marshal.PtrToStringAnsi(result); -} -public override bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo) -{ - CheckIfUsable(); - pFriendGameInfo = new FriendGameInfo_t(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendGamePlayed(m_pSteamFriends,steamIDFriend,ref pFriendGameInfo); - return result; -} -public override string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(m_pSteamFriends,steamIDFriend,iPersonaName); - return Marshal.PtrToStringAnsi(result); -} -public override int GetFriendSteamLevel(ulong steamIDFriend) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendSteamLevel(m_pSteamFriends,steamIDFriend); - return result; -} -public override string GetPlayerNickname(ulong steamIDPlayer) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPlayerNickname(m_pSteamFriends,steamIDPlayer); - return Marshal.PtrToStringAnsi(result); -} -public override int GetFriendsGroupCount() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupCount(m_pSteamFriends); - return result; -} -public override char GetFriendsGroupIDByIndex(int iFG) -{ - CheckIfUsable(); - char result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(m_pSteamFriends,iFG); - return result; -} -public override string GetFriendsGroupName(char friendsGroupID) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupName(m_pSteamFriends,friendsGroupID); - return Marshal.PtrToStringAnsi(result); -} -public override int GetFriendsGroupMembersCount(char friendsGroupID) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(m_pSteamFriends,friendsGroupID); - return result; -} -public override void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers) -{ - CheckIfUsable(); - int nMembersCount = GetFriendsGroupMembersCount (friendsGroupID); - pOutSteamIDMembers = new CSteamID[nMembersCount]; - NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersList(m_pSteamFriends,friendsGroupID,pOutSteamIDMembers,nMembersCount); -} -public override bool HasFriend(ulong steamIDFriend,int iFriendFlags) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_HasFriend(m_pSteamFriends,steamIDFriend,iFriendFlags); - return result; -} -public override int GetClanCount() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanCount(m_pSteamFriends); - return result; -} -public override ulong GetClanByIndex(int iClan) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanByIndex(m_pSteamFriends,iClan); - return result; -} -public override string GetClanName(ulong steamIDClan) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanName(m_pSteamFriends,steamIDClan); - return Marshal.PtrToStringAnsi(result); -} -public override string GetClanTag(ulong steamIDClan) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanTag(m_pSteamFriends,steamIDClan); - return Marshal.PtrToStringAnsi(result); -} -public override bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting) -{ - CheckIfUsable(); - pnOnline = 0; - pnInGame = 0; - pnChatting = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanActivityCounts(m_pSteamFriends,steamIDClan,ref pnOnline,ref pnInGame,ref pnChatting); - return result; -} -public override ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_DownloadClanActivityCounts(m_pSteamFriends,psteamIDClans,(int) psteamIDClans.Length); - return result; -} -public override int GetFriendCountFromSource(ulong steamIDSource) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCountFromSource(m_pSteamFriends,steamIDSource); - return result; -} -public override ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(m_pSteamFriends,steamIDSource,iFriend); - return result; -} -public override bool IsUserInSource(ulong steamIDUser,ulong steamIDSource) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsUserInSource(m_pSteamFriends,steamIDUser,steamIDSource); - return result; -} -public override void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(m_pSteamFriends,steamIDUser,bSpeaking); -} -public override void ActivateGameOverlay(string pchDialog) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlay(m_pSteamFriends,pchDialog); -} -public override void ActivateGameOverlayToUser(string pchDialog,ulong steamID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToUser(m_pSteamFriends,pchDialog,steamID); -} -public override void ActivateGameOverlayToWebPage(string pchURL,uint eMode) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(m_pSteamFriends,pchURL,eMode); -} -public override void ActivateGameOverlayToStore(uint nAppID,char eFlag) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToStore(m_pSteamFriends,nAppID,eFlag); -} -public override void SetPlayedWith(ulong steamIDUserPlayedWith) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_SetPlayedWith(m_pSteamFriends,steamIDUserPlayedWith); -} -public override void ActivateGameOverlayInviteDialog(ulong steamIDLobby) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(m_pSteamFriends,steamIDLobby); -} -public override int GetSmallFriendAvatar(ulong steamIDFriend) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetSmallFriendAvatar(m_pSteamFriends,steamIDFriend); - return result; -} -public override int GetMediumFriendAvatar(ulong steamIDFriend) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetMediumFriendAvatar(m_pSteamFriends,steamIDFriend); - return result; -} -public override int GetLargeFriendAvatar(ulong steamIDFriend) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetLargeFriendAvatar(m_pSteamFriends,steamIDFriend); - return result; -} -public override bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestUserInformation(m_pSteamFriends,steamIDUser,bRequireNameOnly); - return result; -} -public override ulong RequestClanOfficerList(ulong steamIDClan) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestClanOfficerList(m_pSteamFriends,steamIDClan); - return result; -} -public override ulong GetClanOwner(ulong steamIDClan) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOwner(m_pSteamFriends,steamIDClan); - return result; -} -public override int GetClanOfficerCount(ulong steamIDClan) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerCount(m_pSteamFriends,steamIDClan); - return result; -} -public override ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerByIndex(m_pSteamFriends,steamIDClan,iOfficer); - return result; -} -public override uint GetUserRestrictions() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetUserRestrictions(m_pSteamFriends); - return result; -} -public override bool SetRichPresence(string pchKey,string pchValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetRichPresence(m_pSteamFriends,pchKey,pchValue); - return result; -} -public override void ClearRichPresence() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_ClearRichPresence(m_pSteamFriends); -} -public override string GetFriendRichPresence(ulong steamIDFriend,string pchKey) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresence(m_pSteamFriends,steamIDFriend,pchKey); - return Marshal.PtrToStringAnsi(result); -} -public override int GetFriendRichPresenceKeyCount(ulong steamIDFriend) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(m_pSteamFriends,steamIDFriend); - return result; -} -public override string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(m_pSteamFriends,steamIDFriend,iKey); - return Marshal.PtrToStringAnsi(result); -} -public override void RequestFriendRichPresence(ulong steamIDFriend) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamFriends_RequestFriendRichPresence(m_pSteamFriends,steamIDFriend); -} -public override bool InviteUserToGame(ulong steamIDFriend,string pchConnectString) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_InviteUserToGame(m_pSteamFriends,steamIDFriend,pchConnectString); - return result; -} -public override int GetCoplayFriendCount() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriendCount(m_pSteamFriends); - return result; -} -public override ulong GetCoplayFriend(int iCoplayFriend) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriend(m_pSteamFriends,iCoplayFriend); - return result; -} -public override int GetFriendCoplayTime(ulong steamIDFriend) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayTime(m_pSteamFriends,steamIDFriend); - return result; -} -public override uint GetFriendCoplayGame(ulong steamIDFriend) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayGame(m_pSteamFriends,steamIDFriend); - return result; -} -public override ulong JoinClanChatRoom(ulong steamIDClan) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_JoinClanChatRoom(m_pSteamFriends,steamIDClan); - return result; -} -public override bool LeaveClanChatRoom(ulong steamIDClan) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_LeaveClanChatRoom(m_pSteamFriends,steamIDClan); - return result; -} -public override int GetClanChatMemberCount(ulong steamIDClan) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMemberCount(m_pSteamFriends,steamIDClan); - return result; -} -public override ulong GetChatMemberByIndex(ulong steamIDClan,int iUser) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetChatMemberByIndex(m_pSteamFriends,steamIDClan,iUser); - return result; -} -public override bool SendClanChatMessage(ulong steamIDClanChat,string pchText) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SendClanChatMessage(m_pSteamFriends,steamIDClanChat,pchText); - return result; -} -public override int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter) -{ - CheckIfUsable(); - peChatEntryType = 0; - psteamidChatter = new CSteamID(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMessage(m_pSteamFriends,steamIDClanChat,iMessage,prgchText,cchTextMax,ref peChatEntryType,ref psteamidChatter); - return result; -} -public override bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatAdmin(m_pSteamFriends,steamIDClanChat,steamIDUser); - return result; -} -public override bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(m_pSteamFriends,steamIDClanChat); - return result; -} -public override bool OpenClanChatWindowInSteam(ulong steamIDClanChat) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); - return result; -} -public override bool CloseClanChatWindowInSteam(ulong steamIDClanChat) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); - return result; -} -public override bool SetListenForFriendsMessages(bool bInterceptEnabled) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetListenForFriendsMessages(m_pSteamFriends,bInterceptEnabled); - return result; -} -public override bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_ReplyToFriendMessage(m_pSteamFriends,steamIDFriend,pchMsgToSend); - return result; -} -public override int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType) -{ - CheckIfUsable(); - peChatEntryType = 0; - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendMessage(m_pSteamFriends,steamIDFriend,iMessageID,pvData,cubData,ref peChatEntryType); - return result; -} -public override ulong GetFollowerCount(ulong steamID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFollowerCount(m_pSteamFriends,steamID); - return result; -} -public override ulong IsFollowing(ulong steamID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_IsFollowing(m_pSteamFriends,steamID); - return result; -} -public override ulong EnumerateFollowingList(uint unStartIndex) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_EnumerateFollowingList(m_pSteamFriends,unStartIndex); - return result; -} -public override bool IsClanPublic(ulong steamIDClan) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanPublic(m_pSteamFriends,steamIDClan); - return result; -} -public override bool IsClanOfficialGameGroup(ulong steamIDClan) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanOfficialGameGroup(m_pSteamFriends,steamIDClan); - return result; -} -public override int GetNumChatsWithUnreadPriorityMessages() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages(m_pSteamFriends); - return result; -} -} - - -public class CSteamUtils : ISteamUtils -{ -public CSteamUtils(IntPtr SteamUtils) -{ - m_pSteamUtils = SteamUtils; -} -IntPtr m_pSteamUtils; - -public override IntPtr GetIntPtr() { return m_pSteamUtils; } - -private void CheckIfUsable() -{ - if (m_pSteamUtils == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint GetSecondsSinceAppActive() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceAppActive(m_pSteamUtils); - return result; -} -public override uint GetSecondsSinceComputerActive() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(m_pSteamUtils); - return result; -} -public override int GetConnectedUniverse() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetConnectedUniverse(m_pSteamUtils); - return result; -} -public override uint GetServerRealTime() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetServerRealTime(m_pSteamUtils); - return result; -} -public override string GetIPCountry() -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCountry(m_pSteamUtils); - return Marshal.PtrToStringAnsi(result); -} -public override bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight) -{ - CheckIfUsable(); - pnWidth = 0; - pnHeight = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageSize(m_pSteamUtils,iImage,ref pnWidth,ref pnHeight); - return result; -} -public override bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageRGBA(m_pSteamUtils,iImage,pubDest,nDestBufferSize); - return result; -} -public override bool GetCSERIPPort(ref uint unIP,ref char usPort) -{ - CheckIfUsable(); - unIP = 0; - usPort = (char) 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCSERIPPort(m_pSteamUtils,ref unIP,ref usPort); - return result; -} -public override byte GetCurrentBatteryPower() -{ - CheckIfUsable(); - byte result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCurrentBatteryPower(m_pSteamUtils); - return result; -} -public override uint GetAppID() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAppID(m_pSteamUtils); - return result; -} -public override void SetOverlayNotificationPosition(uint eNotificationPosition) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationPosition(m_pSteamUtils,eNotificationPosition); -} -public override bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed) -{ - CheckIfUsable(); - pbFailed = false; - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsAPICallCompleted(m_pSteamUtils,hSteamAPICall,ref pbFailed); - return result; -} -public override int GetAPICallFailureReason(ulong hSteamAPICall) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallFailureReason(m_pSteamUtils,hSteamAPICall); - return result; -} -public override bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed) -{ - CheckIfUsable(); - pbFailed = false; - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallResult(m_pSteamUtils,hSteamAPICall,pCallback,cubCallback,iCallbackExpected,ref pbFailed); - return result; -} -public override uint GetIPCCallCount() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCCallCount(m_pSteamUtils); - return result; -} -public override void SetWarningMessageHook(IntPtr pFunction) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUtils_SetWarningMessageHook(m_pSteamUtils,pFunction); -} -public override bool IsOverlayEnabled() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsOverlayEnabled(m_pSteamUtils); - return result; -} -public override bool BOverlayNeedsPresent() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_BOverlayNeedsPresent(m_pSteamUtils); - return result; -} -public override ulong CheckFileSignature(string szFileName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUtils_CheckFileSignature(m_pSteamUtils,szFileName); - return result; -} -public override bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_ShowGamepadTextInput(m_pSteamUtils,eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText); - return result; -} -public override uint GetEnteredGamepadTextLength() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(m_pSteamUtils); - return result; -} -public override bool GetEnteredGamepadTextInput(string pchText,uint cchText) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(m_pSteamUtils,pchText,cchText); - return result; -} -public override string GetSteamUILanguage() -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSteamUILanguage(m_pSteamUtils); - return Marshal.PtrToStringAnsi(result); -} -public override bool IsSteamRunningInVR() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamRunningInVR(m_pSteamUtils); - return result; -} -public override void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationInset(m_pSteamUtils,nHorizontalInset,nVerticalInset); -} -public override bool IsSteamInBigPictureMode() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamInBigPictureMode(m_pSteamUtils); - return result; -} -public override void StartVRDashboard() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUtils_StartVRDashboard(m_pSteamUtils); -} -public override bool IsVRHeadsetStreamingEnabled() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled(m_pSteamUtils); - return result; -} -public override void SetVRHeadsetStreamingEnabled(bool bEnabled) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled(m_pSteamUtils,bEnabled); -} -} - - -public class CSteamMatchmaking : ISteamMatchmaking -{ -public CSteamMatchmaking(IntPtr SteamMatchmaking) -{ - m_pSteamMatchmaking = SteamMatchmaking; -} -IntPtr m_pSteamMatchmaking; - -public override IntPtr GetIntPtr() { return m_pSteamMatchmaking; } - -private void CheckIfUsable() -{ - if (m_pSteamMatchmaking == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override int GetFavoriteGameCount() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(m_pSteamMatchmaking); - return result; -} -public override bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer) -{ - CheckIfUsable(); - pnAppID = 0; - pnIP = 0; - pnConnPort = (char) 0; - pnQueryPort = (char) 0; - punFlags = 0; - pRTime32LastPlayedOnServer = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGame(m_pSteamMatchmaking,iGame,ref pnAppID,ref pnIP,ref pnConnPort,ref pnQueryPort,ref punFlags,ref pRTime32LastPlayedOnServer); - return result; -} -public override int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags,rTime32LastPlayedOnServer); - return result; -} -public override bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags); - return result; -} -public override ulong RequestLobbyList() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyList(m_pSteamMatchmaking); - return result; -} -public override void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(m_pSteamMatchmaking,pchKeyToMatch,pchValueToMatch,eComparisonType); -} -public override void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToMatch,eComparisonType); -} -public override void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToBeCloseTo); -} -public override void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(m_pSteamMatchmaking,nSlotsAvailable); -} -public override void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(m_pSteamMatchmaking,eLobbyDistanceFilter); -} -public override void AddRequestLobbyListResultCountFilter(int cMaxResults) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(m_pSteamMatchmaking,cMaxResults); -} -public override void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(m_pSteamMatchmaking,steamIDLobby); -} -public override ulong GetLobbyByIndex(int iLobby) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyByIndex(m_pSteamMatchmaking,iLobby); - return result; -} -public override ulong CreateLobby(uint eLobbyType,int cMaxMembers) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_CreateLobby(m_pSteamMatchmaking,eLobbyType,cMaxMembers); - return result; -} -public override ulong JoinLobby(ulong steamIDLobby) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_JoinLobby(m_pSteamMatchmaking,steamIDLobby); - return result; -} -public override void LeaveLobby(ulong steamIDLobby) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_LeaveLobby(m_pSteamMatchmaking,steamIDLobby); -} -public override bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_InviteUserToLobby(m_pSteamMatchmaking,steamIDLobby,steamIDInvitee); - return result; -} -public override int GetNumLobbyMembers(ulong steamIDLobby) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(m_pSteamMatchmaking,steamIDLobby); - return result; -} -public override ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(m_pSteamMatchmaking,steamIDLobby,iMember); - return result; -} -public override string GetLobbyData(ulong steamIDLobby,string pchKey) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); - return Marshal.PtrToStringAnsi(result); -} -public override bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); - return result; -} -public override int GetLobbyDataCount(ulong steamIDLobby) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataCount(m_pSteamMatchmaking,steamIDLobby); - return result; -} -public override bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(m_pSteamMatchmaking,steamIDLobby,iLobbyData,pchKey,cchKeyBufferSize,pchValue,cchValueBufferSize); - return result; -} -public override bool DeleteLobbyData(ulong steamIDLobby,string pchKey) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_DeleteLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); - return result; -} -public override string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,steamIDUser,pchKey); - return Marshal.PtrToStringAnsi(result); -} -public override void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); -} -public override bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(m_pSteamMatchmaking,steamIDLobby,pvMsgBody,cubMsgBody); - return result; -} -public override int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType) -{ - CheckIfUsable(); - pSteamIDUser = new CSteamID(); - peChatEntryType = 0; - int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(m_pSteamMatchmaking,steamIDLobby,iChatID,ref pSteamIDUser,pvData,cubData,ref peChatEntryType); - return result; -} -public override bool RequestLobbyData(ulong steamIDLobby) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyData(m_pSteamMatchmaking,steamIDLobby); - return result; -} -public override void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,unGameServerIP,unGameServerPort,steamIDGameServer); -} -public override bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer) -{ - CheckIfUsable(); - punGameServerIP = 0; - punGameServerPort = (char) 0; - psteamIDGameServer = new CSteamID(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,ref punGameServerIP,ref punGameServerPort,ref psteamIDGameServer); - return result; -} -public override bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby,cMaxMembers); - return result; -} -public override int GetLobbyMemberLimit(ulong steamIDLobby) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby); - return result; -} -public override bool SetLobbyType(ulong steamIDLobby,uint eLobbyType) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyType(m_pSteamMatchmaking,steamIDLobby,eLobbyType); - return result; -} -public override bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyJoinable(m_pSteamMatchmaking,steamIDLobby,bLobbyJoinable); - return result; -} -public override ulong GetLobbyOwner(ulong steamIDLobby) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyOwner(m_pSteamMatchmaking,steamIDLobby); - return result; -} -public override bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyOwner(m_pSteamMatchmaking,steamIDLobby,steamIDNewOwner); - return result; -} -public override bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLinkedLobby(m_pSteamMatchmaking,steamIDLobby,steamIDLobbyDependent); - return result; -} -} - - -public class CSteamMatchmakingServerListResponse : ISteamMatchmakingServerListResponse -{ -public CSteamMatchmakingServerListResponse(IntPtr SteamMatchmakingServerListResponse) -{ - m_pSteamMatchmakingServerListResponse = SteamMatchmakingServerListResponse; -} -IntPtr m_pSteamMatchmakingServerListResponse; - -public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServerListResponse; } - -private void CheckIfUsable() -{ - if (m_pSteamMatchmakingServerListResponse == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override void ServerResponded(uint hRequest,int iServer) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(m_pSteamMatchmakingServerListResponse,hRequest,iServer); -} -public override void ServerFailedToRespond(uint hRequest,int iServer) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(m_pSteamMatchmakingServerListResponse,hRequest,iServer); -} -public override void RefreshComplete(uint hRequest,uint response) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(m_pSteamMatchmakingServerListResponse,hRequest,response); -} -} - - -public class CSteamMatchmakingPingResponse : ISteamMatchmakingPingResponse -{ -public CSteamMatchmakingPingResponse(IntPtr SteamMatchmakingPingResponse) -{ - m_pSteamMatchmakingPingResponse = SteamMatchmakingPingResponse; -} -IntPtr m_pSteamMatchmakingPingResponse; - -public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPingResponse; } - -private void CheckIfUsable() -{ - if (m_pSteamMatchmakingPingResponse == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override void ServerResponded(IntPtr server) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(m_pSteamMatchmakingPingResponse,server); -} -public override void ServerFailedToRespond() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(m_pSteamMatchmakingPingResponse); -} -} - - -public class CSteamMatchmakingPlayersResponse : ISteamMatchmakingPlayersResponse -{ -public CSteamMatchmakingPlayersResponse(IntPtr SteamMatchmakingPlayersResponse) -{ - m_pSteamMatchmakingPlayersResponse = SteamMatchmakingPlayersResponse; -} -IntPtr m_pSteamMatchmakingPlayersResponse; - -public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPlayersResponse; } - -private void CheckIfUsable() -{ - if (m_pSteamMatchmakingPlayersResponse == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override void AddPlayerToList(string pchName,int nScore,float flTimePlayed) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(m_pSteamMatchmakingPlayersResponse,pchName,nScore,flTimePlayed); -} -public override void PlayersFailedToRespond() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(m_pSteamMatchmakingPlayersResponse); -} -public override void PlayersRefreshComplete() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(m_pSteamMatchmakingPlayersResponse); -} -} - - -public class CSteamMatchmakingRulesResponse : ISteamMatchmakingRulesResponse -{ -public CSteamMatchmakingRulesResponse(IntPtr SteamMatchmakingRulesResponse) -{ - m_pSteamMatchmakingRulesResponse = SteamMatchmakingRulesResponse; -} -IntPtr m_pSteamMatchmakingRulesResponse; - -public override IntPtr GetIntPtr() { return m_pSteamMatchmakingRulesResponse; } - -private void CheckIfUsable() -{ - if (m_pSteamMatchmakingRulesResponse == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override void RulesResponded(string pchRule,string pchValue) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(m_pSteamMatchmakingRulesResponse,pchRule,pchValue); -} -public override void RulesFailedToRespond() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(m_pSteamMatchmakingRulesResponse); -} -public override void RulesRefreshComplete() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(m_pSteamMatchmakingRulesResponse); -} -} - - -public class CSteamMatchmakingServers : ISteamMatchmakingServers -{ -public CSteamMatchmakingServers(IntPtr SteamMatchmakingServers) -{ - m_pSteamMatchmakingServers = SteamMatchmakingServers; -} -IntPtr m_pSteamMatchmakingServers; - -public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServers; } - -private void CheckIfUsable() -{ - if (m_pSteamMatchmakingServers == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); - return result; -} -public override uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestLANServerList(m_pSteamMatchmakingServers,iApp,pRequestServersResponse.GetIntPtr()); - return result; -} -public override uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); - return result; -} -public override uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); - return result; -} -public override uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); - return result; -} -public override uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); - return result; -} -public override void ReleaseRequest(uint hServerListRequest) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ReleaseRequest(m_pSteamMatchmakingServers,hServerListRequest); -} -public override gameserveritem_t GetServerDetails(uint hRequest,int iServer) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerDetails(m_pSteamMatchmakingServers,hRequest,iServer); - return (gameserveritem_t) Marshal.PtrToStructure(result, typeof(gameserveritem_t)); -} -public override void CancelQuery(uint hRequest) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelQuery(m_pSteamMatchmakingServers,hRequest); -} -public override void RefreshQuery(uint hRequest) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshQuery(m_pSteamMatchmakingServers,hRequest); -} -public override bool IsRefreshing(uint hRequest) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_IsRefreshing(m_pSteamMatchmakingServers,hRequest); - return result; -} -public override int GetServerCount(uint hRequest) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerCount(m_pSteamMatchmakingServers,hRequest); - return result; -} -public override void RefreshServer(uint hRequest,int iServer) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshServer(m_pSteamMatchmakingServers,hRequest,iServer); -} -public override uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PingServer(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); - return result; -} -public override uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PlayerDetails(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); - return result; -} -public override uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ServerRules(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); - return result; -} -public override void CancelServerQuery(uint hServerQuery) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelServerQuery(m_pSteamMatchmakingServers,hServerQuery); -} -} - - -public class CSteamGameSearch : ISteamGameSearch -{ -public CSteamGameSearch(IntPtr SteamGameSearch) -{ - m_pSteamGameSearch = SteamGameSearch; -} -IntPtr m_pSteamGameSearch; - -public override IntPtr GetIntPtr() { return m_pSteamGameSearch; } - -private void CheckIfUsable() -{ - if (m_pSteamGameSearch == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint AddGameSearchParams(string pchKeyToFind,string pchValuesToFind) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_AddGameSearchParams(m_pSteamGameSearch,pchKeyToFind,pchValuesToFind); - return result; -} -public override uint SearchForGameWithLobby(ulong steamIDLobby,int nPlayerMin,int nPlayerMax) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_SearchForGameWithLobby(m_pSteamGameSearch,steamIDLobby,nPlayerMin,nPlayerMax); - return result; -} -public override uint SearchForGameSolo(int nPlayerMin,int nPlayerMax) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_SearchForGameSolo(m_pSteamGameSearch,nPlayerMin,nPlayerMax); - return result; -} -public override uint AcceptGame() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_AcceptGame(m_pSteamGameSearch); - return result; -} -public override uint DeclineGame() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_DeclineGame(m_pSteamGameSearch); - return result; -} -public override uint RetrieveConnectionDetails(ulong steamIDHost,string pchConnectionDetails,int cubConnectionDetails) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_RetrieveConnectionDetails(m_pSteamGameSearch,steamIDHost,pchConnectionDetails,cubConnectionDetails); - return result; -} -public override uint EndGameSearch() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_EndGameSearch(m_pSteamGameSearch); - return result; -} -public override uint SetGameHostParams(string pchKey,string pchValue) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_SetGameHostParams(m_pSteamGameSearch,pchKey,pchValue); - return result; -} -public override uint SetConnectionDetails(string pchConnectionDetails,int cubConnectionDetails) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_SetConnectionDetails(m_pSteamGameSearch,pchConnectionDetails,cubConnectionDetails); - return result; -} -public override uint RequestPlayersForGame(int nPlayerMin,int nPlayerMax,int nMaxTeamSize) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_RequestPlayersForGame(m_pSteamGameSearch,nPlayerMin,nPlayerMax,nMaxTeamSize); - return result; -} -public override uint HostConfirmGameStart(ulong ullUniqueGameID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_HostConfirmGameStart(m_pSteamGameSearch,ullUniqueGameID); - return result; -} -public override uint CancelRequestPlayersForGame() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame(m_pSteamGameSearch); - return result; -} -public override uint SubmitPlayerResult(ulong ullUniqueGameID,ulong steamIDPlayer,uint EPlayerResult) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_SubmitPlayerResult(m_pSteamGameSearch,ullUniqueGameID,steamIDPlayer,EPlayerResult); - return result; -} -public override uint EndGame(ulong ullUniqueGameID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameSearch_EndGame(m_pSteamGameSearch,ullUniqueGameID); - return result; -} -} - - -public class CSteamParties : ISteamParties -{ -public CSteamParties(IntPtr SteamParties) -{ - m_pSteamParties = SteamParties; -} -IntPtr m_pSteamParties; - -public override IntPtr GetIntPtr() { return m_pSteamParties; } - -private void CheckIfUsable() -{ - if (m_pSteamParties == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint GetNumActiveBeacons() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamParties_GetNumActiveBeacons(m_pSteamParties); - return result; -} -public override ulong GetBeaconByIndex(uint unIndex) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamParties_GetBeaconByIndex(m_pSteamParties,unIndex); - return result; -} -public override bool GetBeaconDetails(ulong ulBeaconID,ref CSteamID pSteamIDBeaconOwner,out SteamPartyBeaconLocation_t pLocation,out string pchMetadata) -{ - CheckIfUsable(); - pLocation = new SteamPartyBeaconLocation_t(); - int cchMetadata = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamParties_GetBeaconDetails(m_pSteamParties,ulBeaconID,ref pSteamIDBeaconOwner,ref pLocation,null,ref cchMetadata); - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)cchMetadata); - result = NativeEntrypoints.SteamAPI_ISteamParties_GetBeaconDetails(m_pSteamParties,ulBeaconID,ref pSteamIDBeaconOwner,ref pLocation,pStrBuffer1,ref cchMetadata); - pchMetadata = pStrBuffer1.ToString(); - return result; -} -public override ulong JoinParty(ulong ulBeaconID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamParties_JoinParty(m_pSteamParties,ulBeaconID); - return result; -} -public override bool GetNumAvailableBeaconLocations(ref uint puNumLocations) -{ - CheckIfUsable(); - puNumLocations = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamParties_GetNumAvailableBeaconLocations(m_pSteamParties,ref puNumLocations); - return result; -} -public override bool GetAvailableBeaconLocations(ref SteamPartyBeaconLocation_t pLocationList,uint uMaxNumLocations) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParties_GetAvailableBeaconLocations(m_pSteamParties,ref pLocationList,uMaxNumLocations); - return result; -} -public override ulong CreateBeacon(uint unOpenSlots,ref SteamPartyBeaconLocation_t pBeaconLocation,string pchConnectString,string pchMetadata) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamParties_CreateBeacon(m_pSteamParties,unOpenSlots,ref pBeaconLocation,pchConnectString,pchMetadata); - return result; -} -public override void OnReservationCompleted(ulong ulBeacon,ulong steamIDUser) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamParties_OnReservationCompleted(m_pSteamParties,ulBeacon,steamIDUser); -} -public override void CancelReservation(ulong ulBeacon,ulong steamIDUser) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamParties_CancelReservation(m_pSteamParties,ulBeacon,steamIDUser); -} -public override ulong ChangeNumOpenSlots(ulong ulBeacon,uint unOpenSlots) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamParties_ChangeNumOpenSlots(m_pSteamParties,ulBeacon,unOpenSlots); - return result; -} -public override bool DestroyBeacon(ulong ulBeacon) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParties_DestroyBeacon(m_pSteamParties,ulBeacon); - return result; -} -public override bool GetBeaconLocationData(SteamPartyBeaconLocation_t BeaconLocation,uint eData,out string pchDataStringOut) -{ - CheckIfUsable(); - int cchDataStringOut = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamParties_GetBeaconLocationData(m_pSteamParties,BeaconLocation,eData,null,ref cchDataStringOut); - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)cchDataStringOut); - result = NativeEntrypoints.SteamAPI_ISteamParties_GetBeaconLocationData(m_pSteamParties,BeaconLocation,eData,pStrBuffer1,ref cchDataStringOut); - pchDataStringOut = pStrBuffer1.ToString(); - return result; -} -} - - -public class CSteamRemoteStorage : ISteamRemoteStorage -{ -public CSteamRemoteStorage(IntPtr SteamRemoteStorage) -{ - m_pSteamRemoteStorage = SteamRemoteStorage; -} -IntPtr m_pSteamRemoteStorage; - -public override IntPtr GetIntPtr() { return m_pSteamRemoteStorage; } - -private void CheckIfUsable() -{ - if (m_pSteamRemoteStorage == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool FileWrite(string pchFile,IntPtr pvData,int cubData) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWrite(m_pSteamRemoteStorage,pchFile,pvData,cubData); - return result; -} -public override int FileRead(string pchFile,IntPtr pvData,int cubDataToRead) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileRead(m_pSteamRemoteStorage,pchFile,pvData,cubDataToRead); - return result; -} -public override ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteAsync(m_pSteamRemoteStorage,pchFile,pvData,cubData); - return result; -} -public override ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsync(m_pSteamRemoteStorage,pchFile,nOffset,cubToRead); - return result; -} -public override bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(m_pSteamRemoteStorage,hReadCall,pvBuffer,cubToRead); - return result; -} -public override bool FileForget(string pchFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileForget(m_pSteamRemoteStorage,pchFile); - return result; -} -public override bool FileDelete(string pchFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileDelete(m_pSteamRemoteStorage,pchFile); - return result; -} -public override ulong FileShare(string pchFile) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileShare(m_pSteamRemoteStorage,pchFile); - return result; -} -public override bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(m_pSteamRemoteStorage,pchFile,eRemoteStoragePlatform); - return result; -} -public override ulong FileWriteStreamOpen(string pchFile) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(m_pSteamRemoteStorage,pchFile); - return result; -} -public override bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(m_pSteamRemoteStorage,writeHandle,pvData,cubData); - return result; -} -public override bool FileWriteStreamClose(ulong writeHandle) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(m_pSteamRemoteStorage,writeHandle); - return result; -} -public override bool FileWriteStreamCancel(ulong writeHandle) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(m_pSteamRemoteStorage,writeHandle); - return result; -} -public override bool FileExists(string pchFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileExists(m_pSteamRemoteStorage,pchFile); - return result; -} -public override bool FilePersisted(string pchFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FilePersisted(m_pSteamRemoteStorage,pchFile); - return result; -} -public override int GetFileSize(string pchFile) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileSize(m_pSteamRemoteStorage,pchFile); - return result; -} -public override long GetFileTimestamp(string pchFile) -{ - CheckIfUsable(); - long result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileTimestamp(m_pSteamRemoteStorage,pchFile); - return result; -} -public override uint GetSyncPlatforms(string pchFile) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(m_pSteamRemoteStorage,pchFile); - return result; -} -public override int GetFileCount() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileCount(m_pSteamRemoteStorage); - return result; -} -public override string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes) -{ - CheckIfUsable(); - pnFileSizeInBytes = 0; - IntPtr result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(m_pSteamRemoteStorage,iFile,ref pnFileSizeInBytes); - return Marshal.PtrToStringAnsi(result); -} -public override bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes) -{ - CheckIfUsable(); - pnTotalBytes = 0; - puAvailableBytes = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetQuota(m_pSteamRemoteStorage,ref pnTotalBytes,ref puAvailableBytes); - return result; -} -public override bool IsCloudEnabledForAccount() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(m_pSteamRemoteStorage); - return result; -} -public override bool IsCloudEnabledForApp() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(m_pSteamRemoteStorage); - return result; -} -public override void SetCloudEnabledForApp(bool bEnabled) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(m_pSteamRemoteStorage,bEnabled); -} -public override ulong UGCDownload(ulong hContent,uint unPriority) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownload(m_pSteamRemoteStorage,hContent,unPriority); - return result; -} -public override bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected) -{ - CheckIfUsable(); - pnBytesDownloaded = 0; - pnBytesExpected = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(m_pSteamRemoteStorage,hContent,ref pnBytesDownloaded,ref pnBytesExpected); - return result; -} -public override bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner) -{ - CheckIfUsable(); - pnAppID = 0; - pnFileSizeInBytes = 0; - pSteamIDOwner = new CSteamID(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDetails(m_pSteamRemoteStorage,hContent,ref pnAppID,ppchName,ref pnFileSizeInBytes,ref pSteamIDOwner); - return result; -} -public override int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCRead(m_pSteamRemoteStorage,hContent,pvData,cubDataToRead,cOffset,eAction); - return result; -} -public override int GetCachedUGCCount() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(m_pSteamRemoteStorage); - return result; -} -public override ulong GetCachedUGCHandle(int iCachedContent) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(m_pSteamRemoteStorage,iCachedContent); - return result; -} -public override ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(m_pSteamRemoteStorage,pchFile,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags,eWorkshopFileType); - return result; -} -public override ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(m_pSteamRemoteStorage,unPublishedFileId); - return result; -} -public override bool UpdatePublishedFileFile(ulong updateHandle,string pchFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(m_pSteamRemoteStorage,updateHandle,pchFile); - return result; -} -public override bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(m_pSteamRemoteStorage,updateHandle,pchPreviewFile); - return result; -} -public override bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(m_pSteamRemoteStorage,updateHandle,pchTitle); - return result; -} -public override bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(m_pSteamRemoteStorage,updateHandle,pchDescription); - return result; -} -public override bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(m_pSteamRemoteStorage,updateHandle,eVisibility); - return result; -} -public override bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(m_pSteamRemoteStorage,updateHandle,ref pTags); - return result; -} -public override ulong CommitPublishedFileUpdate(ulong updateHandle) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(m_pSteamRemoteStorage,updateHandle); - return result; -} -public override ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(m_pSteamRemoteStorage,unPublishedFileId,unMaxSecondsOld); - return result; -} -public override ulong DeletePublishedFile(ulong unPublishedFileId) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_DeletePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); - return result; -} -public override ulong EnumerateUserPublishedFiles(uint unStartIndex) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(m_pSteamRemoteStorage,unStartIndex); - return result; -} -public override ulong SubscribePublishedFile(ulong unPublishedFileId) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); - return result; -} -public override ulong EnumerateUserSubscribedFiles(uint unStartIndex) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(m_pSteamRemoteStorage,unStartIndex); - return result; -} -public override ulong UnsubscribePublishedFile(ulong unPublishedFileId) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); - return result; -} -public override bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(m_pSteamRemoteStorage,updateHandle,pchChangeDescription); - return result; -} -public override ulong GetPublishedItemVoteDetails(ulong unPublishedFileId) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); - return result; -} -public override ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(m_pSteamRemoteStorage,unPublishedFileId,bVoteUp); - return result; -} -public override ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); - return result; -} -public override ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(m_pSteamRemoteStorage,steamId,unStartIndex,ref pRequiredTags,ref pExcludedTags); - return result; -} -public override ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishVideo(m_pSteamRemoteStorage,eVideoProvider,pchVideoAccount,pchVideoIdentifier,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags); - return result; -} -public override ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(m_pSteamRemoteStorage,unPublishedFileId,eAction); - return result; -} -public override ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(m_pSteamRemoteStorage,eAction,unStartIndex); - return result; -} -public override ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(m_pSteamRemoteStorage,eEnumerationType,unStartIndex,unCount,unDays,ref pTags,ref pUserTags); - return result; -} -public override ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(m_pSteamRemoteStorage,hContent,pchLocation,unPriority); - return result; -} -} - - -public class CSteamUserStats : ISteamUserStats -{ -public CSteamUserStats(IntPtr SteamUserStats) -{ - m_pSteamUserStats = SteamUserStats; -} -IntPtr m_pSteamUserStats; - -public override IntPtr GetIntPtr() { return m_pSteamUserStats; } - -private void CheckIfUsable() -{ - if (m_pSteamUserStats == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool RequestCurrentStats() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestCurrentStats(m_pSteamUserStats); - return result; -} -public override bool GetStat(string pchName,ref int pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat(m_pSteamUserStats,pchName,ref pData); - return result; -} -public override bool GetStat0(string pchName,ref float pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat0(m_pSteamUserStats,pchName,ref pData); - return result; -} -public override bool SetStat(string pchName,int nData) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat(m_pSteamUserStats,pchName,nData); - return result; -} -public override bool SetStat0(string pchName,float fData) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat0(m_pSteamUserStats,pchName,fData); - return result; -} -public override bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_UpdateAvgRateStat(m_pSteamUserStats,pchName,flCountThisSession,dSessionLength); - return result; -} -public override bool GetAchievement(string pchName,ref bool pbAchieved) -{ - CheckIfUsable(); - pbAchieved = false; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievement(m_pSteamUserStats,pchName,ref pbAchieved); - return result; -} -public override bool SetAchievement(string pchName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetAchievement(m_pSteamUserStats,pchName); - return result; -} -public override bool ClearAchievement(string pchName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ClearAchievement(m_pSteamUserStats,pchName); - return result; -} -public override bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime) -{ - CheckIfUsable(); - pbAchieved = false; - punUnlockTime = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(m_pSteamUserStats,pchName,ref pbAchieved,ref punUnlockTime); - return result; -} -public override bool StoreStats() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_StoreStats(m_pSteamUserStats); - return result; -} -public override int GetAchievementIcon(string pchName) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementIcon(m_pSteamUserStats,pchName); - return result; -} -public override string GetAchievementDisplayAttribute(string pchName,string pchKey) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(m_pSteamUserStats,pchName,pchKey); - return Marshal.PtrToStringAnsi(result); -} -public override bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_IndicateAchievementProgress(m_pSteamUserStats,pchName,nCurProgress,nMaxProgress); - return result; -} -public override uint GetNumAchievements() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumAchievements(m_pSteamUserStats); - return result; -} -public override string GetAchievementName(uint iAchievement) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementName(m_pSteamUserStats,iAchievement); - return Marshal.PtrToStringAnsi(result); -} -public override ulong RequestUserStats(ulong steamIDUser) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestUserStats(m_pSteamUserStats,steamIDUser); - return result; -} -public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat(m_pSteamUserStats,steamIDUser,pchName,ref pData); - return result; -} -public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat0(m_pSteamUserStats,steamIDUser,pchName,ref pData); - return result; -} -public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) -{ - CheckIfUsable(); - pbAchieved = false; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievement(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved); - return result; -} -public override bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime) -{ - CheckIfUsable(); - pbAchieved = false; - punUnlockTime = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved,ref punUnlockTime); - return result; -} -public override bool ResetAllStats(bool bAchievementsToo) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ResetAllStats(m_pSteamUserStats,bAchievementsToo); - return result; -} -public override ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(m_pSteamUserStats,pchLeaderboardName,eLeaderboardSortMethod,eLeaderboardDisplayType); - return result; -} -public override ulong FindLeaderboard(string pchLeaderboardName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindLeaderboard(m_pSteamUserStats,pchLeaderboardName); - return result; -} -public override string GetLeaderboardName(ulong hSteamLeaderboard) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardName(m_pSteamUserStats,hSteamLeaderboard); - return Marshal.PtrToStringAnsi(result); -} -public override int GetLeaderboardEntryCount(ulong hSteamLeaderboard) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(m_pSteamUserStats,hSteamLeaderboard); - return result; -} -public override uint GetLeaderboardSortMethod(ulong hSteamLeaderboard) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(m_pSteamUserStats,hSteamLeaderboard); - return result; -} -public override uint GetLeaderboardDisplayType(ulong hSteamLeaderboard) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(m_pSteamUserStats,hSteamLeaderboard); - return result; -} -public override ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardDataRequest,nRangeStart,nRangeEnd); - return result; -} -public override ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(m_pSteamUserStats,hSteamLeaderboard,prgUsers,(int) prgUsers.Length); - return result; -} -public override bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax) -{ - CheckIfUsable(); - pDetails = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(m_pSteamUserStats,hSteamLeaderboardEntries,index,ref pLeaderboardEntry,ref pDetails,cDetailsMax); - return result; -} -public override ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount) -{ - CheckIfUsable(); - pScoreDetails = 0; - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_UploadLeaderboardScore(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardUploadScoreMethod,nScore,ref pScoreDetails,cScoreDetailsCount); - return result; -} -public override ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_AttachLeaderboardUGC(m_pSteamUserStats,hSteamLeaderboard,hUGC); - return result; -} -public override ulong GetNumberOfCurrentPlayers() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(m_pSteamUserStats); - return result; -} -public override ulong RequestGlobalAchievementPercentages() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(m_pSteamUserStats); - return result; -} -public override int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) -{ - CheckIfUsable(); - pflPercent = 0; - pbAchieved = false; - int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(m_pSteamUserStats,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); - return result; -} -public override int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) -{ - CheckIfUsable(); - pflPercent = 0; - pbAchieved = false; - int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(m_pSteamUserStats,iIteratorPrevious,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); - return result; -} -public override bool GetAchievementAchievedPercent(string pchName,ref float pflPercent) -{ - CheckIfUsable(); - pflPercent = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(m_pSteamUserStats,pchName,ref pflPercent); - return result; -} -public override ulong RequestGlobalStats(int nHistoryDays) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalStats(m_pSteamUserStats,nHistoryDays); - return result; -} -public override bool GetGlobalStat(string pchStatName,ref long pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat(m_pSteamUserStats,pchStatName,ref pData); - return result; -} -public override bool GetGlobalStat0(string pchStatName,ref double pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat0(m_pSteamUserStats,pchStatName,ref pData); - return result; -} -public override int GetGlobalStatHistory(string pchStatName,long [] pData) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); - return result; -} -public override int GetGlobalStatHistory0(string pchStatName,double [] pData) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory0(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); - return result; -} -} - - -public class CSteamApps : ISteamApps -{ -public CSteamApps(IntPtr SteamApps) -{ - m_pSteamApps = SteamApps; -} -IntPtr m_pSteamApps; - -public override IntPtr GetIntPtr() { return m_pSteamApps; } - -private void CheckIfUsable() -{ - if (m_pSteamApps == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool BIsSubscribed() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribed(m_pSteamApps); - return result; -} -public override bool BIsLowViolence() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsLowViolence(m_pSteamApps); - return result; -} -public override bool BIsCybercafe() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsCybercafe(m_pSteamApps); - return result; -} -public override bool BIsVACBanned() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsVACBanned(m_pSteamApps); - return result; -} -public override string GetCurrentGameLanguage() -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentGameLanguage(m_pSteamApps); - return Marshal.PtrToStringAnsi(result); -} -public override string GetAvailableGameLanguages() -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetAvailableGameLanguages(m_pSteamApps); - return Marshal.PtrToStringAnsi(result); -} -public override bool BIsSubscribedApp(uint appID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedApp(m_pSteamApps,appID); - return result; -} -public override bool BIsDlcInstalled(uint appID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsDlcInstalled(m_pSteamApps,appID); - return result; -} -public override uint GetEarliestPurchaseUnixTime(uint nAppID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(m_pSteamApps,nAppID); - return result; -} -public override bool BIsSubscribedFromFreeWeekend() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(m_pSteamApps); - return result; -} -public override int GetDLCCount() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamApps_GetDLCCount(m_pSteamApps); - return result; -} -public override bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize) -{ - CheckIfUsable(); - pAppID = 0; - pbAvailable = false; - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BGetDLCDataByIndex(m_pSteamApps,iDLC,ref pAppID,ref pbAvailable,pchName,cchNameBufferSize); - return result; -} -public override void InstallDLC(uint nAppID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamApps_InstallDLC(m_pSteamApps,nAppID); -} -public override void UninstallDLC(uint nAppID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamApps_UninstallDLC(m_pSteamApps,nAppID); -} -public override void RequestAppProofOfPurchaseKey(uint nAppID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(m_pSteamApps,nAppID); -} -public override bool GetCurrentBetaName(string pchName,int cchNameBufferSize) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentBetaName(m_pSteamApps,pchName,cchNameBufferSize); - return result; -} -public override bool MarkContentCorrupt(bool bMissingFilesOnly) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_MarkContentCorrupt(m_pSteamApps,bMissingFilesOnly); - return result; -} -public override uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots) -{ - CheckIfUsable(); - pvecDepots = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetInstalledDepots(m_pSteamApps,appID,ref pvecDepots,cMaxDepots); - return result; -} -public override uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppInstallDir(m_pSteamApps,appID,pchFolder,cchFolderBufferSize); - return result; -} -public override bool BIsAppInstalled(uint appID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsAppInstalled(m_pSteamApps,appID); - return result; -} -public override ulong GetAppOwner() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppOwner(m_pSteamApps); - return result; -} -public override string GetLaunchQueryParam(string pchKey) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetLaunchQueryParam(m_pSteamApps,pchKey); - return Marshal.PtrToStringAnsi(result); -} -public override bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) -{ - CheckIfUsable(); - punBytesDownloaded = 0; - punBytesTotal = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetDlcDownloadProgress(m_pSteamApps,nAppID,ref punBytesDownloaded,ref punBytesTotal); - return result; -} -public override int GetAppBuildId() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppBuildId(m_pSteamApps); - return result; -} -public override void RequestAllProofOfPurchaseKeys() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(m_pSteamApps); -} -public override ulong GetFileDetails(string pszFileName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetFileDetails(m_pSteamApps,pszFileName); - return result; -} -public override int GetLaunchCommandLine(string pszCommandLine,int cubCommandLine) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamApps_GetLaunchCommandLine(m_pSteamApps,pszCommandLine,cubCommandLine); - return result; -} -public override bool BIsSubscribedFromFamilySharing() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing(m_pSteamApps); - return result; -} -} - - -public class CSteamNetworking : ISteamNetworking -{ -public CSteamNetworking(IntPtr SteamNetworking) -{ - m_pSteamNetworking = SteamNetworking; -} -IntPtr m_pSteamNetworking; - -public override IntPtr GetIntPtr() { return m_pSteamNetworking; } - -private void CheckIfUsable() -{ - if (m_pSteamNetworking == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendP2PPacket(m_pSteamNetworking,steamIDRemote,pubData,cubData,eP2PSendType,nChannel); - return result; -} -public override bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel) -{ - CheckIfUsable(); - pcubMsgSize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsP2PPacketAvailable(m_pSteamNetworking,ref pcubMsgSize,nChannel); - return result; -} -public override bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel) -{ - CheckIfUsable(); - pcubMsgSize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_ReadP2PPacket(m_pSteamNetworking,pubDest,cubDest,ref pcubMsgSize,ref psteamIDRemote,nChannel); - return result; -} -public override bool AcceptP2PSessionWithUser(ulong steamIDRemote) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); - return result; -} -public override bool CloseP2PSessionWithUser(ulong steamIDRemote) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); - return result; -} -public override bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(m_pSteamNetworking,steamIDRemote,nChannel); - return result; -} -public override bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetP2PSessionState(m_pSteamNetworking,steamIDRemote,ref pConnectionState); - return result; -} -public override bool AllowP2PPacketRelay(bool bAllow) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AllowP2PPacketRelay(m_pSteamNetworking,bAllow); - return result; -} -public override uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateListenSocket(m_pSteamNetworking,nVirtualP2PPort,nIP,nPort,bAllowUseOfPacketRelay); - return result; -} -public override uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(m_pSteamNetworking,steamIDTarget,nVirtualPort,nTimeoutSec,bAllowUseOfPacketRelay); - return result; -} -public override uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateConnectionSocket(m_pSteamNetworking,nIP,nPort,nTimeoutSec); - return result; -} -public override bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroySocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); - return result; -} -public override bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroyListenSocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); - return result; -} -public override bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendDataOnSocket(m_pSteamNetworking,hSocket,pubData,cubData,bReliable); - return result; -} -public override bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize) -{ - CheckIfUsable(); - pcubMsgSize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(m_pSteamNetworking,hSocket,ref pcubMsgSize); - return result; -} -public override bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize) -{ - CheckIfUsable(); - pcubMsgSize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveDataFromSocket(m_pSteamNetworking,hSocket,pubDest,cubDest,ref pcubMsgSize); - return result; -} -public override bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket) -{ - CheckIfUsable(); - pcubMsgSize = 0; - phSocket = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailable(m_pSteamNetworking,hListenSocket,ref pcubMsgSize,ref phSocket); - return result; -} -public override bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket) -{ - CheckIfUsable(); - pcubMsgSize = 0; - phSocket = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveData(m_pSteamNetworking,hListenSocket,pubDest,cubDest,ref pcubMsgSize,ref phSocket); - return result; -} -public override bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote) -{ - CheckIfUsable(); - peSocketStatus = 0; - punIPRemote = 0; - punPortRemote = (char) 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketInfo(m_pSteamNetworking,hSocket,ref pSteamIDRemote,ref peSocketStatus,ref punIPRemote,ref punPortRemote); - return result; -} -public override bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort) -{ - CheckIfUsable(); - pnIP = 0; - pnPort = (char) 0; - bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetListenSocketInfo(m_pSteamNetworking,hListenSocket,ref pnIP,ref pnPort); - return result; -} -public override uint GetSocketConnectionType(uint hSocket) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketConnectionType(m_pSteamNetworking,hSocket); - return result; -} -public override int GetMaxPacketSize(uint hSocket) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetMaxPacketSize(m_pSteamNetworking,hSocket); - return result; -} -} - - -public class CSteamScreenshots : ISteamScreenshots -{ -public CSteamScreenshots(IntPtr SteamScreenshots) -{ - m_pSteamScreenshots = SteamScreenshots; -} -IntPtr m_pSteamScreenshots; - -public override IntPtr GetIntPtr() { return m_pSteamScreenshots; } - -private void CheckIfUsable() -{ - if (m_pSteamScreenshots == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_WriteScreenshot(m_pSteamScreenshots,pubRGB,cubRGB,nWidth,nHeight); - return result; -} -public override uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(m_pSteamScreenshots,pchFilename,pchThumbnailFilename,nWidth,nHeight); - return result; -} -public override void TriggerScreenshot() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamScreenshots_TriggerScreenshot(m_pSteamScreenshots); -} -public override void HookScreenshots(bool bHook) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamScreenshots_HookScreenshots(m_pSteamScreenshots,bHook); -} -public override bool SetLocation(uint hScreenshot,string pchLocation) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_SetLocation(m_pSteamScreenshots,hScreenshot,pchLocation); - return result; -} -public override bool TagUser(uint hScreenshot,ulong steamID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagUser(m_pSteamScreenshots,hScreenshot,steamID); - return result; -} -public override bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagPublishedFile(m_pSteamScreenshots,hScreenshot,unPublishedFileID); - return result; -} -public override bool IsScreenshotsHooked() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_IsScreenshotsHooked(m_pSteamScreenshots); - return result; -} -public override uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(m_pSteamScreenshots,eType,pchFilename,pchVRFilename); - return result; -} -} - - -public class CSteamMusic : ISteamMusic -{ -public CSteamMusic(IntPtr SteamMusic) -{ - m_pSteamMusic = SteamMusic; -} -IntPtr m_pSteamMusic; - -public override IntPtr GetIntPtr() { return m_pSteamMusic; } - -private void CheckIfUsable() -{ - if (m_pSteamMusic == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool BIsEnabled() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsEnabled(m_pSteamMusic); - return result; -} -public override bool BIsPlaying() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsPlaying(m_pSteamMusic); - return result; -} -public override int GetPlaybackStatus() -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamMusic_GetPlaybackStatus(m_pSteamMusic); - return result; -} -public override void Play() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMusic_Play(m_pSteamMusic); -} -public override void Pause() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMusic_Pause(m_pSteamMusic); -} -public override void PlayPrevious() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMusic_PlayPrevious(m_pSteamMusic); -} -public override void PlayNext() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMusic_PlayNext(m_pSteamMusic); -} -public override void SetVolume(float flVolume) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamMusic_SetVolume(m_pSteamMusic,flVolume); -} -public override float GetVolume() -{ - CheckIfUsable(); - float result = NativeEntrypoints.SteamAPI_ISteamMusic_GetVolume(m_pSteamMusic); - return result; -} -} - - -public class CSteamMusicRemote : ISteamMusicRemote -{ -public CSteamMusicRemote(IntPtr SteamMusicRemote) -{ - m_pSteamMusicRemote = SteamMusicRemote; -} -IntPtr m_pSteamMusicRemote; - -public override IntPtr GetIntPtr() { return m_pSteamMusicRemote; } - -private void CheckIfUsable() -{ - if (m_pSteamMusicRemote == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool RegisterSteamMusicRemote(string pchName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(m_pSteamMusicRemote,pchName); - return result; -} -public override bool DeregisterSteamMusicRemote() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(m_pSteamMusicRemote); - return result; -} -public override bool BIsCurrentMusicRemote() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(m_pSteamMusicRemote); - return result; -} -public override bool BActivationSuccess(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BActivationSuccess(m_pSteamMusicRemote,bValue); - return result; -} -public override bool SetDisplayName(string pchDisplayName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetDisplayName(m_pSteamMusicRemote,pchDisplayName); - return result; -} -public override bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(m_pSteamMusicRemote,pvBuffer,cbBufferLength); - return result; -} -public override bool EnablePlayPrevious(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayPrevious(m_pSteamMusicRemote,bValue); - return result; -} -public override bool EnablePlayNext(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayNext(m_pSteamMusicRemote,bValue); - return result; -} -public override bool EnableShuffled(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableShuffled(m_pSteamMusicRemote,bValue); - return result; -} -public override bool EnableLooped(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableLooped(m_pSteamMusicRemote,bValue); - return result; -} -public override bool EnableQueue(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableQueue(m_pSteamMusicRemote,bValue); - return result; -} -public override bool EnablePlaylists(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlaylists(m_pSteamMusicRemote,bValue); - return result; -} -public override bool UpdatePlaybackStatus(int nStatus) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(m_pSteamMusicRemote,nStatus); - return result; -} -public override bool UpdateShuffled(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateShuffled(m_pSteamMusicRemote,bValue); - return result; -} -public override bool UpdateLooped(bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateLooped(m_pSteamMusicRemote,bValue); - return result; -} -public override bool UpdateVolume(float flValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateVolume(m_pSteamMusicRemote,flValue); - return result; -} -public override bool CurrentEntryWillChange() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(m_pSteamMusicRemote); - return result; -} -public override bool CurrentEntryIsAvailable(bool bAvailable) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(m_pSteamMusicRemote,bAvailable); - return result; -} -public override bool UpdateCurrentEntryText(string pchText) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(m_pSteamMusicRemote,pchText); - return result; -} -public override bool UpdateCurrentEntryElapsedSeconds(int nValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(m_pSteamMusicRemote,nValue); - return result; -} -public override bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(m_pSteamMusicRemote,pvBuffer,cbBufferLength); - return result; -} -public override bool CurrentEntryDidChange() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(m_pSteamMusicRemote); - return result; -} -public override bool QueueWillChange() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueWillChange(m_pSteamMusicRemote); - return result; -} -public override bool ResetQueueEntries() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetQueueEntries(m_pSteamMusicRemote); - return result; -} -public override bool SetQueueEntry(int nID,int nPosition,string pchEntryText) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetQueueEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); - return result; -} -public override bool SetCurrentQueueEntry(int nID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(m_pSteamMusicRemote,nID); - return result; -} -public override bool QueueDidChange() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueDidChange(m_pSteamMusicRemote); - return result; -} -public override bool PlaylistWillChange() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistWillChange(m_pSteamMusicRemote); - return result; -} -public override bool ResetPlaylistEntries() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(m_pSteamMusicRemote); - return result; -} -public override bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPlaylistEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); - return result; -} -public override bool SetCurrentPlaylistEntry(int nID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(m_pSteamMusicRemote,nID); - return result; -} -public override bool PlaylistDidChange() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistDidChange(m_pSteamMusicRemote); - return result; -} -} - - -public class CSteamHTTP : ISteamHTTP -{ -public CSteamHTTP(IntPtr SteamHTTP) -{ - m_pSteamHTTP = SteamHTTP; -} -IntPtr m_pSteamHTTP; - -public override IntPtr GetIntPtr() { return m_pSteamHTTP; } - -private void CheckIfUsable() -{ - if (m_pSteamHTTP == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateHTTPRequest(m_pSteamHTTP,eHTTPRequestMethod,pchAbsoluteURL); - return result; -} -public override bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(m_pSteamHTTP,hRequest,ulContextValue); - return result; -} -public override bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(m_pSteamHTTP,hRequest,unTimeoutSeconds); - return result; -} -public override bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pchHeaderValue); - return result; -} -public override bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(m_pSteamHTTP,hRequest,pchParamName,pchParamValue); - return result; -} -public override bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle) -{ - CheckIfUsable(); - pCallHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequest(m_pSteamHTTP,hRequest,ref pCallHandle); - return result; -} -public override bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle) -{ - CheckIfUsable(); - pCallHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(m_pSteamHTTP,hRequest,ref pCallHandle); - return result; -} -public override bool DeferHTTPRequest(uint hRequest) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_DeferHTTPRequest(m_pSteamHTTP,hRequest); - return result; -} -public override bool PrioritizeHTTPRequest(uint hRequest) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(m_pSteamHTTP,hRequest); - return result; -} -public override bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize) -{ - CheckIfUsable(); - unResponseHeaderSize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(m_pSteamHTTP,hRequest,pchHeaderName,ref unResponseHeaderSize); - return result; -} -public override bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pHeaderValueBuffer,unBufferSize); - return result; -} -public override bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize) -{ - CheckIfUsable(); - unBodySize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(m_pSteamHTTP,hRequest,ref unBodySize); - return result; -} -public override bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(m_pSteamHTTP,hRequest,pBodyDataBuffer,unBufferSize); - return result; -} -public override bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(m_pSteamHTTP,hRequest,cOffset,pBodyDataBuffer,unBufferSize); - return result; -} -public override bool ReleaseHTTPRequest(uint hRequest) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseHTTPRequest(m_pSteamHTTP,hRequest); - return result; -} -public override bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut) -{ - CheckIfUsable(); - pflPercentOut = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(m_pSteamHTTP,hRequest,ref pflPercentOut); - return result; -} -public override bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(m_pSteamHTTP,hRequest,pchContentType,pubBody,unBodyLen); - return result; -} -public override uint CreateCookieContainer(bool bAllowResponsesToModify) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateCookieContainer(m_pSteamHTTP,bAllowResponsesToModify); - return result; -} -public override bool ReleaseCookieContainer(uint hCookieContainer) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseCookieContainer(m_pSteamHTTP,hCookieContainer); - return result; -} -public override bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetCookie(m_pSteamHTTP,hCookieContainer,pchHost,pchUrl,pchCookie); - return result; -} -public override bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(m_pSteamHTTP,hRequest,hCookieContainer); - return result; -} -public override bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(m_pSteamHTTP,hRequest,pchUserAgentInfo); - return result; -} -public override bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(m_pSteamHTTP,hRequest,bRequireVerifiedCertificate); - return result; -} -public override bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(m_pSteamHTTP,hRequest,unMilliseconds); - return result; -} -public override bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut) -{ - CheckIfUsable(); - pbWasTimedOut = false; - bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(m_pSteamHTTP,hRequest,ref pbWasTimedOut); - return result; -} -} - - -public class CSteamInput : ISteamInput -{ -public CSteamInput(IntPtr SteamInput) -{ - m_pSteamInput = SteamInput; -} -IntPtr m_pSteamInput; - -public override IntPtr GetIntPtr() { return m_pSteamInput; } - -private void CheckIfUsable() -{ - if (m_pSteamInput == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool Init() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInput_Init(m_pSteamInput); - return result; -} -public override bool Shutdown() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInput_Shutdown(m_pSteamInput); - return result; -} -public override void RunFrame() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_RunFrame(m_pSteamInput); -} -public override int GetConnectedControllers(ref ulong handlesOut) -{ - CheckIfUsable(); - handlesOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamInput_GetConnectedControllers(m_pSteamInput,ref handlesOut); - return result; -} -public override ulong GetActionSetHandle(string pszActionSetName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInput_GetActionSetHandle(m_pSteamInput,pszActionSetName); - return result; -} -public override void ActivateActionSet(ulong inputHandle,ulong actionSetHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_ActivateActionSet(m_pSteamInput,inputHandle,actionSetHandle); -} -public override ulong GetCurrentActionSet(ulong inputHandle) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInput_GetCurrentActionSet(m_pSteamInput,inputHandle); - return result; -} -public override void ActivateActionSetLayer(ulong inputHandle,ulong actionSetLayerHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_ActivateActionSetLayer(m_pSteamInput,inputHandle,actionSetLayerHandle); -} -public override void DeactivateActionSetLayer(ulong inputHandle,ulong actionSetLayerHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_DeactivateActionSetLayer(m_pSteamInput,inputHandle,actionSetLayerHandle); -} -public override void DeactivateAllActionSetLayers(ulong inputHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_DeactivateAllActionSetLayers(m_pSteamInput,inputHandle); -} -public override int GetActiveActionSetLayers(ulong inputHandle,ref ulong handlesOut) -{ - CheckIfUsable(); - handlesOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamInput_GetActiveActionSetLayers(m_pSteamInput,inputHandle,ref handlesOut); - return result; -} -public override ulong GetDigitalActionHandle(string pszActionName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInput_GetDigitalActionHandle(m_pSteamInput,pszActionName); - return result; -} -public override InputDigitalActionData_t GetDigitalActionData(ulong inputHandle,ulong digitalActionHandle) -{ - CheckIfUsable(); - InputDigitalActionData_t result = NativeEntrypoints.SteamAPI_ISteamInput_GetDigitalActionData(m_pSteamInput,inputHandle,digitalActionHandle); - return result; -} -public override int GetDigitalActionOrigins(ulong inputHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut) -{ - CheckIfUsable(); - originsOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamInput_GetDigitalActionOrigins(m_pSteamInput,inputHandle,actionSetHandle,digitalActionHandle,ref originsOut); - return result; -} -public override ulong GetAnalogActionHandle(string pszActionName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInput_GetAnalogActionHandle(m_pSteamInput,pszActionName); - return result; -} -public override InputAnalogActionData_t GetAnalogActionData(ulong inputHandle,ulong analogActionHandle) -{ - CheckIfUsable(); - InputAnalogActionData_t result = NativeEntrypoints.SteamAPI_ISteamInput_GetAnalogActionData(m_pSteamInput,inputHandle,analogActionHandle); - return result; -} -public override int GetAnalogActionOrigins(ulong inputHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut) -{ - CheckIfUsable(); - originsOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamInput_GetAnalogActionOrigins(m_pSteamInput,inputHandle,actionSetHandle,analogActionHandle,ref originsOut); - return result; -} -public override string GetGlyphForActionOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamInput_GetGlyphForActionOrigin(m_pSteamInput,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override string GetStringForActionOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamInput_GetStringForActionOrigin(m_pSteamInput,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override void StopAnalogActionMomentum(ulong inputHandle,ulong eAction) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_StopAnalogActionMomentum(m_pSteamInput,inputHandle,eAction); -} -public override InputMotionData_t GetMotionData(ulong inputHandle) -{ - CheckIfUsable(); - InputMotionData_t result = NativeEntrypoints.SteamAPI_ISteamInput_GetMotionData(m_pSteamInput,inputHandle); - return result; -} -public override void TriggerVibration(ulong inputHandle,char usLeftSpeed,char usRightSpeed) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_TriggerVibration(m_pSteamInput,inputHandle,usLeftSpeed,usRightSpeed); -} -public override void SetLEDColor(ulong inputHandle,byte nColorR,byte nColorG,byte nColorB,uint nFlags) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_SetLEDColor(m_pSteamInput,inputHandle,nColorR,nColorG,nColorB,nFlags); -} -public override void TriggerHapticPulse(ulong inputHandle,uint eTargetPad,char usDurationMicroSec) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_TriggerHapticPulse(m_pSteamInput,inputHandle,eTargetPad,usDurationMicroSec); -} -public override void TriggerRepeatedHapticPulse(ulong inputHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInput_TriggerRepeatedHapticPulse(m_pSteamInput,inputHandle,eTargetPad,usDurationMicroSec,usOffMicroSec,unRepeat,nFlags); -} -public override bool ShowBindingPanel(ulong inputHandle) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInput_ShowBindingPanel(m_pSteamInput,inputHandle); - return result; -} -public override uint GetInputTypeForHandle(ulong inputHandle) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamInput_GetInputTypeForHandle(m_pSteamInput,inputHandle); - return result; -} -public override ulong GetControllerForGamepadIndex(int nIndex) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInput_GetControllerForGamepadIndex(m_pSteamInput,nIndex); - return result; -} -public override int GetGamepadIndexForController(ulong ulinputHandle) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamInput_GetGamepadIndexForController(m_pSteamInput,ulinputHandle); - return result; -} -public override string GetStringForXboxOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamInput_GetStringForXboxOrigin(m_pSteamInput,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override string GetGlyphForXboxOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamInput_GetGlyphForXboxOrigin(m_pSteamInput,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override uint GetActionOriginFromXboxOrigin(ulong inputHandle,uint eOrigin) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin(m_pSteamInput,inputHandle,eOrigin); - return result; -} -public override uint TranslateActionOrigin(uint eDestinationInputType,uint eSourceOrigin) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamInput_TranslateActionOrigin(m_pSteamInput,eDestinationInputType,eSourceOrigin); - return result; -} -} - - -public class CSteamController : ISteamController -{ -public CSteamController(IntPtr SteamController) -{ - m_pSteamController = SteamController; -} -IntPtr m_pSteamController; - -public override IntPtr GetIntPtr() { return m_pSteamController; } - -private void CheckIfUsable() -{ - if (m_pSteamController == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool Init() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamController_Init(m_pSteamController); - return result; -} -public override bool Shutdown() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamController_Shutdown(m_pSteamController); - return result; -} -public override void RunFrame() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_RunFrame(m_pSteamController); -} -public override int GetConnectedControllers(ref ulong handlesOut) -{ - CheckIfUsable(); - handlesOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamController_GetConnectedControllers(m_pSteamController,ref handlesOut); - return result; -} -public override ulong GetActionSetHandle(string pszActionSetName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetActionSetHandle(m_pSteamController,pszActionSetName); - return result; -} -public override void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_ActivateActionSet(m_pSteamController,controllerHandle,actionSetHandle); -} -public override ulong GetCurrentActionSet(ulong controllerHandle) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetCurrentActionSet(m_pSteamController,controllerHandle); - return result; -} -public override void ActivateActionSetLayer(ulong controllerHandle,ulong actionSetLayerHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_ActivateActionSetLayer(m_pSteamController,controllerHandle,actionSetLayerHandle); -} -public override void DeactivateActionSetLayer(ulong controllerHandle,ulong actionSetLayerHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_DeactivateActionSetLayer(m_pSteamController,controllerHandle,actionSetLayerHandle); -} -public override void DeactivateAllActionSetLayers(ulong controllerHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_DeactivateAllActionSetLayers(m_pSteamController,controllerHandle); -} -public override int GetActiveActionSetLayers(ulong controllerHandle,ref ulong handlesOut) -{ - CheckIfUsable(); - handlesOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamController_GetActiveActionSetLayers(m_pSteamController,controllerHandle,ref handlesOut); - return result; -} -public override ulong GetDigitalActionHandle(string pszActionName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionHandle(m_pSteamController,pszActionName); - return result; -} -public override InputDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle) -{ - CheckIfUsable(); - InputDigitalActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionData(m_pSteamController,controllerHandle,digitalActionHandle); - return result; -} -public override int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut) -{ - CheckIfUsable(); - originsOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,digitalActionHandle,ref originsOut); - return result; -} -public override ulong GetAnalogActionHandle(string pszActionName) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionHandle(m_pSteamController,pszActionName); - return result; -} -public override InputAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle) -{ - CheckIfUsable(); - InputAnalogActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionData(m_pSteamController,controllerHandle,analogActionHandle); - return result; -} -public override int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut) -{ - CheckIfUsable(); - originsOut = 0; - int result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,analogActionHandle,ref originsOut); - return result; -} -public override string GetGlyphForActionOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamController_GetGlyphForActionOrigin(m_pSteamController,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override string GetStringForActionOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamController_GetStringForActionOrigin(m_pSteamController,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_StopAnalogActionMomentum(m_pSteamController,controllerHandle,eAction); -} -public override InputMotionData_t GetMotionData(ulong controllerHandle) -{ - CheckIfUsable(); - InputMotionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetMotionData(m_pSteamController,controllerHandle); - return result; -} -public override void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_TriggerHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec); -} -public override void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_TriggerRepeatedHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec,usOffMicroSec,unRepeat,nFlags); -} -public override void TriggerVibration(ulong controllerHandle,char usLeftSpeed,char usRightSpeed) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_TriggerVibration(m_pSteamController,controllerHandle,usLeftSpeed,usRightSpeed); -} -public override void SetLEDColor(ulong controllerHandle,byte nColorR,byte nColorG,byte nColorB,uint nFlags) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamController_SetLEDColor(m_pSteamController,controllerHandle,nColorR,nColorG,nColorB,nFlags); -} -public override bool ShowBindingPanel(ulong controllerHandle) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowBindingPanel(m_pSteamController,controllerHandle); - return result; -} -public override uint GetInputTypeForHandle(ulong controllerHandle) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamController_GetInputTypeForHandle(m_pSteamController,controllerHandle); - return result; -} -public override ulong GetControllerForGamepadIndex(int nIndex) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetControllerForGamepadIndex(m_pSteamController,nIndex); - return result; -} -public override int GetGamepadIndexForController(ulong ulControllerHandle) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamController_GetGamepadIndexForController(m_pSteamController,ulControllerHandle); - return result; -} -public override string GetStringForXboxOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamController_GetStringForXboxOrigin(m_pSteamController,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override string GetGlyphForXboxOrigin(uint eOrigin) -{ - CheckIfUsable(); - IntPtr result = NativeEntrypoints.SteamAPI_ISteamController_GetGlyphForXboxOrigin(m_pSteamController,eOrigin); - return Marshal.PtrToStringAnsi(result); -} -public override uint GetActionOriginFromXboxOrigin(ulong controllerHandle,uint eOrigin) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamController_GetActionOriginFromXboxOrigin(m_pSteamController,controllerHandle,eOrigin); - return result; -} -public override uint TranslateActionOrigin(uint eDestinationInputType,uint eSourceOrigin) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamController_TranslateActionOrigin(m_pSteamController,eDestinationInputType,eSourceOrigin); - return result; -} -} - - -public class CSteamUGC : ISteamUGC -{ -public CSteamUGC(IntPtr SteamUGC) -{ - m_pSteamUGC = SteamUGC; -} -IntPtr m_pSteamUGC; - -public override IntPtr GetIntPtr() { return m_pSteamUGC; } - -private void CheckIfUsable() -{ - if (m_pSteamUGC == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(m_pSteamUGC,unAccountID,eListType,eMatchingUGCType,eSortOrder,nCreatorAppID,nConsumerAppID,unPage); - return result; -} -public override ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(m_pSteamUGC,eQueryType,eMatchingeMatchingUGCTypeFileType,nCreatorAppID,nConsumerAppID,unPage); - return result; -} -public override ulong CreateQueryAllUGCRequest0(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,string pchCursor) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryAllUGCRequest0(m_pSteamUGC,eQueryType,eMatchingeMatchingUGCTypeFileType,nCreatorAppID,nConsumerAppID,pchCursor); - return result; -} -public override ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) -{ - CheckIfUsable(); - pvecPublishedFileID = 0; - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); - return result; -} -public override ulong SendQueryUGCRequest(ulong handle) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SendQueryUGCRequest(m_pSteamUGC,handle); - return result; -} -public override bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCResult(m_pSteamUGC,handle,index,ref pDetails); - return result; -} -public override bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL) -{ - CheckIfUsable(); - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(m_pSteamUGC,handle,index,pStrBuffer1,2048); - pchURL = pStrBuffer1.ToString(); - return result; -} -public override bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata) -{ - CheckIfUsable(); - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCMetadata(m_pSteamUGC,handle,index,pStrBuffer1,2048); - pchMetadata = pStrBuffer1.ToString(); - return result; -} -public override bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries) -{ - CheckIfUsable(); - pvecPublishedFileID = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCChildren(m_pSteamUGC,handle,index,ref pvecPublishedFileID,cMaxEntries); - return result; -} -public override bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue) -{ - CheckIfUsable(); - pStatValue = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCStatistic(m_pSteamUGC,handle,index,eStatType,ref pStatValue); - return result; -} -public override uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(m_pSteamUGC,handle,index); - return result; -} -public override bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType) -{ - CheckIfUsable(); - pPreviewType = 0; - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); - System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(m_pSteamUGC,handle,index,previewIndex,pStrBuffer1,2048,pStrBuffer2,cchOriginalFileNameSize,ref pPreviewType); - pchURLOrVideoID = pStrBuffer1.ToString(); - pchOriginalFileName = pStrBuffer2.ToString(); - return result; -} -public override uint GetQueryUGCNumKeyValueTags(ulong handle,uint index) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(m_pSteamUGC,handle,index); - return result; -} -public override bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue) -{ - CheckIfUsable(); - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); - System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(m_pSteamUGC,handle,index,keyValueTagIndex,pStrBuffer1,2048,pStrBuffer2,2048); - pchKey = pStrBuffer1.ToString(); - pchValue = pStrBuffer2.ToString(); - return result; -} -public override bool ReleaseQueryUGCRequest(ulong handle) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(m_pSteamUGC,handle); - return result; -} -public override bool AddRequiredTag(ulong handle,string pTagName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredTag(m_pSteamUGC,handle,pTagName); - return result; -} -public override bool AddExcludedTag(ulong handle,string pTagName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddExcludedTag(m_pSteamUGC,handle,pTagName); - return result; -} -public override bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnOnlyIDs(m_pSteamUGC,handle,bReturnOnlyIDs); - return result; -} -public override bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnKeyValueTags(m_pSteamUGC,handle,bReturnKeyValueTags); - return result; -} -public override bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnLongDescription(m_pSteamUGC,handle,bReturnLongDescription); - return result; -} -public override bool SetReturnMetadata(ulong handle,bool bReturnMetadata) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnMetadata(m_pSteamUGC,handle,bReturnMetadata); - return result; -} -public override bool SetReturnChildren(ulong handle,bool bReturnChildren) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnChildren(m_pSteamUGC,handle,bReturnChildren); - return result; -} -public override bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(m_pSteamUGC,handle,bReturnAdditionalPreviews); - return result; -} -public override bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnTotalOnly(m_pSteamUGC,handle,bReturnTotalOnly); - return result; -} -public override bool SetReturnPlaytimeStats(ulong handle,uint unDays) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnPlaytimeStats(m_pSteamUGC,handle,unDays); - return result; -} -public override bool SetLanguage(ulong handle,string pchLanguage) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetLanguage(m_pSteamUGC,handle,pchLanguage); - return result; -} -public override bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetAllowCachedResponse(m_pSteamUGC,handle,unMaxAgeSeconds); - return result; -} -public override bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetCloudFileNameFilter(m_pSteamUGC,handle,pMatchCloudFileName); - return result; -} -public override bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetMatchAnyTag(m_pSteamUGC,handle,bMatchAnyTag); - return result; -} -public override bool SetSearchText(ulong handle,string pSearchText) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetSearchText(m_pSteamUGC,handle,pSearchText); - return result; -} -public override bool SetRankedByTrendDays(ulong handle,uint unDays) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetRankedByTrendDays(m_pSteamUGC,handle,unDays); - return result; -} -public override bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredKeyValueTag(m_pSteamUGC,handle,pKey,pValue); - return result; -} -public override ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RequestUGCDetails(m_pSteamUGC,nPublishedFileID,unMaxAgeSeconds); - return result; -} -public override ulong CreateItem(uint nConsumerAppId,uint eFileType) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateItem(m_pSteamUGC,nConsumerAppId,eFileType); - return result; -} -public override ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartItemUpdate(m_pSteamUGC,nConsumerAppId,nPublishedFileID); - return result; -} -public override bool SetItemTitle(ulong handle,string pchTitle) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTitle(m_pSteamUGC,handle,pchTitle); - return result; -} -public override bool SetItemDescription(ulong handle,string pchDescription) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemDescription(m_pSteamUGC,handle,pchDescription); - return result; -} -public override bool SetItemUpdateLanguage(ulong handle,string pchLanguage) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemUpdateLanguage(m_pSteamUGC,handle,pchLanguage); - return result; -} -public override bool SetItemMetadata(ulong handle,string pchMetaData) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemMetadata(m_pSteamUGC,handle,pchMetaData); - return result; -} -public override bool SetItemVisibility(ulong handle,uint eVisibility) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemVisibility(m_pSteamUGC,handle,eVisibility); - return result; -} -public override bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTags(m_pSteamUGC,updateHandle,ref pTags); - return result; -} -public override bool SetItemContent(ulong handle,string pszContentFolder) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemContent(m_pSteamUGC,handle,pszContentFolder); - return result; -} -public override bool SetItemPreview(ulong handle,string pszPreviewFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemPreview(m_pSteamUGC,handle,pszPreviewFile); - return result; -} -public override bool SetAllowLegacyUpload(ulong handle,bool bAllowLegacyUpload) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetAllowLegacyUpload(m_pSteamUGC,handle,bAllowLegacyUpload); - return result; -} -public override bool RemoveItemKeyValueTags(ulong handle,string pchKey) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemKeyValueTags(m_pSteamUGC,handle,pchKey); - return result; -} -public override bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemKeyValueTag(m_pSteamUGC,handle,pchKey,pchValue); - return result; -} -public override bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewFile(m_pSteamUGC,handle,pszPreviewFile,type); - return result; -} -public override bool AddItemPreviewVideo(ulong handle,string pszVideoID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewVideo(m_pSteamUGC,handle,pszVideoID); - return result; -} -public override bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewFile(m_pSteamUGC,handle,index,pszPreviewFile); - return result; -} -public override bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewVideo(m_pSteamUGC,handle,index,pszVideoID); - return result; -} -public override bool RemoveItemPreview(ulong handle,uint index) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemPreview(m_pSteamUGC,handle,index); - return result; -} -public override ulong SubmitItemUpdate(ulong handle,string pchChangeNote) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubmitItemUpdate(m_pSteamUGC,handle,pchChangeNote); - return result; -} -public override uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal) -{ - CheckIfUsable(); - punBytesProcessed = 0; - punBytesTotal = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemUpdateProgress(m_pSteamUGC,handle,ref punBytesProcessed,ref punBytesTotal); - return result; -} -public override ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SetUserItemVote(m_pSteamUGC,nPublishedFileID,bVoteUp); - return result; -} -public override ulong GetUserItemVote(ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_GetUserItemVote(m_pSteamUGC,nPublishedFileID); - return result; -} -public override ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemToFavorites(m_pSteamUGC,nAppId,nPublishedFileID); - return result; -} -public override ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemFromFavorites(m_pSteamUGC,nAppId,nPublishedFileID); - return result; -} -public override ulong SubscribeItem(ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubscribeItem(m_pSteamUGC,nPublishedFileID); - return result; -} -public override ulong UnsubscribeItem(ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_UnsubscribeItem(m_pSteamUGC,nPublishedFileID); - return result; -} -public override uint GetNumSubscribedItems() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetNumSubscribedItems(m_pSteamUGC); - return result; -} -public override uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries) -{ - CheckIfUsable(); - pvecPublishedFileID = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetSubscribedItems(m_pSteamUGC,ref pvecPublishedFileID,cMaxEntries); - return result; -} -public override uint GetItemState(ulong nPublishedFileID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemState(m_pSteamUGC,nPublishedFileID); - return result; -} -public override bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp) -{ - CheckIfUsable(); - punSizeOnDisk = 0; - punTimeStamp = 0; - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemInstallInfo(m_pSteamUGC,nPublishedFileID,ref punSizeOnDisk,pStrBuffer1,2048,ref punTimeStamp); - pchFolder = pStrBuffer1.ToString(); - return result; -} -public override bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) -{ - CheckIfUsable(); - punBytesDownloaded = 0; - punBytesTotal = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemDownloadInfo(m_pSteamUGC,nPublishedFileID,ref punBytesDownloaded,ref punBytesTotal); - return result; -} -public override bool DownloadItem(ulong nPublishedFileID,bool bHighPriority) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_DownloadItem(m_pSteamUGC,nPublishedFileID,bHighPriority); - return result; -} -public override bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_BInitWorkshopForGameServer(m_pSteamUGC,unWorkshopDepotID,pszFolder); - return result; -} -public override void SuspendDownloads(bool bSuspend) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUGC_SuspendDownloads(m_pSteamUGC,bSuspend); -} -public override ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) -{ - CheckIfUsable(); - pvecPublishedFileID = 0; - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); - return result; -} -public override ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) -{ - CheckIfUsable(); - pvecPublishedFileID = 0; - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); - return result; -} -public override ulong StopPlaytimeTrackingForAllItems() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(m_pSteamUGC); - return result; -} -public override ulong AddDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddDependency(m_pSteamUGC,nParentPublishedFileID,nChildPublishedFileID); - return result; -} -public override ulong RemoveDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveDependency(m_pSteamUGC,nParentPublishedFileID,nChildPublishedFileID); - return result; -} -public override ulong AddAppDependency(ulong nPublishedFileID,uint nAppID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddAppDependency(m_pSteamUGC,nPublishedFileID,nAppID); - return result; -} -public override ulong RemoveAppDependency(ulong nPublishedFileID,uint nAppID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveAppDependency(m_pSteamUGC,nPublishedFileID,nAppID); - return result; -} -public override ulong GetAppDependencies(ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_GetAppDependencies(m_pSteamUGC,nPublishedFileID); - return result; -} -public override ulong DeleteItem(ulong nPublishedFileID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_DeleteItem(m_pSteamUGC,nPublishedFileID); - return result; -} -} - - -public class CSteamAppList : ISteamAppList -{ -public CSteamAppList(IntPtr SteamAppList) -{ - m_pSteamAppList = SteamAppList; -} -IntPtr m_pSteamAppList; - -public override IntPtr GetIntPtr() { return m_pSteamAppList; } - -private void CheckIfUsable() -{ - if (m_pSteamAppList == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint GetNumInstalledApps() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetNumInstalledApps(m_pSteamAppList); - return result; -} -public override uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs) -{ - CheckIfUsable(); - pvecAppID = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetInstalledApps(m_pSteamAppList,ref pvecAppID,unMaxAppIDs); - return result; -} -public override int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppName(m_pSteamAppList,nAppID,pchName,cchNameMax); - return result; -} -public override int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppInstallDir(m_pSteamAppList,nAppID,pchDirectory,cchNameMax); - return result; -} -public override int GetAppBuildId(uint nAppID) -{ - CheckIfUsable(); - int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppBuildId(m_pSteamAppList,nAppID); - return result; -} -} - - -public class CSteamHTMLSurface : ISteamHTMLSurface -{ -public CSteamHTMLSurface(IntPtr SteamHTMLSurface) -{ - m_pSteamHTMLSurface = SteamHTMLSurface; -} -IntPtr m_pSteamHTMLSurface; - -public override IntPtr GetIntPtr() { return m_pSteamHTMLSurface; } - -private void CheckIfUsable() -{ - if (m_pSteamHTMLSurface == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override void DestructISteamHTMLSurface() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(m_pSteamHTMLSurface); -} -public override bool Init() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Init(m_pSteamHTMLSurface); - return result; -} -public override bool Shutdown() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Shutdown(m_pSteamHTMLSurface); - return result; -} -public override ulong CreateBrowser(string pchUserAgent,string pchUserCSS) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CreateBrowser(m_pSteamHTMLSurface,pchUserAgent,pchUserCSS); - return result; -} -public override void RemoveBrowser(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_RemoveBrowser(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_LoadURL(m_pSteamHTMLSurface,unBrowserHandle,pchURL,pchPostData); -} -public override void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetSize(m_pSteamHTMLSurface,unBrowserHandle,unWidth,unHeight); -} -public override void StopLoad(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopLoad(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void Reload(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Reload(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void GoBack(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoBack(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void GoForward(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoForward(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void AddHeader(uint unBrowserHandle,string pchKey,string pchValue) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AddHeader(m_pSteamHTMLSurface,unBrowserHandle,pchKey,pchValue); -} -public override void ExecuteJavascript(uint unBrowserHandle,string pchScript) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ExecuteJavascript(m_pSteamHTMLSurface,unBrowserHandle,pchScript); -} -public override void MouseUp(uint unBrowserHandle,uint eMouseButton) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseUp(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); -} -public override void MouseDown(uint unBrowserHandle,uint eMouseButton) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDown(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); -} -public override void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDoubleClick(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); -} -public override void MouseMove(uint unBrowserHandle,int x,int y) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseMove(m_pSteamHTMLSurface,unBrowserHandle,x,y); -} -public override void MouseWheel(uint unBrowserHandle,int nDelta) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseWheel(m_pSteamHTMLSurface,unBrowserHandle,nDelta); -} -public override void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers,bool bIsSystemKey) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyDown(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers,bIsSystemKey); -} -public override void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyUp(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); -} -public override void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyChar(m_pSteamHTMLSurface,unBrowserHandle,cUnicodeChar,eHTMLKeyModifiers); -} -public override void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); -} -public override void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetVerticalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); -} -public override void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetKeyFocus(m_pSteamHTMLSurface,unBrowserHandle,bHasKeyFocus); -} -public override void ViewSource(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ViewSource(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void CopyToClipboard(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CopyToClipboard(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void PasteFromClipboard(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_PasteFromClipboard(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Find(m_pSteamHTMLSurface,unBrowserHandle,pchSearchStr,bCurrentlyInFind,bReverse); -} -public override void StopFind(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopFind(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void GetLinkAtPosition(uint unBrowserHandle,int x,int y) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(m_pSteamHTMLSurface,unBrowserHandle,x,y); -} -public override void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetCookie(m_pSteamHTMLSurface,pchHostname,pchKey,pchValue,pchPath,nExpires,bSecure,bHTTPOnly); -} -public override void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(m_pSteamHTMLSurface,unBrowserHandle,flZoom,nPointX,nPointY); -} -public override void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetBackgroundMode(m_pSteamHTMLSurface,unBrowserHandle,bBackgroundMode); -} -public override void SetDPIScalingFactor(uint unBrowserHandle,float flDPIScaling) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor(m_pSteamHTMLSurface,unBrowserHandle,flDPIScaling); -} -public override void OpenDeveloperTools(uint unBrowserHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_OpenDeveloperTools(m_pSteamHTMLSurface,unBrowserHandle); -} -public override void AllowStartRequest(uint unBrowserHandle,bool bAllowed) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AllowStartRequest(m_pSteamHTMLSurface,unBrowserHandle,bAllowed); -} -public override void JSDialogResponse(uint unBrowserHandle,bool bResult) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamHTMLSurface_JSDialogResponse(m_pSteamHTMLSurface,unBrowserHandle,bResult); -} -} - - -public class CSteamInventory : ISteamInventory -{ -public CSteamInventory(IntPtr SteamInventory) -{ - m_pSteamInventory = SteamInventory; -} -IntPtr m_pSteamInventory; - -public override IntPtr GetIntPtr() { return m_pSteamInventory; } - -private void CheckIfUsable() -{ - if (m_pSteamInventory == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override uint GetResultStatus(int resultHandle) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultStatus(m_pSteamInventory,resultHandle); - return result; -} -public override bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray) -{ - CheckIfUsable(); - uint punOutItemsArraySize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,null,ref punOutItemsArraySize); - pOutItemsArray= new SteamItemDetails_t[punOutItemsArraySize]; - result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,pOutItemsArray,ref punOutItemsArraySize); - return result; -} -public override bool GetResultItemProperty(int resultHandle,uint unItemIndex,string pchPropertyName,out string pchValueBuffer) -{ - CheckIfUsable(); - uint punValueBufferSizeOut = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItemProperty(m_pSteamInventory,resultHandle,unItemIndex,pchPropertyName,null,ref punValueBufferSizeOut); - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)punValueBufferSizeOut); - result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItemProperty(m_pSteamInventory,resultHandle,unItemIndex,pchPropertyName,pStrBuffer1,ref punValueBufferSizeOut); - pchValueBuffer = pStrBuffer1.ToString(); - return result; -} -public override uint GetResultTimestamp(int resultHandle) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultTimestamp(m_pSteamInventory,resultHandle); - return result; -} -public override bool CheckResultSteamID(int resultHandle,ulong steamIDExpected) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_CheckResultSteamID(m_pSteamInventory,resultHandle,steamIDExpected); - return result; -} -public override void DestroyResult(int resultHandle) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInventory_DestroyResult(m_pSteamInventory,resultHandle); -} -public override bool GetAllItems(ref int pResultHandle) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetAllItems(m_pSteamInventory,ref pResultHandle); - return result; -} -public override bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemsByID(m_pSteamInventory,ref pResultHandle,pInstanceIDs,(uint) pInstanceIDs.Length); - return result; -} -public override bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize) -{ - CheckIfUsable(); - punOutBufferSize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SerializeResult(m_pSteamInventory,resultHandle,pOutBuffer,ref punOutBufferSize); - return result; -} -public override bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE) -{ - CheckIfUsable(); - pOutResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_DeserializeResult(m_pSteamInventory,ref pOutResultHandle,pBuffer,unBufferSize,bRESERVED_MUST_BE_FALSE); - return result; -} -public override bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GenerateItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,punArrayQuantity,(uint) punArrayQuantity.Length); - return result; -} -public override bool GrantPromoItems(ref int pResultHandle) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GrantPromoItems(m_pSteamInventory,ref pResultHandle); - return result; -} -public override bool AddPromoItem(ref int pResultHandle,int itemDef) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItem(m_pSteamInventory,ref pResultHandle,itemDef); - return result; -} -public override bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,(uint) pArrayItemDefs.Length); - return result; -} -public override bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ConsumeItem(m_pSteamInventory,ref pResultHandle,itemConsume,unQuantity); - return result; -} -public override bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ExchangeItems(m_pSteamInventory,ref pResultHandle,pArrayGenerate,punArrayGenerateQuantity,(uint) punArrayGenerateQuantity.Length,pArrayDestroy,punArrayDestroyQuantity,(uint) punArrayDestroyQuantity.Length); - return result; -} -public override bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TransferItemQuantity(m_pSteamInventory,ref pResultHandle,itemIdSource,unQuantity,itemIdDest); - return result; -} -public override void SendItemDropHeartbeat() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamInventory_SendItemDropHeartbeat(m_pSteamInventory); -} -public override bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TriggerItemDrop(m_pSteamInventory,ref pResultHandle,dropListDefinition); - return result; -} -public override bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TradeItems(m_pSteamInventory,ref pResultHandle,steamIDTradePartner,pArrayGive,pArrayGiveQuantity,(uint) pArrayGiveQuantity.Length,pArrayGet,pArrayGetQuantity,(uint) pArrayGetQuantity.Length); - return result; -} -public override bool LoadItemDefinitions() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_LoadItemDefinitions(m_pSteamInventory); - return result; -} -public override bool GetItemDefinitionIDs(out int [] pItemDefIDs) -{ - CheckIfUsable(); - uint punItemDefIDsArraySize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,null,ref punItemDefIDsArraySize); - pItemDefIDs= new int[punItemDefIDsArraySize]; - result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,pItemDefIDs,ref punItemDefIDsArraySize); - return result; -} -public override bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer) -{ - CheckIfUsable(); - uint punValueBufferSizeOut = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,null,ref punValueBufferSizeOut); - System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)punValueBufferSizeOut); - result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,pStrBuffer1,ref punValueBufferSizeOut); - pchValueBuffer = pStrBuffer1.ToString(); - return result; -} -public override ulong RequestEligiblePromoItemDefinitionsIDs(ulong steamID) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs(m_pSteamInventory,steamID); - return result; -} -public override bool GetEligiblePromoItemDefinitionIDs(ulong steamID,out int [] pItemDefIDs) -{ - CheckIfUsable(); - uint punItemDefIDsArraySize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs(m_pSteamInventory,steamID,null,ref punItemDefIDsArraySize); - pItemDefIDs= new int[punItemDefIDsArraySize]; - result = NativeEntrypoints.SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs(m_pSteamInventory,steamID,pItemDefIDs,ref punItemDefIDsArraySize); - return result; -} -public override ulong StartPurchase(int [] pArrayItemDefs,uint [] punArrayQuantity) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInventory_StartPurchase(m_pSteamInventory,pArrayItemDefs,punArrayQuantity,(uint) punArrayQuantity.Length); - return result; -} -public override ulong RequestPrices() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInventory_RequestPrices(m_pSteamInventory); - return result; -} -public override uint GetNumItemsWithPrices() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetNumItemsWithPrices(m_pSteamInventory); - return result; -} -public override bool GetItemsWithPrices(out int [] pArrayItemDefs,out ulong [] pCurrentPrices,out ulong [] pBasePrices,uint unArrayLength) -{ - CheckIfUsable(); - pArrayItemDefs = 0; - pPrices = 0; - pBasePrices = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemsWithPrices(m_pSteamInventory,pArrayItemDefs,pCurrentPrices,null,unArrayLength); - pArrayItemDefs= new int[pArrayItemDefs]; - pCurrentPrices= new ulong[pPrices]; - pBasePrices= new ulong[pPrices]; - result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemsWithPrices(m_pSteamInventory,pArrayItemDefs,pCurrentPrices,pBasePrices,unArrayLength); - return result; -} -public override bool GetItemPrice(int iDefinition,ref ulong pCurrentPrice,ref ulong pBasePrice) -{ - CheckIfUsable(); - pCurrentPrice = 0; - pBasePrice = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemPrice(m_pSteamInventory,iDefinition,ref pCurrentPrice,ref pBasePrice); - return result; -} -public override ulong StartUpdateProperties() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamInventory_StartUpdateProperties(m_pSteamInventory); - return result; -} -public override bool RemoveProperty(ulong handle,ulong nItemID,string pchPropertyName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_RemoveProperty(m_pSteamInventory,handle,nItemID,pchPropertyName); - return result; -} -public override bool SetProperty(ulong handle,ulong nItemID,string pchPropertyName,string pchPropertyValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SetProperty(m_pSteamInventory,handle,nItemID,pchPropertyName,pchPropertyValue); - return result; -} -public override bool SetProperty0(ulong handle,ulong nItemID,string pchPropertyName,bool bValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SetProperty0(m_pSteamInventory,handle,nItemID,pchPropertyName,bValue); - return result; -} -public override bool SetProperty1(ulong handle,ulong nItemID,string pchPropertyName,long nValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SetProperty1(m_pSteamInventory,handle,nItemID,pchPropertyName,nValue); - return result; -} -public override bool SetProperty2(ulong handle,ulong nItemID,string pchPropertyName,float flValue) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SetProperty2(m_pSteamInventory,handle,nItemID,pchPropertyName,flValue); - return result; -} -public override bool SubmitUpdateProperties(ulong handle,ref int pResultHandle) -{ - CheckIfUsable(); - pResultHandle = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SubmitUpdateProperties(m_pSteamInventory,handle,ref pResultHandle); - return result; -} -} - - -public class CSteamVideo : ISteamVideo -{ -public CSteamVideo(IntPtr SteamVideo) -{ - m_pSteamVideo = SteamVideo; -} -IntPtr m_pSteamVideo; - -public override IntPtr GetIntPtr() { return m_pSteamVideo; } - -private void CheckIfUsable() -{ - if (m_pSteamVideo == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override void GetVideoURL(uint unVideoAppID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamVideo_GetVideoURL(m_pSteamVideo,unVideoAppID); -} -public override bool IsBroadcasting(ref int pnNumViewers) -{ - CheckIfUsable(); - pnNumViewers = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamVideo_IsBroadcasting(m_pSteamVideo,ref pnNumViewers); - return result; -} -public override void GetOPFSettings(uint unVideoAppID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamVideo_GetOPFSettings(m_pSteamVideo,unVideoAppID); -} -public override bool GetOPFStringForApp(uint unVideoAppID,string pchBuffer,ref int pnBufferSize) -{ - CheckIfUsable(); - pnBufferSize = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamVideo_GetOPFStringForApp(m_pSteamVideo,unVideoAppID,pchBuffer,ref pnBufferSize); - return result; -} -} - - -public class CSteamParentalSettings : ISteamParentalSettings -{ -public CSteamParentalSettings(IntPtr SteamParentalSettings) -{ - m_pSteamParentalSettings = SteamParentalSettings; -} -IntPtr m_pSteamParentalSettings; - -public override IntPtr GetIntPtr() { return m_pSteamParentalSettings; } - -private void CheckIfUsable() -{ - if (m_pSteamParentalSettings == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool BIsParentalLockEnabled() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled(m_pSteamParentalSettings); - return result; -} -public override bool BIsParentalLockLocked() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParentalSettings_BIsParentalLockLocked(m_pSteamParentalSettings); - return result; -} -public override bool BIsAppBlocked(uint nAppID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParentalSettings_BIsAppBlocked(m_pSteamParentalSettings,nAppID); - return result; -} -public override bool BIsAppInBlockList(uint nAppID) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParentalSettings_BIsAppInBlockList(m_pSteamParentalSettings,nAppID); - return result; -} -public override bool BIsFeatureBlocked(uint eFeature) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParentalSettings_BIsFeatureBlocked(m_pSteamParentalSettings,eFeature); - return result; -} -public override bool BIsFeatureInBlockList(uint eFeature) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList(m_pSteamParentalSettings,eFeature); - return result; -} -} - - -public class CSteamGameServer : ISteamGameServer -{ -public CSteamGameServer(IntPtr SteamGameServer) -{ - m_pSteamGameServer = SteamGameServer; -} -IntPtr m_pSteamGameServer; - -public override IntPtr GetIntPtr() { return m_pSteamGameServer; } - -private void CheckIfUsable() -{ - if (m_pSteamGameServer == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_InitGameServer(m_pSteamGameServer,unIP,usGamePort,usQueryPort,unFlags,nGameAppId,pchVersionString); - return result; -} -public override void SetProduct(string pszProduct) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetProduct(m_pSteamGameServer,pszProduct); -} -public override void SetGameDescription(string pszGameDescription) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameDescription(m_pSteamGameServer,pszGameDescription); -} -public override void SetModDir(string pszModDir) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetModDir(m_pSteamGameServer,pszModDir); -} -public override void SetDedicatedServer(bool bDedicated) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetDedicatedServer(m_pSteamGameServer,bDedicated); -} -public override void LogOn(string pszToken) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_LogOn(m_pSteamGameServer,pszToken); -} -public override void LogOnAnonymous() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_LogOnAnonymous(m_pSteamGameServer); -} -public override void LogOff() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_LogOff(m_pSteamGameServer); -} -public override bool BLoggedOn() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BLoggedOn(m_pSteamGameServer); - return result; -} -public override bool BSecure() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BSecure(m_pSteamGameServer); - return result; -} -public override ulong GetSteamID() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetSteamID(m_pSteamGameServer); - return result; -} -public override bool WasRestartRequested() -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_WasRestartRequested(m_pSteamGameServer); - return result; -} -public override void SetMaxPlayerCount(int cPlayersMax) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetMaxPlayerCount(m_pSteamGameServer,cPlayersMax); -} -public override void SetBotPlayerCount(int cBotplayers) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetBotPlayerCount(m_pSteamGameServer,cBotplayers); -} -public override void SetServerName(string pszServerName) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetServerName(m_pSteamGameServer,pszServerName); -} -public override void SetMapName(string pszMapName) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetMapName(m_pSteamGameServer,pszMapName); -} -public override void SetPasswordProtected(bool bPasswordProtected) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetPasswordProtected(m_pSteamGameServer,bPasswordProtected); -} -public override void SetSpectatorPort(char unSpectatorPort) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorPort(m_pSteamGameServer,unSpectatorPort); -} -public override void SetSpectatorServerName(string pszSpectatorServerName) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorServerName(m_pSteamGameServer,pszSpectatorServerName); -} -public override void ClearAllKeyValues() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_ClearAllKeyValues(m_pSteamGameServer); -} -public override void SetKeyValue(string pKey,string pValue) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetKeyValue(m_pSteamGameServer,pKey,pValue); -} -public override void SetGameTags(string pchGameTags) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameTags(m_pSteamGameServer,pchGameTags); -} -public override void SetGameData(string pchGameData) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameData(m_pSteamGameServer,pchGameData); -} -public override void SetRegion(string pszRegion) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetRegion(m_pSteamGameServer,pszRegion); -} -public override bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(m_pSteamGameServer,unIPClient,pvAuthBlob,cubAuthBlobSize,ref pSteamIDUser); - return result; -} -public override ulong CreateUnauthenticatedUserConnection() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(m_pSteamGameServer); - return result; -} -public override void SendUserDisconnect(ulong steamIDUser) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserDisconnect(m_pSteamGameServer,steamIDUser); -} -public override bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BUpdateUserData(m_pSteamGameServer,steamIDUser,pchPlayerName,uScore); - return result; -} -public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) -{ - CheckIfUsable(); - pcbTicket = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetAuthSessionTicket(m_pSteamGameServer,pTicket,cbMaxTicket,ref pcbTicket); - return result; -} -public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_BeginAuthSession(m_pSteamGameServer,pAuthTicket,cbAuthTicket,steamID); - return result; -} -public override void EndAuthSession(ulong steamID) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_EndAuthSession(m_pSteamGameServer,steamID); -} -public override void CancelAuthTicket(uint hAuthTicket) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_CancelAuthTicket(m_pSteamGameServer,hAuthTicket); -} -public override uint UserHasLicenseForApp(ulong steamID,uint appID) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_UserHasLicenseForApp(m_pSteamGameServer,steamID,appID); - return result; -} -public override bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_RequestUserGroupStatus(m_pSteamGameServer,steamIDUser,steamIDGroup); - return result; -} -public override void GetGameplayStats() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_GetGameplayStats(m_pSteamGameServer); -} -public override ulong GetServerReputation() -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetServerReputation(m_pSteamGameServer); - return result; -} -public override uint GetPublicIP() -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetPublicIP(m_pSteamGameServer); - return result; -} -public override bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_HandleIncomingPacket(m_pSteamGameServer,pData,cbData,srcIP,srcPort); - return result; -} -public override int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort) -{ - CheckIfUsable(); - pNetAdr = 0; - pPort = (char) 0; - int result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetNextOutgoingPacket(m_pSteamGameServer,pOut,cbMaxOut,ref pNetAdr,ref pPort); - return result; -} -public override void EnableHeartbeats(bool bActive) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_EnableHeartbeats(m_pSteamGameServer,bActive); -} -public override void SetHeartbeatInterval(int iHeartbeatInterval) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_SetHeartbeatInterval(m_pSteamGameServer,iHeartbeatInterval); -} -public override void ForceHeartbeat() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamGameServer_ForceHeartbeat(m_pSteamGameServer); -} -public override ulong AssociateWithClan(ulong steamIDClan) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_AssociateWithClan(m_pSteamGameServer,steamIDClan); - return result; -} -public override ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(m_pSteamGameServer,steamIDNewPlayer); - return result; -} -} - - -public class CSteamGameServerStats : ISteamGameServerStats -{ -public CSteamGameServerStats(IntPtr SteamGameServerStats) -{ - m_pSteamGameServerStats = SteamGameServerStats; -} -IntPtr m_pSteamGameServerStats; - -public override IntPtr GetIntPtr() { return m_pSteamGameServerStats; } - -private void CheckIfUsable() -{ - if (m_pSteamGameServerStats == IntPtr.Zero) - { - throw new Exception("Steam Pointer not configured"); - } -} -public override ulong RequestUserStats(ulong steamIDUser) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_RequestUserStats(m_pSteamGameServerStats,steamIDUser); - return result; -} -public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); - return result; -} -public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) -{ - CheckIfUsable(); - pData = 0; - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); - return result; -} -public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) -{ - CheckIfUsable(); - pbAchieved = false; - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName,ref pbAchieved); - return result; -} -public override bool SetUserStat(ulong steamIDUser,string pchName,int nData) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,nData); - return result; -} -public override bool SetUserStat0(ulong steamIDUser,string pchName,float fData) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,fData); - return result; -} -public override bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(m_pSteamGameServerStats,steamIDUser,pchName,flCountThisSession,dSessionLength); - return result; -} -public override bool SetUserAchievement(ulong steamIDUser,string pchName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); - return result; -} -public override bool ClearUserAchievement(ulong steamIDUser,string pchName) -{ - CheckIfUsable(); - bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_ClearUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); - return result; -} -public override ulong StoreUserStats(ulong steamIDUser) -{ - CheckIfUsable(); - ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_StoreUserStats(m_pSteamGameServerStats,steamIDUser); - return result; -} -} - - -public class CUserStatsReceived_t_Callback -{ - public CUserStatsReceived_t_Callback() { } - ~CUserStatsReceived_t_Callback() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_Callback func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallback(func); - } -} -public class CGetOPFSettingsResult_t_Callback -{ - public CGetOPFSettingsResult_t_Callback() { } - ~CGetOPFSettingsResult_t_Callback() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGetOPFSettingsResult_t_RemoveCallback(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_GetOPFSettingsResult_t_Callback func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGetOPFSettingsResult_t_RemoveCallback(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGetOPFSettingsResult_t_SetCallback(func); - } -} -public class CSteamInventoryStartPurchaseResult_t_CallResult -{ - public CSteamInventoryStartPurchaseResult_t_CallResult() { } - ~CSteamInventoryStartPurchaseResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamInventoryStartPurchaseResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamInventoryStartPurchaseResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamInventoryStartPurchaseResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CSteamInventoryStartPurchaseResult_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageFileReadAsyncComplete_t_CallResult -{ - public CRemoteStorageFileReadAsyncComplete_t_CallResult() { } - ~CRemoteStorageFileReadAsyncComplete_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult -{ - public CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() { } - ~CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(hAPICall, func); - } -} -public class CFileDetailsResult_t_CallResult -{ - public CFileDetailsResult_t_CallResult() { } - ~CFileDetailsResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FileDetailsResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_SetCallResult(hAPICall, func); - } -} -public class CGSStatsStored_t_CallResult -{ - public CGSStatsStored_t_CallResult() { } - ~CGSStatsStored_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsStored_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsStored_t_SetCallResult(hAPICall, func); - } -} -public class CStartPlaytimeTrackingResult_t_CallResult -{ - public CStartPlaytimeTrackingResult_t_CallResult() { } - ~CStartPlaytimeTrackingResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CStartPlaytimeTrackingResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_StartPlaytimeTrackingResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CStartPlaytimeTrackingResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CStartPlaytimeTrackingResult_t_SetCallResult(hAPICall, func); - } -} -public class CFriendsGetFollowerCount_t_CallResult -{ - public CFriendsGetFollowerCount_t_CallResult() { } - ~CFriendsGetFollowerCount_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsGetFollowerCount_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_SetCallResult(hAPICall, func); - } -} -public class CFriendsIsFollowing_t_CallResult -{ - public CFriendsIsFollowing_t_CallResult() { } - ~CFriendsIsFollowing_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsIsFollowing_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_SetCallResult(hAPICall, func); - } -} -public class CLobbyMatchList_t_CallResult -{ - public CLobbyMatchList_t_CallResult() { } - ~CLobbyMatchList_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyMatchList_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageUpdatePublishedFileResult_t_CallResult -{ - public CRemoteStorageUpdatePublishedFileResult_t_CallResult() { } - ~CRemoteStorageUpdatePublishedFileResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(hAPICall, func); - } -} -public class CStoreAuthURLResponse_t_CallResult -{ - public CStoreAuthURLResponse_t_CallResult() { } - ~CStoreAuthURLResponse_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_StoreAuthURLResponse_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_SetCallResult(hAPICall, func); - } -} -public class CLobbyCreated_t_CallResult -{ - public CLobbyCreated_t_CallResult() { } - ~CLobbyCreated_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyCreated_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CLobbyCreated_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageFileWriteAsyncComplete_t_CallResult -{ - public CRemoteStorageFileWriteAsyncComplete_t_CallResult() { } - ~CRemoteStorageFileWriteAsyncComplete_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageDeletePublishedFileResult_t_CallResult -{ - public CRemoteStorageDeletePublishedFileResult_t_CallResult() { } - ~CRemoteStorageDeletePublishedFileResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageGetPublishedFileDetailsResult_t_CallResult -{ - public CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() { } - ~CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(hAPICall, func); - } -} -public class CAddUGCDependencyResult_t_CallResult -{ - public CAddUGCDependencyResult_t_CallResult() { } - ~CAddUGCDependencyResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CAddUGCDependencyResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AddUGCDependencyResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CAddUGCDependencyResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CAddUGCDependencyResult_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageDownloadUGCResult_t_CallResult -{ - public CRemoteStorageDownloadUGCResult_t_CallResult() { } - ~CRemoteStorageDownloadUGCResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_SetCallResult(hAPICall, func); - } -} -public class CSteamUGCQueryCompleted_t_CallResult -{ - public CSteamUGCQueryCompleted_t_CallResult() { } - ~CSteamUGCQueryCompleted_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamUGCQueryCompleted_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageFileShareResult_t_CallResult -{ - public CRemoteStorageFileShareResult_t_CallResult() { } - ~CRemoteStorageFileShareResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileShareResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_SetCallResult(hAPICall, func); - } -} -public class CLobbyEnter_t_CallResult -{ - public CLobbyEnter_t_CallResult() { } - ~CLobbyEnter_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyEnter_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CLobbyEnter_t_SetCallResult(hAPICall, func); - } -} -public class CSubmitItemUpdateResult_t_CallResult -{ - public CSubmitItemUpdateResult_t_CallResult() { } - ~CSubmitItemUpdateResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SubmitItemUpdateResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_SetCallResult(hAPICall, func); - } -} -public class CNumberOfCurrentPlayers_t_CallResult -{ - public CNumberOfCurrentPlayers_t_CallResult() { } - ~CNumberOfCurrentPlayers_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_NumberOfCurrentPlayers_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_SetCallResult(hAPICall, func); - } -} -public class CGSStatsReceived_t_CallResult -{ - public CGSStatsReceived_t_CallResult() { } - ~CGSStatsReceived_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsReceived_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_SetCallResult(hAPICall, func); - } -} -public class CHTML_BrowserReady_t_CallResult -{ - public CHTML_BrowserReady_t_CallResult() { } - ~CHTML_BrowserReady_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_HTML_BrowserReady_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_SetCallResult(hAPICall, func); - } -} -public class CMarketEligibilityResponse_t_CallResult -{ - public CMarketEligibilityResponse_t_CallResult() { } - ~CMarketEligibilityResponse_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CMarketEligibilityResponse_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_MarketEligibilityResponse_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CMarketEligibilityResponse_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CMarketEligibilityResponse_t_SetCallResult(hAPICall, func); - } -} -public class CLeaderboardScoresDownloaded_t_CallResult -{ - public CLeaderboardScoresDownloaded_t_CallResult() { } - ~CLeaderboardScoresDownloaded_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoresDownloaded_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult -{ - public CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() { } - ~CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(hAPICall, func); - } -} -public class CCreateBeaconCallback_t_CallResult -{ - public CCreateBeaconCallback_t_CallResult() { } - ~CCreateBeaconCallback_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CCreateBeaconCallback_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CreateBeaconCallback_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CCreateBeaconCallback_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CCreateBeaconCallback_t_SetCallResult(hAPICall, func); - } -} -public class CCreateItemResult_t_CallResult -{ - public CCreateItemResult_t_CallResult() { } - ~CCreateItemResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CreateItemResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CCreateItemResult_t_SetCallResult(hAPICall, func); - } -} -public class CDeleteItemResult_t_CallResult -{ - public CDeleteItemResult_t_CallResult() { } - ~CDeleteItemResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CDeleteItemResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_DeleteItemResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CDeleteItemResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CDeleteItemResult_t_SetCallResult(hAPICall, func); - } -} -public class CSetUserItemVoteResult_t_CallResult -{ - public CSetUserItemVoteResult_t_CallResult() { } - ~CSetUserItemVoteResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetUserItemVoteResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_SetCallResult(hAPICall, func); - } -} -public class CSteamInventoryRequestPricesResult_t_CallResult -{ - public CSteamInventoryRequestPricesResult_t_CallResult() { } - ~CSteamInventoryRequestPricesResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamInventoryRequestPricesResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamInventoryRequestPricesResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamInventoryRequestPricesResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CSteamInventoryRequestPricesResult_t_SetCallResult(hAPICall, func); - } -} -public class CComputeNewPlayerCompatibilityResult_t_CallResult -{ - public CComputeNewPlayerCompatibilityResult_t_CallResult() { } - ~CComputeNewPlayerCompatibilityResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_SetCallResult(hAPICall, func); - } -} -public class CLeaderboardScoreUploaded_t_CallResult -{ - public CLeaderboardScoreUploaded_t_CallResult() { } - ~CLeaderboardScoreUploaded_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoreUploaded_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_SetCallResult(hAPICall, func); - } -} -public class CJoinPartyCallback_t_CallResult -{ - public CJoinPartyCallback_t_CallResult() { } - ~CJoinPartyCallback_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CJoinPartyCallback_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_JoinPartyCallback_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CJoinPartyCallback_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CJoinPartyCallback_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult -{ - public CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() { } - ~CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(hAPICall, func); - } -} -public class CGlobalStatsReceived_t_CallResult -{ - public CGlobalStatsReceived_t_CallResult() { } - ~CGlobalStatsReceived_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalStatsReceived_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult -{ - public CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() { } - ~CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(hAPICall, func); - } -} -public class CClanOfficerListResponse_t_CallResult -{ - public CClanOfficerListResponse_t_CallResult() { } - ~CClanOfficerListResponse_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ClanOfficerListResponse_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStoragePublishFileProgress_t_CallResult -{ - public CRemoteStoragePublishFileProgress_t_CallResult() { } - ~CRemoteStoragePublishFileProgress_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult -{ - public CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() { } - ~CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(hAPICall, func); - } -} -public class CRemoveUGCDependencyResult_t_CallResult -{ - public CRemoveUGCDependencyResult_t_CallResult() { } - ~CRemoveUGCDependencyResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoveUGCDependencyResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoveUGCDependencyResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoveUGCDependencyResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoveUGCDependencyResult_t_SetCallResult(hAPICall, func); - } -} -public class CGSReputation_t_CallResult -{ - public CGSReputation_t_CallResult() { } - ~CGSReputation_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSReputation_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGSReputation_t_SetCallResult(hAPICall, func); - } -} -public class CGlobalAchievementPercentagesReady_t_CallResult -{ - public CGlobalAchievementPercentagesReady_t_CallResult() { } - ~CGlobalAchievementPercentagesReady_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_SetCallResult(hAPICall, func); - } -} -public class CUserFavoriteItemsListChanged_t_CallResult -{ - public CUserFavoriteItemsListChanged_t_CallResult() { } - ~CUserFavoriteItemsListChanged_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserFavoriteItemsListChanged_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_SetCallResult(hAPICall, func); - } -} -public class CAddAppDependencyResult_t_CallResult -{ - public CAddAppDependencyResult_t_CallResult() { } - ~CAddAppDependencyResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CAddAppDependencyResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AddAppDependencyResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CAddAppDependencyResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CAddAppDependencyResult_t_SetCallResult(hAPICall, func); - } -} -public class CEncryptedAppTicketResponse_t_CallResult -{ - public CEncryptedAppTicketResponse_t_CallResult() { } - ~CEncryptedAppTicketResponse_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_EncryptedAppTicketResponse_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageSetUserPublishedFileActionResult_t_CallResult -{ - public CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() { } - ~CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(hAPICall, func); - } -} -public class CStopPlaytimeTrackingResult_t_CallResult -{ - public CStopPlaytimeTrackingResult_t_CallResult() { } - ~CStopPlaytimeTrackingResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CStopPlaytimeTrackingResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_StopPlaytimeTrackingResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CStopPlaytimeTrackingResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CStopPlaytimeTrackingResult_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult -{ - public CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() { } - ~CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(hAPICall, func); - } -} -public class CFriendsEnumerateFollowingList_t_CallResult -{ - public CFriendsEnumerateFollowingList_t_CallResult() { } - ~CFriendsEnumerateFollowingList_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsEnumerateFollowingList_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_SetCallResult(hAPICall, func); - } -} -public class CChangeNumOpenSlotsCallback_t_CallResult -{ - public CChangeNumOpenSlotsCallback_t_CallResult() { } - ~CChangeNumOpenSlotsCallback_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CChangeNumOpenSlotsCallback_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ChangeNumOpenSlotsCallback_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CChangeNumOpenSlotsCallback_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CChangeNumOpenSlotsCallback_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageSubscribePublishedFileResult_t_CallResult -{ - public CRemoteStorageSubscribePublishedFileResult_t_CallResult() { } - ~CRemoteStorageSubscribePublishedFileResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(hAPICall, func); - } -} -public class CGetUserItemVoteResult_t_CallResult -{ - public CGetUserItemVoteResult_t_CallResult() { } - ~CGetUserItemVoteResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GetUserItemVoteResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_SetCallResult(hAPICall, func); - } -} -public class CAssociateWithClanResult_t_CallResult -{ - public CAssociateWithClanResult_t_CallResult() { } - ~CAssociateWithClanResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AssociateWithClanResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_SetCallResult(hAPICall, func); - } -} -public class CLeaderboardUGCSet_t_CallResult -{ - public CLeaderboardUGCSet_t_CallResult() { } - ~CLeaderboardUGCSet_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardUGCSet_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_SetCallResult(hAPICall, func); - } -} -public class CCheckFileSignature_t_CallResult -{ - public CCheckFileSignature_t_CallResult() { } - ~CCheckFileSignature_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CheckFileSignature_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_SetCallResult(hAPICall, func); - } -} -public class CGetAppDependenciesResult_t_CallResult -{ - public CGetAppDependenciesResult_t_CallResult() { } - ~CGetAppDependenciesResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGetAppDependenciesResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GetAppDependenciesResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CGetAppDependenciesResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CGetAppDependenciesResult_t_SetCallResult(hAPICall, func); - } -} -public class CRemoteStorageUnsubscribePublishedFileResult_t_CallResult -{ - public CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() { } - ~CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(hAPICall, func); - } -} -public class CSetPersonaNameResponse_t_CallResult -{ - public CSetPersonaNameResponse_t_CallResult() { } - ~CSetPersonaNameResponse_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetPersonaNameResponse_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_SetCallResult(hAPICall, func); - } -} -public class CRemoveAppDependencyResult_t_CallResult -{ - public CRemoveAppDependencyResult_t_CallResult() { } - ~CRemoveAppDependencyResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoveAppDependencyResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoveAppDependencyResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CRemoveAppDependencyResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CRemoveAppDependencyResult_t_SetCallResult(hAPICall, func); - } -} -public class CUserStatsReceived_t_CallResult -{ - public CUserStatsReceived_t_CallResult() { } - ~CUserStatsReceived_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallResult(hAPICall, func); - } -} -public class CSteamInventoryEligiblePromoItemDefIDs_t_CallResult -{ - public CSteamInventoryEligiblePromoItemDefIDs_t_CallResult() { } - ~CSteamInventoryEligiblePromoItemDefIDs_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamInventoryEligiblePromoItemDefIDs_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamInventoryEligiblePromoItemDefIDs_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CSteamInventoryEligiblePromoItemDefIDs_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CSteamInventoryEligiblePromoItemDefIDs_t_SetCallResult(hAPICall, func); - } -} -public class CJoinClanChatRoomCompletionResult_t_CallResult -{ - public CJoinClanChatRoomCompletionResult_t_CallResult() { } - ~CJoinClanChatRoomCompletionResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_SetCallResult(hAPICall, func); - } -} -public class CLeaderboardFindResult_t_CallResult -{ - public CLeaderboardFindResult_t_CallResult() { } - ~CLeaderboardFindResult_t_CallResult() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardFindResult_t_CallResult func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_SetCallResult(hAPICall, func); - } -} -public class SteamAPIInterop -{ -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RestartAppIfNecessary")] -internal static extern void SteamAPI_RestartAppIfNecessary(uint unOwnAppID ); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_Init")] -internal static extern void SteamAPI_Init(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RunCallbacks")] -internal static extern void SteamAPI_RunCallbacks(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RegisterCallback")] -internal static extern void SteamAPI_RegisterCallback(IntPtr pCallback, int iCallback); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_UnregisterCallback")] -internal static extern void SteamAPI_UnregisterCallback(IntPtr pCallback); -[DllImportAttribute("Steam_api", EntryPoint = "SteamClient")] -internal static extern IntPtr SteamClient(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamUser")] -internal static extern IntPtr SteamUser(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamFriends")] -internal static extern IntPtr SteamFriends(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamUtils")] -internal static extern IntPtr SteamUtils(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmaking")] -internal static extern IntPtr SteamMatchmaking(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServerListResponse")] -internal static extern IntPtr SteamMatchmakingServerListResponse(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPingResponse")] -internal static extern IntPtr SteamMatchmakingPingResponse(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPlayersResponse")] -internal static extern IntPtr SteamMatchmakingPlayersResponse(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingRulesResponse")] -internal static extern IntPtr SteamMatchmakingRulesResponse(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServers")] -internal static extern IntPtr SteamMatchmakingServers(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamGameSearch")] -internal static extern IntPtr SteamGameSearch(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamParties")] -internal static extern IntPtr SteamParties(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamRemoteStorage")] -internal static extern IntPtr SteamRemoteStorage(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamUserStats")] -internal static extern IntPtr SteamUserStats(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamApps")] -internal static extern IntPtr SteamApps(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamNetworking")] -internal static extern IntPtr SteamNetworking(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamScreenshots")] -internal static extern IntPtr SteamScreenshots(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMusic")] -internal static extern IntPtr SteamMusic(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamMusicRemote")] -internal static extern IntPtr SteamMusicRemote(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamHTTP")] -internal static extern IntPtr SteamHTTP(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamInput")] -internal static extern IntPtr SteamInput(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamController")] -internal static extern IntPtr SteamController(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamUGC")] -internal static extern IntPtr SteamUGC(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAppList")] -internal static extern IntPtr SteamAppList(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamHTMLSurface")] -internal static extern IntPtr SteamHTMLSurface(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamInventory")] -internal static extern IntPtr SteamInventory(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamVideo")] -internal static extern IntPtr SteamVideo(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamParentalSettings")] -internal static extern IntPtr SteamParentalSettings(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServer")] -internal static extern IntPtr SteamGameServer(); -[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServerStats")] -internal static extern IntPtr SteamGameServerStats(); -} - - -public enum EUniverse -{ - k_EUniverseInvalid = 0, - k_EUniversePublic = 1, - k_EUniverseBeta = 2, - k_EUniverseInternal = 3, - k_EUniverseDev = 4, - k_EUniverseMax = 5, -} -public enum EResult -{ - k_EResultOK = 1, - k_EResultFail = 2, - k_EResultNoConnection = 3, - k_EResultInvalidPassword = 5, - k_EResultLoggedInElsewhere = 6, - k_EResultInvalidProtocolVer = 7, - k_EResultInvalidParam = 8, - k_EResultFileNotFound = 9, - k_EResultBusy = 10, - k_EResultInvalidState = 11, - k_EResultInvalidName = 12, - k_EResultInvalidEmail = 13, - k_EResultDuplicateName = 14, - k_EResultAccessDenied = 15, - k_EResultTimeout = 16, - k_EResultBanned = 17, - k_EResultAccountNotFound = 18, - k_EResultInvalidSteamID = 19, - k_EResultServiceUnavailable = 20, - k_EResultNotLoggedOn = 21, - k_EResultPending = 22, - k_EResultEncryptionFailure = 23, - k_EResultInsufficientPrivilege = 24, - k_EResultLimitExceeded = 25, - k_EResultRevoked = 26, - k_EResultExpired = 27, - k_EResultAlreadyRedeemed = 28, - k_EResultDuplicateRequest = 29, - k_EResultAlreadyOwned = 30, - k_EResultIPNotFound = 31, - k_EResultPersistFailed = 32, - k_EResultLockingFailed = 33, - k_EResultLogonSessionReplaced = 34, - k_EResultConnectFailed = 35, - k_EResultHandshakeFailed = 36, - k_EResultIOFailure = 37, - k_EResultRemoteDisconnect = 38, - k_EResultShoppingCartNotFound = 39, - k_EResultBlocked = 40, - k_EResultIgnored = 41, - k_EResultNoMatch = 42, - k_EResultAccountDisabled = 43, - k_EResultServiceReadOnly = 44, - k_EResultAccountNotFeatured = 45, - k_EResultAdministratorOK = 46, - k_EResultContentVersion = 47, - k_EResultTryAnotherCM = 48, - k_EResultPasswordRequiredToKickSession = 49, - k_EResultAlreadyLoggedInElsewhere = 50, - k_EResultSuspended = 51, - k_EResultCancelled = 52, - k_EResultDataCorruption = 53, - k_EResultDiskFull = 54, - k_EResultRemoteCallFailed = 55, - k_EResultPasswordUnset = 56, - k_EResultExternalAccountUnlinked = 57, - k_EResultPSNTicketInvalid = 58, - k_EResultExternalAccountAlreadyLinked = 59, - k_EResultRemoteFileConflict = 60, - k_EResultIllegalPassword = 61, - k_EResultSameAsPreviousValue = 62, - k_EResultAccountLogonDenied = 63, - k_EResultCannotUseOldPassword = 64, - k_EResultInvalidLoginAuthCode = 65, - k_EResultAccountLogonDeniedNoMail = 66, - k_EResultHardwareNotCapableOfIPT = 67, - k_EResultIPTInitError = 68, - k_EResultParentalControlRestricted = 69, - k_EResultFacebookQueryError = 70, - k_EResultExpiredLoginAuthCode = 71, - k_EResultIPLoginRestrictionFailed = 72, - k_EResultAccountLockedDown = 73, - k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, - k_EResultNoMatchingURL = 75, - k_EResultBadResponse = 76, - k_EResultRequirePasswordReEntry = 77, - k_EResultValueOutOfRange = 78, - k_EResultUnexpectedError = 79, - k_EResultDisabled = 80, - k_EResultInvalidCEGSubmission = 81, - k_EResultRestrictedDevice = 82, - k_EResultRegionLocked = 83, - k_EResultRateLimitExceeded = 84, - k_EResultAccountLoginDeniedNeedTwoFactor = 85, - k_EResultItemDeleted = 86, - k_EResultAccountLoginDeniedThrottle = 87, - k_EResultTwoFactorCodeMismatch = 88, - k_EResultTwoFactorActivationCodeMismatch = 89, - k_EResultAccountAssociatedToMultiplePartners = 90, - k_EResultNotModified = 91, - k_EResultNoMobileDevice = 92, - k_EResultTimeNotSynced = 93, - k_EResultSmsCodeFailed = 94, - k_EResultAccountLimitExceeded = 95, - k_EResultAccountActivityLimitExceeded = 96, - k_EResultPhoneActivityLimitExceeded = 97, - k_EResultRefundToWallet = 98, - k_EResultEmailSendFailure = 99, - k_EResultNotSettled = 100, - k_EResultNeedCaptcha = 101, - k_EResultGSLTDenied = 102, - k_EResultGSOwnerDenied = 103, - k_EResultInvalidItemType = 104, - k_EResultIPBanned = 105, - k_EResultGSLTExpired = 106, - k_EResultInsufficientFunds = 107, - k_EResultTooManyPending = 108, - k_EResultNoSiteLicensesFound = 109, - k_EResultWGNetworkSendExceeded = 110, - k_EResultAccountNotFriends = 111, - k_EResultLimitedUserAccount = 112, - k_EResultCantRemoveItem = 113, -} -public enum EVoiceResult -{ - k_EVoiceResultOK = 0, - k_EVoiceResultNotInitialized = 1, - k_EVoiceResultNotRecording = 2, - k_EVoiceResultNoData = 3, - k_EVoiceResultBufferTooSmall = 4, - k_EVoiceResultDataCorrupted = 5, - k_EVoiceResultRestricted = 6, - k_EVoiceResultUnsupportedCodec = 7, - k_EVoiceResultReceiverOutOfDate = 8, - k_EVoiceResultReceiverDidNotAnswer = 9, -} -public enum EDenyReason -{ - k_EDenyInvalid = 0, - k_EDenyInvalidVersion = 1, - k_EDenyGeneric = 2, - k_EDenyNotLoggedOn = 3, - k_EDenyNoLicense = 4, - k_EDenyCheater = 5, - k_EDenyLoggedInElseWhere = 6, - k_EDenyUnknownText = 7, - k_EDenyIncompatibleAnticheat = 8, - k_EDenyMemoryCorruption = 9, - k_EDenyIncompatibleSoftware = 10, - k_EDenySteamConnectionLost = 11, - k_EDenySteamConnectionError = 12, - k_EDenySteamResponseTimedOut = 13, - k_EDenySteamValidationStalled = 14, - k_EDenySteamOwnerLeftGuestUser = 15, -} -public enum EBeginAuthSessionResult -{ - k_EBeginAuthSessionResultOK = 0, - k_EBeginAuthSessionResultInvalidTicket = 1, - k_EBeginAuthSessionResultDuplicateRequest = 2, - k_EBeginAuthSessionResultInvalidVersion = 3, - k_EBeginAuthSessionResultGameMismatch = 4, - k_EBeginAuthSessionResultExpiredTicket = 5, -} -public enum EAuthSessionResponse -{ - k_EAuthSessionResponseOK = 0, - k_EAuthSessionResponseUserNotConnectedToSteam = 1, - k_EAuthSessionResponseNoLicenseOrExpired = 2, - k_EAuthSessionResponseVACBanned = 3, - k_EAuthSessionResponseLoggedInElseWhere = 4, - k_EAuthSessionResponseVACCheckTimedOut = 5, - k_EAuthSessionResponseAuthTicketCanceled = 6, - k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, - k_EAuthSessionResponseAuthTicketInvalid = 8, - k_EAuthSessionResponsePublisherIssuedBan = 9, -} -public enum EUserHasLicenseForAppResult -{ - k_EUserHasLicenseResultHasLicense = 0, - k_EUserHasLicenseResultDoesNotHaveLicense = 1, - k_EUserHasLicenseResultNoAuth = 2, -} -public enum EAccountType -{ - k_EAccountTypeInvalid = 0, - k_EAccountTypeIndividual = 1, - k_EAccountTypeMultiseat = 2, - k_EAccountTypeGameServer = 3, - k_EAccountTypeAnonGameServer = 4, - k_EAccountTypePending = 5, - k_EAccountTypeContentServer = 6, - k_EAccountTypeClan = 7, - k_EAccountTypeChat = 8, - k_EAccountTypeConsoleUser = 9, - k_EAccountTypeAnonUser = 10, - k_EAccountTypeMax = 11, -} -public enum EAppReleaseState -{ - k_EAppReleaseState_Unknown = 0, - k_EAppReleaseState_Unavailable = 1, - k_EAppReleaseState_Prerelease = 2, - k_EAppReleaseState_PreloadOnly = 3, - k_EAppReleaseState_Released = 4, -} -public enum EAppOwnershipFlags -{ - k_EAppOwnershipFlags_None = 0, - k_EAppOwnershipFlags_OwnsLicense = 1, - k_EAppOwnershipFlags_FreeLicense = 2, - k_EAppOwnershipFlags_RegionRestricted = 4, - k_EAppOwnershipFlags_LowViolence = 8, - k_EAppOwnershipFlags_InvalidPlatform = 16, - k_EAppOwnershipFlags_SharedLicense = 32, - k_EAppOwnershipFlags_FreeWeekend = 64, - k_EAppOwnershipFlags_RetailLicense = 128, - k_EAppOwnershipFlags_LicenseLocked = 256, - k_EAppOwnershipFlags_LicensePending = 512, - k_EAppOwnershipFlags_LicenseExpired = 1024, - k_EAppOwnershipFlags_LicensePermanent = 2048, - k_EAppOwnershipFlags_LicenseRecurring = 4096, - k_EAppOwnershipFlags_LicenseCanceled = 8192, - k_EAppOwnershipFlags_AutoGrant = 16384, - k_EAppOwnershipFlags_PendingGift = 32768, - k_EAppOwnershipFlags_RentalNotActivated = 65536, - k_EAppOwnershipFlags_Rental = 131072, - k_EAppOwnershipFlags_SiteLicense = 262144, -} -public enum EAppType -{ - k_EAppType_Invalid = 0, - k_EAppType_Game = 1, - k_EAppType_Application = 2, - k_EAppType_Tool = 4, - k_EAppType_Demo = 8, - k_EAppType_Media_DEPRECATED = 16, - k_EAppType_DLC = 32, - k_EAppType_Guide = 64, - k_EAppType_Driver = 128, - k_EAppType_Config = 256, - k_EAppType_Hardware = 512, - k_EAppType_Franchise = 1024, - k_EAppType_Video = 2048, - k_EAppType_Plugin = 4096, - k_EAppType_Music = 8192, - k_EAppType_Series = 16384, - k_EAppType_Comic = 32768, - k_EAppType_Shortcut = 1073741824, - k_EAppType_DepotOnly = -2147483648, -} -public enum ESteamUserStatType -{ - k_ESteamUserStatTypeINVALID = 0, - k_ESteamUserStatTypeINT = 1, - k_ESteamUserStatTypeFLOAT = 2, - k_ESteamUserStatTypeAVGRATE = 3, - k_ESteamUserStatTypeACHIEVEMENTS = 4, - k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, - k_ESteamUserStatTypeMAX = 6, -} -public enum EChatEntryType -{ - k_EChatEntryTypeInvalid = 0, - k_EChatEntryTypeChatMsg = 1, - k_EChatEntryTypeTyping = 2, - k_EChatEntryTypeInviteGame = 3, - k_EChatEntryTypeEmote = 4, - k_EChatEntryTypeLeftConversation = 6, - k_EChatEntryTypeEntered = 7, - k_EChatEntryTypeWasKicked = 8, - k_EChatEntryTypeWasBanned = 9, - k_EChatEntryTypeDisconnected = 10, - k_EChatEntryTypeHistoricalChat = 11, - k_EChatEntryTypeLinkBlocked = 14, -} -public enum EChatRoomEnterResponse -{ - k_EChatRoomEnterResponseSuccess = 1, - k_EChatRoomEnterResponseDoesntExist = 2, - k_EChatRoomEnterResponseNotAllowed = 3, - k_EChatRoomEnterResponseFull = 4, - k_EChatRoomEnterResponseError = 5, - k_EChatRoomEnterResponseBanned = 6, - k_EChatRoomEnterResponseLimited = 7, - k_EChatRoomEnterResponseClanDisabled = 8, - k_EChatRoomEnterResponseCommunityBan = 9, - k_EChatRoomEnterResponseMemberBlockedYou = 10, - k_EChatRoomEnterResponseYouBlockedMember = 11, - k_EChatRoomEnterResponseRatelimitExceeded = 15, -} -public enum EChatSteamIDInstanceFlags -{ - k_EChatAccountInstanceMask = 4095, - k_EChatInstanceFlagClan = 524288, - k_EChatInstanceFlagLobby = 262144, - k_EChatInstanceFlagMMSLobby = 131072, -} -public enum EMarketingMessageFlags -{ - k_EMarketingMessageFlagsNone = 0, - k_EMarketingMessageFlagsHighPriority = 1, - k_EMarketingMessageFlagsPlatformWindows = 2, - k_EMarketingMessageFlagsPlatformMac = 4, - k_EMarketingMessageFlagsPlatformLinux = 8, - k_EMarketingMessageFlagsPlatformRestrictions = 14, -} -public enum ENotificationPosition -{ - k_EPositionTopLeft = 0, - k_EPositionTopRight = 1, - k_EPositionBottomLeft = 2, - k_EPositionBottomRight = 3, -} -public enum EBroadcastUploadResult -{ - k_EBroadcastUploadResultNone = 0, - k_EBroadcastUploadResultOK = 1, - k_EBroadcastUploadResultInitFailed = 2, - k_EBroadcastUploadResultFrameFailed = 3, - k_EBroadcastUploadResultTimeout = 4, - k_EBroadcastUploadResultBandwidthExceeded = 5, - k_EBroadcastUploadResultLowFPS = 6, - k_EBroadcastUploadResultMissingKeyFrames = 7, - k_EBroadcastUploadResultNoConnection = 8, - k_EBroadcastUploadResultRelayFailed = 9, - k_EBroadcastUploadResultSettingsChanged = 10, - k_EBroadcastUploadResultMissingAudio = 11, - k_EBroadcastUploadResultTooFarBehind = 12, - k_EBroadcastUploadResultTranscodeBehind = 13, - k_EBroadcastUploadResultNotAllowedToPlay = 14, - k_EBroadcastUploadResultBusy = 15, - k_EBroadcastUploadResultBanned = 16, - k_EBroadcastUploadResultAlreadyActive = 17, - k_EBroadcastUploadResultForcedOff = 18, - k_EBroadcastUploadResultAudioBehind = 19, - k_EBroadcastUploadResultShutdown = 20, - k_EBroadcastUploadResultDisconnect = 21, - k_EBroadcastUploadResultVideoInitFailed = 22, - k_EBroadcastUploadResultAudioInitFailed = 23, -} -public enum ELaunchOptionType -{ - k_ELaunchOptionType_None = 0, - k_ELaunchOptionType_Default = 1, - k_ELaunchOptionType_SafeMode = 2, - k_ELaunchOptionType_Multiplayer = 3, - k_ELaunchOptionType_Config = 4, - k_ELaunchOptionType_OpenVR = 5, - k_ELaunchOptionType_Server = 6, - k_ELaunchOptionType_Editor = 7, - k_ELaunchOptionType_Manual = 8, - k_ELaunchOptionType_Benchmark = 9, - k_ELaunchOptionType_Option1 = 10, - k_ELaunchOptionType_Option2 = 11, - k_ELaunchOptionType_Option3 = 12, - k_ELaunchOptionType_OculusVR = 13, - k_ELaunchOptionType_OpenVROverlay = 14, - k_ELaunchOptionType_OSVR = 15, - k_ELaunchOptionType_Dialog = 1000, -} -public enum EVRHMDType -{ - k_eEVRHMDType_None = -1, - k_eEVRHMDType_Unknown = 0, - k_eEVRHMDType_HTC_Dev = 1, - k_eEVRHMDType_HTC_VivePre = 2, - k_eEVRHMDType_HTC_Vive = 3, - k_eEVRHMDType_HTC_VivePro = 4, - k_eEVRHMDType_HTC_Unknown = 20, - k_eEVRHMDType_Oculus_DK1 = 21, - k_eEVRHMDType_Oculus_DK2 = 22, - k_eEVRHMDType_Oculus_Rift = 23, - k_eEVRHMDType_Oculus_Unknown = 40, - k_eEVRHMDType_Acer_Unknown = 50, - k_eEVRHMDType_Acer_WindowsMR = 51, - k_eEVRHMDType_Dell_Unknown = 60, - k_eEVRHMDType_Dell_Visor = 61, - k_eEVRHMDType_Lenovo_Unknown = 70, - k_eEVRHMDType_Lenovo_Explorer = 71, - k_eEVRHMDType_HP_Unknown = 80, - k_eEVRHMDType_HP_WindowsMR = 81, - k_eEVRHMDType_Samsung_Unknown = 90, - k_eEVRHMDType_Samsung_Odyssey = 91, - k_eEVRHMDType_Unannounced_Unknown = 100, - k_eEVRHMDType_Unannounced_WindowsMR = 101, - k_eEVRHMDType_vridge = 110, - k_eEVRHMDType_Huawei_Unknown = 120, - k_eEVRHMDType_Huawei_VR2 = 121, - k_eEVRHMDType_Huawei_Unannounced = 129, -} -public enum EMarketNotAllowedReasonFlags -{ - k_EMarketNotAllowedReason_None = 0, - k_EMarketNotAllowedReason_TemporaryFailure = 1, - k_EMarketNotAllowedReason_AccountDisabled = 2, - k_EMarketNotAllowedReason_AccountLockedDown = 4, - k_EMarketNotAllowedReason_AccountLimited = 8, - k_EMarketNotAllowedReason_TradeBanned = 16, - k_EMarketNotAllowedReason_AccountNotTrusted = 32, - k_EMarketNotAllowedReason_SteamGuardNotEnabled = 64, - k_EMarketNotAllowedReason_SteamGuardOnlyRecentlyEnabled = 128, - k_EMarketNotAllowedReason_RecentPasswordReset = 256, - k_EMarketNotAllowedReason_NewPaymentMethod = 512, - k_EMarketNotAllowedReason_InvalidCookie = 1024, - k_EMarketNotAllowedReason_UsingNewDevice = 2048, - k_EMarketNotAllowedReason_RecentSelfRefund = 4096, - k_EMarketNotAllowedReason_NewPaymentMethodCannotBeVerified = 8192, - k_EMarketNotAllowedReason_NoRecentPurchases = 16384, - k_EMarketNotAllowedReason_AcceptedWalletGift = 32768, -} -public enum EGameSearchErrorCode_t -{ - k_EGameSearchErrorCode_OK = 1, - k_EGameSearchErrorCode_Failed_Search_Already_In_Progress = 2, - k_EGameSearchErrorCode_Failed_No_Search_In_Progress = 3, - k_EGameSearchErrorCode_Failed_Not_Lobby_Leader = 4, - k_EGameSearchErrorCode_Failed_No_Host_Available = 5, - k_EGameSearchErrorCode_Failed_Search_Params_Invalid = 6, - k_EGameSearchErrorCode_Failed_Offline = 7, - k_EGameSearchErrorCode_Failed_NotAuthorized = 8, - k_EGameSearchErrorCode_Failed_Unknown_Error = 9, -} -public enum EPlayerResult_t -{ - k_EPlayerResultFailedToConnect = 1, - k_EPlayerResultAbandoned = 2, - k_EPlayerResultKicked = 3, - k_EPlayerResultIncomplete = 4, - k_EPlayerResultCompleted = 5, -} -public enum EFailureType -{ - k_EFailureFlushedCallbackQueue = 0, - k_EFailurePipeFail = 1, -} -public enum EFriendRelationship -{ - k_EFriendRelationshipNone = 0, - k_EFriendRelationshipBlocked = 1, - k_EFriendRelationshipRequestRecipient = 2, - k_EFriendRelationshipFriend = 3, - k_EFriendRelationshipRequestInitiator = 4, - k_EFriendRelationshipIgnored = 5, - k_EFriendRelationshipIgnoredFriend = 6, - k_EFriendRelationshipSuggested_DEPRECATED = 7, - k_EFriendRelationshipMax = 8, -} -public enum EPersonaState -{ - k_EPersonaStateOffline = 0, - k_EPersonaStateOnline = 1, - k_EPersonaStateBusy = 2, - k_EPersonaStateAway = 3, - k_EPersonaStateSnooze = 4, - k_EPersonaStateLookingToTrade = 5, - k_EPersonaStateLookingToPlay = 6, - k_EPersonaStateInvisible = 7, - k_EPersonaStateMax = 8, -} -public enum EFriendFlags -{ - k_EFriendFlagNone = 0, - k_EFriendFlagBlocked = 1, - k_EFriendFlagFriendshipRequested = 2, - k_EFriendFlagImmediate = 4, - k_EFriendFlagClanMember = 8, - k_EFriendFlagOnGameServer = 16, - k_EFriendFlagRequestingFriendship = 128, - k_EFriendFlagRequestingInfo = 256, - k_EFriendFlagIgnored = 512, - k_EFriendFlagIgnoredFriend = 1024, - k_EFriendFlagChatMember = 4096, - k_EFriendFlagAll = 65535, -} -public enum EUserRestriction -{ - k_nUserRestrictionNone = 0, - k_nUserRestrictionUnknown = 1, - k_nUserRestrictionAnyChat = 2, - k_nUserRestrictionVoiceChat = 4, - k_nUserRestrictionGroupChat = 8, - k_nUserRestrictionRating = 16, - k_nUserRestrictionGameInvites = 32, - k_nUserRestrictionTrading = 64, -} -public enum EOverlayToStoreFlag -{ - k_EOverlayToStoreFlag_None = 0, - k_EOverlayToStoreFlag_AddToCart = 1, - k_EOverlayToStoreFlag_AddToCartAndShow = 2, -} -public enum EActivateGameOverlayToWebPageMode -{ - k_EActivateGameOverlayToWebPageMode_Default = 0, - k_EActivateGameOverlayToWebPageMode_Modal = 1, -} -public enum EPersonaChange -{ - k_EPersonaChangeName = 1, - k_EPersonaChangeStatus = 2, - k_EPersonaChangeComeOnline = 4, - k_EPersonaChangeGoneOffline = 8, - k_EPersonaChangeGamePlayed = 16, - k_EPersonaChangeGameServer = 32, - k_EPersonaChangeAvatar = 64, - k_EPersonaChangeJoinedSource = 128, - k_EPersonaChangeLeftSource = 256, - k_EPersonaChangeRelationshipChanged = 512, - k_EPersonaChangeNameFirstSet = 1024, - k_EPersonaChangeBroadcast = 2048, - k_EPersonaChangeNickname = 4096, - k_EPersonaChangeSteamLevel = 8192, - k_EPersonaChangeRichPresence = 16384, -} -public enum ESteamAPICallFailure -{ - k_ESteamAPICallFailureNone = -1, - k_ESteamAPICallFailureSteamGone = 0, - k_ESteamAPICallFailureNetworkFailure = 1, - k_ESteamAPICallFailureInvalidHandle = 2, - k_ESteamAPICallFailureMismatchedCallback = 3, -} -public enum EGamepadTextInputMode -{ - k_EGamepadTextInputModeNormal = 0, - k_EGamepadTextInputModePassword = 1, -} -public enum EGamepadTextInputLineMode -{ - k_EGamepadTextInputLineModeSingleLine = 0, - k_EGamepadTextInputLineModeMultipleLines = 1, -} -public enum ECheckFileSignature -{ - k_ECheckFileSignatureInvalidSignature = 0, - k_ECheckFileSignatureValidSignature = 1, - k_ECheckFileSignatureFileNotFound = 2, - k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, - k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, -} -public enum EMatchMakingServerResponse -{ - eServerResponded = 0, - eServerFailedToRespond = 1, - eNoServersListedOnMasterServer = 2, -} -public enum ELobbyType -{ - k_ELobbyTypePrivate = 0, - k_ELobbyTypeFriendsOnly = 1, - k_ELobbyTypePublic = 2, - k_ELobbyTypeInvisible = 3, -} -public enum ELobbyComparison -{ - k_ELobbyComparisonEqualToOrLessThan = -2, - k_ELobbyComparisonLessThan = -1, - k_ELobbyComparisonEqual = 0, - k_ELobbyComparisonGreaterThan = 1, - k_ELobbyComparisonEqualToOrGreaterThan = 2, - k_ELobbyComparisonNotEqual = 3, -} -public enum ELobbyDistanceFilter -{ - k_ELobbyDistanceFilterClose = 0, - k_ELobbyDistanceFilterDefault = 1, - k_ELobbyDistanceFilterFar = 2, - k_ELobbyDistanceFilterWorldwide = 3, -} -public enum EChatMemberStateChange -{ - k_EChatMemberStateChangeEntered = 1, - k_EChatMemberStateChangeLeft = 2, - k_EChatMemberStateChangeDisconnected = 4, - k_EChatMemberStateChangeKicked = 8, - k_EChatMemberStateChangeBanned = 16, -} -public enum ESteamPartyBeaconLocationType -{ - k_ESteamPartyBeaconLocationType_Invalid = 0, - k_ESteamPartyBeaconLocationType_ChatGroup = 1, - k_ESteamPartyBeaconLocationType_Max = 2, -} -public enum ESteamPartyBeaconLocationData -{ - k_ESteamPartyBeaconLocationDataInvalid = 0, - k_ESteamPartyBeaconLocationDataName = 1, - k_ESteamPartyBeaconLocationDataIconURLSmall = 2, - k_ESteamPartyBeaconLocationDataIconURLMedium = 3, - k_ESteamPartyBeaconLocationDataIconURLLarge = 4, -} -public enum ERemoteStoragePlatform -{ - k_ERemoteStoragePlatformNone = 0, - k_ERemoteStoragePlatformWindows = 1, - k_ERemoteStoragePlatformOSX = 2, - k_ERemoteStoragePlatformPS3 = 4, - k_ERemoteStoragePlatformLinux = 8, - k_ERemoteStoragePlatformReserved2 = 16, - k_ERemoteStoragePlatformAndroid = 32, - k_ERemoteStoragePlatformAll = -1, -} -public enum ERemoteStoragePublishedFileVisibility -{ - k_ERemoteStoragePublishedFileVisibilityPublic = 0, - k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, - k_ERemoteStoragePublishedFileVisibilityPrivate = 2, -} -public enum EWorkshopFileType -{ - k_EWorkshopFileTypeFirst = 0, - k_EWorkshopFileTypeCommunity = 0, - k_EWorkshopFileTypeMicrotransaction = 1, - k_EWorkshopFileTypeCollection = 2, - k_EWorkshopFileTypeArt = 3, - k_EWorkshopFileTypeVideo = 4, - k_EWorkshopFileTypeScreenshot = 5, - k_EWorkshopFileTypeGame = 6, - k_EWorkshopFileTypeSoftware = 7, - k_EWorkshopFileTypeConcept = 8, - k_EWorkshopFileTypeWebGuide = 9, - k_EWorkshopFileTypeIntegratedGuide = 10, - k_EWorkshopFileTypeMerch = 11, - k_EWorkshopFileTypeControllerBinding = 12, - k_EWorkshopFileTypeSteamworksAccessInvite = 13, - k_EWorkshopFileTypeSteamVideo = 14, - k_EWorkshopFileTypeGameManagedItem = 15, - k_EWorkshopFileTypeMax = 16, -} -public enum EWorkshopVote -{ - k_EWorkshopVoteUnvoted = 0, - k_EWorkshopVoteFor = 1, - k_EWorkshopVoteAgainst = 2, - k_EWorkshopVoteLater = 3, -} -public enum EWorkshopFileAction -{ - k_EWorkshopFileActionPlayed = 0, - k_EWorkshopFileActionCompleted = 1, -} -public enum EWorkshopEnumerationType -{ - k_EWorkshopEnumerationTypeRankedByVote = 0, - k_EWorkshopEnumerationTypeRecent = 1, - k_EWorkshopEnumerationTypeTrending = 2, - k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, - k_EWorkshopEnumerationTypeVotedByFriends = 4, - k_EWorkshopEnumerationTypeContentByFriends = 5, - k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, -} -public enum EWorkshopVideoProvider -{ - k_EWorkshopVideoProviderNone = 0, - k_EWorkshopVideoProviderYoutube = 1, -} -public enum EUGCReadAction -{ - k_EUGCRead_ContinueReadingUntilFinished = 0, - k_EUGCRead_ContinueReading = 1, - k_EUGCRead_Close = 2, -} -public enum ELeaderboardDataRequest -{ - k_ELeaderboardDataRequestGlobal = 0, - k_ELeaderboardDataRequestGlobalAroundUser = 1, - k_ELeaderboardDataRequestFriends = 2, - k_ELeaderboardDataRequestUsers = 3, -} -public enum ELeaderboardSortMethod -{ - k_ELeaderboardSortMethodNone = 0, - k_ELeaderboardSortMethodAscending = 1, - k_ELeaderboardSortMethodDescending = 2, -} -public enum ELeaderboardDisplayType -{ - k_ELeaderboardDisplayTypeNone = 0, - k_ELeaderboardDisplayTypeNumeric = 1, - k_ELeaderboardDisplayTypeTimeSeconds = 2, - k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, -} -public enum ELeaderboardUploadScoreMethod -{ - k_ELeaderboardUploadScoreMethodNone = 0, - k_ELeaderboardUploadScoreMethodKeepBest = 1, - k_ELeaderboardUploadScoreMethodForceUpdate = 2, -} -public enum ERegisterActivationCodeResult -{ - k_ERegisterActivationCodeResultOK = 0, - k_ERegisterActivationCodeResultFail = 1, - k_ERegisterActivationCodeResultAlreadyRegistered = 2, - k_ERegisterActivationCodeResultTimeout = 3, - k_ERegisterActivationCodeAlreadyOwned = 4, -} -public enum EP2PSessionError -{ - k_EP2PSessionErrorNone = 0, - k_EP2PSessionErrorNotRunningApp = 1, - k_EP2PSessionErrorNoRightsToApp = 2, - k_EP2PSessionErrorDestinationNotLoggedIn = 3, - k_EP2PSessionErrorTimeout = 4, - k_EP2PSessionErrorMax = 5, -} -public enum EP2PSend -{ - k_EP2PSendUnreliable = 0, - k_EP2PSendUnreliableNoDelay = 1, - k_EP2PSendReliable = 2, - k_EP2PSendReliableWithBuffering = 3, -} -public enum ESNetSocketState -{ - k_ESNetSocketStateInvalid = 0, - k_ESNetSocketStateConnected = 1, - k_ESNetSocketStateInitiated = 10, - k_ESNetSocketStateLocalCandidatesFound = 11, - k_ESNetSocketStateReceivedRemoteCandidates = 12, - k_ESNetSocketStateChallengeHandshake = 15, - k_ESNetSocketStateDisconnecting = 21, - k_ESNetSocketStateLocalDisconnect = 22, - k_ESNetSocketStateTimeoutDuringConnect = 23, - k_ESNetSocketStateRemoteEndDisconnected = 24, - k_ESNetSocketStateConnectionBroken = 25, -} -public enum ESNetSocketConnectionType -{ - k_ESNetSocketConnectionTypeNotConnected = 0, - k_ESNetSocketConnectionTypeUDP = 1, - k_ESNetSocketConnectionTypeUDPRelay = 2, -} -public enum EVRScreenshotType -{ - k_EVRScreenshotType_None = 0, - k_EVRScreenshotType_Mono = 1, - k_EVRScreenshotType_Stereo = 2, - k_EVRScreenshotType_MonoCubemap = 3, - k_EVRScreenshotType_MonoPanorama = 4, - k_EVRScreenshotType_StereoPanorama = 5, -} -public enum AudioPlayback_Status -{ - AudioPlayback_Undefined = 0, - AudioPlayback_Playing = 1, - AudioPlayback_Paused = 2, - AudioPlayback_Idle = 3, -} -public enum EHTTPMethod -{ - k_EHTTPMethodInvalid = 0, - k_EHTTPMethodGET = 1, - k_EHTTPMethodHEAD = 2, - k_EHTTPMethodPOST = 3, - k_EHTTPMethodPUT = 4, - k_EHTTPMethodDELETE = 5, - k_EHTTPMethodOPTIONS = 6, - k_EHTTPMethodPATCH = 7, -} -public enum EHTTPStatusCode -{ - k_EHTTPStatusCodeInvalid = 0, - k_EHTTPStatusCode100Continue = 100, - k_EHTTPStatusCode101SwitchingProtocols = 101, - k_EHTTPStatusCode200OK = 200, - k_EHTTPStatusCode201Created = 201, - k_EHTTPStatusCode202Accepted = 202, - k_EHTTPStatusCode203NonAuthoritative = 203, - k_EHTTPStatusCode204NoContent = 204, - k_EHTTPStatusCode205ResetContent = 205, - k_EHTTPStatusCode206PartialContent = 206, - k_EHTTPStatusCode300MultipleChoices = 300, - k_EHTTPStatusCode301MovedPermanently = 301, - k_EHTTPStatusCode302Found = 302, - k_EHTTPStatusCode303SeeOther = 303, - k_EHTTPStatusCode304NotModified = 304, - k_EHTTPStatusCode305UseProxy = 305, - k_EHTTPStatusCode307TemporaryRedirect = 307, - k_EHTTPStatusCode400BadRequest = 400, - k_EHTTPStatusCode401Unauthorized = 401, - k_EHTTPStatusCode402PaymentRequired = 402, - k_EHTTPStatusCode403Forbidden = 403, - k_EHTTPStatusCode404NotFound = 404, - k_EHTTPStatusCode405MethodNotAllowed = 405, - k_EHTTPStatusCode406NotAcceptable = 406, - k_EHTTPStatusCode407ProxyAuthRequired = 407, - k_EHTTPStatusCode408RequestTimeout = 408, - k_EHTTPStatusCode409Conflict = 409, - k_EHTTPStatusCode410Gone = 410, - k_EHTTPStatusCode411LengthRequired = 411, - k_EHTTPStatusCode412PreconditionFailed = 412, - k_EHTTPStatusCode413RequestEntityTooLarge = 413, - k_EHTTPStatusCode414RequestURITooLong = 414, - k_EHTTPStatusCode415UnsupportedMediaType = 415, - k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, - k_EHTTPStatusCode417ExpectationFailed = 417, - k_EHTTPStatusCode4xxUnknown = 418, - k_EHTTPStatusCode429TooManyRequests = 429, - k_EHTTPStatusCode500InternalServerError = 500, - k_EHTTPStatusCode501NotImplemented = 501, - k_EHTTPStatusCode502BadGateway = 502, - k_EHTTPStatusCode503ServiceUnavailable = 503, - k_EHTTPStatusCode504GatewayTimeout = 504, - k_EHTTPStatusCode505HTTPVersionNotSupported = 505, - k_EHTTPStatusCode5xxUnknown = 599, -} -public enum EInputSource -{ - k_EInputSource_None = 0, - k_EInputSource_LeftTrackpad = 1, - k_EInputSource_RightTrackpad = 2, - k_EInputSource_Joystick = 3, - k_EInputSource_ABXY = 4, - k_EInputSource_Switch = 5, - k_EInputSource_LeftTrigger = 6, - k_EInputSource_RightTrigger = 7, - k_EInputSource_LeftBumper = 8, - k_EInputSource_RightBumper = 9, - k_EInputSource_Gyro = 10, - k_EInputSource_CenterTrackpad = 11, - k_EInputSource_RightJoystick = 12, - k_EInputSource_DPad = 13, - k_EInputSource_Key = 14, - k_EInputSource_Mouse = 15, - k_EInputSource_LeftGyro = 16, - k_EInputSource_Count = 17, -} -public enum EInputSourceMode -{ - k_EInputSourceMode_None = 0, - k_EInputSourceMode_Dpad = 1, - k_EInputSourceMode_Buttons = 2, - k_EInputSourceMode_FourButtons = 3, - k_EInputSourceMode_AbsoluteMouse = 4, - k_EInputSourceMode_RelativeMouse = 5, - k_EInputSourceMode_JoystickMove = 6, - k_EInputSourceMode_JoystickMouse = 7, - k_EInputSourceMode_JoystickCamera = 8, - k_EInputSourceMode_ScrollWheel = 9, - k_EInputSourceMode_Trigger = 10, - k_EInputSourceMode_TouchMenu = 11, - k_EInputSourceMode_MouseJoystick = 12, - k_EInputSourceMode_MouseRegion = 13, - k_EInputSourceMode_RadialMenu = 14, - k_EInputSourceMode_SingleButton = 15, - k_EInputSourceMode_Switches = 16, -} -public enum EInputActionOrigin -{ - k_EInputActionOrigin_None = 0, - k_EInputActionOrigin_SteamController_A = 1, - k_EInputActionOrigin_SteamController_B = 2, - k_EInputActionOrigin_SteamController_X = 3, - k_EInputActionOrigin_SteamController_Y = 4, - k_EInputActionOrigin_SteamController_LeftBumper = 5, - k_EInputActionOrigin_SteamController_RightBumper = 6, - k_EInputActionOrigin_SteamController_LeftGrip = 7, - k_EInputActionOrigin_SteamController_RightGrip = 8, - k_EInputActionOrigin_SteamController_Start = 9, - k_EInputActionOrigin_SteamController_Back = 10, - k_EInputActionOrigin_SteamController_LeftPad_Touch = 11, - k_EInputActionOrigin_SteamController_LeftPad_Swipe = 12, - k_EInputActionOrigin_SteamController_LeftPad_Click = 13, - k_EInputActionOrigin_SteamController_LeftPad_DPadNorth = 14, - k_EInputActionOrigin_SteamController_LeftPad_DPadSouth = 15, - k_EInputActionOrigin_SteamController_LeftPad_DPadWest = 16, - k_EInputActionOrigin_SteamController_LeftPad_DPadEast = 17, - k_EInputActionOrigin_SteamController_RightPad_Touch = 18, - k_EInputActionOrigin_SteamController_RightPad_Swipe = 19, - k_EInputActionOrigin_SteamController_RightPad_Click = 20, - k_EInputActionOrigin_SteamController_RightPad_DPadNorth = 21, - k_EInputActionOrigin_SteamController_RightPad_DPadSouth = 22, - k_EInputActionOrigin_SteamController_RightPad_DPadWest = 23, - k_EInputActionOrigin_SteamController_RightPad_DPadEast = 24, - k_EInputActionOrigin_SteamController_LeftTrigger_Pull = 25, - k_EInputActionOrigin_SteamController_LeftTrigger_Click = 26, - k_EInputActionOrigin_SteamController_RightTrigger_Pull = 27, - k_EInputActionOrigin_SteamController_RightTrigger_Click = 28, - k_EInputActionOrigin_SteamController_LeftStick_Move = 29, - k_EInputActionOrigin_SteamController_LeftStick_Click = 30, - k_EInputActionOrigin_SteamController_LeftStick_DPadNorth = 31, - k_EInputActionOrigin_SteamController_LeftStick_DPadSouth = 32, - k_EInputActionOrigin_SteamController_LeftStick_DPadWest = 33, - k_EInputActionOrigin_SteamController_LeftStick_DPadEast = 34, - k_EInputActionOrigin_SteamController_Gyro_Move = 35, - k_EInputActionOrigin_SteamController_Gyro_Pitch = 36, - k_EInputActionOrigin_SteamController_Gyro_Yaw = 37, - k_EInputActionOrigin_SteamController_Gyro_Roll = 38, - k_EInputActionOrigin_SteamController_Reserved0 = 39, - k_EInputActionOrigin_SteamController_Reserved1 = 40, - k_EInputActionOrigin_SteamController_Reserved2 = 41, - k_EInputActionOrigin_SteamController_Reserved3 = 42, - k_EInputActionOrigin_SteamController_Reserved4 = 43, - k_EInputActionOrigin_SteamController_Reserved5 = 44, - k_EInputActionOrigin_SteamController_Reserved6 = 45, - k_EInputActionOrigin_SteamController_Reserved7 = 46, - k_EInputActionOrigin_SteamController_Reserved8 = 47, - k_EInputActionOrigin_SteamController_Reserved9 = 48, - k_EInputActionOrigin_SteamController_Reserved10 = 49, - k_EInputActionOrigin_PS4_X = 50, - k_EInputActionOrigin_PS4_Circle = 51, - k_EInputActionOrigin_PS4_Triangle = 52, - k_EInputActionOrigin_PS4_Square = 53, - k_EInputActionOrigin_PS4_LeftBumper = 54, - k_EInputActionOrigin_PS4_RightBumper = 55, - k_EInputActionOrigin_PS4_Options = 56, - k_EInputActionOrigin_PS4_Share = 57, - k_EInputActionOrigin_PS4_LeftPad_Touch = 58, - k_EInputActionOrigin_PS4_LeftPad_Swipe = 59, - k_EInputActionOrigin_PS4_LeftPad_Click = 60, - k_EInputActionOrigin_PS4_LeftPad_DPadNorth = 61, - k_EInputActionOrigin_PS4_LeftPad_DPadSouth = 62, - k_EInputActionOrigin_PS4_LeftPad_DPadWest = 63, - k_EInputActionOrigin_PS4_LeftPad_DPadEast = 64, - k_EInputActionOrigin_PS4_RightPad_Touch = 65, - k_EInputActionOrigin_PS4_RightPad_Swipe = 66, - k_EInputActionOrigin_PS4_RightPad_Click = 67, - k_EInputActionOrigin_PS4_RightPad_DPadNorth = 68, - k_EInputActionOrigin_PS4_RightPad_DPadSouth = 69, - k_EInputActionOrigin_PS4_RightPad_DPadWest = 70, - k_EInputActionOrigin_PS4_RightPad_DPadEast = 71, - k_EInputActionOrigin_PS4_CenterPad_Touch = 72, - k_EInputActionOrigin_PS4_CenterPad_Swipe = 73, - k_EInputActionOrigin_PS4_CenterPad_Click = 74, - k_EInputActionOrigin_PS4_CenterPad_DPadNorth = 75, - k_EInputActionOrigin_PS4_CenterPad_DPadSouth = 76, - k_EInputActionOrigin_PS4_CenterPad_DPadWest = 77, - k_EInputActionOrigin_PS4_CenterPad_DPadEast = 78, - k_EInputActionOrigin_PS4_LeftTrigger_Pull = 79, - k_EInputActionOrigin_PS4_LeftTrigger_Click = 80, - k_EInputActionOrigin_PS4_RightTrigger_Pull = 81, - k_EInputActionOrigin_PS4_RightTrigger_Click = 82, - k_EInputActionOrigin_PS4_LeftStick_Move = 83, - k_EInputActionOrigin_PS4_LeftStick_Click = 84, - k_EInputActionOrigin_PS4_LeftStick_DPadNorth = 85, - k_EInputActionOrigin_PS4_LeftStick_DPadSouth = 86, - k_EInputActionOrigin_PS4_LeftStick_DPadWest = 87, - k_EInputActionOrigin_PS4_LeftStick_DPadEast = 88, - k_EInputActionOrigin_PS4_RightStick_Move = 89, - k_EInputActionOrigin_PS4_RightStick_Click = 90, - k_EInputActionOrigin_PS4_RightStick_DPadNorth = 91, - k_EInputActionOrigin_PS4_RightStick_DPadSouth = 92, - k_EInputActionOrigin_PS4_RightStick_DPadWest = 93, - k_EInputActionOrigin_PS4_RightStick_DPadEast = 94, - k_EInputActionOrigin_PS4_DPad_North = 95, - k_EInputActionOrigin_PS4_DPad_South = 96, - k_EInputActionOrigin_PS4_DPad_West = 97, - k_EInputActionOrigin_PS4_DPad_East = 98, - k_EInputActionOrigin_PS4_Gyro_Move = 99, - k_EInputActionOrigin_PS4_Gyro_Pitch = 100, - k_EInputActionOrigin_PS4_Gyro_Yaw = 101, - k_EInputActionOrigin_PS4_Gyro_Roll = 102, - k_EInputActionOrigin_PS4_Reserved0 = 103, - k_EInputActionOrigin_PS4_Reserved1 = 104, - k_EInputActionOrigin_PS4_Reserved2 = 105, - k_EInputActionOrigin_PS4_Reserved3 = 106, - k_EInputActionOrigin_PS4_Reserved4 = 107, - k_EInputActionOrigin_PS4_Reserved5 = 108, - k_EInputActionOrigin_PS4_Reserved6 = 109, - k_EInputActionOrigin_PS4_Reserved7 = 110, - k_EInputActionOrigin_PS4_Reserved8 = 111, - k_EInputActionOrigin_PS4_Reserved9 = 112, - k_EInputActionOrigin_PS4_Reserved10 = 113, - k_EInputActionOrigin_XBoxOne_A = 114, - k_EInputActionOrigin_XBoxOne_B = 115, - k_EInputActionOrigin_XBoxOne_X = 116, - k_EInputActionOrigin_XBoxOne_Y = 117, - k_EInputActionOrigin_XBoxOne_LeftBumper = 118, - k_EInputActionOrigin_XBoxOne_RightBumper = 119, - k_EInputActionOrigin_XBoxOne_Menu = 120, - k_EInputActionOrigin_XBoxOne_View = 121, - k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull = 122, - k_EInputActionOrigin_XBoxOne_LeftTrigger_Click = 123, - k_EInputActionOrigin_XBoxOne_RightTrigger_Pull = 124, - k_EInputActionOrigin_XBoxOne_RightTrigger_Click = 125, - k_EInputActionOrigin_XBoxOne_LeftStick_Move = 126, - k_EInputActionOrigin_XBoxOne_LeftStick_Click = 127, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth = 128, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth = 129, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest = 130, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast = 131, - k_EInputActionOrigin_XBoxOne_RightStick_Move = 132, - k_EInputActionOrigin_XBoxOne_RightStick_Click = 133, - k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth = 134, - k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth = 135, - k_EInputActionOrigin_XBoxOne_RightStick_DPadWest = 136, - k_EInputActionOrigin_XBoxOne_RightStick_DPadEast = 137, - k_EInputActionOrigin_XBoxOne_DPad_North = 138, - k_EInputActionOrigin_XBoxOne_DPad_South = 139, - k_EInputActionOrigin_XBoxOne_DPad_West = 140, - k_EInputActionOrigin_XBoxOne_DPad_East = 141, - k_EInputActionOrigin_XBoxOne_Reserved0 = 142, - k_EInputActionOrigin_XBoxOne_Reserved1 = 143, - k_EInputActionOrigin_XBoxOne_Reserved2 = 144, - k_EInputActionOrigin_XBoxOne_Reserved3 = 145, - k_EInputActionOrigin_XBoxOne_Reserved4 = 146, - k_EInputActionOrigin_XBoxOne_Reserved5 = 147, - k_EInputActionOrigin_XBoxOne_Reserved6 = 148, - k_EInputActionOrigin_XBoxOne_Reserved7 = 149, - k_EInputActionOrigin_XBoxOne_Reserved8 = 150, - k_EInputActionOrigin_XBoxOne_Reserved9 = 151, - k_EInputActionOrigin_XBoxOne_Reserved10 = 152, - k_EInputActionOrigin_XBox360_A = 153, - k_EInputActionOrigin_XBox360_B = 154, - k_EInputActionOrigin_XBox360_X = 155, - k_EInputActionOrigin_XBox360_Y = 156, - k_EInputActionOrigin_XBox360_LeftBumper = 157, - k_EInputActionOrigin_XBox360_RightBumper = 158, - k_EInputActionOrigin_XBox360_Start = 159, - k_EInputActionOrigin_XBox360_Back = 160, - k_EInputActionOrigin_XBox360_LeftTrigger_Pull = 161, - k_EInputActionOrigin_XBox360_LeftTrigger_Click = 162, - k_EInputActionOrigin_XBox360_RightTrigger_Pull = 163, - k_EInputActionOrigin_XBox360_RightTrigger_Click = 164, - k_EInputActionOrigin_XBox360_LeftStick_Move = 165, - k_EInputActionOrigin_XBox360_LeftStick_Click = 166, - k_EInputActionOrigin_XBox360_LeftStick_DPadNorth = 167, - k_EInputActionOrigin_XBox360_LeftStick_DPadSouth = 168, - k_EInputActionOrigin_XBox360_LeftStick_DPadWest = 169, - k_EInputActionOrigin_XBox360_LeftStick_DPadEast = 170, - k_EInputActionOrigin_XBox360_RightStick_Move = 171, - k_EInputActionOrigin_XBox360_RightStick_Click = 172, - k_EInputActionOrigin_XBox360_RightStick_DPadNorth = 173, - k_EInputActionOrigin_XBox360_RightStick_DPadSouth = 174, - k_EInputActionOrigin_XBox360_RightStick_DPadWest = 175, - k_EInputActionOrigin_XBox360_RightStick_DPadEast = 176, - k_EInputActionOrigin_XBox360_DPad_North = 177, - k_EInputActionOrigin_XBox360_DPad_South = 178, - k_EInputActionOrigin_XBox360_DPad_West = 179, - k_EInputActionOrigin_XBox360_DPad_East = 180, - k_EInputActionOrigin_XBox360_Reserved0 = 181, - k_EInputActionOrigin_XBox360_Reserved1 = 182, - k_EInputActionOrigin_XBox360_Reserved2 = 183, - k_EInputActionOrigin_XBox360_Reserved3 = 184, - k_EInputActionOrigin_XBox360_Reserved4 = 185, - k_EInputActionOrigin_XBox360_Reserved5 = 186, - k_EInputActionOrigin_XBox360_Reserved6 = 187, - k_EInputActionOrigin_XBox360_Reserved7 = 188, - k_EInputActionOrigin_XBox360_Reserved8 = 189, - k_EInputActionOrigin_XBox360_Reserved9 = 190, - k_EInputActionOrigin_XBox360_Reserved10 = 191, - k_EInputActionOrigin_Switch_A = 192, - k_EInputActionOrigin_Switch_B = 193, - k_EInputActionOrigin_Switch_X = 194, - k_EInputActionOrigin_Switch_Y = 195, - k_EInputActionOrigin_Switch_LeftBumper = 196, - k_EInputActionOrigin_Switch_RightBumper = 197, - k_EInputActionOrigin_Switch_Plus = 198, - k_EInputActionOrigin_Switch_Minus = 199, - k_EInputActionOrigin_Switch_Capture = 200, - k_EInputActionOrigin_Switch_LeftTrigger_Pull = 201, - k_EInputActionOrigin_Switch_LeftTrigger_Click = 202, - k_EInputActionOrigin_Switch_RightTrigger_Pull = 203, - k_EInputActionOrigin_Switch_RightTrigger_Click = 204, - k_EInputActionOrigin_Switch_LeftStick_Move = 205, - k_EInputActionOrigin_Switch_LeftStick_Click = 206, - k_EInputActionOrigin_Switch_LeftStick_DPadNorth = 207, - k_EInputActionOrigin_Switch_LeftStick_DPadSouth = 208, - k_EInputActionOrigin_Switch_LeftStick_DPadWest = 209, - k_EInputActionOrigin_Switch_LeftStick_DPadEast = 210, - k_EInputActionOrigin_Switch_RightStick_Move = 211, - k_EInputActionOrigin_Switch_RightStick_Click = 212, - k_EInputActionOrigin_Switch_RightStick_DPadNorth = 213, - k_EInputActionOrigin_Switch_RightStick_DPadSouth = 214, - k_EInputActionOrigin_Switch_RightStick_DPadWest = 215, - k_EInputActionOrigin_Switch_RightStick_DPadEast = 216, - k_EInputActionOrigin_Switch_DPad_North = 217, - k_EInputActionOrigin_Switch_DPad_South = 218, - k_EInputActionOrigin_Switch_DPad_West = 219, - k_EInputActionOrigin_Switch_DPad_East = 220, - k_EInputActionOrigin_Switch_ProGyro_Move = 221, - k_EInputActionOrigin_Switch_ProGyro_Pitch = 222, - k_EInputActionOrigin_Switch_ProGyro_Yaw = 223, - k_EInputActionOrigin_Switch_ProGyro_Roll = 224, - k_EInputActionOrigin_Switch_Reserved0 = 225, - k_EInputActionOrigin_Switch_Reserved1 = 226, - k_EInputActionOrigin_Switch_Reserved2 = 227, - k_EInputActionOrigin_Switch_Reserved3 = 228, - k_EInputActionOrigin_Switch_Reserved4 = 229, - k_EInputActionOrigin_Switch_Reserved5 = 230, - k_EInputActionOrigin_Switch_Reserved6 = 231, - k_EInputActionOrigin_Switch_Reserved7 = 232, - k_EInputActionOrigin_Switch_Reserved8 = 233, - k_EInputActionOrigin_Switch_Reserved9 = 234, - k_EInputActionOrigin_Switch_Reserved10 = 235, - k_EInputActionOrigin_Switch_RightGyro_Move = 236, - k_EInputActionOrigin_Switch_RightGyro_Pitch = 237, - k_EInputActionOrigin_Switch_RightGyro_Yaw = 238, - k_EInputActionOrigin_Switch_RightGyro_Roll = 239, - k_EInputActionOrigin_Switch_LeftGyro_Move = 240, - k_EInputActionOrigin_Switch_LeftGyro_Pitch = 241, - k_EInputActionOrigin_Switch_LeftGyro_Yaw = 242, - k_EInputActionOrigin_Switch_LeftGyro_Roll = 243, - k_EInputActionOrigin_Switch_LeftGrip_Lower = 244, - k_EInputActionOrigin_Switch_LeftGrip_Upper = 245, - k_EInputActionOrigin_Switch_RightGrip_Lower = 246, - k_EInputActionOrigin_Switch_RightGrip_Upper = 247, - k_EInputActionOrigin_Switch_Reserved11 = 248, - k_EInputActionOrigin_Switch_Reserved12 = 249, - k_EInputActionOrigin_Switch_Reserved13 = 250, - k_EInputActionOrigin_Switch_Reserved14 = 251, - k_EInputActionOrigin_Switch_Reserved15 = 252, - k_EInputActionOrigin_Switch_Reserved16 = 253, - k_EInputActionOrigin_Switch_Reserved17 = 254, - k_EInputActionOrigin_Switch_Reserved18 = 255, - k_EInputActionOrigin_Switch_Reserved19 = 256, - k_EInputActionOrigin_Switch_Reserved20 = 257, - k_EInputActionOrigin_Count = 258, - k_EInputActionOrigin_MaximumPossibleValue = 32767, -} -public enum EXboxOrigin -{ - k_EXboxOrigin_A = 0, - k_EXboxOrigin_B = 1, - k_EXboxOrigin_X = 2, - k_EXboxOrigin_Y = 3, - k_EXboxOrigin_LeftBumper = 4, - k_EXboxOrigin_RightBumper = 5, - k_EXboxOrigin_Menu = 6, - k_EXboxOrigin_View = 7, - k_EXboxOrigin_LeftTrigger_Pull = 8, - k_EXboxOrigin_LeftTrigger_Click = 9, - k_EXboxOrigin_RightTrigger_Pull = 10, - k_EXboxOrigin_RightTrigger_Click = 11, - k_EXboxOrigin_LeftStick_Move = 12, - k_EXboxOrigin_LeftStick_Click = 13, - k_EXboxOrigin_LeftStick_DPadNorth = 14, - k_EXboxOrigin_LeftStick_DPadSouth = 15, - k_EXboxOrigin_LeftStick_DPadWest = 16, - k_EXboxOrigin_LeftStick_DPadEast = 17, - k_EXboxOrigin_RightStick_Move = 18, - k_EXboxOrigin_RightStick_Click = 19, - k_EXboxOrigin_RightStick_DPadNorth = 20, - k_EXboxOrigin_RightStick_DPadSouth = 21, - k_EXboxOrigin_RightStick_DPadWest = 22, - k_EXboxOrigin_RightStick_DPadEast = 23, - k_EXboxOrigin_DPad_North = 24, - k_EXboxOrigin_DPad_South = 25, - k_EXboxOrigin_DPad_West = 26, - k_EXboxOrigin_DPad_East = 27, - k_EXboxOrigin_Count = 28, -} -public enum ESteamControllerPad -{ - k_ESteamControllerPad_Left = 0, - k_ESteamControllerPad_Right = 1, -} -public enum ESteamInputType -{ - k_ESteamInputType_Unknown = 0, - k_ESteamInputType_SteamController = 1, - k_ESteamInputType_XBox360Controller = 2, - k_ESteamInputType_XBoxOneController = 3, - k_ESteamInputType_GenericGamepad = 4, - k_ESteamInputType_PS4Controller = 5, - k_ESteamInputType_AppleMFiController = 6, - k_ESteamInputType_AndroidController = 7, - k_ESteamInputType_SwitchJoyConPair = 8, - k_ESteamInputType_SwitchJoyConSingle = 9, - k_ESteamInputType_SwitchProController = 10, - k_ESteamInputType_MobileTouch = 11, - k_ESteamInputType_PS3Controller = 12, - k_ESteamInputType_Count = 13, - k_ESteamInputType_MaximumPossibleValue = 255, -} -public enum ESteamInputLEDFlag -{ - k_ESteamInputLEDFlag_SetColor = 0, - k_ESteamInputLEDFlag_RestoreUserDefault = 1, -} -public enum EControllerSource -{ - k_EControllerSource_None = 0, - k_EControllerSource_LeftTrackpad = 1, - k_EControllerSource_RightTrackpad = 2, - k_EControllerSource_Joystick = 3, - k_EControllerSource_ABXY = 4, - k_EControllerSource_Switch = 5, - k_EControllerSource_LeftTrigger = 6, - k_EControllerSource_RightTrigger = 7, - k_EControllerSource_LeftBumper = 8, - k_EControllerSource_RightBumper = 9, - k_EControllerSource_Gyro = 10, - k_EControllerSource_CenterTrackpad = 11, - k_EControllerSource_RightJoystick = 12, - k_EControllerSource_DPad = 13, - k_EControllerSource_Key = 14, - k_EControllerSource_Mouse = 15, - k_EControllerSource_LeftGyro = 16, - k_EControllerSource_Count = 17, -} -public enum EControllerSourceMode -{ - k_EControllerSourceMode_None = 0, - k_EControllerSourceMode_Dpad = 1, - k_EControllerSourceMode_Buttons = 2, - k_EControllerSourceMode_FourButtons = 3, - k_EControllerSourceMode_AbsoluteMouse = 4, - k_EControllerSourceMode_RelativeMouse = 5, - k_EControllerSourceMode_JoystickMove = 6, - k_EControllerSourceMode_JoystickMouse = 7, - k_EControllerSourceMode_JoystickCamera = 8, - k_EControllerSourceMode_ScrollWheel = 9, - k_EControllerSourceMode_Trigger = 10, - k_EControllerSourceMode_TouchMenu = 11, - k_EControllerSourceMode_MouseJoystick = 12, - k_EControllerSourceMode_MouseRegion = 13, - k_EControllerSourceMode_RadialMenu = 14, - k_EControllerSourceMode_SingleButton = 15, - k_EControllerSourceMode_Switches = 16, -} -public enum EControllerActionOrigin -{ - k_EControllerActionOrigin_None = 0, - k_EControllerActionOrigin_A = 1, - k_EControllerActionOrigin_B = 2, - k_EControllerActionOrigin_X = 3, - k_EControllerActionOrigin_Y = 4, - k_EControllerActionOrigin_LeftBumper = 5, - k_EControllerActionOrigin_RightBumper = 6, - k_EControllerActionOrigin_LeftGrip = 7, - k_EControllerActionOrigin_RightGrip = 8, - k_EControllerActionOrigin_Start = 9, - k_EControllerActionOrigin_Back = 10, - k_EControllerActionOrigin_LeftPad_Touch = 11, - k_EControllerActionOrigin_LeftPad_Swipe = 12, - k_EControllerActionOrigin_LeftPad_Click = 13, - k_EControllerActionOrigin_LeftPad_DPadNorth = 14, - k_EControllerActionOrigin_LeftPad_DPadSouth = 15, - k_EControllerActionOrigin_LeftPad_DPadWest = 16, - k_EControllerActionOrigin_LeftPad_DPadEast = 17, - k_EControllerActionOrigin_RightPad_Touch = 18, - k_EControllerActionOrigin_RightPad_Swipe = 19, - k_EControllerActionOrigin_RightPad_Click = 20, - k_EControllerActionOrigin_RightPad_DPadNorth = 21, - k_EControllerActionOrigin_RightPad_DPadSouth = 22, - k_EControllerActionOrigin_RightPad_DPadWest = 23, - k_EControllerActionOrigin_RightPad_DPadEast = 24, - k_EControllerActionOrigin_LeftTrigger_Pull = 25, - k_EControllerActionOrigin_LeftTrigger_Click = 26, - k_EControllerActionOrigin_RightTrigger_Pull = 27, - k_EControllerActionOrigin_RightTrigger_Click = 28, - k_EControllerActionOrigin_LeftStick_Move = 29, - k_EControllerActionOrigin_LeftStick_Click = 30, - k_EControllerActionOrigin_LeftStick_DPadNorth = 31, - k_EControllerActionOrigin_LeftStick_DPadSouth = 32, - k_EControllerActionOrigin_LeftStick_DPadWest = 33, - k_EControllerActionOrigin_LeftStick_DPadEast = 34, - k_EControllerActionOrigin_Gyro_Move = 35, - k_EControllerActionOrigin_Gyro_Pitch = 36, - k_EControllerActionOrigin_Gyro_Yaw = 37, - k_EControllerActionOrigin_Gyro_Roll = 38, - k_EControllerActionOrigin_PS4_X = 39, - k_EControllerActionOrigin_PS4_Circle = 40, - k_EControllerActionOrigin_PS4_Triangle = 41, - k_EControllerActionOrigin_PS4_Square = 42, - k_EControllerActionOrigin_PS4_LeftBumper = 43, - k_EControllerActionOrigin_PS4_RightBumper = 44, - k_EControllerActionOrigin_PS4_Options = 45, - k_EControllerActionOrigin_PS4_Share = 46, - k_EControllerActionOrigin_PS4_LeftPad_Touch = 47, - k_EControllerActionOrigin_PS4_LeftPad_Swipe = 48, - k_EControllerActionOrigin_PS4_LeftPad_Click = 49, - k_EControllerActionOrigin_PS4_LeftPad_DPadNorth = 50, - k_EControllerActionOrigin_PS4_LeftPad_DPadSouth = 51, - k_EControllerActionOrigin_PS4_LeftPad_DPadWest = 52, - k_EControllerActionOrigin_PS4_LeftPad_DPadEast = 53, - k_EControllerActionOrigin_PS4_RightPad_Touch = 54, - k_EControllerActionOrigin_PS4_RightPad_Swipe = 55, - k_EControllerActionOrigin_PS4_RightPad_Click = 56, - k_EControllerActionOrigin_PS4_RightPad_DPadNorth = 57, - k_EControllerActionOrigin_PS4_RightPad_DPadSouth = 58, - k_EControllerActionOrigin_PS4_RightPad_DPadWest = 59, - k_EControllerActionOrigin_PS4_RightPad_DPadEast = 60, - k_EControllerActionOrigin_PS4_CenterPad_Touch = 61, - k_EControllerActionOrigin_PS4_CenterPad_Swipe = 62, - k_EControllerActionOrigin_PS4_CenterPad_Click = 63, - k_EControllerActionOrigin_PS4_CenterPad_DPadNorth = 64, - k_EControllerActionOrigin_PS4_CenterPad_DPadSouth = 65, - k_EControllerActionOrigin_PS4_CenterPad_DPadWest = 66, - k_EControllerActionOrigin_PS4_CenterPad_DPadEast = 67, - k_EControllerActionOrigin_PS4_LeftTrigger_Pull = 68, - k_EControllerActionOrigin_PS4_LeftTrigger_Click = 69, - k_EControllerActionOrigin_PS4_RightTrigger_Pull = 70, - k_EControllerActionOrigin_PS4_RightTrigger_Click = 71, - k_EControllerActionOrigin_PS4_LeftStick_Move = 72, - k_EControllerActionOrigin_PS4_LeftStick_Click = 73, - k_EControllerActionOrigin_PS4_LeftStick_DPadNorth = 74, - k_EControllerActionOrigin_PS4_LeftStick_DPadSouth = 75, - k_EControllerActionOrigin_PS4_LeftStick_DPadWest = 76, - k_EControllerActionOrigin_PS4_LeftStick_DPadEast = 77, - k_EControllerActionOrigin_PS4_RightStick_Move = 78, - k_EControllerActionOrigin_PS4_RightStick_Click = 79, - k_EControllerActionOrigin_PS4_RightStick_DPadNorth = 80, - k_EControllerActionOrigin_PS4_RightStick_DPadSouth = 81, - k_EControllerActionOrigin_PS4_RightStick_DPadWest = 82, - k_EControllerActionOrigin_PS4_RightStick_DPadEast = 83, - k_EControllerActionOrigin_PS4_DPad_North = 84, - k_EControllerActionOrigin_PS4_DPad_South = 85, - k_EControllerActionOrigin_PS4_DPad_West = 86, - k_EControllerActionOrigin_PS4_DPad_East = 87, - k_EControllerActionOrigin_PS4_Gyro_Move = 88, - k_EControllerActionOrigin_PS4_Gyro_Pitch = 89, - k_EControllerActionOrigin_PS4_Gyro_Yaw = 90, - k_EControllerActionOrigin_PS4_Gyro_Roll = 91, - k_EControllerActionOrigin_XBoxOne_A = 92, - k_EControllerActionOrigin_XBoxOne_B = 93, - k_EControllerActionOrigin_XBoxOne_X = 94, - k_EControllerActionOrigin_XBoxOne_Y = 95, - k_EControllerActionOrigin_XBoxOne_LeftBumper = 96, - k_EControllerActionOrigin_XBoxOne_RightBumper = 97, - k_EControllerActionOrigin_XBoxOne_Menu = 98, - k_EControllerActionOrigin_XBoxOne_View = 99, - k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull = 100, - k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click = 101, - k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull = 102, - k_EControllerActionOrigin_XBoxOne_RightTrigger_Click = 103, - k_EControllerActionOrigin_XBoxOne_LeftStick_Move = 104, - k_EControllerActionOrigin_XBoxOne_LeftStick_Click = 105, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth = 106, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth = 107, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest = 108, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast = 109, - k_EControllerActionOrigin_XBoxOne_RightStick_Move = 110, - k_EControllerActionOrigin_XBoxOne_RightStick_Click = 111, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth = 112, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth = 113, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest = 114, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast = 115, - k_EControllerActionOrigin_XBoxOne_DPad_North = 116, - k_EControllerActionOrigin_XBoxOne_DPad_South = 117, - k_EControllerActionOrigin_XBoxOne_DPad_West = 118, - k_EControllerActionOrigin_XBoxOne_DPad_East = 119, - k_EControllerActionOrigin_XBox360_A = 120, - k_EControllerActionOrigin_XBox360_B = 121, - k_EControllerActionOrigin_XBox360_X = 122, - k_EControllerActionOrigin_XBox360_Y = 123, - k_EControllerActionOrigin_XBox360_LeftBumper = 124, - k_EControllerActionOrigin_XBox360_RightBumper = 125, - k_EControllerActionOrigin_XBox360_Start = 126, - k_EControllerActionOrigin_XBox360_Back = 127, - k_EControllerActionOrigin_XBox360_LeftTrigger_Pull = 128, - k_EControllerActionOrigin_XBox360_LeftTrigger_Click = 129, - k_EControllerActionOrigin_XBox360_RightTrigger_Pull = 130, - k_EControllerActionOrigin_XBox360_RightTrigger_Click = 131, - k_EControllerActionOrigin_XBox360_LeftStick_Move = 132, - k_EControllerActionOrigin_XBox360_LeftStick_Click = 133, - k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth = 134, - k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth = 135, - k_EControllerActionOrigin_XBox360_LeftStick_DPadWest = 136, - k_EControllerActionOrigin_XBox360_LeftStick_DPadEast = 137, - k_EControllerActionOrigin_XBox360_RightStick_Move = 138, - k_EControllerActionOrigin_XBox360_RightStick_Click = 139, - k_EControllerActionOrigin_XBox360_RightStick_DPadNorth = 140, - k_EControllerActionOrigin_XBox360_RightStick_DPadSouth = 141, - k_EControllerActionOrigin_XBox360_RightStick_DPadWest = 142, - k_EControllerActionOrigin_XBox360_RightStick_DPadEast = 143, - k_EControllerActionOrigin_XBox360_DPad_North = 144, - k_EControllerActionOrigin_XBox360_DPad_South = 145, - k_EControllerActionOrigin_XBox360_DPad_West = 146, - k_EControllerActionOrigin_XBox360_DPad_East = 147, - k_EControllerActionOrigin_SteamV2_A = 148, - k_EControllerActionOrigin_SteamV2_B = 149, - k_EControllerActionOrigin_SteamV2_X = 150, - k_EControllerActionOrigin_SteamV2_Y = 151, - k_EControllerActionOrigin_SteamV2_LeftBumper = 152, - k_EControllerActionOrigin_SteamV2_RightBumper = 153, - k_EControllerActionOrigin_SteamV2_LeftGrip_Lower = 154, - k_EControllerActionOrigin_SteamV2_LeftGrip_Upper = 155, - k_EControllerActionOrigin_SteamV2_RightGrip_Lower = 156, - k_EControllerActionOrigin_SteamV2_RightGrip_Upper = 157, - k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure = 158, - k_EControllerActionOrigin_SteamV2_RightBumper_Pressure = 159, - k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure = 160, - k_EControllerActionOrigin_SteamV2_RightGrip_Pressure = 161, - k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure = 162, - k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure = 163, - k_EControllerActionOrigin_SteamV2_Start = 164, - k_EControllerActionOrigin_SteamV2_Back = 165, - k_EControllerActionOrigin_SteamV2_LeftPad_Touch = 166, - k_EControllerActionOrigin_SteamV2_LeftPad_Swipe = 167, - k_EControllerActionOrigin_SteamV2_LeftPad_Click = 168, - k_EControllerActionOrigin_SteamV2_LeftPad_Pressure = 169, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth = 170, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth = 171, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest = 172, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast = 173, - k_EControllerActionOrigin_SteamV2_RightPad_Touch = 174, - k_EControllerActionOrigin_SteamV2_RightPad_Swipe = 175, - k_EControllerActionOrigin_SteamV2_RightPad_Click = 176, - k_EControllerActionOrigin_SteamV2_RightPad_Pressure = 177, - k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth = 178, - k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth = 179, - k_EControllerActionOrigin_SteamV2_RightPad_DPadWest = 180, - k_EControllerActionOrigin_SteamV2_RightPad_DPadEast = 181, - k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull = 182, - k_EControllerActionOrigin_SteamV2_LeftTrigger_Click = 183, - k_EControllerActionOrigin_SteamV2_RightTrigger_Pull = 184, - k_EControllerActionOrigin_SteamV2_RightTrigger_Click = 185, - k_EControllerActionOrigin_SteamV2_LeftStick_Move = 186, - k_EControllerActionOrigin_SteamV2_LeftStick_Click = 187, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth = 188, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth = 189, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest = 190, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast = 191, - k_EControllerActionOrigin_SteamV2_Gyro_Move = 192, - k_EControllerActionOrigin_SteamV2_Gyro_Pitch = 193, - k_EControllerActionOrigin_SteamV2_Gyro_Yaw = 194, - k_EControllerActionOrigin_SteamV2_Gyro_Roll = 195, - k_EControllerActionOrigin_Switch_A = 196, - k_EControllerActionOrigin_Switch_B = 197, - k_EControllerActionOrigin_Switch_X = 198, - k_EControllerActionOrigin_Switch_Y = 199, - k_EControllerActionOrigin_Switch_LeftBumper = 200, - k_EControllerActionOrigin_Switch_RightBumper = 201, - k_EControllerActionOrigin_Switch_Plus = 202, - k_EControllerActionOrigin_Switch_Minus = 203, - k_EControllerActionOrigin_Switch_Capture = 204, - k_EControllerActionOrigin_Switch_LeftTrigger_Pull = 205, - k_EControllerActionOrigin_Switch_LeftTrigger_Click = 206, - k_EControllerActionOrigin_Switch_RightTrigger_Pull = 207, - k_EControllerActionOrigin_Switch_RightTrigger_Click = 208, - k_EControllerActionOrigin_Switch_LeftStick_Move = 209, - k_EControllerActionOrigin_Switch_LeftStick_Click = 210, - k_EControllerActionOrigin_Switch_LeftStick_DPadNorth = 211, - k_EControllerActionOrigin_Switch_LeftStick_DPadSouth = 212, - k_EControllerActionOrigin_Switch_LeftStick_DPadWest = 213, - k_EControllerActionOrigin_Switch_LeftStick_DPadEast = 214, - k_EControllerActionOrigin_Switch_RightStick_Move = 215, - k_EControllerActionOrigin_Switch_RightStick_Click = 216, - k_EControllerActionOrigin_Switch_RightStick_DPadNorth = 217, - k_EControllerActionOrigin_Switch_RightStick_DPadSouth = 218, - k_EControllerActionOrigin_Switch_RightStick_DPadWest = 219, - k_EControllerActionOrigin_Switch_RightStick_DPadEast = 220, - k_EControllerActionOrigin_Switch_DPad_North = 221, - k_EControllerActionOrigin_Switch_DPad_South = 222, - k_EControllerActionOrigin_Switch_DPad_West = 223, - k_EControllerActionOrigin_Switch_DPad_East = 224, - k_EControllerActionOrigin_Switch_ProGyro_Move = 225, - k_EControllerActionOrigin_Switch_ProGyro_Pitch = 226, - k_EControllerActionOrigin_Switch_ProGyro_Yaw = 227, - k_EControllerActionOrigin_Switch_ProGyro_Roll = 228, - k_EControllerActionOrigin_Switch_RightGyro_Move = 229, - k_EControllerActionOrigin_Switch_RightGyro_Pitch = 230, - k_EControllerActionOrigin_Switch_RightGyro_Yaw = 231, - k_EControllerActionOrigin_Switch_RightGyro_Roll = 232, - k_EControllerActionOrigin_Switch_LeftGyro_Move = 233, - k_EControllerActionOrigin_Switch_LeftGyro_Pitch = 234, - k_EControllerActionOrigin_Switch_LeftGyro_Yaw = 235, - k_EControllerActionOrigin_Switch_LeftGyro_Roll = 236, - k_EControllerActionOrigin_Switch_LeftGrip_Lower = 237, - k_EControllerActionOrigin_Switch_LeftGrip_Upper = 238, - k_EControllerActionOrigin_Switch_RightGrip_Lower = 239, - k_EControllerActionOrigin_Switch_RightGrip_Upper = 240, - k_EControllerActionOrigin_Count = 241, - k_EControllerActionOrigin_MaximumPossibleValue = 32767, -} -public enum ESteamControllerLEDFlag -{ - k_ESteamControllerLEDFlag_SetColor = 0, - k_ESteamControllerLEDFlag_RestoreUserDefault = 1, -} -public enum EUGCMatchingUGCType -{ - k_EUGCMatchingUGCType_Items = 0, - k_EUGCMatchingUGCType_Items_Mtx = 1, - k_EUGCMatchingUGCType_Items_ReadyToUse = 2, - k_EUGCMatchingUGCType_Collections = 3, - k_EUGCMatchingUGCType_Artwork = 4, - k_EUGCMatchingUGCType_Videos = 5, - k_EUGCMatchingUGCType_Screenshots = 6, - k_EUGCMatchingUGCType_AllGuides = 7, - k_EUGCMatchingUGCType_WebGuides = 8, - k_EUGCMatchingUGCType_IntegratedGuides = 9, - k_EUGCMatchingUGCType_UsableInGame = 10, - k_EUGCMatchingUGCType_ControllerBindings = 11, - k_EUGCMatchingUGCType_GameManagedItems = 12, - k_EUGCMatchingUGCType_All = -1, -} -public enum EUserUGCList -{ - k_EUserUGCList_Published = 0, - k_EUserUGCList_VotedOn = 1, - k_EUserUGCList_VotedUp = 2, - k_EUserUGCList_VotedDown = 3, - k_EUserUGCList_WillVoteLater = 4, - k_EUserUGCList_Favorited = 5, - k_EUserUGCList_Subscribed = 6, - k_EUserUGCList_UsedOrPlayed = 7, - k_EUserUGCList_Followed = 8, -} -public enum EUserUGCListSortOrder -{ - k_EUserUGCListSortOrder_CreationOrderDesc = 0, - k_EUserUGCListSortOrder_CreationOrderAsc = 1, - k_EUserUGCListSortOrder_TitleAsc = 2, - k_EUserUGCListSortOrder_LastUpdatedDesc = 3, - k_EUserUGCListSortOrder_SubscriptionDateDesc = 4, - k_EUserUGCListSortOrder_VoteScoreDesc = 5, - k_EUserUGCListSortOrder_ForModeration = 6, -} -public enum EUGCQuery -{ - k_EUGCQuery_RankedByVote = 0, - k_EUGCQuery_RankedByPublicationDate = 1, - k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, - k_EUGCQuery_RankedByTrend = 3, - k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, - k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, - k_EUGCQuery_RankedByNumTimesReported = 6, - k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, - k_EUGCQuery_NotYetRated = 8, - k_EUGCQuery_RankedByTotalVotesAsc = 9, - k_EUGCQuery_RankedByVotesUp = 10, - k_EUGCQuery_RankedByTextSearch = 11, - k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, - k_EUGCQuery_RankedByPlaytimeTrend = 13, - k_EUGCQuery_RankedByTotalPlaytime = 14, - k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, - k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, - k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, - k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, -} -public enum EItemUpdateStatus -{ - k_EItemUpdateStatusInvalid = 0, - k_EItemUpdateStatusPreparingConfig = 1, - k_EItemUpdateStatusPreparingContent = 2, - k_EItemUpdateStatusUploadingContent = 3, - k_EItemUpdateStatusUploadingPreviewFile = 4, - k_EItemUpdateStatusCommittingChanges = 5, -} -public enum EItemState -{ - k_EItemStateNone = 0, - k_EItemStateSubscribed = 1, - k_EItemStateLegacyItem = 2, - k_EItemStateInstalled = 4, - k_EItemStateNeedsUpdate = 8, - k_EItemStateDownloading = 16, - k_EItemStateDownloadPending = 32, -} -public enum EItemStatistic -{ - k_EItemStatistic_NumSubscriptions = 0, - k_EItemStatistic_NumFavorites = 1, - k_EItemStatistic_NumFollowers = 2, - k_EItemStatistic_NumUniqueSubscriptions = 3, - k_EItemStatistic_NumUniqueFavorites = 4, - k_EItemStatistic_NumUniqueFollowers = 5, - k_EItemStatistic_NumUniqueWebsiteViews = 6, - k_EItemStatistic_ReportScore = 7, - k_EItemStatistic_NumSecondsPlayed = 8, - k_EItemStatistic_NumPlaytimeSessions = 9, - k_EItemStatistic_NumComments = 10, - k_EItemStatistic_NumSecondsPlayedDuringTimePeriod = 11, - k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod = 12, -} -public enum EItemPreviewType -{ - k_EItemPreviewType_Image = 0, - k_EItemPreviewType_YouTubeVideo = 1, - k_EItemPreviewType_Sketchfab = 2, - k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, - k_EItemPreviewType_EnvironmentMap_LatLong = 4, - k_EItemPreviewType_ReservedMax = 255, -} -public enum EHTMLMouseButton -{ - eHTMLMouseButton_Left = 0, - eHTMLMouseButton_Right = 1, - eHTMLMouseButton_Middle = 2, -} -public enum EMouseCursor -{ - dc_user = 0, - dc_none = 1, - dc_arrow = 2, - dc_ibeam = 3, - dc_hourglass = 4, - dc_waitarrow = 5, - dc_crosshair = 6, - dc_up = 7, - dc_sizenw = 8, - dc_sizese = 9, - dc_sizene = 10, - dc_sizesw = 11, - dc_sizew = 12, - dc_sizee = 13, - dc_sizen = 14, - dc_sizes = 15, - dc_sizewe = 16, - dc_sizens = 17, - dc_sizeall = 18, - dc_no = 19, - dc_hand = 20, - dc_blank = 21, - dc_middle_pan = 22, - dc_north_pan = 23, - dc_north_east_pan = 24, - dc_east_pan = 25, - dc_south_east_pan = 26, - dc_south_pan = 27, - dc_south_west_pan = 28, - dc_west_pan = 29, - dc_north_west_pan = 30, - dc_alias = 31, - dc_cell = 32, - dc_colresize = 33, - dc_copycur = 34, - dc_verticaltext = 35, - dc_rowresize = 36, - dc_zoomin = 37, - dc_zoomout = 38, - dc_help = 39, - dc_custom = 40, - dc_last = 41, -} -public enum EHTMLKeyModifiers -{ - k_eHTMLKeyModifier_None = 0, - k_eHTMLKeyModifier_AltDown = 1, - k_eHTMLKeyModifier_CtrlDown = 2, - k_eHTMLKeyModifier_ShiftDown = 4, -} -public enum ESteamItemFlags -{ - k_ESteamItemNoTrade = 1, - k_ESteamItemRemoved = 256, - k_ESteamItemConsumed = 512, -} -public enum EParentalFeature -{ - k_EFeatureInvalid = 0, - k_EFeatureStore = 1, - k_EFeatureCommunity = 2, - k_EFeatureProfile = 3, - k_EFeatureFriends = 4, - k_EFeatureNews = 5, - k_EFeatureTrading = 6, - k_EFeatureSettings = 7, - k_EFeatureConsole = 8, - k_EFeatureBrowser = 9, - k_EFeatureParentalSetup = 10, - k_EFeatureLibrary = 11, - k_EFeatureTest = 12, - k_EFeatureMax = 13, -} -[StructLayout(LayoutKind.Sequential)] public struct CSteamID -{ - public SteamID_t m_steamid; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamID_t -{ - public SteamIDComponent_t m_comp; - public ulong m_unAll64Bits; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamIDComponent_t -{ - public uint m_unAccountID; - public uint m_unAccountInstance; - public uint m_EAccountType; - public EUniverse m_EUniverse; -} -[StructLayout(LayoutKind.Sequential)] public struct GameID_t -{ - public uint m_nAppID; - public uint m_nType; - public uint m_nModID; -} -[StructLayout(LayoutKind.Sequential)] public struct ValvePackingSentinel_t -{ - public uint m_u32; - public ulong m_u64; - public char m_u16; - public double m_d; -} -[StructLayout(LayoutKind.Sequential)] public struct CCallbackBase -{ - public byte m_nCallbackFlags; - public int m_iCallback; -} -[StructLayout(LayoutKind.Sequential)] public struct CCallResult -{ - public ulong m_hAPICall; - public IntPtr m_pObj; // T * - public IntPtr m_Func; -} -[StructLayout(LayoutKind.Sequential)] public struct CCallback -{ - public IntPtr m_pObj; // T * - public IntPtr m_Func; -} -[StructLayout(LayoutKind.Sequential)] public struct CSteamAPIContext -{ - public IntPtr m_pSteamClient; // class ISteamClient * - public IntPtr m_pSteamUser; // class ISteamUser * - public IntPtr m_pSteamFriends; // class ISteamFriends * - public IntPtr m_pSteamUtils; // class ISteamUtils * - public IntPtr m_pSteamMatchmaking; // class ISteamMatchmaking * - public IntPtr m_pSteamGameSearch; // class ISteamGameSearch * - public IntPtr m_pSteamUserStats; // class ISteamUserStats * - public IntPtr m_pSteamApps; // class ISteamApps * - public IntPtr m_pSteamMatchmakingServers; // class ISteamMatchmakingServers * - public IntPtr m_pSteamNetworking; // class ISteamNetworking * - public IntPtr m_pSteamRemoteStorage; // class ISteamRemoteStorage * - public IntPtr m_pSteamScreenshots; // class ISteamScreenshots * - public IntPtr m_pSteamHTTP; // class ISteamHTTP * - public IntPtr m_pController; // class ISteamController * - public IntPtr m_pSteamUGC; // class ISteamUGC * - public IntPtr m_pSteamAppList; // class ISteamAppList * - public IntPtr m_pSteamMusic; // class ISteamMusic * - public IntPtr m_pSteamMusicRemote; // class ISteamMusicRemote * - public IntPtr m_pSteamHTMLSurface; // class ISteamHTMLSurface * - public IntPtr m_pSteamInventory; // class ISteamInventory * - public IntPtr m_pSteamVideo; // class ISteamVideo * - public IntPtr m_pSteamParentalSettings; // class ISteamParentalSettings * - public IntPtr m_pSteamInput; // class ISteamInput * -} -[StructLayout(LayoutKind.Sequential)] public struct CSteamGameServerAPIContext -{ - public IntPtr m_pSteamClient; // class ISteamClient * - public IntPtr m_pSteamGameServer; // class ISteamGameServer * - public IntPtr m_pSteamGameServerUtils; // class ISteamUtils * - public IntPtr m_pSteamGameServerNetworking; // class ISteamNetworking * - public IntPtr m_pSteamGameServerStats; // class ISteamGameServerStats * - public IntPtr m_pSteamHTTP; // class ISteamHTTP * - public IntPtr m_pSteamInventory; // class ISteamInventory * - public IntPtr m_pSteamUGC; // class ISteamUGC * - public IntPtr m_pSteamApps; // class ISteamApps * -} -[StructLayout(LayoutKind.Sequential)] public struct CallbackMsg_t -{ - public uint m_hSteamUser; - public int m_iCallback; - public IntPtr m_pubParam; // uint8 * - public int m_cubParam; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamServerConnectFailure_t -{ - public EResult m_eResult; - [MarshalAs(UnmanagedType.I1)] - public bool m_bStillRetrying; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamServersDisconnected_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct ClientGameServerDeny_t -{ - public uint m_uAppID; - public uint m_unGameServerIP; - public char m_usGameServerPort; - public char m_bSecure; - public uint m_uReason; -} -[StructLayout(LayoutKind.Sequential)] public struct ValidateAuthTicketResponse_t -{ - public ulong m_SteamID; - public EAuthSessionResponse m_eAuthSessionResponse; - public ulong m_OwnerSteamID; -} -[StructLayout(LayoutKind.Sequential)] public struct MicroTxnAuthorizationResponse_t -{ - public uint m_unAppID; - public ulong m_ulOrderID; - public byte m_bAuthorized; -} -[StructLayout(LayoutKind.Sequential)] public struct EncryptedAppTicketResponse_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct GetAuthSessionTicketResponse_t -{ - public uint m_hAuthTicket; - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct GameWebCallback_t -{ - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_szURL; //char[256] -} -[StructLayout(LayoutKind.Sequential)] public struct StoreAuthURLResponse_t -{ - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)] - public string m_szURL; //char[512] -} -[StructLayout(LayoutKind.Sequential)] public struct MarketEligibilityResponse_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool m_bAllowed; - public EMarketNotAllowedReasonFlags m_eNotAllowedReason; - public ulong m_rtAllowedAtTime; - public int m_cdaySteamGuardRequiredDays; - public int m_cdayNewDeviceCooldown; -} -[StructLayout(LayoutKind.Sequential)] public struct FriendGameInfo_t -{ - public ulong m_gameID; - public uint m_unGameIP; - public char m_usGamePort; - public char m_usQueryPort; - public ulong m_steamIDLobby; -} -[StructLayout(LayoutKind.Sequential)] public struct FriendSessionStateInfo_t -{ - public uint m_uiOnlineSessionInstances; - public byte m_uiPublishedToFriendsSessionInstance; -} -[StructLayout(LayoutKind.Sequential)] public struct PersonaStateChange_t -{ - public ulong m_ulSteamID; - public int m_nChangeFlags; -} -[StructLayout(LayoutKind.Sequential)] public struct GameOverlayActivated_t -{ - public byte m_bActive; -} -[StructLayout(LayoutKind.Sequential)] public struct GameServerChangeRequested_t -{ - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] - public string m_rgchServer; //char[64] - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] - public string m_rgchPassword; //char[64] -} -[StructLayout(LayoutKind.Sequential)] public struct GameLobbyJoinRequested_t -{ - public ulong m_steamIDLobby; - public ulong m_steamIDFriend; -} -[StructLayout(LayoutKind.Sequential)] public struct AvatarImageLoaded_t -{ - public ulong m_steamID; - public int m_iImage; - public int m_iWide; - public int m_iTall; -} -[StructLayout(LayoutKind.Sequential)] public struct ClanOfficerListResponse_t -{ - public ulong m_steamIDClan; - public int m_cOfficers; - public byte m_bSuccess; -} -[StructLayout(LayoutKind.Sequential)] public struct FriendRichPresenceUpdate_t -{ - public ulong m_steamIDFriend; - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct GameRichPresenceJoinRequested_t -{ - public ulong m_steamIDFriend; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_rgchConnect; //char[256] -} -[StructLayout(LayoutKind.Sequential)] public struct GameConnectedClanChatMsg_t -{ - public ulong m_steamIDClanChat; - public ulong m_steamIDUser; - public int m_iMessageID; -} -[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatJoin_t -{ - public ulong m_steamIDClanChat; - public ulong m_steamIDUser; -} -[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatLeave_t -{ - public ulong m_steamIDClanChat; - public ulong m_steamIDUser; - [MarshalAs(UnmanagedType.I1)] - public bool m_bKicked; - [MarshalAs(UnmanagedType.I1)] - public bool m_bDropped; -} -[StructLayout(LayoutKind.Sequential)] public struct DownloadClanActivityCountsResult_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool m_bSuccess; -} -[StructLayout(LayoutKind.Sequential)] public struct JoinClanChatRoomCompletionResult_t -{ - public ulong m_steamIDClanChat; - public EChatRoomEnterResponse m_eChatRoomEnterResponse; -} -[StructLayout(LayoutKind.Sequential)] public struct GameConnectedFriendChatMsg_t -{ - public ulong m_steamIDUser; - public int m_iMessageID; -} -[StructLayout(LayoutKind.Sequential)] public struct FriendsGetFollowerCount_t -{ - public EResult m_eResult; - public ulong m_steamID; - public int m_nCount; -} -[StructLayout(LayoutKind.Sequential)] public struct FriendsIsFollowing_t -{ - public EResult m_eResult; - public ulong m_steamID; - [MarshalAs(UnmanagedType.I1)] - public bool m_bIsFollowing; -} -[StructLayout(LayoutKind.Sequential)] public struct FriendsEnumerateFollowingList_t -{ - public EResult m_eResult; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - public CSteamID[] m_rgSteamID; //CSteamID[50] - public int m_nResultsReturned; - public int m_nTotalResultCount; -} -[StructLayout(LayoutKind.Sequential)] public struct SetPersonaNameResponse_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool m_bSuccess; - [MarshalAs(UnmanagedType.I1)] - public bool m_bLocalSuccess; - public EResult m_result; -} -[StructLayout(LayoutKind.Sequential)] public struct LowBatteryPower_t -{ - public byte m_nMinutesBatteryLeft; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamAPICallCompleted_t -{ - public ulong m_hAsyncCall; - public int m_iCallback; - public uint m_cubParam; -} -[StructLayout(LayoutKind.Sequential)] public struct CheckFileSignature_t -{ - public ECheckFileSignature m_eCheckFileSignature; -} -[StructLayout(LayoutKind.Sequential)] public struct GamepadTextInputDismissed_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool m_bSubmitted; - public uint m_unSubmittedText; -} -[StructLayout(LayoutKind.Sequential)] public struct MatchMakingKeyValuePair_t -{ - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_szKey; //char[256] - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_szValue; //char[256] -} -[StructLayout(LayoutKind.Sequential)] public struct servernetadr_t -{ - public char m_usConnectionPort; - public char m_usQueryPort; - public uint m_unIP; -} -[StructLayout(LayoutKind.Sequential)] public struct gameserveritem_t -{ - public servernetadr_t m_NetAdr; - public int m_nPing; - [MarshalAs(UnmanagedType.I1)] - public bool m_bHadSuccessfulResponse; - [MarshalAs(UnmanagedType.I1)] - public bool m_bDoNotRefresh; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] - public string m_szGameDir; //char[32] - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] - public string m_szMap; //char[32] - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] - public string m_szGameDescription; //char[64] - public uint m_nAppID; - public int m_nPlayers; - public int m_nMaxPlayers; - public int m_nBotPlayers; - [MarshalAs(UnmanagedType.I1)] - public bool m_bPassword; - [MarshalAs(UnmanagedType.I1)] - public bool m_bSecure; - public uint m_ulTimeLastPlayed; - public int m_nServerVersion; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] - public string m_szServerName; //char[64] - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] - public string m_szGameTags; //char[128] - public ulong m_steamID; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamPartyBeaconLocation_t -{ - public ESteamPartyBeaconLocationType m_eType; - public ulong m_ulLocationID; -} -[StructLayout(LayoutKind.Sequential)] public struct FavoritesListChanged_t -{ - public uint m_nIP; - public uint m_nQueryPort; - public uint m_nConnPort; - public uint m_nAppID; - public uint m_nFlags; - [MarshalAs(UnmanagedType.I1)] - public bool m_bAdd; - public uint m_unAccountId; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyInvite_t -{ - public ulong m_ulSteamIDUser; - public ulong m_ulSteamIDLobby; - public ulong m_ulGameID; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyEnter_t -{ - public ulong m_ulSteamIDLobby; - public uint m_rgfChatPermissions; - [MarshalAs(UnmanagedType.I1)] - public bool m_bLocked; - public uint m_EChatRoomEnterResponse; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyDataUpdate_t -{ - public ulong m_ulSteamIDLobby; - public ulong m_ulSteamIDMember; - public byte m_bSuccess; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyChatUpdate_t -{ - public ulong m_ulSteamIDLobby; - public ulong m_ulSteamIDUserChanged; - public ulong m_ulSteamIDMakingChange; - public uint m_rgfChatMemberStateChange; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyChatMsg_t -{ - public ulong m_ulSteamIDLobby; - public ulong m_ulSteamIDUser; - public byte m_eChatEntryType; - public uint m_iChatID; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyGameCreated_t -{ - public ulong m_ulSteamIDLobby; - public ulong m_ulSteamIDGameServer; - public uint m_unIP; - public char m_usPort; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyMatchList_t -{ - public uint m_nLobbiesMatching; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyKicked_t -{ - public ulong m_ulSteamIDLobby; - public ulong m_ulSteamIDAdmin; - public byte m_bKickedDueToDisconnect; -} -[StructLayout(LayoutKind.Sequential)] public struct LobbyCreated_t -{ - public EResult m_eResult; - public ulong m_ulSteamIDLobby; -} -[StructLayout(LayoutKind.Sequential)] public struct PSNGameBootInviteResult_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool m_bGameBootInviteExists; - public ulong m_steamIDLobby; -} -[StructLayout(LayoutKind.Sequential)] public struct FavoritesListAccountsUpdated_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct SearchForGameProgressCallback_t -{ - public ulong m_ullSearchID; - public EResult m_eResult; - public ulong m_lobbyID; - public ulong m_steamIDEndedSearch; - public int m_nSecondsRemainingEstimate; - public int m_cPlayersSearching; -} -[StructLayout(LayoutKind.Sequential)] public struct SearchForGameResultCallback_t -{ - public ulong m_ullSearchID; - public EResult m_eResult; - public int m_nCountPlayersInGame; - public int m_nCountAcceptedGame; - public ulong m_steamIDHost; - [MarshalAs(UnmanagedType.I1)] - public bool m_bFinalCallback; -} -[StructLayout(LayoutKind.Sequential)] public struct RequestPlayersForGameProgressCallback_t -{ - public EResult m_eResult; - public ulong m_ullSearchID; -} -[StructLayout(LayoutKind.Sequential)] public struct RequestPlayersForGameResultCallback_t -{ - public EResult m_eResult; - public ulong m_ullSearchID; - public ulong m_SteamIDPlayerFound; - public ulong m_SteamIDLobby; - public PlayerAcceptState_t m_ePlayerAcceptState; - public int m_nPlayerIndex; - public int m_nTotalPlayersFound; - public int m_nTotalPlayersAcceptedGame; - public int m_nSuggestedTeamIndex; - public ulong m_ullUniqueGameID; -} -[StructLayout(LayoutKind.Sequential)] public struct RequestPlayersForGameFinalResultCallback_t -{ - public EResult m_eResult; - public ulong m_ullSearchID; - public ulong m_ullUniqueGameID; -} -[StructLayout(LayoutKind.Sequential)] public struct SubmitPlayerResultResultCallback_t -{ - public EResult m_eResult; - public ulong ullUniqueGameID; - public ulong steamIDPlayer; -} -[StructLayout(LayoutKind.Sequential)] public struct EndGameResultCallback_t -{ - public EResult m_eResult; - public ulong ullUniqueGameID; -} -[StructLayout(LayoutKind.Sequential)] public struct JoinPartyCallback_t -{ - public EResult m_eResult; - public ulong m_ulBeaconID; - public ulong m_SteamIDBeaconOwner; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_rgchConnectString; //char[256] -} -[StructLayout(LayoutKind.Sequential)] public struct CreateBeaconCallback_t -{ - public EResult m_eResult; - public ulong m_ulBeaconID; -} -[StructLayout(LayoutKind.Sequential)] public struct ReservationNotificationCallback_t -{ - public ulong m_ulBeaconID; - public ulong m_steamIDJoiner; -} -[StructLayout(LayoutKind.Sequential)] public struct ChangeNumOpenSlotsCallback_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamParamStringArray_t -{ - public IntPtr m_ppStrings; // const char ** - public int m_nNumStrings; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedClient_t -{ - public uint m_nAppID; - public EResult m_eResult; - public int m_unNumDownloads; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedServer_t -{ - public uint m_nAppID; - public EResult m_eResult; - public int m_unNumUploads; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncProgress_t -{ - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] - public string m_rgchCurrentFile; //char[260] - public uint m_nAppID; - public uint m_uBytesTransferredThisChunk; - public double m_dAppPercentComplete; - [MarshalAs(UnmanagedType.I1)] - public bool m_bUploading; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncStatusCheck_t -{ - public uint m_nAppID; - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileShareResult_t -{ - public EResult m_eResult; - public ulong m_hFile; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] - public string m_rgchFilename; //char[260] -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - [MarshalAs(UnmanagedType.I1)] - public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDeletePublishedFileResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserPublishedFilesResult_t -{ - public EResult m_eResult; - public int m_nResultsReturned; - public int m_nTotalResultCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - public ulong[] m_rgPublishedFileId; //ulong[50] -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSubscribePublishedFileResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSubscribedFilesResult_t -{ - public EResult m_eResult; - public int m_nResultsReturned; - public int m_nTotalResultCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - public ulong[] m_rgPublishedFileId; //ulong[50] - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] - public uint[] m_rgRTimeSubscribed; //uint[50] -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUnsubscribePublishedFileResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdatePublishedFileResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - [MarshalAs(UnmanagedType.I1)] - public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDownloadUGCResult_t -{ - public EResult m_eResult; - public ulong m_hFile; - public uint m_nAppID; - public int m_nSizeInBytes; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] - public string m_pchFileName; //char[260] - public ulong m_ulSteamIDOwner; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedFileDetailsResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - public uint m_nCreatorAppID; - public uint m_nConsumerAppID; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] - public string m_rgchTitle; //char[129] - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] - public string m_rgchDescription; //char[8000] - public ulong m_hFile; - public ulong m_hPreviewFile; - public ulong m_ulSteamIDOwner; - public uint m_rtimeCreated; - public uint m_rtimeUpdated; - public ERemoteStoragePublishedFileVisibility m_eVisibility; - [MarshalAs(UnmanagedType.I1)] - public bool m_bBanned; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] - public string m_rgchTags; //char[1025] - [MarshalAs(UnmanagedType.I1)] - public bool m_bTagsTruncated; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] - public string m_pchFileName; //char[260] - public int m_nFileSize; - public int m_nPreviewFileSize; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_rgchURL; //char[256] - public EWorkshopFileType m_eFileType; - [MarshalAs(UnmanagedType.I1)] - public bool m_bAcceptedForUse; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateWorkshopFilesResult_t -{ - public EResult m_eResult; - public int m_nResultsReturned; - public int m_nTotalResultCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - public ulong[] m_rgPublishedFileId; //ulong[50] - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.R4)] - public float[] m_rgScore; //float[50] - public uint m_nAppId; - public uint m_unStartIndex; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedItemVoteDetailsResult_t -{ - public EResult m_eResult; - public ulong m_unPublishedFileId; - public int m_nVotesFor; - public int m_nVotesAgainst; - public int m_nReports; - public float m_fScore; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileSubscribed_t -{ - public ulong m_nPublishedFileId; - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUnsubscribed_t -{ - public ulong m_nPublishedFileId; - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileDeleted_t -{ - public ulong m_nPublishedFileId; - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdateUserPublishedItemVoteResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUserVoteDetails_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - public EWorkshopVote m_eVote; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t -{ - public EResult m_eResult; - public int m_nResultsReturned; - public int m_nTotalResultCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - public ulong[] m_rgPublishedFileId; //ulong[50] -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSetUserPublishedFileActionResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - public EWorkshopFileAction m_eAction; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t -{ - public EResult m_eResult; - public EWorkshopFileAction m_eAction; - public int m_nResultsReturned; - public int m_nTotalResultCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] - public ulong[] m_rgPublishedFileId; //ulong[50] - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] - public uint[] m_rgRTimeUpdated; //uint[50] -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileProgress_t -{ - public double m_dPercentFile; - [MarshalAs(UnmanagedType.I1)] - public bool m_bPreview; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUpdated_t -{ - public ulong m_nPublishedFileId; - public uint m_nAppID; - public ulong m_ulUnused; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileWriteAsyncComplete_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileReadAsyncComplete_t -{ - public ulong m_hFileReadAsync; - public EResult m_eResult; - public uint m_nOffset; - public uint m_cubRead; -} -[StructLayout(LayoutKind.Sequential)] public struct LeaderboardEntry_t -{ - public ulong m_steamIDUser; - public int m_nGlobalRank; - public int m_nScore; - public int m_cDetails; - public ulong m_hUGC; -} -[StructLayout(LayoutKind.Sequential)] public struct UserStatsReceived_t -{ - public ulong m_nGameID; - public EResult m_eResult; - public ulong m_steamIDUser; -} -[StructLayout(LayoutKind.Sequential)] public struct UserStatsStored_t -{ - public ulong m_nGameID; - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct UserAchievementStored_t -{ - public ulong m_nGameID; - [MarshalAs(UnmanagedType.I1)] - public bool m_bGroupAchievement; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] - public string m_rgchAchievementName; //char[128] - public uint m_nCurProgress; - public uint m_nMaxProgress; -} -[StructLayout(LayoutKind.Sequential)] public struct LeaderboardFindResult_t -{ - public ulong m_hSteamLeaderboard; - public byte m_bLeaderboardFound; -} -[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoresDownloaded_t -{ - public ulong m_hSteamLeaderboard; - public ulong m_hSteamLeaderboardEntries; - public int m_cEntryCount; -} -[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoreUploaded_t -{ - public byte m_bSuccess; - public ulong m_hSteamLeaderboard; - public int m_nScore; - public byte m_bScoreChanged; - public int m_nGlobalRankNew; - public int m_nGlobalRankPrevious; -} -[StructLayout(LayoutKind.Sequential)] public struct NumberOfCurrentPlayers_t -{ - public byte m_bSuccess; - public int m_cPlayers; -} -[StructLayout(LayoutKind.Sequential)] public struct UserStatsUnloaded_t -{ - public ulong m_steamIDUser; -} -[StructLayout(LayoutKind.Sequential)] public struct UserAchievementIconFetched_t -{ - public ulong m_nGameID; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] - public string m_rgchAchievementName; //char[128] - [MarshalAs(UnmanagedType.I1)] - public bool m_bAchieved; - public int m_nIconHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct GlobalAchievementPercentagesReady_t -{ - public ulong m_nGameID; - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct LeaderboardUGCSet_t -{ - public EResult m_eResult; - public ulong m_hSteamLeaderboard; -} -[StructLayout(LayoutKind.Sequential)] public struct PS3TrophiesInstalled_t -{ - public ulong m_nGameID; - public EResult m_eResult; - public ulong m_ulRequiredDiskSpace; -} -[StructLayout(LayoutKind.Sequential)] public struct GlobalStatsReceived_t -{ - public ulong m_nGameID; - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct DlcInstalled_t -{ - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct RegisterActivationCodeResponse_t -{ - public ERegisterActivationCodeResult m_eResult; - public uint m_unPackageRegistered; -} -[StructLayout(LayoutKind.Sequential)] public struct AppProofOfPurchaseKeyResponse_t -{ - public EResult m_eResult; - public uint m_nAppID; - public uint m_cchKeyLength; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)] - public string m_rgchKey; //char[240] -} -[StructLayout(LayoutKind.Sequential)] public struct FileDetailsResult_t -{ - public EResult m_eResult; - public ulong m_ulFileSize; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.U1)] - public byte[] m_FileSHA; //byte[20] - public uint m_unFlags; -} -[StructLayout(LayoutKind.Sequential)] public struct P2PSessionState_t -{ - public byte m_bConnectionActive; - public byte m_bConnecting; - public byte m_eP2PSessionError; - public byte m_bUsingRelay; - public int m_nBytesQueuedForSend; - public int m_nPacketsQueuedForSend; - public uint m_nRemoteIP; - public char m_nRemotePort; -} -[StructLayout(LayoutKind.Sequential)] public struct P2PSessionRequest_t -{ - public ulong m_steamIDRemote; -} -[StructLayout(LayoutKind.Sequential)] public struct P2PSessionConnectFail_t -{ - public ulong m_steamIDRemote; - public byte m_eP2PSessionError; -} -[StructLayout(LayoutKind.Sequential)] public struct SocketStatusCallback_t -{ - public uint m_hSocket; - public uint m_hListenSocket; - public ulong m_steamIDRemote; - public int m_eSNetSocketState; -} -[StructLayout(LayoutKind.Sequential)] public struct ScreenshotReady_t -{ - public uint m_hLocal; - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct VolumeHasChanged_t -{ - public float m_flNewVolume; -} -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsShuffled_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool m_bShuffled; -} -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsLooped_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool m_bLooped; -} -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsVolume_t -{ - public float m_flNewVolume; -} -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerSelectsQueueEntry_t -{ - public int nID; -} -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerSelectsPlaylistEntry_t -{ - public int nID; -} -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsPlayingRepeatStatus_t -{ - public int m_nPlayingRepeatStatus; -} -[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestCompleted_t -{ - public uint m_hRequest; - public ulong m_ulContextValue; - [MarshalAs(UnmanagedType.I1)] - public bool m_bRequestSuccessful; - public EHTTPStatusCode m_eStatusCode; - public uint m_unBodySize; -} -[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestHeadersReceived_t -{ - public uint m_hRequest; - public ulong m_ulContextValue; -} -[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestDataReceived_t -{ - public uint m_hRequest; - public ulong m_ulContextValue; - public uint m_cOffset; - public uint m_cBytesReceived; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamUGCDetails_t -{ - public ulong m_nPublishedFileId; - public EResult m_eResult; - public EWorkshopFileType m_eFileType; - public uint m_nCreatorAppID; - public uint m_nConsumerAppID; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] - public string m_rgchTitle; //char[129] - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] - public string m_rgchDescription; //char[8000] - public ulong m_ulSteamIDOwner; - public uint m_rtimeCreated; - public uint m_rtimeUpdated; - public uint m_rtimeAddedToUserList; - public ERemoteStoragePublishedFileVisibility m_eVisibility; - [MarshalAs(UnmanagedType.I1)] - public bool m_bBanned; - [MarshalAs(UnmanagedType.I1)] - public bool m_bAcceptedForUse; - [MarshalAs(UnmanagedType.I1)] - public bool m_bTagsTruncated; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] - public string m_rgchTags; //char[1025] - public ulong m_hFile; - public ulong m_hPreviewFile; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] - public string m_pchFileName; //char[260] - public int m_nFileSize; - public int m_nPreviewFileSize; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_rgchURL; //char[256] - public uint m_unVotesUp; - public uint m_unVotesDown; - public float m_flScore; - public uint m_unNumChildren; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamUGCQueryCompleted_t -{ - public ulong m_handle; - public EResult m_eResult; - public uint m_unNumResultsReturned; - public uint m_unTotalMatchingResults; - [MarshalAs(UnmanagedType.I1)] - public bool m_bCachedData; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_rgchNextCursor; //char[256] -} -[StructLayout(LayoutKind.Sequential)] public struct SteamUGCRequestUGCDetailsResult_t -{ - public SteamUGCDetails_t m_details; - [MarshalAs(UnmanagedType.I1)] - public bool m_bCachedData; -} -[StructLayout(LayoutKind.Sequential)] public struct CreateItemResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - [MarshalAs(UnmanagedType.I1)] - public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; -} -[StructLayout(LayoutKind.Sequential)] public struct SubmitItemUpdateResult_t -{ - public EResult m_eResult; - [MarshalAs(UnmanagedType.I1)] - public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; - public ulong m_nPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct DownloadItemResult_t -{ - public uint m_unAppID; - public ulong m_nPublishedFileId; - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct UserFavoriteItemsListChanged_t -{ - public ulong m_nPublishedFileId; - public EResult m_eResult; - [MarshalAs(UnmanagedType.I1)] - public bool m_bWasAddRequest; -} -[StructLayout(LayoutKind.Sequential)] public struct SetUserItemVoteResult_t -{ - public ulong m_nPublishedFileId; - public EResult m_eResult; - [MarshalAs(UnmanagedType.I1)] - public bool m_bVoteUp; -} -[StructLayout(LayoutKind.Sequential)] public struct GetUserItemVoteResult_t -{ - public ulong m_nPublishedFileId; - public EResult m_eResult; - [MarshalAs(UnmanagedType.I1)] - public bool m_bVotedUp; - [MarshalAs(UnmanagedType.I1)] - public bool m_bVotedDown; - [MarshalAs(UnmanagedType.I1)] - public bool m_bVoteSkipped; -} -[StructLayout(LayoutKind.Sequential)] public struct StartPlaytimeTrackingResult_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct StopPlaytimeTrackingResult_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct AddUGCDependencyResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - public ulong m_nChildPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoveUGCDependencyResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - public ulong m_nChildPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct AddAppDependencyResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct RemoveAppDependencyResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct GetAppDependenciesResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.U4)] - public uint[] m_rgAppIDs; //uint[32] - public uint m_nNumAppDependencies; - public uint m_nTotalNumAppDependencies; -} -[StructLayout(LayoutKind.Sequential)] public struct DeleteItemResult_t -{ - public EResult m_eResult; - public ulong m_nPublishedFileId; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamAppInstalled_t -{ - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamAppUninstalled_t -{ - public uint m_nAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_BrowserReady_t -{ - public uint unBrowserHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_NeedsPaint_t -{ - public uint unBrowserHandle; - public IntPtr pBGRA; // const char * - public uint unWide; - public uint unTall; - public uint unUpdateX; - public uint unUpdateY; - public uint unUpdateWide; - public uint unUpdateTall; - public uint unScrollX; - public uint unScrollY; - public float flPageScale; - public uint unPageSerial; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_StartRequest_t -{ - public uint unBrowserHandle; - public IntPtr pchURL; // const char * - public IntPtr pchTarget; // const char * - public IntPtr pchPostData; // const char * - [MarshalAs(UnmanagedType.I1)] - public bool bIsRedirect; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_CloseBrowser_t -{ - public uint unBrowserHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_URLChanged_t -{ - public uint unBrowserHandle; - public IntPtr pchURL; // const char * - public IntPtr pchPostData; // const char * - [MarshalAs(UnmanagedType.I1)] - public bool bIsRedirect; - public IntPtr pchPageTitle; // const char * - [MarshalAs(UnmanagedType.I1)] - public bool bNewNavigation; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_FinishedRequest_t -{ - public uint unBrowserHandle; - public IntPtr pchURL; // const char * - public IntPtr pchPageTitle; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_OpenLinkInNewTab_t -{ - public uint unBrowserHandle; - public IntPtr pchURL; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_ChangedTitle_t -{ - public uint unBrowserHandle; - public IntPtr pchTitle; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_SearchResults_t -{ - public uint unBrowserHandle; - public uint unResults; - public uint unCurrentMatch; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_CanGoBackAndForward_t -{ - public uint unBrowserHandle; - [MarshalAs(UnmanagedType.I1)] - public bool bCanGoBack; - [MarshalAs(UnmanagedType.I1)] - public bool bCanGoForward; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_HorizontalScroll_t -{ - public uint unBrowserHandle; - public uint unScrollMax; - public uint unScrollCurrent; - public float flPageScale; - [MarshalAs(UnmanagedType.I1)] - public bool bVisible; - public uint unPageSize; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_VerticalScroll_t -{ - public uint unBrowserHandle; - public uint unScrollMax; - public uint unScrollCurrent; - public float flPageScale; - [MarshalAs(UnmanagedType.I1)] - public bool bVisible; - public uint unPageSize; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_LinkAtPosition_t -{ - public uint unBrowserHandle; - public uint x; - public uint y; - public IntPtr pchURL; // const char * - [MarshalAs(UnmanagedType.I1)] - public bool bInput; - [MarshalAs(UnmanagedType.I1)] - public bool bLiveLink; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_JSAlert_t -{ - public uint unBrowserHandle; - public IntPtr pchMessage; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_JSConfirm_t -{ - public uint unBrowserHandle; - public IntPtr pchMessage; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_FileOpenDialog_t -{ - public uint unBrowserHandle; - public IntPtr pchTitle; // const char * - public IntPtr pchInitialFile; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_NewWindow_t -{ - public uint unBrowserHandle; - public IntPtr pchURL; // const char * - public uint unX; - public uint unY; - public uint unWide; - public uint unTall; - public uint unNewWindow_BrowserHandle_IGNORE; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_SetCursor_t -{ - public uint unBrowserHandle; - public uint eMouseCursor; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_StatusText_t -{ - public uint unBrowserHandle; - public IntPtr pchMsg; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_ShowToolTip_t -{ - public uint unBrowserHandle; - public IntPtr pchMsg; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_UpdateToolTip_t -{ - public uint unBrowserHandle; - public IntPtr pchMsg; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_HideToolTip_t -{ - public uint unBrowserHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct HTML_BrowserRestarted_t -{ - public uint unBrowserHandle; - public uint unOldBrowserHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamItemDetails_t -{ - public ulong m_itemId; - public int m_iDefinition; - public char m_unQuantity; - public char m_unFlags; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryResultReady_t -{ - public int m_handle; - public EResult m_result; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryFullUpdate_t -{ - public int m_handle; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryEligiblePromoItemDefIDs_t -{ - public EResult m_result; - public ulong m_steamID; - public int m_numEligiblePromoItemDefs; - [MarshalAs(UnmanagedType.I1)] - public bool m_bCachedData; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryStartPurchaseResult_t -{ - public EResult m_result; - public ulong m_ulOrderID; - public ulong m_ulTransID; -} -[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryRequestPricesResult_t -{ - public EResult m_result; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)] - public string m_rgchCurrency; //char[4] -} -[StructLayout(LayoutKind.Sequential)] public struct BroadcastUploadStop_t -{ - public EBroadcastUploadResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct GetVideoURLResult_t -{ - public EResult m_eResult; - public uint m_unVideoAppID; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string m_rgchURL; //char[256] -} -[StructLayout(LayoutKind.Sequential)] public struct GetOPFSettingsResult_t -{ - public EResult m_eResult; - public uint m_unVideoAppID; -} -[StructLayout(LayoutKind.Sequential)] public struct GSClientApprove_t -{ - public ulong m_SteamID; - public ulong m_OwnerSteamID; -} -[StructLayout(LayoutKind.Sequential)] public struct GSClientDeny_t -{ - public ulong m_SteamID; - public EDenyReason m_eDenyReason; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] - public string m_rgchOptionalText; //char[128] -} -[StructLayout(LayoutKind.Sequential)] public struct GSClientKick_t -{ - public ulong m_SteamID; - public EDenyReason m_eDenyReason; -} -[StructLayout(LayoutKind.Sequential)] public struct GSClientAchievementStatus_t -{ - public ulong m_SteamID; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] - public string m_pchAchievement; //char[128] - [MarshalAs(UnmanagedType.I1)] - public bool m_bUnlocked; -} -[StructLayout(LayoutKind.Sequential)] public struct GSPolicyResponse_t -{ - public byte m_bSecure; -} -[StructLayout(LayoutKind.Sequential)] public struct GSGameplayStats_t -{ - public EResult m_eResult; - public int m_nRank; - public uint m_unTotalConnects; - public uint m_unTotalMinutesPlayed; -} -[StructLayout(LayoutKind.Sequential)] public struct GSClientGroupStatus_t -{ - public ulong m_SteamIDUser; - public ulong m_SteamIDGroup; - [MarshalAs(UnmanagedType.I1)] - public bool m_bMember; - [MarshalAs(UnmanagedType.I1)] - public bool m_bOfficer; -} -[StructLayout(LayoutKind.Sequential)] public struct GSReputation_t -{ - public EResult m_eResult; - public uint m_unReputationScore; - [MarshalAs(UnmanagedType.I1)] - public bool m_bBanned; - public uint m_unBannedIP; - public char m_usBannedPort; - public ulong m_ulBannedGameID; - public uint m_unBanExpires; -} -[StructLayout(LayoutKind.Sequential)] public struct AssociateWithClanResult_t -{ - public EResult m_eResult; -} -[StructLayout(LayoutKind.Sequential)] public struct ComputeNewPlayerCompatibilityResult_t -{ - public EResult m_eResult; - public int m_cPlayersThatDontLikeCandidate; - public int m_cPlayersThatCandidateDoesntLike; - public int m_cClanPlayersThatDontLikeCandidate; - public ulong m_SteamIDCandidate; -} -[StructLayout(LayoutKind.Sequential)] public struct GSStatsReceived_t -{ - public EResult m_eResult; - public ulong m_steamIDUser; -} -[StructLayout(LayoutKind.Sequential)] public struct GSStatsStored_t -{ - public EResult m_eResult; - public ulong m_steamIDUser; -} -[StructLayout(LayoutKind.Sequential)] public struct GSStatsUnloaded_t -{ - public ulong m_steamIDUser; -} - -public class SteamAPI -{ -public static void Init(uint appId) -{ -SteamAPIInterop.SteamAPI_RestartAppIfNecessary (appId); -SteamAPIInterop.SteamAPI_Init (); -} - -public static void RunCallbacks() -{ -SteamAPIInterop.SteamAPI_RunCallbacks (); -} - -public static void RegisterCallback(IntPtr pCallback, int iCallback) -{ -SteamAPIInterop.SteamAPI_RegisterCallback (pCallback, iCallback); -} - -public static void UnregisterCallback(IntPtr pCallback) -{ -SteamAPIInterop.SteamAPI_UnregisterCallback (pCallback); -} - -public const int k_iSteamUserCallbacks = 100; -public const int k_iSteamGameServerCallbacks = 200; -public const int k_iSteamFriendsCallbacks = 300; -public const int k_iSteamBillingCallbacks = 400; -public const int k_iSteamMatchmakingCallbacks = 500; -public const int k_iSteamContentServerCallbacks = 600; -public const int k_iSteamUtilsCallbacks = 700; -public const int k_iClientFriendsCallbacks = 800; -public const int k_iClientUserCallbacks = 900; -public const int k_iSteamAppsCallbacks = 1000; -public const int k_iSteamUserStatsCallbacks = 1100; -public const int k_iSteamNetworkingCallbacks = 1200; -public const int k_iSteamNetworkingSocketsCallbacks = 1220; -public const int k_iSteamNetworkingMessagesCallbacks = 1250; -public const int k_iClientRemoteStorageCallbacks = 1300; -public const int k_iClientDepotBuilderCallbacks = 1400; -public const int k_iSteamGameServerItemsCallbacks = 1500; -public const int k_iClientUtilsCallbacks = 1600; -public const int k_iSteamGameCoordinatorCallbacks = 1700; -public const int k_iSteamGameServerStatsCallbacks = 1800; -public const int k_iSteam2AsyncCallbacks = 1900; -public const int k_iSteamGameStatsCallbacks = 2000; -public const int k_iClientHTTPCallbacks = 2100; -public const int k_iClientScreenshotsCallbacks = 2200; -public const int k_iSteamScreenshotsCallbacks = 2300; -public const int k_iClientAudioCallbacks = 2400; -public const int k_iClientUnifiedMessagesCallbacks = 2500; -public const int k_iSteamStreamLauncherCallbacks = 2600; -public const int k_iClientControllerCallbacks = 2700; -public const int k_iSteamControllerCallbacks = 2800; -public const int k_iClientParentalSettingsCallbacks = 2900; -public const int k_iClientDeviceAuthCallbacks = 3000; -public const int k_iClientNetworkDeviceManagerCallbacks = 3100; -public const int k_iClientMusicCallbacks = 3200; -public const int k_iClientRemoteClientManagerCallbacks = 3300; -public const int k_iClientUGCCallbacks = 3400; -public const int k_iSteamStreamClientCallbacks = 3500; -public const int k_IClientProductBuilderCallbacks = 3600; -public const int k_iClientShortcutsCallbacks = 3700; -public const int k_iClientRemoteControlManagerCallbacks = 3800; -public const int k_iSteamAppListCallbacks = 3900; -public const int k_iSteamMusicCallbacks = 4000; -public const int k_iSteamMusicRemoteCallbacks = 4100; -public const int k_iClientVRCallbacks = 4200; -public const int k_iClientGameNotificationCallbacks = 4300; -public const int k_iSteamGameNotificationCallbacks = 4400; -public const int k_iSteamHTMLSurfaceCallbacks = 4500; -public const int k_iClientVideoCallbacks = 4600; -public const int k_iClientInventoryCallbacks = 4700; -public const int k_iClientBluetoothManagerCallbacks = 4800; -public const int k_iClientSharedConnectionCallbacks = 4900; -public const int k_ISteamParentalSettingsCallbacks = 5000; -public const int k_iClientShaderCallbacks = 5100; -public const int k_iSteamGameSearchCallbacks = 5200; -public const int k_iSteamPartiesCallbacks = 5300; -public const int k_iClientPartiesCallbacks = 5400; -public const int k_cchPersonaNameMax = 128; -public const int k_cwchPersonaNameMax = 32; -public const int k_cchMaxRichPresenceKeys = 30; -public const int k_cchMaxRichPresenceKeyLength = 64; -public const int k_cchMaxRichPresenceValueLength = 256; -public const int k_cchStatNameMax = 128; -public const int k_cchLeaderboardNameMax = 128; -public const int k_cLeaderboardDetailsMax = 64; -public const ulong k_SteamItemInstanceIDInvalid = 0xffffffffffffffff; -public const int k_SteamInventoryResultInvalid = -1; -public static ISteamClient SteamClient() -{ -return new CSteamClient(SteamAPIInterop.SteamClient()); -} - -public static ISteamUser SteamUser() -{ -return new CSteamUser(SteamAPIInterop.SteamUser()); -} - -public static ISteamFriends SteamFriends() -{ -return new CSteamFriends(SteamAPIInterop.SteamFriends()); -} - -public static ISteamUtils SteamUtils() -{ -return new CSteamUtils(SteamAPIInterop.SteamUtils()); -} - -public static ISteamMatchmaking SteamMatchmaking() -{ -return new CSteamMatchmaking(SteamAPIInterop.SteamMatchmaking()); -} - -public static ISteamMatchmakingServerListResponse SteamMatchmakingServerListResponse() -{ -return new CSteamMatchmakingServerListResponse(SteamAPIInterop.SteamMatchmakingServerListResponse()); -} - -public static ISteamMatchmakingPingResponse SteamMatchmakingPingResponse() -{ -return new CSteamMatchmakingPingResponse(SteamAPIInterop.SteamMatchmakingPingResponse()); -} - -public static ISteamMatchmakingPlayersResponse SteamMatchmakingPlayersResponse() -{ -return new CSteamMatchmakingPlayersResponse(SteamAPIInterop.SteamMatchmakingPlayersResponse()); -} - -public static ISteamMatchmakingRulesResponse SteamMatchmakingRulesResponse() -{ -return new CSteamMatchmakingRulesResponse(SteamAPIInterop.SteamMatchmakingRulesResponse()); -} - -public static ISteamMatchmakingServers SteamMatchmakingServers() -{ -return new CSteamMatchmakingServers(SteamAPIInterop.SteamMatchmakingServers()); -} - -public static ISteamGameSearch SteamGameSearch() -{ -return new CSteamGameSearch(SteamAPIInterop.SteamGameSearch()); -} - -public static ISteamParties SteamParties() -{ -return new CSteamParties(SteamAPIInterop.SteamParties()); -} - -public static ISteamRemoteStorage SteamRemoteStorage() -{ -return new CSteamRemoteStorage(SteamAPIInterop.SteamRemoteStorage()); -} - -public static ISteamUserStats SteamUserStats() -{ -return new CSteamUserStats(SteamAPIInterop.SteamUserStats()); -} - -public static ISteamApps SteamApps() -{ -return new CSteamApps(SteamAPIInterop.SteamApps()); -} - -public static ISteamNetworking SteamNetworking() -{ -return new CSteamNetworking(SteamAPIInterop.SteamNetworking()); -} - -public static ISteamScreenshots SteamScreenshots() -{ -return new CSteamScreenshots(SteamAPIInterop.SteamScreenshots()); -} - -public static ISteamMusic SteamMusic() -{ -return new CSteamMusic(SteamAPIInterop.SteamMusic()); -} - -public static ISteamMusicRemote SteamMusicRemote() -{ -return new CSteamMusicRemote(SteamAPIInterop.SteamMusicRemote()); -} - -public static ISteamHTTP SteamHTTP() -{ -return new CSteamHTTP(SteamAPIInterop.SteamHTTP()); -} - -public static ISteamInput SteamInput() -{ -return new CSteamInput(SteamAPIInterop.SteamInput()); -} - -public static ISteamController SteamController() -{ -return new CSteamController(SteamAPIInterop.SteamController()); -} - -public static ISteamUGC SteamUGC() -{ -return new CSteamUGC(SteamAPIInterop.SteamUGC()); -} - -public static ISteamAppList SteamAppList() -{ -return new CSteamAppList(SteamAPIInterop.SteamAppList()); -} - -public static ISteamHTMLSurface SteamHTMLSurface() -{ -return new CSteamHTMLSurface(SteamAPIInterop.SteamHTMLSurface()); -} - -public static ISteamInventory SteamInventory() -{ -return new CSteamInventory(SteamAPIInterop.SteamInventory()); -} - -public static ISteamVideo SteamVideo() -{ -return new CSteamVideo(SteamAPIInterop.SteamVideo()); -} - -public static ISteamParentalSettings SteamParentalSettings() -{ -return new CSteamParentalSettings(SteamAPIInterop.SteamParentalSettings()); -} - -public static ISteamGameServer SteamGameServer() -{ -return new CSteamGameServer(SteamAPIInterop.SteamGameServer()); -} - -public static ISteamGameServerStats SteamGameServerStats() -{ -return new CSteamGameServerStats(SteamAPIInterop.SteamGameServerStats()); -} - -} - - - -} - diff --git a/Generator/steam_sdk/steam_gameserver.h b/Generator/steam_sdk/steam_gameserver.h index bec600d..28a436f 100644 --- a/Generator/steam_sdk/steam_gameserver.h +++ b/Generator/steam_sdk/steam_gameserver.h @@ -22,25 +22,33 @@ enum EServerMode eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients }; +/// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic +/// UDP queries for server browser pings and LAN discovery. In this case, Steam will not open up a +/// socket to handle server browser queries, and you must use ISteamGameServer::HandleIncomingPacket +/// and ISteamGameServer::GetNextOutgoingPacket to handle packets related to server discovery on your socket. +const uint16 STEAMGAMESERVER_QUERY_PORT_SHARED = 0xffff; + +// DEPRECATED: This old name was really confusing. +const uint16 MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE = STEAMGAMESERVER_QUERY_PORT_SHARED; + // Initialize SteamGameServer client and interface objects, and set server properties which may not be changed. // // After calling this function, you should set any additional server parameters, and then // call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() // -// - usSteamPort is the local port used to communicate with the steam servers. -// NOTE: unless you are using ver old Steam client binaries, this parameter is ignored, and -// you should pass 0. Gameservers now always use WebSockets to talk to Steam. -// This protocol is TCP-based and thus always uses an ephemeral local port. -// Older steam client binaries used UDP to talk to Steam, and this argument was useful. -// A future version of the SDK will remove this argument. -// - usGamePort is the port that clients will connect to for gameplay. +// - unIP will usually be zero. If you are on a machine with multiple IP addresses, you can pass a non-zero +// value here and the relevant sockets will be bound to that IP. This can be used to ensure that +// the IP you desire is the one used in the server browser. +// - usGamePort is the port that clients will connect to for gameplay. You will usually open up your +// own socket bound to this port. // - usQueryPort is the port that will manage server browser related duties and info -// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it +// pings from clients. If you pass STEAMGAMESERVER_QUERY_PORT_SHARED for usQueryPort, then it // will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving -// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. -// - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the +// UDP packets for the master server updater. (See ISteamGameServer::HandleIncomingPacket and +// ISteamGameServer::GetNextOutgoingPacket.) +// - The version string should be in the form x.x.x.x, and is used by the master server to detect when the // server is out of date. (Only servers with the latest version will be listed.) -inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); +inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); // Shutdown SteamGameSeverXxx interfaces, log out, and free resources. S_API void SteamGameServer_Shutdown(); @@ -85,19 +93,18 @@ inline bool CSteamGameServerAPIContext::Init() m_pSteamHTTP = ::SteamGameServerHTTP(); m_pSteamInventory = ::SteamGameServerInventory(); m_pSteamUGC = ::SteamGameServerUGC(); - m_pSteamApps = ::SteamGameServerApps(); if ( !m_pSteamGameServer || !m_pSteamGameServerUtils || !m_pSteamGameServerNetworking || !m_pSteamGameServerStats - || !m_pSteamHTTP || !m_pSteamInventory || !m_pSteamUGC || !m_pSteamApps ) + || !m_pSteamHTTP || !m_pSteamInventory || !m_pSteamUGC ) return false; return true; } #endif -S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usLegacySteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); +inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) { - if ( !SteamInternal_GameServer_Init( unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) + if ( !SteamInternal_GameServer_Init( unIP, 0, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) return false; return true; diff --git a/Generator/steam_sdk/steamclientpublic.h b/Generator/steam_sdk/steamclientpublic.h index a03f172..1521e33 100644 --- a/Generator/steam_sdk/steamclientpublic.h +++ b/Generator/steam_sdk/steamclientpublic.h @@ -1,23 +1,11 @@ //========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ // -// Purpose: +// Declare common types used by the Steamworks SDK. // //============================================================================= #ifndef STEAMCLIENTPUBLIC_H #define STEAMCLIENTPUBLIC_H -#ifdef _WIN32 -#pragma once -#endif -//lint -save -e1931 -e1927 -e1924 -e613 -e726 - -// This header file defines the interface between the calling application and the code that -// knows how to communicate with the connection manager (CM) from the Steam service - -// This header file is intended to be portable; ideally this 1 header file plus a lib or dll -// is all you need to integrate the client library into some other tree. So please avoid -// including or requiring other header files if possible. This header should only describe the -// interface layer, no need to include anything about the implementation. #include "steamtypes.h" #include "steamuniverse.h" @@ -25,6 +13,7 @@ // General result codes enum EResult { + k_EResultNone = 0, // no result k_EResultOK = 1, // success k_EResultFail = 2, // generic failure k_EResultNoConnection = 3, // no/failed network connection @@ -138,6 +127,20 @@ enum EResult k_EResultAccountNotFriends = 111, // the user is not mutually friends k_EResultLimitedUserAccount = 112, // the user is limited k_EResultCantRemoveItem = 113, // item can't be removed + k_EResultAccountDeleted = 114, // account has been deleted + k_EResultExistingUserCancelledLicense = 115, // A license for this already exists, but cancelled + k_EResultCommunityCooldown = 116, // access is denied because of a community cooldown (probably from support profile data resets) + k_EResultNoLauncherSpecified = 117, // No launcher was specified, but a launcher was needed to choose correct realm for operation. + k_EResultMustAgreeToSSA = 118, // User must agree to china SSA or global SSA before login + k_EResultLauncherMigrated = 119, // The specified launcher type is no longer supported; the user should be directed elsewhere + k_EResultSteamRealmMismatch = 120, // The user's realm does not match the realm of the requested resource + k_EResultInvalidSignature = 121, // signature check did not match + k_EResultParseFailure = 122, // Failed to parse input + k_EResultNoVerifiedPhone = 123, // account does not have a verified phone number + k_EResultInsufficientBattery = 124, // user device doesn't have enough battery charge currently to complete the action + k_EResultChargerRequired = 125, // The operation requires a charger to be plugged in, which wasn't present + k_EResultCachedCredentialInvalid = 126, // Cached credential was invalid - user must reauthenticate + K_EResultPhoneNumberIsVOIP = 127, // The phone number provided is a Voice Over IP number }; // Error codes for use with the voice functions @@ -237,96 +240,6 @@ enum EAccountType -//----------------------------------------------------------------------------- -// Purpose: -//----------------------------------------------------------------------------- -enum EAppReleaseState -{ - k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing - k_EAppReleaseState_Unavailable = 1, // even if user 'just' owns it, can see game at all - k_EAppReleaseState_Prerelease = 2, // can be purchased and is visible in games list, nothing else. Common appInfo section released - k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, not play it. AppInfo fully released. - k_EAppReleaseState_Released = 4, // owners can download and play app. -}; - - -//----------------------------------------------------------------------------- -// Purpose: -//----------------------------------------------------------------------------- -enum EAppOwnershipFlags -{ - k_EAppOwnershipFlags_None = 0x0000, // unknown - k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game - k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game - k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region - k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version - k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform - k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device - k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses - k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) - k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user - k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play - k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired - k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc - k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically - k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring - k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license - k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem - k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet - k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental - k_EAppOwnershipFlags_SiteLicense = 0x40000, // Is from a site license -}; - - -//----------------------------------------------------------------------------- -// Purpose: designed as flags to allow filters masks -// NOTE: If you add to this, please update PackageAppType (SteamConfig) as well as populatePackageAppType -//----------------------------------------------------------------------------- -enum EAppType -{ - k_EAppType_Invalid = 0x000, // unknown / invalid - k_EAppType_Game = 0x001, // playable game, default type - k_EAppType_Application = 0x002, // software application - k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers - k_EAppType_Demo = 0x008, // game demo - k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web - k_EAppType_DLC = 0x020, // down loadable content - k_EAppType_Guide = 0x040, // game guide, PDF etc - k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) - k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) - k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) - k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games - k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) - k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps - k_EAppType_Music = 0x2000, // Music files - k_EAppType_Series = 0x4000, // Container app for video series - k_EAppType_Comic = 0x8000, // Comic Book - - k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only - k_EAppType_DepotOnly = 0x80000000, // placeholder since depots and apps share the same namespace -}; - - - -//----------------------------------------------------------------------------- -// types of user game stats fields -// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE -//----------------------------------------------------------------------------- -enum ESteamUserStatType -{ - k_ESteamUserStatTypeINVALID = 0, - k_ESteamUserStatTypeINT = 1, - k_ESteamUserStatTypeFLOAT = 2, - // Read as FLOAT, set with count / session length - k_ESteamUserStatTypeAVGRATE = 3, - k_ESteamUserStatTypeACHIEVEMENTS = 4, - k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, - - // max, for sanity checks - k_ESteamUserStatTypeMAX -}; - - //----------------------------------------------------------------------------- // Purpose: Chat Entry Types (previously was only friend-to-friend message types) //----------------------------------------------------------------------------- @@ -374,15 +287,9 @@ enum EChatRoomEnterResponse }; -typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); -typedef bool (*PFNLegacyKeyInstalled)(); - const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; -// we allow 3 simultaneous user account instances right now, 1= desktop, 2 = console, 4 = web, 0 = all -const unsigned int k_unSteamUserDesktopInstance = 1; -const unsigned int k_unSteamUserConsoleInstance = 2; -const unsigned int k_unSteamUserWebInstance = 4; +const unsigned int k_unSteamUserDefaultInstance = 1; // fixed instance for all individual users // Special flags for Chat accounts - they go in the top 8 bits // of the steam ID's "instance", leaving 12 for the actual instances @@ -398,26 +305,6 @@ enum EChatSteamIDInstanceFlags }; -//----------------------------------------------------------------------------- -// Purpose: Marketing message flags that change how a client should handle them -//----------------------------------------------------------------------------- -enum EMarketingMessageFlags -{ - k_EMarketingMessageFlagsNone = 0, - k_EMarketingMessageFlagsHighPriority = 1 << 0, - k_EMarketingMessageFlagsPlatformWindows = 1 << 1, - k_EMarketingMessageFlagsPlatformMac = 1 << 2, - k_EMarketingMessageFlagsPlatformLinux = 1 << 3, - - //aggregate flags - k_EMarketingMessageFlagsPlatformRestrictions = - k_EMarketingMessageFlagsPlatformWindows | - k_EMarketingMessageFlagsPlatformMac | - k_EMarketingMessageFlagsPlatformLinux, -}; - - - //----------------------------------------------------------------------------- // Purpose: Possible positions to tell the overlay to show notifications in //----------------------------------------------------------------------------- @@ -462,131 +349,6 @@ enum EBroadcastUploadResult }; -//----------------------------------------------------------------------------- -// Purpose: codes for well defined launch options -//----------------------------------------------------------------------------- -enum ELaunchOptionType -{ - k_ELaunchOptionType_None = 0, // unknown what launch option does - k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode - k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode - k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode - k_ELaunchOptionType_Config = 4, // runs config tool for this game - k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR - k_ELaunchOptionType_Server = 6, // runs dedicated server for this game - k_ELaunchOptionType_Editor = 7, // runs game editor - k_ELaunchOptionType_Manual = 8, // shows game manual - k_ELaunchOptionType_Benchmark = 9, // runs game benchmark - k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name - k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name - k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name - k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK - k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay - k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK - - - k_ELaunchOptionType_Dialog = 1000, // show launch options dialog -}; - - -//----------------------------------------------------------------------------- -// Purpose: true if this launch option is any of the vr launching types -//----------------------------------------------------------------------------- -static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) -{ - return eType == k_ELaunchOptionType_OpenVR - || eType == k_ELaunchOptionType_OpenVROverlay - || eType == k_ELaunchOptionType_OculusVR - || eType == k_ELaunchOptionType_OSVR; -} - - -//----------------------------------------------------------------------------- -// Purpose: code points for VR HMD vendors and models -// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE -//----------------------------------------------------------------------------- -enum EVRHMDType -{ - k_eEVRHMDType_None = -1, // unknown vendor and model - - k_eEVRHMDType_Unknown = 0, // unknown vendor and model - - k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits - k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre - k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release - k_eEVRHMDType_HTC_VivePro = 4, // htc vive pro release - - k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd - - k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 - k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 - k_eEVRHMDType_Oculus_Rift = 23, // Oculus rift - - k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD - - k_eEVRHMDType_Acer_Unknown = 50, // Acer unknown HMD - k_eEVRHMDType_Acer_WindowsMR = 51, // Acer QHMD Windows MR headset - - k_eEVRHMDType_Dell_Unknown = 60, // Dell unknown HMD - k_eEVRHMDType_Dell_Visor = 61, // Dell Visor Windows MR headset - - k_eEVRHMDType_Lenovo_Unknown = 70, // Lenovo unknown HMD - k_eEVRHMDType_Lenovo_Explorer = 71, // Lenovo Explorer Windows MR headset - - k_eEVRHMDType_HP_Unknown = 80, // HP unknown HMD - k_eEVRHMDType_HP_WindowsMR = 81, // HP Windows MR headset - - k_eEVRHMDType_Samsung_Unknown = 90, // Samsung unknown HMD - k_eEVRHMDType_Samsung_Odyssey = 91, // Samsung Odyssey Windows MR headset - - k_eEVRHMDType_Unannounced_Unknown = 100, // Unannounced unknown HMD - k_eEVRHMDType_Unannounced_WindowsMR = 101, // Unannounced Windows MR headset - - k_eEVRHMDType_vridge = 110, // VRIDGE tool - - k_eEVRHMDType_Huawei_Unknown = 120, // Huawei unknown HMD - k_eEVRHMDType_Huawei_VR2 = 121, // Huawei VR2 3DOF headset - k_eEVRHMDType_Huawei_EndOfRange = 129, // end of Huawei HMD range - -}; - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from an Oculus HMD -//----------------------------------------------------------------------------- -static inline bool BIsOculusHMD( EVRHMDType eType ) -{ - return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_Unknown; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from a Windows MR HMD -//----------------------------------------------------------------------------- -static inline bool BIsWindowsMRHeadset( EVRHMDType eType ) -{ - return eType >= k_eEVRHMDType_Acer_WindowsMR && eType <= k_eEVRHMDType_Unannounced_WindowsMR; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from a Hauwei HMD -//----------------------------------------------------------------------------- -static inline bool BIsHuaweiHeadset( EVRHMDType eType ) -{ - return eType >= k_eEVRHMDType_Huawei_Unknown && eType <= k_eEVRHMDType_Huawei_EndOfRange; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from an Vive HMD -//----------------------------------------------------------------------------- -static inline bool BIsViveHMD( EVRHMDType eType ) -{ - return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown || eType == k_eEVRHMDType_HTC_VivePro; -} - - //----------------------------------------------------------------------------- // Purpose: Reasons a user may not use the Community Market. // Used in MarketEligibilityResponse_t. @@ -647,6 +409,54 @@ enum EMarketNotAllowedReasonFlags }; +// +// describes XP / progress restrictions to apply for games with duration control / +// anti-indulgence enabled for minor Steam China users. +// +// WARNING: DO NOT RENUMBER +enum EDurationControlProgress +{ + k_EDurationControlProgress_Full = 0, // Full progress + k_EDurationControlProgress_Half = 1, // deprecated - XP or persistent rewards should be halved + k_EDurationControlProgress_None = 2, // deprecated - XP or persistent rewards should be stopped + + k_EDurationControl_ExitSoon_3h = 3, // allowed 3h time since 5h gap/break has elapsed, game should exit - steam will terminate the game soon + k_EDurationControl_ExitSoon_5h = 4, // allowed 5h time in calendar day has elapsed, game should exit - steam will terminate the game soon + k_EDurationControl_ExitSoon_Night = 5, // game running after day period, game should exit - steam will terminate the game soon +}; + + +// +// describes which notification timer has expired, for steam china duration control feature +// +// WARNING: DO NOT RENUMBER +enum EDurationControlNotification +{ + k_EDurationControlNotification_None = 0, // just informing you about progress, no notification to show + k_EDurationControlNotification_1Hour = 1, // "you've been playing for N hours" + + k_EDurationControlNotification_3Hours = 2, // deprecated - "you've been playing for 3 hours; take a break" + k_EDurationControlNotification_HalfProgress = 3,// deprecated - "your XP / progress is half normal" + k_EDurationControlNotification_NoProgress = 4, // deprecated - "your XP / progress is zero" + + k_EDurationControlNotification_ExitSoon_3h = 5, // allowed 3h time since 5h gap/break has elapsed, game should exit - steam will terminate the game soon + k_EDurationControlNotification_ExitSoon_5h = 6, // allowed 5h time in calendar day has elapsed, game should exit - steam will terminate the game soon + k_EDurationControlNotification_ExitSoon_Night = 7,// game running after day period, game should exit - steam will terminate the game soon +}; + + +// +// Specifies a game's online state in relation to duration control +// +enum EDurationControlOnlineState +{ + k_EDurationControlOnlineState_Invalid = 0, // nil value + k_EDurationControlOnlineState_Offline = 1, // currently in offline play - single-player, offline co-op, etc. + k_EDurationControlOnlineState_Online = 2, // currently in online play + k_EDurationControlOnlineState_OnlineHighPri = 3, // currently in online play and requests not to be interrupted +}; + + #pragma pack( push, 1 ) #define CSTEAMID_DEFINED @@ -690,7 +500,7 @@ public: CSteamID( uint32 unAccountID, unsigned int unAccountInstance, EUniverse eUniverse, EAccountType eAccountType ) { #if defined(_SERVER) && defined(Assert) - Assert( ! ( ( k_EAccountTypeIndividual == eAccountType ) && ( unAccountInstance > k_unSteamUserWebInstance ) ) ); // enforce that for individual accounts, instance is always 1 + Assert( ( k_EAccountTypeIndividual != eAccountType ) || ( unAccountInstance == k_unSteamUserDefaultInstance ) ); // enforce that for individual accounts, instance is always 1 #endif // _SERVER InstancedSet( unAccountID, unAccountInstance, eUniverse, eAccountType ); } @@ -732,8 +542,7 @@ public: } else { - // by default we pick the desktop instance - m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDefaultInstance; } } @@ -787,37 +596,6 @@ public: m_steamid.m_comp.m_unAccountInstance = 0; } - -#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) - //----------------------------------------------------------------------------- - // Purpose: Initializes a steam ID from a Steam2 ID structure - // Input: pTSteamGlobalUserID - Steam2 ID to convert - // eUniverse - universe this ID belongs to - //----------------------------------------------------------------------------- - void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) - { - m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + - pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; - m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe - m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual - m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; // Steam2 only knew desktop instances - } - - //----------------------------------------------------------------------------- - // Purpose: Fills out a Steam2 ID structure - // Input: pTSteamGlobalUserID - Steam2 ID to write to - //----------------------------------------------------------------------------- - void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const - { - // only individual accounts have any meaning in Steam 2, only they can be mapped - // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); - - pTSteamGlobalUserID->m_SteamInstanceID = 0; - pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; - pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; - } -#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) - //----------------------------------------------------------------------------- // Purpose: Converts steam ID to its 64-bit representation // Output : 64-bit representation of a Steam ID @@ -969,8 +747,7 @@ public: // simple accessors void SetAccountID( uint32 unAccountID ) { m_steamid.m_comp.m_unAccountID = unAccountID; } void SetAccountInstance( uint32 unInstance ){ m_steamid.m_comp.m_unAccountInstance = unInstance; } - void ClearIndividualInstance() { if ( BIndividualAccount() ) m_steamid.m_comp.m_unAccountInstance = 0; } - bool HasNoIndividualInstance() const { return BIndividualAccount() && (m_steamid.m_comp.m_unAccountInstance==0); } + AccountID_t GetAccountID() const { return m_steamid.m_comp.m_unAccountID; } uint32 GetUnAccountInstance() const { return m_steamid.m_comp.m_unAccountInstance; } EAccountType GetEAccountType() const { return ( EAccountType ) m_steamid.m_comp.m_EAccountType; } @@ -990,7 +767,6 @@ public: // and is preferred when the caller knows it's safe to be strict. // Returns whether the string parsed correctly. bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); - bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } @@ -1040,7 +816,7 @@ inline bool CSteamID::IsValid() const if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ) { - if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance > k_unSteamUserWebInstance ) + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != k_unSteamUserDefaultInstance ) return false; } @@ -1059,6 +835,41 @@ inline bool CSteamID::IsValid() const return true; } +#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) + +//----------------------------------------------------------------------------- +// Purpose: Initializes a steam ID from a Steam2 ID structure +// Input: pTSteamGlobalUserID - Steam2 ID to convert +// eUniverse - universe this ID belongs to +//----------------------------------------------------------------------------- +inline CSteamID SteamIDFromSteam2UserID( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) +{ + uint32 unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; + + return CSteamID( unAccountID, k_unSteamUserDefaultInstance, eUniverse, k_EAccountTypeIndividual ); +} + +bool SteamIDFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse, CSteamID *pSteamIDOut ); + +//----------------------------------------------------------------------------- +// Purpose: Fills out a Steam2 ID structure +// Input: pTSteamGlobalUserID - Steam2 ID to write to +//----------------------------------------------------------------------------- +inline TSteamGlobalUserID SteamIDToSteam2UserID( CSteamID steamID ) +{ + TSteamGlobalUserID steamGlobalUserID; + + steamGlobalUserID.m_SteamInstanceID = 0; + steamGlobalUserID.m_SteamLocalUserID.Split.High32bits = steamID.GetAccountID() % 2; + steamGlobalUserID.m_SteamLocalUserID.Split.Low32bits = steamID.GetAccountID() / 2; + + return steamGlobalUserID; +} + + +#endif + // generic invalid CSteamID #define k_steamIDNil CSteamID() @@ -1135,77 +946,22 @@ public: m_gameID.m_nType = k_EGameIDTypeGameMod; } + CGameID( const CGameID &that ) + { + m_ulGameID = that.m_ulGameID; + } + + CGameID& operator=( const CGameID & that ) + { + m_ulGameID = that.m_ulGameID; + return *this; + } + // Hidden functions used only by Steam explicit CGameID( const char *pchGameID ); const char *Render() const; // render this Game ID to string static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string - // must include checksum_crc.h first to get this functionality -#if defined( CHECKSUM_CRC_H ) - CGameID( uint32 nAppID, const char *pchModPath ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = nAppID; - m_gameID.m_nType = k_EGameIDTypeGameMod; - - char rgchModDir[MAX_PATH]; - V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); - CRC32_t crc32; - CRC32_Init( &crc32 ); - CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - - CGameID( const char *pchExePath, const char *pchAppName ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = k_uAppIdInvalid; - m_gameID.m_nType = k_EGameIDTypeShortcut; - - CRC32_t crc32; - CRC32_Init( &crc32 ); - if ( pchExePath ) - CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); - if ( pchAppName ) - CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - -#if defined( VSTFILEID_H ) - - CGameID( VstFileID vstFileID ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = k_uAppIdInvalid; - m_gameID.m_nType = k_EGameIDTypeP2P; - - CRC32_t crc32; - CRC32_Init( &crc32 ); - const char *pchFileId = vstFileID.Render(); - CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - -#endif /* VSTFILEID_H */ - -#endif /* CHECKSUM_CRC_H */ - - uint64 ToUint64() const { return m_ulGameID; @@ -1294,9 +1050,9 @@ public: m_ulGameID = 0; } - - -private: +// +// Internal stuff. Use the accessors above if possible +// enum EGameIDType { @@ -1331,26 +1087,12 @@ private: const int k_cchGameExtraInfoMax = 64; -//----------------------------------------------------------------------------- -// Constants used for query ports. -//----------------------------------------------------------------------------- - -#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. -#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. - - //----------------------------------------------------------------------------- // Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback // just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) //----------------------------------------------------------------------------- typedef void (*PFNPreMinidumpCallback)(void *context); -//----------------------------------------------------------------------------- -// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers -//----------------------------------------------------------------------------- -typedef void *BREAKPAD_HANDLE; -#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 - enum EGameSearchErrorCode_t { k_EGameSearchErrorCode_OK = 1, @@ -1373,6 +1115,23 @@ enum EPlayerResult_t k_EPlayerResultCompleted = 5, // player completed game }; + +enum ESteamIPv6ConnectivityProtocol +{ + k_ESteamIPv6ConnectivityProtocol_Invalid = 0, + k_ESteamIPv6ConnectivityProtocol_HTTP = 1, // because a proxy may make this different than other protocols + k_ESteamIPv6ConnectivityProtocol_UDP = 2, // test UDP connectivity. Uses a port that is commonly needed for other Steam stuff. If UDP works, TCP probably works. +}; + +// For the above transport protocol, what do we think the local machine's connectivity to the internet over ipv6 is like +enum ESteamIPv6ConnectivityState +{ + k_ESteamIPv6ConnectivityState_Unknown = 0, // We haven't run a test yet + k_ESteamIPv6ConnectivityState_Good = 1, // We have recently been able to make a request on ipv6 for the given protocol + k_ESteamIPv6ConnectivityState_Bad = 2, // We failed to make a request, either because this machine has no ipv6 address assigned, or it has no upstream connectivity +}; + + // Define compile time assert macros to let us validate the structure sizes. #define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; diff --git a/Generator/steam_sdk/steamdatagram_ticketgen.h b/Generator/steam_sdk/steamdatagram_ticketgen.h deleted file mode 100644 index 5518a9d..0000000 --- a/Generator/steam_sdk/steamdatagram_ticketgen.h +++ /dev/null @@ -1,69 +0,0 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Backend functions to generate authorization tickets for steam datagram -// -//============================================================================= - -#ifndef STEAMDATAGRAM_TICKETGEN_H -#define STEAMDATAGRAM_TICKETGEN_H -#ifdef _WIN32 -#pragma once -#endif - -// Import some common stuff that is useful by both the client -// and the backend ticket-generating authority. -#include "steamdatagram_tickets.h" - -#if defined( STEAMDATAGRAM_TICKETGEN_FOREXPORT ) - #define STEAMDATAGRAM_TICKET_INTERFACE DLL_EXPORT -#elif defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) - #define STEAMDATAGRAM_TICKET_INTERFACE extern "C" -#else - #define STEAMDATAGRAM_TICKET_INTERFACE DLL_IMPORT -#endif - -struct SteamDatagramSignedTicketBlob -{ - int m_sz; - uint8 m_blob[ k_cbSteamDatagramMaxSerializedTicket ]; -}; - -/// Initialize ticket generation with an Ed25519 private key. -/// See: https://ed25519.cr.yp.to/ -/// -/// Input buffer will be securely wiped. -/// -/// You can generate an Ed25519 key using OpenSSH: ssh-keygen -t ed25519 -/// Or with our cert tool: steamnetworkingsockets_certtool gen_keypair -/// -/// The private key should be a PEM-like block of text -/// ("-----BEGIN OPENSSH PRIVATE KEY-----"). -/// Private keys encrypted with a password are not supported. -/// -/// In order for signatures using this key to be accepted by the relay network, -/// you need to send your public key to Valve. This key should be on a single line -/// of text that begins with "ssh-ed25519". (The format used in the .ssh/authorized_keys -/// file.) -STEAMDATAGRAM_TICKET_INTERFACE bool SteamDatagram_InitTicketGenerator_Ed25519( void *pvPrivateKey, size_t cbPrivateKey ); - -/// Serialize the specified auth ticket and attach a signature. -/// Returns false if you did something stupid like forgot to load a key. -/// Will also fail if your ticket is too big. (Probably because you -/// added too many extra fields.) -/// -/// The resulting blob should be sent to the client, who will put it in -/// their ticket cache using ISteamNetworkingSockets::ReceivedRelayAuthTicket -STEAMDATAGRAM_TICKET_INTERFACE bool SteamDatagram_SerializeAndSignTicket( const SteamDatagramRelayAuthTicket &ticket, SteamDatagramSignedTicketBlob &outBlob, SteamNetworkingErrMsg &errMsg ); - -// -// Some ping-related tools that don't have anything to do with tickets. -// But it's something that a backend might find useful, so we're putting it in this library for now. -// - -/// Parse location string. Returns true on success -STEAMDATAGRAM_TICKET_INTERFACE bool SteamDatagram_ParsePingLocation( const char *pszString, SteamNetworkPingLocation_t &outLocation ); - -/// Estimate ping time between two locations. -STEAMDATAGRAM_TICKET_INTERFACE int SteamDatagram_EstimatePingBetweenTwoLocations( const SteamNetworkPingLocation_t &location1, const SteamNetworkPingLocation_t &location2 ); - -#endif // STEAMDATAGRAM_TICKETGEN_H diff --git a/Generator/steam_sdk/steamdatagram_tickets.h b/Generator/steam_sdk/steamdatagram_tickets.h deleted file mode 100644 index a72e517..0000000 --- a/Generator/steam_sdk/steamdatagram_tickets.h +++ /dev/null @@ -1,247 +0,0 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Types and utilities for handling steam datagram tickets. These are -// useful for both the client and the backend ticket generating authority. -// -//============================================================================= - -#ifndef STEAMDATAGRAM_TICKETS_H -#define STEAMDATAGRAM_TICKETS_H -#ifdef _WIN32 -#pragma once -#endif - -#ifndef assert - #include -#endif - -#include -#include "steamnetworkingtypes.h" - -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error "Must define VALVE_CALLBACK_PACK_SMALL or VALVE_CALLBACK_PACK_LARGE" -#endif - -/// Max length of serialized auth ticket. This is important so that we -/// can ensure that we always fit into a single UDP datagram (along with -/// other certs and signatures) and keep the implementation simple. -const size_t k_cbSteamDatagramMaxSerializedTicket = 512; - -/// Network-routable identifier for a service. This is an intentionally -/// opaque byte blob. The relays know how to use this to forward it on -/// to the intended destination, but otherwise clients really should not -/// need to know what's inside. (Indeed, we don't really want them to -/// know, as it could reveal information useful to an attacker.) -#ifndef IS_STEAMDATAGRAMROUTER -struct SteamDatagramHostedAddress -{ - - // Size of data blob. - int m_cbSize; - - // Opaque data - char m_data[ 128 ]; - - // Reset to empty state - void Clear() { memset( this, 0, sizeof(*this) ); } - - // Parse the data center out of the blob. - SteamNetworkingPOPID GetPopID() const { return CalculateSteamNetworkingPOPIDFromString( m_data ); } - - /// Set a dummy routing blob with a hardcoded IP:port. You should only use - /// this in a dev environment, since the address is in plaintext! - /// In production this information should come from the server, - /// using ISteamNetworkingSockets::GetHostedDedicatedServerAddress - void SetDevAddress( uint32 nIP, uint16 nPort, SteamNetworkingPOPID popid = 0 ) - { - GetSteamNetworkingLocationPOPStringFromID( popid, m_data ); - m_cbSize = 4; - m_data[m_cbSize++] = 1; - m_data[m_cbSize++] = 1; - m_data[m_cbSize++] = char(nPort); - m_data[m_cbSize++] = char(nPort>>8); - m_data[m_cbSize++] = char(nIP); - m_data[m_cbSize++] = char(nIP>>8); - m_data[m_cbSize++] = char(nIP>>16); - m_data[m_cbSize++] = char(nIP>>24); - } - - /// Convert to/from std::string (or anything that acts like it). - /// Useful for interfacing with google protobuf. It's a template - /// mainly so that we don't have to include in the header. - /// Note: by "string", we don't mean that it's text. Ut's a binary - /// blob, and it might have zeros in it. (std::string can handle that.) - template bool SetFromStdString( const T &str ) - { - if ( str.length() >= sizeof(m_data) ) - { - m_cbSize = 0; - return false; - } - m_cbSize = (int)str.length(); - memcpy( m_data, str.c_str(), m_cbSize ); - return true; - } - template void GetAsStdString( T *str ) const - { - str->assign( m_data, m_cbSize ); - } - -}; -#endif - -/// Ticket used to gain access to the relay network. -struct SteamDatagramRelayAuthTicket -{ - SteamDatagramRelayAuthTicket() { Clear(); } - - /// Reset all fields - void Clear() { memset( this, 0, sizeof(*this) ); m_nRestrictToVirtualPort = -1; } - - /// Identity of the gameserver we want to talk to. This is required. - SteamNetworkingIdentity m_identityGameserver; - - /// Identity of the person who was authorized. This is required. - SteamNetworkingIdentity m_identityAuthorizedClient; - - /// SteamID is authorized to send from a particular public IP. If this - /// is 0, then the sender is not restricted to a particular IP. - /// - /// Recommend to leave this set to zero. - uint32 m_unPublicIP; - - /// Time when the ticket expires. Recommended: take the current - /// time and add 6 hours, or maybe a bit longer if your gameplay - /// sessions are longer. - /// - /// NOTE: relays may reject tickets with expiry times excessively - /// far in the future, so contact us if you wish to use an expiry - /// longer than, say, 24 hours. - RTime32 m_rtimeTicketExpiry; - - /// Routing information where the gameserver is listening for - /// relayed traffic. You should fill this in when generating - /// a ticket. - /// - /// When generating tickets on your backend: - /// - In production: The gameserver knows the proper routing - /// information, so you need to call - /// ISteamNetworkingSockets::GetHostedDedicatedServerAddress - /// and send the info to your backend. - /// - In development, you will need to provide public IP - /// of the server using SteamDatagramServiceNetID::SetDevAddress. - /// Relays need to be able to send UDP - /// packets to this server. Since it's very likely that - /// your server is behind a firewall/NAT, make sure that - /// the address is the one that the outside world can use. - /// The traffic from the relays will be "unsolicited", so - /// stateful firewalls won't work -- you will probably have - /// to set up an explicit port forward. - /// On the client: - /// - this field will always be blank. - SteamDatagramHostedAddress m_routing; - - /// App ID this is for. This is required, and should be the - /// App ID the client is running. (Even if your gameserver - /// uses a different App ID.) - uint32 m_nAppID; - - /// Restrict this ticket to be used for a particular virtual port? - /// Set to -1 to allow any virtual port. - /// - /// This is useful as a security measure, and also so the client will - /// use the right ticket (which might have extra fields that are useful - /// for proper analytics), if the client happens to have more than one - /// appropriate ticket. - /// - /// Note: if a client has more that one acceptable ticket, they will - /// always use the one expiring the latest. - int m_nRestrictToVirtualPort; - - // - // Extra fields. - // - // These are collected for backend analytics. For example, you might - // send a MatchID so that all of the records for a particular match can - // be located. Or send a game mode field so that you can compare - // the network characteristics of different game modes. - // - // (At the time of this writing we don't have a way to expose the data - // we collect to partners, but we hope to in the future so that you can - // get visibility into network conditions.) - // - - struct ExtraField - { - enum EType - { - k_EType_String, - k_EType_Int, // For most small integral values. Uses google protobuf sint64, so it's small on the wire. WARNING: In some places this value may be transmitted in JSON, in which case precision may be lost in backend analytics. Don't use this for an "identifier", use it for a scalar quantity. - k_EType_Fixed64, // 64 arbitrary bits. This value is treated as an "identifier". In places where JSON format is used, it will be serialized as a string. No aggregation / analytics can be performed on this value. - }; - int /* EType */ m_eType; - char m_szName[28]; - - union { - char m_szStringValue[128]; - int64 m_nIntValue; - uint64 m_nFixed64Value; - }; - }; - enum { k_nMaxExtraFields = 16 }; - int m_nExtraFields; - ExtraField m_vecExtraFields[ k_nMaxExtraFields ]; - - /// Helper to add an extra field in a single call - void AddExtraField_Int( const char *pszName, int64 val ) - { - ExtraField *p = AddExtraField( pszName, ExtraField::k_EType_Int ); - if ( p ) - p->m_nIntValue = val; - } - void AddExtraField_Fixed64( const char *pszName, uint64 val ) - { - ExtraField *p = AddExtraField( pszName, ExtraField::k_EType_Fixed64 ); - if ( p ) - p->m_nFixed64Value = val; - } - void AddExtraField_String( const char *pszName, const char *val ) - { - ExtraField *p = AddExtraField( pszName, ExtraField::k_EType_String ); - if ( p ) - { - size_t l = strlen( val ); - if ( l > sizeof(p->m_szStringValue)-1 ) - l = sizeof(p->m_szStringValue)-1; - memcpy( p->m_szStringValue, val, l ); - p->m_szStringValue[l] = '\0'; - } - } - -private: - ExtraField *AddExtraField( const char *pszName, ExtraField::EType eType ) - { - if ( m_nExtraFields >= k_nMaxExtraFields ) - { - assert( false ); - return nullptr; - } - ExtraField *p = &m_vecExtraFields[ m_nExtraFields++ ]; - p->m_eType = eType; - - size_t l = strlen( pszName ); - if ( l > sizeof(p->m_szName)-1 ) - l = sizeof(p->m_szName)-1; - memcpy( p->m_szName, pszName, l ); - p->m_szName[l] = '\0'; - return p; - } -}; - -#pragma pack(pop) - -#endif // STEAMDATAGRAM_TICKETS_H diff --git a/Generator/steam_sdk/steamencryptedappticket.h b/Generator/steam_sdk/steamencryptedappticket.h index 48c63b4..4419a0b 100644 --- a/Generator/steam_sdk/steamencryptedappticket.h +++ b/Generator/steam_sdk/steamencryptedappticket.h @@ -29,4 +29,12 @@ S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecryp S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); -S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); \ No newline at end of file +S_API bool SteamEncryptedAppTicket_BGetAppDefinedValue( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pValue ); + +S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); + +S_API bool SteamEncryptedAppTicket_BIsTicketSigned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, const uint8 *pubRSAKey, uint32 cubRSAKey ); + +S_API bool SteamEncryptedAppTicket_BIsLicenseBorrowed( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BIsLicenseTemporary( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); diff --git a/Generator/steam_sdk/steamhttpenums.h b/Generator/steam_sdk/steamhttpenums.h index d95f195..056b0e5 100644 --- a/Generator/steam_sdk/steamhttpenums.h +++ b/Generator/steam_sdk/steamhttpenums.h @@ -84,6 +84,7 @@ enum EHTTPStatusCode k_EHTTPStatusCode417ExpectationFailed = 417, k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown k_EHTTPStatusCode429TooManyRequests = 429, + k_EHTTPStatusCode444ConnectionClosed = 444, // nginx only? // Server error codes k_EHTTPStatusCode500InternalServerError = 500, diff --git a/Generator/steam_sdk/steamnetworkingfakeip.h b/Generator/steam_sdk/steamnetworkingfakeip.h new file mode 100644 index 0000000..89ebd10 --- /dev/null +++ b/Generator/steam_sdk/steamnetworkingfakeip.h @@ -0,0 +1,135 @@ +//====== Copyright Valve Corporation, All rights reserved. ==================== + +#ifndef STEAMNETWORKINGFAKEIP_H +#define STEAMNETWORKINGFAKEIP_H +#pragma once + +#include "steamnetworkingtypes.h" +#include "steam_api_common.h" + +// It is HIGHLY recommended to limit messages sent via Fake UDP port to this +// value. The purpose of a Fake UDP port is to make porting ordinary ad-hoc UDP +// code easier. Although the real MTU might be higher than this, this particular +// conservative value is chosen so that fragmentation won't be occurring and +// hiding performance problems from you. +constexpr int k_cbSteamNetworkingSocketsFakeUDPPortRecommendedMTU = 1200; + +// Messages larger than this size are not allowed and cannot be sent +// via Fake UDP port. +constexpr int k_cbSteamNetworkingSocketsFakeUDPPortMaxMessageSize = 4096; + +//----------------------------------------------------------------------------- +/// ISteamNetworkingFakeUDPPort +/// +/// Acts like a UDP port, sending and receiving datagrams addressed using +/// FakeIP addresses. +/// +/// See: ISteamNetworkingSockets::CreateFakeUDPPort + +class ISteamNetworkingFakeUDPPort +{ +public: + /// Destroy the object and cleanup any internal connections. + /// Note that this function call is not threadsafe with respect + /// to any other method of this interface. (However, in general + /// all other operations are threadsafe with respect to each other.) + virtual void DestroyFakeUDPPort() = 0; + + /// Send a datagram to the specified FakeIP. + /// + /// See ISteamNetworkingSockets::SendMessageToConnection for the meaning of + /// nSendFlags and possible return codes. + /// + /// Notes: + /// - datagrams larger than the underlying MTU are supported, but + /// reliable messages (k_nSteamNetworkingSend_Reliable) are not supported. + /// - You will usually want to use k_nSteamNetworkingSend_NoNagle + /// - k_EResultBusy is returned if this is a "server" port and the global + /// allocation has not yet completed. + /// - k_EResultIPNotFound will be returned if the address is a local/ephemeral + /// address and no existing connection can be found. This can happen if + /// the remote host contacted us without having a global address, and we + /// assigned them a random local address, and then the session with + /// that host timed out. + /// - When initiating communications, the first messages may be sent + /// via backend signaling, or otherwise delayed, while a route is found. + /// Expect the ping time to fluctuate during this period, and it's possible + /// that messages will be delivered out of order (which is also possible with + /// ordinary UDP). + virtual EResult SendMessageToFakeIP( const SteamNetworkingIPAddr &remoteAddress, const void *pData, uint32 cbData, int nSendFlags ) = 0; + + /// Receive messages on the port. + /// + /// Returns the number of messages returned into your array, up to nMaxMessages. + /// + /// SteamNetworkingMessage_t::m_identity in the returned message(s) will always contain + /// a FakeIP. See ISteamNetworkingUtils::GetRealIdentityForFakeIP. + virtual int ReceiveMessages( SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages ) = 0; + + /// Schedule the internal connection for a given peer to be cleaned up in a few seconds. + /// + /// Idle connections automatically time out, and so this is not strictly *necessary*, + /// but if you have reason to believe that you are done talking to a given peer for + /// a while, you can call this to speed up the timeout. If any remaining packets are + /// sent or received from the peer, the cleanup is canceled and the usual timeout + /// value is restored. Thus you will usually call this immediately after sending + /// or receiving application-layer "close connection" packets. + virtual void ScheduleCleanup( const SteamNetworkingIPAddr &remoteAddress ) = 0; +}; + +/// Callback struct used to notify when a connection has changed state +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error "Must define VALVE_CALLBACK_PACK_SMALL or VALVE_CALLBACK_PACK_LARGE" +#endif + +/// A struct used to describe a "fake IP" we have been assigned to +/// use as an identifier. This callback is posted when +/// ISteamNetworkingSoockets::BeginAsyncRequestFakeIP completes. +/// See also ISteamNetworkingSockets::GetFakeIP +struct SteamNetworkingFakeIPResult_t +{ + enum { k_iCallback = k_iSteamNetworkingSocketsCallbacks + 3 }; + + /// Status/result of the allocation request. Possible failure values are: + /// - k_EResultBusy - you called GetFakeIP but the request has not completed. + /// - k_EResultInvalidParam - you called GetFakeIP with an invalid port index + /// - k_EResultLimitExceeded - You asked for too many ports, or made an + /// additional request after one had already succeeded + /// - k_EResultNoMatch - GetFakeIP was called, but no request has been made + /// + /// Note that, with the exception of k_EResultBusy (if you are polling), + /// it is highly recommended to treat all failures as fatal. + EResult m_eResult; + + /// Local identity of the ISteamNetworkingSockets object that made + /// this request and is assigned the IP. This is needed in the callback + /// in the case where there are multiple ISteamNetworkingSockets objects. + /// (E.g. one for the user, and another for the local gameserver). + SteamNetworkingIdentity m_identity; + + /// Fake IPv4 IP address that we have been assigned. NOTE: this + /// IP address is not exclusively ours! Steam tries to avoid sharing + /// IP addresses, but this may not always be possible. The IP address + /// may be currently in use by another host, but with different port(s). + /// The exact same IP:port address may have been used previously. + /// Steam tries to avoid reusing ports until they have not been in use for + /// some time, but this may not always be possible. + uint32 m_unIP; + + /// Port number(s) assigned to us. Only the first entries will contain + /// nonzero values. Entries corresponding to ports beyond what was + /// allocated for you will be zero. + /// + /// (NOTE: At the time of this writing, the maximum number of ports you may + /// request is 4.) + enum { k_nMaxReturnPorts = 8 }; + uint16 m_unPorts[k_nMaxReturnPorts]; +}; + +#pragma pack( pop ) + +#endif // _H diff --git a/Generator/steam_sdk/steamnetworkingtypes.h b/Generator/steam_sdk/steamnetworkingtypes.h index f244c64..6f93c04 100644 --- a/Generator/steam_sdk/steamnetworkingtypes.h +++ b/Generator/steam_sdk/steamnetworkingtypes.h @@ -6,24 +6,38 @@ #ifndef STEAMNETWORKINGTYPES #define STEAMNETWORKINGTYPES -#ifdef _WIN32 #pragma once -#endif #include +#include +#include "steamtypes.h" +#include "steamclientpublic.h" -//---------------------------------------- -// SteamNetworkingSockets library config -// Compiling in Steam public branch. -#define STEAMNETWORKINGSOCKETS_STEAM -#ifdef STEAMNETWORKINGSOCKETS_STATIC_LINK - #define STEAMNETWORKINGSOCKETS_INTERFACE extern +//----------------------------------------------------------------------------- +// SteamNetworkingSockets config. +#if !defined(STEAMNETWORKINGSOCKETS_STANDALONELIB) && !defined(STEAMNETWORKINGSOCKETS_STEAMAPI) + #define STEAMNETWORKINGSOCKETS_STEAMAPI #endif -#define STEAMNETWORKINGSOCKETS_ENABLE_SDR -#include -// -//---------------------------------------- +//----------------------------------------------------------------------------- +#ifdef NN_NINTENDO_SDK // We always static link on Nintendo + #define STEAMNETWORKINGSOCKETS_STATIC_LINK +#endif +#if defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) + #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" +#elif defined( STEAMNETWORKINGSOCKETS_FOREXPORT ) + #ifdef _WIN32 + #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" __declspec( dllexport ) + #else + #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" __attribute__((visibility("default"))) + #endif +#else + #ifdef _WIN32 + #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" __declspec( dllimport ) + #else + #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" + #endif +#endif #if defined( VALVE_CALLBACK_PACK_SMALL ) #pragma pack( push, 4 ) @@ -35,16 +49,36 @@ struct SteamDatagramRelayAuthTicket; struct SteamDatagramHostedAddress; +struct SteamDatagramGameCoordinatorServerLogin; struct SteamNetConnectionStatusChangedCallback_t; +struct SteamNetAuthenticationStatus_t; +struct SteamRelayNetworkStatus_t; +struct SteamNetworkingMessagesSessionRequest_t; +struct SteamNetworkingMessagesSessionFailed_t; +struct SteamNetworkingFakeIPResult_t; + +typedef void (*FnSteamNetConnectionStatusChanged)( SteamNetConnectionStatusChangedCallback_t * ); +typedef void (*FnSteamNetAuthenticationStatusChanged)( SteamNetAuthenticationStatus_t * ); +typedef void (*FnSteamRelayNetworkStatusChanged)(SteamRelayNetworkStatus_t *); +typedef void (*FnSteamNetworkingMessagesSessionRequest)(SteamNetworkingMessagesSessionRequest_t *); +typedef void (*FnSteamNetworkingMessagesSessionFailed)(SteamNetworkingMessagesSessionFailed_t *); +typedef void (*FnSteamNetworkingFakeIPResult)(SteamNetworkingFakeIPResult_t *); /// Handle used to identify a connection to a remote host. typedef uint32 HSteamNetConnection; const HSteamNetConnection k_HSteamNetConnection_Invalid = 0; -/// Handle used to identify a "listen socket". +/// Handle used to identify a "listen socket". Unlike traditional +/// Berkeley sockets, a listen socket and a connection are two +/// different abstractions. typedef uint32 HSteamListenSocket; const HSteamListenSocket k_HSteamListenSocket_Invalid = 0; +/// Handle used to identify a poll group, used to query many +/// connections at once efficiently. +typedef uint32 HSteamNetPollGroup; +const HSteamNetPollGroup k_HSteamNetPollGroup_Invalid = 0; + /// Max length of diagnostic error message const int k_cchMaxSteamNetworkingErrMsg = 1024; @@ -60,9 +94,36 @@ typedef uint32 SteamNetworkingPOPID; /// microseconds. This is guaranteed to increase over time during the lifetime /// of a process, but not globally across runs. You don't need to worry about /// the value wrapping around. Note that the underlying clock might not actually have -/// microsecond *resolution*. +/// microsecond resolution. typedef int64 SteamNetworkingMicroseconds; +/// Describe the status of a particular network resource +enum ESteamNetworkingAvailability +{ + // Negative values indicate a problem. + // + // In general, we will not automatically retry unless you take some action that + // depends on of requests this resource, such as querying the status, attempting + // to initiate a connection, receive a connection, etc. If you do not take any + // action at all, we do not automatically retry in the background. + k_ESteamNetworkingAvailability_CannotTry = -102, // A dependent resource is missing, so this service is unavailable. (E.g. we cannot talk to routers because Internet is down or we don't have the network config.) + k_ESteamNetworkingAvailability_Failed = -101, // We have tried for enough time that we would expect to have been successful by now. We have never been successful + k_ESteamNetworkingAvailability_Previously = -100, // We tried and were successful at one time, but now it looks like we have a problem + + k_ESteamNetworkingAvailability_Retrying = -10, // We previously failed and are currently retrying + + // Not a problem, but not ready either + k_ESteamNetworkingAvailability_NeverTried = 1, // We don't know because we haven't ever checked/tried + k_ESteamNetworkingAvailability_Waiting = 2, // We're waiting on a dependent resource to be acquired. (E.g. we cannot obtain a cert until we are logged into Steam. We cannot measure latency to relays until we have the network config.) + k_ESteamNetworkingAvailability_Attempting = 3, // We're actively trying now, but are not yet successful. + + k_ESteamNetworkingAvailability_Current = 100, // Resource is online/available + + + k_ESteamNetworkingAvailability_Unknown = 0, // Internal dummy/sentinel, or value is not applicable in this context + k_ESteamNetworkingAvailability__Force32bit = 0x7fffffff, +}; + // // Describing network hosts // @@ -70,7 +131,10 @@ typedef int64 SteamNetworkingMicroseconds; /// Different methods of describing the identity of a network host enum ESteamNetworkingIdentityType { - // Dummy/unknown/invalid + // Dummy/empty/invalid. + // Please note that if we parse a string that we don't recognize + // but that appears reasonable, we will NOT use this type. Instead + // we'll use k_ESteamNetworkingIdentityType_UnknownType. k_ESteamNetworkingIdentityType_Invalid = 0, // @@ -78,7 +142,11 @@ enum ESteamNetworkingIdentityType // k_ESteamNetworkingIdentityType_SteamID = 16, // 64-bit CSteamID k_ESteamNetworkingIdentityType_XboxPairwiseID = 17, // Publisher-specific user identity, as string - //k_ESteamNetworkingIdentityType_PlaystationSomething = 18, + k_ESteamNetworkingIdentityType_SonyPSN = 18, // 64-bit ID + k_ESteamNetworkingIdentityType_GoogleStadia = 19, // 64-bit ID + //k_ESteamNetworkingIdentityType_NintendoNetworkServiceAccount, + //k_ESteamNetworkingIdentityType_EpicGameStore + //k_ESteamNetworkingIdentityType_WeGame // // Special identifiers. @@ -103,10 +171,29 @@ enum ESteamNetworkingIdentityType k_ESteamNetworkingIdentityType_GenericString = 2, k_ESteamNetworkingIdentityType_GenericBytes = 3, + // This identity type is used when we parse a string that looks like is a + // valid identity, just of a kind that we don't recognize. In this case, we + // can often still communicate with the peer! Allowing such identities + // for types we do not recognize useful is very useful for forward + // compatibility. + k_ESteamNetworkingIdentityType_UnknownType = 4, + // Make sure this enum is stored in an int. k_ESteamNetworkingIdentityType__Force32bit = 0x7fffffff, }; +/// "Fake IPs" are assigned to hosts, to make it easier to interface with +/// older code that assumed all hosts will have an IPv4 address +enum ESteamNetworkingFakeIPType +{ + k_ESteamNetworkingFakeIPType_Invalid, // Error, argument was not even an IP address, etc. + k_ESteamNetworkingFakeIPType_NotFake, // Argument was a valid IP, but was not from the reserved "fake" range + k_ESteamNetworkingFakeIPType_GlobalIPv4, // Globally unique (for a given app) IPv4 address. Address space managed by Steam + k_ESteamNetworkingFakeIPType_LocalIPv4, // Locally unique IPv4 address. Address space managed by the local process. For internal use only; should not be shared! + + k_ESteamNetworkingFakeIPType__Force32Bit = 0x7fffffff +}; + #pragma pack(push,1) /// Store an IP and port. IPv6 is always used; IPv4 is represented using @@ -132,30 +219,45 @@ struct SteamNetworkingIPAddr /// form according to RFC5952. If you include the port, IPv6 will be surrounded by /// brackets, e.g. [::1:2]:80. Your buffer should be at least k_cchMaxString bytes /// to avoid truncation + /// + /// See also SteamNetworkingIdentityRender inline void ToString( char *buf, size_t cbBuf, bool bWithPort ) const; /// Parse an IP address and optional port. If a port is not present, it is set to 0. /// (This means that you cannot tell if a zero port was explicitly specified.) inline bool ParseString( const char *pszStr ); + /// RFC4038, section 4.2 + struct IPv4MappedAddress { + uint64 m_8zeros; + uint16 m_0000; + uint16 m_ffff; + uint8 m_ip[ 4 ]; // NOTE: As bytes, i.e. network byte order + }; + union { uint8 m_ipv6[ 16 ]; - struct // IPv4 "mapped address" (rfc4038 section 4.2) - { - uint64 m_8zeros; - uint16 m_0000; - uint16 m_ffff; - uint8 m_ip[ 4 ]; // NOTE: As bytes, i.e. network byte order - } m_ipv4; + IPv4MappedAddress m_ipv4; }; uint16 m_port; // Host byte order /// See if two addresses are identical bool operator==(const SteamNetworkingIPAddr &x ) const; + + /// Classify address as FakeIP. This function never returns + /// k_ESteamNetworkingFakeIPType_Invalid. + ESteamNetworkingFakeIPType GetFakeIPType() const; + + /// Return true if we are a FakeIP + bool IsFakeIP() const { return GetFakeIPType() > k_ESteamNetworkingFakeIPType_NotFake; } }; -/// An abstract way to represent the identity of a network host +/// An abstract way to represent the identity of a network host. All identities can +/// be represented as simple string. Furthermore, this string representation is actually +/// used on the wire in several places, even though it is less efficient, in order to +/// facilitate forward compatibility. (Old client code can handle an identity type that +/// it doesn't understand.) struct SteamNetworkingIdentity { /// Type of identity. @@ -176,8 +278,19 @@ struct SteamNetworkingIdentity bool SetXboxPairwiseID( const char *pszString ); // Returns false if invalid length const char *GetXboxPairwiseID() const; // Returns nullptr if not Xbox ID + void SetPSNID( uint64 id ); + uint64 GetPSNID() const; // Returns 0 if not PSN + + void SetStadiaID( uint64 id ); + uint64 GetStadiaID() const; // Returns 0 if not Stadia + void SetIPAddr( const SteamNetworkingIPAddr &addr ); // Set to specified IP:port const SteamNetworkingIPAddr *GetIPAddr() const; // returns null if we are not an IP address. + void SetIPv4Addr( uint32 nIPv4, uint16 nPort ); // Set to specified IPv4:port + uint32 GetIPv4() const; // returns 0 if we are not an IPv4 address. + + ESteamNetworkingFakeIPType GetFakeIPType() const; + bool IsFakeIP() const { return GetFakeIPType() > k_ESteamNetworkingFakeIPType_NotFake; } // "localhost" is equivalent for many purposes to "anonymous." Our remote // will identify us by the network address we use. @@ -197,16 +310,22 @@ struct SteamNetworkingIdentity /// or any other time you need to encode the identity as a string. It has a /// URL-like format (type:). Your buffer should be at least /// k_cchMaxString bytes big to avoid truncation. + /// + /// See also SteamNetworkingIPAddrRender void ToString( char *buf, size_t cbBuf ) const; - /// Parse back a string that was generated using ToString + /// Parse back a string that was generated using ToString. If we don't understand the + /// string, but it looks "reasonable" (it matches the pattern type: and doesn't + /// have any funky characters, etc), then we will return true, and the type is set to + /// k_ESteamNetworkingIdentityType_UnknownType. false will only be returned if the string + /// looks invalid. bool ParseString( const char *pszStr ); // Max sizes enum { k_cchMaxString = 128, // Max length of the buffer needed to hold any identity, formatted in string format by ToString k_cchMaxGenericString = 32, // Max length of the string for generic string identities. Including terminating '\0' - k_cchMaxXboxPairwiseID = 32, // Including terminating '\0' + k_cchMaxXboxPairwiseID = 33, // Including terminating '\0' k_cbMaxGenericBytes = 32, }; @@ -219,9 +338,12 @@ struct SteamNetworkingIdentity int m_cbSize; union { uint64 m_steamID64; + uint64 m_PSNID; + uint64 m_stadiaID; char m_szGenericString[ k_cchMaxGenericString ]; char m_szXboxPairwiseID[ k_cchMaxXboxPairwiseID ]; uint8 m_genericBytes[ k_cbMaxGenericBytes ]; + char m_szUnknownRawString[ k_cchMaxString ]; SteamNetworkingIPAddr m_ip; uint32 m_reserved[ 32 ]; // Pad structure to leave easy room for future expansion }; @@ -409,7 +531,7 @@ enum ESteamNetConnectionEnd // on our end k_ESteamNetConnectionEnd_Local_HostedServerPrimaryRelay = 3003, - // We're not able to get the network config. This is + // We're not able to get the SDR network config. This is // *almost* always a local issue, since the network config // comes from the CDN, which is pretty darn reliable. k_ESteamNetConnectionEnd_Local_NetworkConfig = 3004, @@ -418,6 +540,14 @@ enum ESteamNetConnectionEnd // to do this. k_ESteamNetConnectionEnd_Local_Rights = 3005, + // ICE P2P rendezvous failed because we were not able to + // determine our "public" address (e.g. reflexive address via STUN) + // + // If relay fallback is available (it always is on Steam), then + // this is only used internally and will not be returned as a high + // level failure. + k_ESteamNetConnectionEnd_Local_P2P_ICE_NoPublicAddresses = 3006, + k_ESteamNetConnectionEnd_Local_Max = 3999, // 4xxx: Connection failed or ended, and it appears that the @@ -448,18 +578,23 @@ enum ESteamNetConnectionEnd // - etc k_ESteamNetConnectionEnd_Remote_BadCert = 4003, - // We couldn't rendezvous with the remote host because - // they aren't logged into Steam - k_ESteamNetConnectionEnd_Remote_NotLoggedIn = 4004, - - // We couldn't rendezvous with the remote host because - // they aren't running the right application. - k_ESteamNetConnectionEnd_Remote_NotRunningApp = 4005, + // These will never be returned + //k_ESteamNetConnectionEnd_Remote_NotLoggedIn_DEPRECATED = 4004, + //k_ESteamNetConnectionEnd_Remote_NotRunningApp_DEPRECATED = 4005, // Something wrong with the protocol version you are using. // (Probably the code you are running is too old.) k_ESteamNetConnectionEnd_Remote_BadProtocolVersion = 4006, + // NAT punch failed failed because we never received any public + // addresses from the remote host. (But we did receive some + // signals form them.) + // + // If relay fallback is available (it always is on Steam), then + // this is only used internally and will not be returned as a high + // level failure. + k_ESteamNetConnectionEnd_Remote_P2P_ICE_NoPublicAddresses = 4007, + k_ESteamNetConnectionEnd_Remote_Max = 4999, // 5xxx: Connection failed for some other reason. @@ -479,10 +614,7 @@ enum ESteamNetConnectionEnd // or on their end. k_ESteamNetConnectionEnd_Misc_Timeout = 5003, - // We're having trouble talking to the relevant relay. - // We don't have enough information to say whether the - // problem is on our end or not. - k_ESteamNetConnectionEnd_Misc_RelayConnectivity = 5004, + //k_ESteamNetConnectionEnd_Misc_RelayConnectivity_DEPRECATED = 5004, // There's some trouble talking to Steam. k_ESteamNetConnectionEnd_Misc_SteamConnectivity = 5005, @@ -492,6 +624,36 @@ enum ESteamNetConnectionEnd // job to open and maintain those sessions.) k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient = 5006, + // While trying to initiate a connection, we never received + // *any* communication from the peer. + //k_ESteamNetConnectionEnd_Misc_ServerNeverReplied = 5007, + + // P2P rendezvous failed in a way that we don't have more specific + // information + k_ESteamNetConnectionEnd_Misc_P2P_Rendezvous = 5008, + + // NAT punch failed, probably due to NAT/firewall configuration. + // + // If relay fallback is available (it always is on Steam), then + // this is only used internally and will not be returned as a high + // level failure. + k_ESteamNetConnectionEnd_Misc_P2P_NAT_Firewall = 5009, + + // Our peer replied that it has no record of the connection. + // This should not happen ordinarily, but can happen in a few + // exception cases: + // + // - This is an old connection, and the peer has already cleaned + // up and forgotten about it. (Perhaps it timed out and they + // closed it and were not able to communicate this to us.) + // - A bug or internal protocol error has caused us to try to + // talk to the peer about the connection before we received + // confirmation that the peer has accepted the connection. + // - The peer thinks that we have closed the connection for some + // reason (perhaps a bug), and believes that is it is + // acknowledging our closure. + k_ESteamNetConnectionEnd_Misc_PeerSentNoConnection = 5010, + k_ESteamNetConnectionEnd_Misc_Max = 5999, k_ESteamNetConnectionEnd__Force32Bit = 0x7fffffff @@ -505,6 +667,16 @@ const int k_cchSteamNetworkingMaxConnectionCloseReason = 128; /// of a connection. const int k_cchSteamNetworkingMaxConnectionDescription = 128; +/// Max length of the app's part of the description +const int k_cchSteamNetworkingMaxConnectionAppName = 32; + +const int k_nSteamNetworkConnectionInfoFlags_Unauthenticated = 1; // We don't have a certificate for the remote host. +const int k_nSteamNetworkConnectionInfoFlags_Unencrypted = 2; // Information is being sent out over a wire unencrypted (by this library) +const int k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers = 4; // Internal loopback buffers. Won't be true for localhost. (You can check the address to determine that.) This implies k_nSteamNetworkConnectionInfoFlags_FastLAN +const int k_nSteamNetworkConnectionInfoFlags_Fast = 8; // The connection is "fast" and "reliable". Either internal/localhost (check the address to find out), or the peer is on the same LAN. (Probably. It's based on the address and the ping time, this is actually hard to determine unambiguously). +const int k_nSteamNetworkConnectionInfoFlags_Relayed = 16; // The connection is relayed somehow (SDR or TURN). +const int k_nSteamNetworkConnectionInfoFlags_DualWifi = 32; // We're taking advantage of dual-wifi multi-path + /// Describe the state of a connection. struct SteamNetConnectionInfo_t { @@ -543,18 +715,25 @@ struct SteamNetConnectionInfo_t /// have some details specific to the issue. char m_szEndDebug[ k_cchSteamNetworkingMaxConnectionCloseReason ]; - /// Debug description. This includes the connection handle, - /// connection type (and peer information), and the app name. - /// This string is used in various internal logging messages + /// Debug description. This includes the internal connection ID, + /// connection type (and peer information), and any name + /// given to the connection by the app. This string is used in various + /// internal logging messages. + /// + /// Note that the connection ID *usually* matches the HSteamNetConnection + /// handle, but in certain cases with symmetric connections it might not. char m_szConnectionDescription[ k_cchSteamNetworkingMaxConnectionDescription ]; + /// Misc flags. Bitmask of k_nSteamNetworkConnectionInfoFlags_Xxxx + int m_nFlags; + /// Internal stuff, room to change API easily - uint32 reserved[64]; + uint32 reserved[63]; }; /// Quick connection state, pared down to something you could call /// more frequently without it being too big of a perf hit. -struct SteamNetworkingQuickConnectionStatus +struct SteamNetConnectionRealTimeStatus_t { /// High level state of the connection @@ -588,7 +767,7 @@ struct SteamNetworkingQuickConnectionStatus /// but has now been scheduled for re-transmission. Thus, it's possible to /// observe m_cbPendingReliable increasing between two checks, even if no /// calls were made to send reliable data between the checks. Data that is - /// awaiting the nagle delay will appear in these numbers. + /// awaiting the Nagle delay will appear in these numbers. int m_cbPendingUnreliable; int m_cbPendingReliable; @@ -597,17 +776,16 @@ struct SteamNetworkingQuickConnectionStatus /// have to re-transmit. int m_cbSentUnackedReliable; - /// If you asked us to send a message right now, how long would that message - /// sit in the queue before we actually started putting packets on the wire? - /// (And assuming Nagle does not cause any packets to be delayed.) + /// If you queued a message right now, approximately how long would that message + /// wait in the queue before we actually started putting its data on the wire in + /// a packet? /// - /// In general, data that is sent by the application is limited by the - /// bandwidth of the channel. If you send data faster than this, it must - /// be queued and put on the wire at a metered rate. Even sending a small amount - /// of data (e.g. a few MTU, say ~3k) will require some of the data to be delayed - /// a bit. - /// - /// In general, the estimated delay will be approximately equal to + /// In general, data that is sent by the application is limited by the bandwidth + /// of the channel. If you send data faster than this, it must be queued and + /// put on the wire at a metered rate. Even sending a small amount of data (e.g. + /// a few MTU, say ~3k) will require some of the data to be delayed a bit. + /// + /// Ignoring multiple lanes, the estimated delay will be approximately equal to /// /// ( m_cbPendingUnreliable+m_cbPendingReliable ) / m_nSendRateBytesPerSecond /// @@ -616,15 +794,40 @@ struct SteamNetworkingQuickConnectionStatus /// and the last packet placed on the wire, and we are exactly up against the send /// rate limit. In that case we might need to wait for one packet's worth of time to /// elapse before we can send again. On the other extreme, the queue might have data - /// in it waiting for Nagle. (This will always be less than one packet, because as soon - /// as we have a complete packet we would send it.) In that case, we might be ready - /// to send data now, and this value will be 0. + /// in it waiting for Nagle. (This will always be less than one packet, because as + /// soon as we have a complete packet we would send it.) In that case, we might be + /// ready to send data now, and this value will be 0. + /// + /// This value is only valid if multiple lanes are not used. If multiple lanes are + /// in use, then the queue time will be different for each lane, and you must use + /// the value in SteamNetConnectionRealTimeLaneStatus_t. + /// + /// Nagle delay is ignored for the purposes of this calculation. SteamNetworkingMicroseconds m_usecQueueTime; - /// Internal stuff, room to change API easily + // Internal stuff, room to change API easily uint32 reserved[16]; }; +/// Quick status of a particular lane +struct SteamNetConnectionRealTimeLaneStatus_t +{ + // Counters for this particular lane. See the corresponding variables + // in SteamNetConnectionRealTimeStatus_t + int m_cbPendingUnreliable; + int m_cbPendingReliable; + int m_cbSentUnackedReliable; + int _reservePad1; // Reserved for future use + + /// Lane-specific queue time. This value takes into consideration lane priorities + /// and weights, and how much data is queued in each lane, and attempts to predict + /// how any data currently queued will be sent out. + SteamNetworkingMicroseconds m_usecQueueTime; + + // Internal stuff, room to change API easily + uint32 reserved[10]; +}; + #pragma pack( pop ) // @@ -636,7 +839,7 @@ struct SteamNetworkingQuickConnectionStatus /// and our peer might, too. const int k_cbMaxSteamNetworkingSocketsMessageSizeSend = 512 * 1024; -/// A message that has been received +/// A message that has been received. struct SteamNetworkingMessage_t { @@ -644,15 +847,20 @@ struct SteamNetworkingMessage_t void *m_pData; /// Size of the payload. - uint32 m_cbSize; + int m_cbSize; - /// The connection this came from. (Not used when using the ISteamMessages interface) + /// For messages received on connections: what connection did this come from? + /// For outgoing messages: what connection to send it to? + /// Not used when using the ISteamNetworkingMessages interface HSteamNetConnection m_conn; - /// Who sent this to us? - SteamNetworkingIdentity m_sender; + /// For inbound messages: Who sent this to us? + /// For outbound messages on connections: not used. + /// For outbound messages on the ad-hoc ISteamNetworkingMessages interface: who should we send this to? + SteamNetworkingIdentity m_identityPeer; - /// The user data associated with the connection. + /// For messages received on connections, this is the user data + /// associated with the connection. /// /// This is *usually* the same as calling GetConnection() and then /// fetching the user data associated with that connection, but for @@ -665,12 +873,18 @@ struct SteamNetworkingMessage_t /// - This is an inline call, so it's *much* faster. /// - You might have closed the connection, so fetching the user data /// would not be possible. + /// + /// Not used when sending messages. int64 m_nConnUserData; - /// Local timestamps when it was received + /// Local timestamp when the message was received + /// Not used for outbound messages. SteamNetworkingMicroseconds m_usecTimeReceived; - /// Message number assigned by the sender + /// Message number assigned by the sender. This is not used for outbound + /// messages. Note that if multiple lanes are used, each lane has its own + /// message numbers, which are assigned sequentially, so messages from + /// different lanes will share the same numbers. int64 m_nMessageNumber; /// Function used to free up m_pData. This mechanism exists so that @@ -681,33 +895,53 @@ struct SteamNetworkingMessage_t /// free( pMsg->m_pData ); void (*m_pfnFreeData)( SteamNetworkingMessage_t *pMsg ); - /// Function to used to decrement reference count and, if it's zero, release - /// the message. You should not normally need to access this directly. - /// (Use Release(), and don't set this.) + /// Function to used to decrement the internal reference count and, if + /// it's zero, release the message. You should not set this function pointer, + /// or need to access this directly! Use the Release() function instead! void (*m_pfnRelease)( SteamNetworkingMessage_t *pMsg ); - /// The channel number the message was received on. - /// (Not used for messages received on "connections") + /// When using ISteamNetworkingMessages, the channel number the message was received on + /// (Not used for messages sent or received on "connections") int m_nChannel; - /// Pad to multiple of 8 bytes - int m___nPadDummy; + /// Bitmask of k_nSteamNetworkingSend_xxx flags. + /// For received messages, only the k_nSteamNetworkingSend_Reliable bit is valid. + /// For outbound messages, all bits are relevant + int m_nFlags; - #ifdef __cplusplus + /// Arbitrary user data that you can use when sending messages using + /// ISteamNetworkingUtils::AllocateMessage and ISteamNetworkingSockets::SendMessage. + /// (The callback you set in m_pfnFreeData might use this field.) + /// + /// Not used for received messages. + int64 m_nUserData; - /// You MUST call this when you're done with the object, - /// to free up memory, etc. - inline void Release(); + /// For outbound messages, which lane to use? See ISteamNetworkingSockets::ConfigureConnectionLanes. + /// For inbound messages, what lane was the message received on? + uint16 m_idxLane; + uint16 _pad1__; - // For code compatibility, some accessors - inline uint32 GetSize() const { return m_cbSize; } - inline const void *GetData() const { return m_pData; } - inline int GetChannel() const { return m_nChannel; } - inline HSteamNetConnection GetConnection() const { return m_conn; } - inline int64 GetConnectionUserData() const { return m_nConnUserData; } - inline SteamNetworkingMicroseconds GetTimeReceived() const { return m_usecTimeReceived; } - inline int64 GetMessageNumber() const { return m_nMessageNumber; } - #endif + /// You MUST call this when you're done with the object, + /// to free up memory, etc. + inline void Release(); + + // For code compatibility, some accessors +#ifndef API_GEN + inline uint32 GetSize() const { return m_cbSize; } + inline const void *GetData() const { return m_pData; } + inline int GetChannel() const { return m_nChannel; } + inline HSteamNetConnection GetConnection() const { return m_conn; } + inline int64 GetConnectionUserData() const { return m_nConnUserData; } + inline SteamNetworkingMicroseconds GetTimeReceived() const { return m_usecTimeReceived; } + inline int64 GetMessageNumber() const { return m_nMessageNumber; } +#endif +protected: + // Declare destructor protected. You should never need to declare a message + // object on the stack or create one yourself. + // - You will receive a pointer to a message object when you receive messages (e.g. ISteamNetworkingSockets::ReceiveMessagesOnConnection) + // - You can allocate a message object for efficient sending using ISteamNetworkingUtils::AllocateMessage + // - Call Release() to free the object + inline ~SteamNetworkingMessage_t() {} }; // @@ -766,7 +1000,7 @@ const int k_nSteamNetworkingSend_NoDelay = 4; // - there is a sufficiently large number of messages queued up already such that the current message // will not be placed on the wire in the next ~200ms or so. // -// if a message is dropped for these reasons, k_EResultIgnored will be returned. +// If a message is dropped for these reasons, k_EResultIgnored will be returned. const int k_nSteamNetworkingSend_UnreliableNoDelay = k_nSteamNetworkingSend_Unreliable|k_nSteamNetworkingSend_NoDelay|k_nSteamNetworkingSend_NoNagle; // Reliable message send. Can send up to k_cbMaxSteamNetworkingSocketsMessageSizeSend bytes in a single message. @@ -785,6 +1019,42 @@ const int k_nSteamNetworkingSend_Reliable = 8; // Migration note: This is equivalent to k_EP2PSendReliable const int k_nSteamNetworkingSend_ReliableNoNagle = k_nSteamNetworkingSend_Reliable|k_nSteamNetworkingSend_NoNagle; +// By default, message sending is queued, and the work of encryption and talking to +// the operating system sockets, etc is done on a service thread. This is usually a +// a performance win when messages are sent from the "main thread". However, if this +// flag is set, and data is ready to be sent immediately (either from this message +// or earlier queued data), then that work will be done in the current thread, before +// the current call returns. If data is not ready to be sent (due to rate limiting +// or Nagle), then this flag has no effect. +// +// This is an advanced flag used to control performance at a very low level. For +// most applications running on modern hardware with more than one CPU core, doing +// the work of sending on a service thread will yield the best performance. Only +// use this flag if you have a really good reason and understand what you are doing. +// Otherwise you will probably just make performance worse. +const int k_nSteamNetworkingSend_UseCurrentThread = 16; + +// When sending a message using ISteamNetworkingMessages, automatically re-establish +// a broken session, without returning k_EResultNoConnection. Without this flag, +// if you attempt to send a message, and the session was proactively closed by the +// peer, or an error occurred that disrupted communications, then you must close the +// session using ISteamNetworkingMessages::CloseSessionWithUser before attempting to +// send another message. (Or you can simply add this flag and retry.) In this way, +// the disruption cannot go unnoticed, and a more clear order of events can be +// ascertained. This is especially important when reliable messages are used, since +// if the connection is disrupted, some of those messages will not have been delivered, +// and it is in general not possible to know which. Although a +// SteamNetworkingMessagesSessionFailed_t callback will be posted when an error occurs +// to notify you that a failure has happened, callbacks are asynchronous, so it is not +// possible to tell exactly when it happened. And because the primary purpose of +// ISteamNetworkingMessages is to be like UDP, there is no notification when a peer closes +// the session. +// +// If you are not using any reliable messages (e.g. you are using ISteamNetworkingMessages +// exactly as a transport replacement for UDP-style datagrams only), you may not need to +// know when an underlying connection fails, and so you may not need this notification. +const int k_nSteamNetworkingSend_AutoRestartBrokenSession = 32; + // // Ping location / measurement // @@ -857,7 +1127,7 @@ enum ESteamNetworkingConfigDataType k_ESteamNetworkingConfig_Int64 = 2, k_ESteamNetworkingConfig_Float = 3, k_ESteamNetworkingConfig_String = 4, - k_ESteamNetworkingConfig_FunctionPtr = 5, // NOTE: When setting callbacks, you should put the pointer into a variable and pass a pointer to that variable. + k_ESteamNetworkingConfig_Ptr = 5, k_ESteamNetworkingConfigDataType__Force32Bit = 0x7fffffff }; @@ -867,6 +1137,217 @@ enum ESteamNetworkingConfigValue { k_ESteamNetworkingConfig_Invalid = 0, +// +// Connection options +// + + /// [connection int32] Timeout value (in ms) to use when first connecting + k_ESteamNetworkingConfig_TimeoutInitial = 24, + + /// [connection int32] Timeout value (in ms) to use after connection is established + k_ESteamNetworkingConfig_TimeoutConnected = 25, + + /// [connection int32] Upper limit of buffered pending bytes to be sent, + /// if this is reached SendMessage will return k_EResultLimitExceeded + /// Default is 512k (524288 bytes) + k_ESteamNetworkingConfig_SendBufferSize = 9, + + /// [connection int64] Get/set userdata as a configuration option. + /// The default value is -1. You may want to set the user data as + /// a config value, instead of using ISteamNetworkingSockets::SetConnectionUserData + /// in two specific instances: + /// + /// - You wish to set the userdata atomically when creating + /// an outbound connection, so that the userdata is filled in properly + /// for any callbacks that happen. However, note that this trick + /// only works for connections initiated locally! For incoming + /// connections, multiple state transitions may happen and + /// callbacks be queued, before you are able to service the first + /// callback! Be careful! + /// + /// - You can set the default userdata for all newly created connections + /// by setting this value at a higher level (e.g. on the listen + /// socket or at the global level.) Then this default + /// value will be inherited when the connection is created. + /// This is useful in case -1 is a valid userdata value, and you + /// wish to use something else as the default value so you can + /// tell if it has been set or not. + /// + /// HOWEVER: once a connection is created, the effective value is + /// then bound to the connection. Unlike other connection options, + /// if you change it again at a higher level, the new value will not + /// be inherited by connections. + /// + /// Using the userdata field in callback structs is not advised because + /// of tricky race conditions. Instead, you might try one of these methods: + /// + /// - Use a separate map with the HSteamNetConnection as the key. + /// - Fetch the userdata from the connection in your callback + /// using ISteamNetworkingSockets::GetConnectionUserData, to + // ensure you have the current value. + k_ESteamNetworkingConfig_ConnectionUserData = 40, + + /// [connection int32] Minimum/maximum send rate clamp, 0 is no limit. + /// This value will control the min/max allowed sending rate that + /// bandwidth estimation is allowed to reach. Default is 0 (no-limit) + k_ESteamNetworkingConfig_SendRateMin = 10, + k_ESteamNetworkingConfig_SendRateMax = 11, + + /// [connection int32] Nagle time, in microseconds. When SendMessage is called, if + /// the outgoing message is less than the size of the MTU, it will be + /// queued for a delay equal to the Nagle timer value. This is to ensure + /// that if the application sends several small messages rapidly, they are + /// coalesced into a single packet. + /// See historical RFC 896. Value is in microseconds. + /// Default is 5000us (5ms). + k_ESteamNetworkingConfig_NagleTime = 12, + + /// [connection int32] Don't automatically fail IP connections that don't have + /// strong auth. On clients, this means we will attempt the connection even if + /// we don't know our identity or can't get a cert. On the server, it means that + /// we won't automatically reject a connection due to a failure to authenticate. + /// (You can examine the incoming connection and decide whether to accept it.) + /// + /// This is a dev configuration value, and you should not let users modify it in + /// production. + k_ESteamNetworkingConfig_IP_AllowWithoutAuth = 23, + + /// [connection int32] Do not send UDP packets with a payload of + /// larger than N bytes. If you set this, k_ESteamNetworkingConfig_MTU_DataSize + /// is automatically adjusted + k_ESteamNetworkingConfig_MTU_PacketSize = 32, + + /// [connection int32] (read only) Maximum message size you can send that + /// will not fragment, based on k_ESteamNetworkingConfig_MTU_PacketSize + k_ESteamNetworkingConfig_MTU_DataSize = 33, + + /// [connection int32] Allow unencrypted (and unauthenticated) communication. + /// 0: Not allowed (the default) + /// 1: Allowed, but prefer encrypted + /// 2: Allowed, and preferred + /// 3: Required. (Fail the connection if the peer requires encryption.) + /// + /// This is a dev configuration value, since its purpose is to disable encryption. + /// You should not let users modify it in production. (But note that it requires + /// the peer to also modify their value in order for encryption to be disabled.) + k_ESteamNetworkingConfig_Unencrypted = 34, + + /// [connection int32] Set this to 1 on outbound connections and listen sockets, + /// to enable "symmetric connect mode", which is useful in the following + /// common peer-to-peer use case: + /// + /// - The two peers are "equal" to each other. (Neither is clearly the "client" + /// or "server".) + /// - Either peer may initiate the connection, and indeed they may do this + /// at the same time + /// - The peers only desire a single connection to each other, and if both + /// peers initiate connections simultaneously, a protocol is needed for them + /// to resolve the conflict, so that we end up with a single connection. + /// + /// This use case is both common, and involves subtle race conditions and tricky + /// pitfalls, which is why the API has support for dealing with it. + /// + /// If an incoming connection arrives on a listen socket or via custom signaling, + /// and the application has not attempted to make a matching outbound connection + /// in symmetric mode, then the incoming connection can be accepted as usual. + /// A "matching" connection means that the relevant endpoint information matches. + /// (At the time this comment is being written, this is only supported for P2P + /// connections, which means that the peer identities must match, and the virtual + /// port must match. At a later time, symmetric mode may be supported for other + /// connection types.) + /// + /// If connections are initiated by both peers simultaneously, race conditions + /// can arise, but fortunately, most of them are handled internally and do not + /// require any special awareness from the application. However, there + /// is one important case that application code must be aware of: + /// If application code attempts an outbound connection using a ConnectXxx + /// function in symmetric mode, and a matching incoming connection is already + /// waiting on a listen socket, then instead of forming a new connection, + /// the ConnectXxx call will accept the existing incoming connection, and return + /// a connection handle to this accepted connection. + /// IMPORTANT: in this case, a SteamNetConnectionStatusChangedCallback_t + /// has probably *already* been posted to the queue for the incoming connection! + /// (Once callbacks are posted to the queue, they are not modified.) It doesn't + /// matter if the callback has not been consumed by the app. Thus, application + /// code that makes use of symmetric connections must be aware that, when processing a + /// SteamNetConnectionStatusChangedCallback_t for an incoming connection, the + /// m_hConn may refer to a new connection that the app has has not + /// seen before (the usual case), but it may also refer to a connection that + /// has already been accepted implicitly through a call to Connect()! In this + /// case, AcceptConnection() will return k_EResultDuplicateRequest. + /// + /// Only one symmetric connection to a given peer (on a given virtual port) + /// may exist at any given time. If client code attempts to create a connection, + /// and a (live) connection already exists on the local host, then either the + /// existing connection will be accepted as described above, or the attempt + /// to create a new connection will fail. Furthermore, linger mode functionality + /// is not supported on symmetric connections. + /// + /// A more complicated race condition can arise if both peers initiate a connection + /// at roughly the same time. In this situation, each peer will receive an incoming + /// connection from the other peer, when the application code has already initiated + /// an outgoing connection to that peer. The peers must resolve this conflict and + /// decide who is going to act as the "server" and who will act as the "client". + /// Typically the application does not need to be aware of this case as it is handled + /// internally. On both sides, the will observe their outbound connection being + /// "accepted", although one of them one have been converted internally to act + /// as the "server". + /// + /// In general, symmetric mode should be all-or-nothing: do not mix symmetric + /// connections with a non-symmetric connection that it might possible "match" + /// with. If you use symmetric mode on any connections, then both peers should + /// use it on all connections, and the corresponding listen socket, if any. The + /// behaviour when symmetric and ordinary connections are mixed is not defined by + /// this API, and you should not rely on it. (This advice only applies when connections + /// might possibly "match". For example, it's OK to use all symmetric mode + /// connections on one virtual port, and all ordinary, non-symmetric connections + /// on a different virtual port, as there is no potential for ambiguity.) + /// + /// When using the feature, you should set it in the following situations on + /// applicable objects: + /// + /// - When creating an outbound connection using ConnectXxx function + /// - When creating a listen socket. (Note that this will automatically cause + /// any accepted connections to inherit the flag.) + /// - When using custom signaling, before accepting an incoming connection. + /// + /// Setting the flag on listen socket and accepted connections will enable the + /// API to automatically deal with duplicate incoming connections, even if the + /// local host has not made any outbound requests. (In general, such duplicate + /// requests from a peer are ignored internally and will not be visible to the + /// application code. The previous connection must be closed or resolved first.) + k_ESteamNetworkingConfig_SymmetricConnect = 37, + + /// [connection int32] For connection types that use "virtual ports", this can be used + /// to assign a local virtual port. For incoming connections, this will always be the + /// virtual port of the listen socket (or the port requested by the remote host if custom + /// signaling is used and the connection is accepted), and cannot be changed. For + /// connections initiated locally, the local virtual port will default to the same as the + /// requested remote virtual port, if you do not specify a different option when creating + /// the connection. The local port is only relevant for symmetric connections, when + /// determining if two connections "match." In this case, if you need the local and remote + /// port to differ, you can set this value. + /// + /// You can also read back this value on listen sockets. + /// + /// This value should not be read or written in any other context. + k_ESteamNetworkingConfig_LocalVirtualPort = 38, + + /// [connection int32] Enable Dual wifi band support for this connection + /// 0 = no, 1 = yes, 2 = simulate it for debugging, even if dual wifi not available + k_ESteamNetworkingConfig_DualWifi_Enable = 39, + + /// [connection int32] True to enable diagnostics reporting through + /// generic platform UI. (Only available on Steam.) + k_ESteamNetworkingConfig_EnableDiagnosticsUI = 46, + +// +// Simulating network conditions +// +// These are global (not per-connection) because they apply at +// a relatively low UDP layer. +// + /// [global float, 0--100] Randomly discard N pct of packets instead of sending/recv /// This is a global option only, since it is applied at a low level /// where we don't have much context @@ -893,42 +1374,137 @@ enum ESteamNetworkingConfigValue /// (We chose a random delay between 0 and this value) k_ESteamNetworkingConfig_FakePacketDup_TimeMax = 28, - /// [connection int32] Timeout value (in ms) to use when first connecting - k_ESteamNetworkingConfig_TimeoutInitial = 24, + /// [global int32] Trace every UDP packet, similar to Wireshark or tcpdump. + /// Value is max number of bytes to dump. -1 disables tracing. + // 0 only traces the info but no actual data bytes + k_ESteamNetworkingConfig_PacketTraceMaxBytes = 41, - /// [connection int32] Timeout value (in ms) to use after connection is established - k_ESteamNetworkingConfig_TimeoutConnected = 25, - /// [connection int32] Upper limit of buffered pending bytes to be sent, - /// if this is reached SendMessage will return k_EResultLimitExceeded - /// Default is 512k (524288 bytes) - k_ESteamNetworkingConfig_SendBufferSize = 9, + // [global int32] Global UDP token bucket rate limits. + // "Rate" refers to the steady state rate. (Bytes/sec, the + // rate that tokens are put into the bucket.) "Burst" + // refers to the max amount that could be sent in a single + // burst. (In bytes, the max capacity of the bucket.) + // Rate=0 disables the limiter entirely, which is the default. + // Burst=0 disables burst. (This is not realistic. A + // burst of at least 4K is recommended; the default is higher.) + k_ESteamNetworkingConfig_FakeRateLimit_Send_Rate = 42, + k_ESteamNetworkingConfig_FakeRateLimit_Send_Burst = 43, + k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate = 44, + k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst = 45, - /// [connection int32] Minimum/maximum send rate clamp, 0 is no limit. - /// This value will control the min/max allowed sending rate that - /// bandwidth estimation is allowed to reach. Default is 0 (no-limit) - k_ESteamNetworkingConfig_SendRateMin = 10, - k_ESteamNetworkingConfig_SendRateMax = 11, - - /// [connection int32] Nagle time, in microseconds. When SendMessage is called, if - /// the outgoing message is less than the size of the MTU, it will be - /// queued for a delay equal to the Nagle timer value. This is to ensure - /// that if the application sends several small messages rapidly, they are - /// coalesced into a single packet. - /// See historical RFC 896. Value is in microseconds. - /// Default is 5000us (5ms). - k_ESteamNetworkingConfig_NagleTime = 12, - - /// [connection int32] Don't automatically fail IP connections that don't have - /// strong auth. On clients, this means we will attempt the connection even if - /// we don't know our identity or can't get a cert. On the server, it means that - /// we won't automatically reject a connection due to a failure to authenticate. - /// (You can examine the incoming connection and decide whether to accept it.) - k_ESteamNetworkingConfig_IP_AllowWithoutAuth = 23, +// +// Callbacks +// + // On Steam, you may use the default Steam callback dispatch mechanism. If you prefer + // to not use this dispatch mechanism (or you are not running with Steam), or you want + // to associate specific functions with specific listen sockets or connections, you can + // register them as configuration values. // - // Settings for SDR relayed connections - // + // Note also that ISteamNetworkingUtils has some helpers to set these globally. + + /// [connection FnSteamNetConnectionStatusChanged] Callback that will be invoked + /// when the state of a connection changes. + /// + /// IMPORTANT: callbacks are dispatched to the handler that is in effect at the time + /// the event occurs, which might be in another thread. For example, immediately after + /// creating a listen socket, you may receive an incoming connection. And then immediately + /// after this, the remote host may close the connection. All of this could happen + /// before the function to create the listen socket has returned. For this reason, + /// callbacks usually must be in effect at the time of object creation. This means + /// you should set them when you are creating the listen socket or connection, or have + /// them in effect so they will be inherited at the time of object creation. + /// + /// For example: + /// + /// exterm void MyStatusChangedFunc( SteamNetConnectionStatusChangedCallback_t *info ); + /// SteamNetworkingConfigValue_t opt; opt.SetPtr( k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, MyStatusChangedFunc ); + /// SteamNetworkingIPAddr localAddress; localAddress.Clear(); + /// HSteamListenSocket hListenSock = SteamNetworkingSockets()->CreateListenSocketIP( localAddress, 1, &opt ); + /// + /// When accepting an incoming connection, there is no atomic way to switch the + /// callback. However, if the connection is DOA, AcceptConnection() will fail, and + /// you can fetch the state of the connection at that time. + /// + /// If all connections and listen sockets can use the same callback, the simplest + /// method is to set it globally before you create any listen sockets or connections. + k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged = 201, + + /// [global FnSteamNetAuthenticationStatusChanged] Callback that will be invoked + /// when our auth state changes. If you use this, install the callback before creating + /// any connections or listen sockets, and don't change it. + /// See: ISteamNetworkingUtils::SetGlobalCallback_SteamNetAuthenticationStatusChanged + k_ESteamNetworkingConfig_Callback_AuthStatusChanged = 202, + + /// [global FnSteamRelayNetworkStatusChanged] Callback that will be invoked + /// when our auth state changes. If you use this, install the callback before creating + /// any connections or listen sockets, and don't change it. + /// See: ISteamNetworkingUtils::SetGlobalCallback_SteamRelayNetworkStatusChanged + k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged = 203, + + /// [global FnSteamNetworkingMessagesSessionRequest] Callback that will be invoked + /// when a peer wants to initiate a SteamNetworkingMessagesSessionRequest. + /// See: ISteamNetworkingUtils::SetGlobalCallback_MessagesSessionRequest + k_ESteamNetworkingConfig_Callback_MessagesSessionRequest = 204, + + /// [global FnSteamNetworkingMessagesSessionFailed] Callback that will be invoked + /// when a session you have initiated, or accepted either fails to connect, or loses + /// connection in some unexpected way. + /// See: ISteamNetworkingUtils::SetGlobalCallback_MessagesSessionFailed + k_ESteamNetworkingConfig_Callback_MessagesSessionFailed = 205, + + /// [global FnSteamNetworkingSocketsCreateConnectionSignaling] Callback that will + /// be invoked when we need to create a signaling object for a connection + /// initiated locally. See: ISteamNetworkingSockets::ConnectP2P, + /// ISteamNetworkingMessages. + k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling = 206, + + /// [global FnSteamNetworkingFakeIPResult] Callback that's invoked when + /// a FakeIP allocation finishes. See: ISteamNetworkingSockets::BeginAsyncRequestFakeIP, + /// ISteamNetworkingUtils::SetGlobalCallback_FakeIPResult + k_ESteamNetworkingConfig_Callback_FakeIPResult = 207, + +// +// P2P connection settings +// + +// /// [listen socket int32] When you create a P2P listen socket, we will automatically +// /// open up a UDP port to listen for LAN connections. LAN connections can be made +// /// without any signaling: both sides can be disconnected from the Internet. +// /// +// /// This value can be set to zero to disable the feature. +// k_ESteamNetworkingConfig_P2P_Discovery_Server_LocalPort = 101, +// +// /// [connection int32] P2P connections can perform broadcasts looking for the peer +// /// on the LAN. +// k_ESteamNetworkingConfig_P2P_Discovery_Client_RemotePort = 102, + + /// [connection string] Comma-separated list of STUN servers that can be used + /// for NAT piercing. If you set this to an empty string, NAT piercing will + /// not be attempted. Also if "public" candidates are not allowed for + /// P2P_Transport_ICE_Enable, then this is ignored. + k_ESteamNetworkingConfig_P2P_STUN_ServerList = 103, + + /// [connection int32] What types of ICE candidates to share with the peer. + /// See k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_xxx values + k_ESteamNetworkingConfig_P2P_Transport_ICE_Enable = 104, + + /// [connection int32] When selecting P2P transport, add various + /// penalties to the scores for selected transports. (Route selection + /// scores are on a scale of milliseconds. The score begins with the + /// route ping time and is then adjusted.) + k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty = 105, + k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty = 106, + k_ESteamNetworkingConfig_P2P_TURN_ServerList = 107, + k_ESteamNetworkingConfig_P2P_TURN_UserList = 108, + k_ESteamNetworkingConfig_P2P_TURN_PassList = 109, + //k_ESteamNetworkingConfig_P2P_Transport_LANBeacon_Penalty = 107, + k_ESteamNetworkingConfig_P2P_Transport_ICE_Implementation = 110, + +// +// Settings for SDR relayed connections +// /// [int32 global] If the first N pings to a port all fail, mark that port as unavailable for /// a while, and try a different one. Some ISPs and routers may drop the first @@ -968,20 +1544,107 @@ enum ESteamNetworkingConfigValue /// this set (maybe just one). Comma-separated list. k_ESteamNetworkingConfig_SDRClient_ForceProxyAddr = 31, - // - // Log levels for debuging information. A higher priority - // (lower numeric value) will cause more stuff to be printed. - // + /// [global string] For debugging. Force ping times to clusters to be the specified + /// values. A comma separated list of = values. E.g. "sto=32,iad=100" + /// + /// This is a dev configuration value, you probably should not let users modify it + /// in production. + k_ESteamNetworkingConfig_SDRClient_FakeClusterPing = 36, + +// +// Log levels for debugging information of various subsystems. +// Higher numeric values will cause more stuff to be printed. +// See ISteamNetworkingUtils::SetDebugOutputFunction for more +// information +// +// The default for all values is k_ESteamNetworkingSocketsDebugOutputType_Warning. +// k_ESteamNetworkingConfig_LogLevel_AckRTT = 13, // [connection int32] RTT calculations for inline pings and replies - k_ESteamNetworkingConfig_LogLevel_PacketDecode = 14, // [connection int32] log SNP packets send + k_ESteamNetworkingConfig_LogLevel_PacketDecode = 14, // [connection int32] log SNP packets send/recv k_ESteamNetworkingConfig_LogLevel_Message = 15, // [connection int32] log each message send/recv k_ESteamNetworkingConfig_LogLevel_PacketGaps = 16, // [connection int32] dropped packets k_ESteamNetworkingConfig_LogLevel_P2PRendezvous = 17, // [connection int32] P2P rendezvous messages k_ESteamNetworkingConfig_LogLevel_SDRRelayPings = 18, // [global int32] Ping relays + + // Deleted, do not use + k_ESteamNetworkingConfig_DELETED_EnumerateDevVars = 35, + k_ESteamNetworkingConfigValue__Force32Bit = 0x7fffffff }; +// Bitmask of types to share +const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Default = -1; // Special value - use user defaults +const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Disable = 0; // Do not do any ICE work at all or share any IP addresses with peer +const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Relay = 1; // Relayed connection via TURN server. +const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Private = 2; // host addresses that appear to be link-local or RFC1918 addresses +const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public = 4; // STUN reflexive addresses, or host address that isn't a "private" address +const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All = 0x7fffffff; + +/// In a few places we need to set configuration options on listen sockets and connections, and +/// have them take effect *before* the listen socket or connection really starts doing anything. +/// Creating the object and then setting the options "immediately" after creation doesn't work +/// completely, because network packets could be received between the time the object is created and +/// when the options are applied. To set options at creation time in a reliable way, they must be +/// passed to the creation function. This structure is used to pass those options. +/// +/// For the meaning of these fields, see ISteamNetworkingUtils::SetConfigValue. Basically +/// when the object is created, we just iterate over the list of options and call +/// ISteamNetworkingUtils::SetConfigValueStruct, where the scope arguments are supplied by the +/// object being created. +struct SteamNetworkingConfigValue_t +{ + /// Which option is being set + ESteamNetworkingConfigValue m_eValue; + + /// Which field below did you fill in? + ESteamNetworkingConfigDataType m_eDataType; + + /// Option value + union + { + int32_t m_int32; + int64_t m_int64; + float m_float; + const char *m_string; // Points to your '\0'-terminated buffer + void *m_ptr; + } m_val; + + // + // Shortcut helpers to set the type and value in a single call + // + inline void SetInt32( ESteamNetworkingConfigValue eVal, int32_t data ) + { + m_eValue = eVal; + m_eDataType = k_ESteamNetworkingConfig_Int32; + m_val.m_int32 = data; + } + inline void SetInt64( ESteamNetworkingConfigValue eVal, int64_t data ) + { + m_eValue = eVal; + m_eDataType = k_ESteamNetworkingConfig_Int64; + m_val.m_int64 = data; + } + inline void SetFloat( ESteamNetworkingConfigValue eVal, float data ) + { + m_eValue = eVal; + m_eDataType = k_ESteamNetworkingConfig_Float; + m_val.m_float = data; + } + inline void SetPtr( ESteamNetworkingConfigValue eVal, void *data ) + { + m_eValue = eVal; + m_eDataType = k_ESteamNetworkingConfig_Ptr; + m_val.m_ptr = data; + } + inline void SetString( ESteamNetworkingConfigValue eVal, const char *data ) // WARNING - Just saves your pointer. Does NOT make a copy of the string + { + m_eValue = eVal; + m_eDataType = k_ESteamNetworkingConfig_Ptr; + m_val.m_string = data; + } +}; + /// Return value of ISteamNetworkintgUtils::GetConfigValue enum ESteamNetworkingGetConfigValueResult { @@ -1048,10 +1711,14 @@ inline SteamNetworkingPOPID CalculateSteamNetworkingPOPIDFromString( const char } /// Unpack integer to string representation, including terminating '\0' +/// +/// See also SteamNetworkingPOPIDRender template inline void GetSteamNetworkingLocationPOPStringFromID( SteamNetworkingPOPID id, char (&szCode)[N] ) { +#if !defined( __GNUC__ ) || __GNUC__ >= 5 static_assert( N >= 5, "Fixed-size buffer not big enough to hold SDR POP ID" ); +#endif szCode[0] = char( id >> 16U ); szCode[1] = char( id >> 8U ); szCode[2] = char( id ); @@ -1059,9 +1726,26 @@ inline void GetSteamNetworkingLocationPOPStringFromID( SteamNetworkingPOPID id, szCode[4] = 0; } +/// The POPID "dev" is used in non-production environments for testing. +const SteamNetworkingPOPID k_SteamDatagramPOPID_dev = ( (uint32)'d' << 16U ) | ( (uint32)'e' << 8U ) | (uint32)'v'; + +#ifndef API_GEN + +/// Utility class for printing a SteamNetworkingPOPID. +struct SteamNetworkingPOPIDRender +{ + SteamNetworkingPOPIDRender( SteamNetworkingPOPID x ) { GetSteamNetworkingLocationPOPStringFromID( x, buf ); } + inline const char *c_str() const { return buf; } +private: + char buf[ 8 ]; +}; + +#endif + /////////////////////////////////////////////////////////////////////////////// // // Internal stuff +#ifndef API_GEN // For code compatibility typedef SteamNetworkingMessage_t ISteamNetworkingMessage; @@ -1085,30 +1769,28 @@ inline void SteamNetworkingIdentity::SetSteamID64( uint64 steamID ) { m_eType = inline uint64 SteamNetworkingIdentity::GetSteamID64() const { return m_eType == k_ESteamNetworkingIdentityType_SteamID ? m_steamID64 : 0; } inline bool SteamNetworkingIdentity::SetXboxPairwiseID( const char *pszString ) { size_t l = strlen( pszString ); if ( l < 1 || l >= sizeof(m_szXboxPairwiseID) ) return false; m_eType = k_ESteamNetworkingIdentityType_XboxPairwiseID; m_cbSize = int(l+1); memcpy( m_szXboxPairwiseID, pszString, m_cbSize ); return true; } -inline const char *SteamNetworkingIdentity::GetXboxPairwiseID() const { return m_eType == k_ESteamNetworkingIdentityType_XboxPairwiseID ? m_szXboxPairwiseID : nullptr; } +inline const char *SteamNetworkingIdentity::GetXboxPairwiseID() const { return m_eType == k_ESteamNetworkingIdentityType_XboxPairwiseID ? m_szXboxPairwiseID : NULL; } +inline void SteamNetworkingIdentity::SetPSNID( uint64 id ) { m_eType = k_ESteamNetworkingIdentityType_SonyPSN; m_cbSize = sizeof( m_PSNID ); m_PSNID = id; } +inline uint64 SteamNetworkingIdentity::GetPSNID() const { return m_eType == k_ESteamNetworkingIdentityType_SonyPSN ? m_PSNID : 0; } +inline void SteamNetworkingIdentity::SetStadiaID( uint64 id ) { m_eType = k_ESteamNetworkingIdentityType_GoogleStadia; m_cbSize = sizeof( m_stadiaID ); m_stadiaID = id; } +inline uint64 SteamNetworkingIdentity::GetStadiaID() const { return m_eType == k_ESteamNetworkingIdentityType_GoogleStadia ? m_stadiaID : 0; } inline void SteamNetworkingIdentity::SetIPAddr( const SteamNetworkingIPAddr &addr ) { m_eType = k_ESteamNetworkingIdentityType_IPAddress; m_cbSize = (int)sizeof(m_ip); m_ip = addr; } -inline const SteamNetworkingIPAddr *SteamNetworkingIdentity::GetIPAddr() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress ? &m_ip : nullptr; } +inline const SteamNetworkingIPAddr *SteamNetworkingIdentity::GetIPAddr() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress ? &m_ip : NULL; } +inline void SteamNetworkingIdentity::SetIPv4Addr( uint32 nIPv4, uint16 nPort ) { m_eType = k_ESteamNetworkingIdentityType_IPAddress; m_cbSize = (int)sizeof(m_ip); m_ip.SetIPv4( nIPv4, nPort ); } +inline uint32 SteamNetworkingIdentity::GetIPv4() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress ? m_ip.GetIPv4() : 0; } +inline ESteamNetworkingFakeIPType SteamNetworkingIdentity::GetFakeIPType() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress ? m_ip.GetFakeIPType() : k_ESteamNetworkingFakeIPType_Invalid; } inline void SteamNetworkingIdentity::SetLocalHost() { m_eType = k_ESteamNetworkingIdentityType_IPAddress; m_cbSize = (int)sizeof(m_ip); m_ip.SetIPv6LocalHost(); } inline bool SteamNetworkingIdentity::IsLocalHost() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress && m_ip.IsLocalHost(); } inline bool SteamNetworkingIdentity::SetGenericString( const char *pszString ) { size_t l = strlen( pszString ); if ( l >= sizeof(m_szGenericString) ) return false; m_eType = k_ESteamNetworkingIdentityType_GenericString; m_cbSize = int(l+1); memcpy( m_szGenericString, pszString, m_cbSize ); return true; } -inline const char *SteamNetworkingIdentity::GetGenericString() const { return m_eType == k_ESteamNetworkingIdentityType_GenericString ? m_szGenericString : nullptr; } +inline const char *SteamNetworkingIdentity::GetGenericString() const { return m_eType == k_ESteamNetworkingIdentityType_GenericString ? m_szGenericString : NULL; } inline bool SteamNetworkingIdentity::SetGenericBytes( const void *data, size_t cbLen ) { if ( cbLen > sizeof(m_genericBytes) ) return false; m_eType = k_ESteamNetworkingIdentityType_GenericBytes; m_cbSize = int(cbLen); memcpy( m_genericBytes, data, m_cbSize ); return true; } -inline const uint8 *SteamNetworkingIdentity::GetGenericBytes( int &cbLen ) const { if ( m_eType != k_ESteamNetworkingIdentityType_GenericBytes ) return nullptr; +inline const uint8 *SteamNetworkingIdentity::GetGenericBytes( int &cbLen ) const { if ( m_eType != k_ESteamNetworkingIdentityType_GenericBytes ) return NULL; cbLen = m_cbSize; return m_genericBytes; } inline bool SteamNetworkingIdentity::operator==(const SteamNetworkingIdentity &x ) const { return m_eType == x.m_eType && m_cbSize == x.m_cbSize && memcmp( m_genericBytes, x.m_genericBytes, m_cbSize ) == 0; } inline void SteamNetworkingMessage_t::Release() { (*m_pfnRelease)( this ); } -#if defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) || !defined( STEAMNETWORKINGSOCKETS_STEAM ) -STEAMNETWORKINGSOCKETS_INTERFACE void SteamAPI_SteamNetworkingIPAddr_ToString( const SteamNetworkingIPAddr *pAddr, char *buf, size_t cbBuf, bool bWithPort ); -STEAMNETWORKINGSOCKETS_INTERFACE bool SteamAPI_SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr *pAddr, const char *pszStr ); -STEAMNETWORKINGSOCKETS_INTERFACE void SteamAPI_SteamNetworkingIdentity_ToString( const SteamNetworkingIdentity &identity, char *buf, size_t cbBuf ); -STEAMNETWORKINGSOCKETS_INTERFACE bool SteamAPI_SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity *pIdentity, size_t sizeofIdentity, const char *pszStr ); -inline void SteamNetworkingIPAddr::ToString( char *buf, size_t cbBuf, bool bWithPort ) const { SteamAPI_SteamNetworkingIPAddr_ToString( this, buf, cbBuf, bWithPort ); } -inline bool SteamNetworkingIPAddr::ParseString( const char *pszStr ) { return SteamAPI_SteamNetworkingIPAddr_ParseString( this, pszStr ); } -inline void SteamNetworkingIdentity::ToString( char *buf, size_t cbBuf ) const { SteamAPI_SteamNetworkingIdentity_ToString( *this, buf, cbBuf ); } -inline bool SteamNetworkingIdentity::ParseString( const char *pszStr ) { return SteamAPI_SteamNetworkingIdentity_ParseString( this, sizeof(*this), pszStr ); } -#endif +#endif // #ifndef API_GEN #endif // #ifndef STEAMNETWORKINGTYPES diff --git a/Generator/steam_sdk/steamtypes.h b/Generator/steam_sdk/steamtypes.h index 72d2d17..7b60434 100644 --- a/Generator/steam_sdk/steamtypes.h +++ b/Generator/steam_sdk/steamtypes.h @@ -17,26 +17,31 @@ typedef unsigned char uint8; #endif -#if defined( __GNUC__ ) && !defined(POSIX) +#if defined( __GNUC__ ) && !defined(_WIN32) && !defined(POSIX) #if __GNUC__ < 4 #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" #endif #define POSIX 1 #endif -#if defined(__x86_64__) || defined(_WIN64) || defined(__aarch64__) +#if defined(__LP64__) || defined(__x86_64__) || defined(_WIN64) || defined(__aarch64__) || defined(__s390x__) #define X64BITS #endif +#if !defined(VALVE_BIG_ENDIAN) +#if defined(_PS3) // Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. -#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) -#define VALVE_BIG_ENDIAN +#define VALVE_BIG_ENDIAN 1 +#endif +#if defined( __GNUC__ ) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define VALVE_BIG_ENDIAN 1 +#endif #endif typedef unsigned char uint8; typedef signed char int8; -#if defined( _WIN32 ) +#if defined( _WIN32 ) && !defined( __GNUC__ ) typedef __int16 int16; typedef unsigned __int16 uint16; @@ -84,104 +89,100 @@ typedef unsigned int uintp; #endif // else _WIN32 -#ifdef API_GEN -# define STEAM_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) -#else -# define STEAM_CLANG_ATTR(ATTR) -#endif - -#define STEAM_METHOD_DESC(DESC) STEAM_CLANG_ATTR( "desc:" #DESC ";" ) -#define STEAM_IGNOREATTR() STEAM_CLANG_ATTR( "ignore" ) -#define STEAM_OUT_STRUCT() STEAM_CLANG_ATTR( "out_struct: ;" ) -#define STEAM_OUT_STRING() STEAM_CLANG_ATTR( "out_string: ;" ) -#define STEAM_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) STEAM_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) -#define STEAM_OUT_ARRAY_COUNT(COUNTER, DESC) STEAM_CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) -#define STEAM_ARRAY_COUNT(COUNTER) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";" ) -#define STEAM_ARRAY_COUNT_D(COUNTER, DESC) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) -#define STEAM_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) -#define STEAM_OUT_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) -#define STEAM_OUT_STRING_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) -#define STEAM_DESC(DESC) STEAM_CLANG_ATTR("desc:" #DESC ";") -#define STEAM_CALL_RESULT(RESULT_TYPE) STEAM_CLANG_ATTR("callresult:" #RESULT_TYPE ";") -#define STEAM_CALL_BACK(RESULT_TYPE) STEAM_CLANG_ATTR("callback:" #RESULT_TYPE ";") - -const int k_cubSaltSize = 8; -typedef uint8 Salt_t[ k_cubSaltSize ]; - -//----------------------------------------------------------------------------- -// GID (GlobalID) stuff -// This is a globally unique identifier. It's guaranteed to be unique across all -// racks and servers for as long as a given universe persists. -//----------------------------------------------------------------------------- -// NOTE: for GID parsing/rendering and other utils, see gid.h -typedef uint64 GID_t; - -const GID_t k_GIDNil = 0xffffffffffffffffull; - -// For convenience, we define a number of types that are just new names for GIDs -typedef uint64 JobID_t; // Each Job has a unique ID -typedef GID_t TxnID_t; // Each financial transaction has a unique ID - -const GID_t k_TxnIDNil = k_GIDNil; -const GID_t k_TxnIDUnknown = 0; - -const JobID_t k_JobIDNil = 0xffffffffffffffffull; - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. -typedef uint32 PackageId_t; -const PackageId_t k_uPackageIdFreeSub = 0x0; -const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; - -typedef uint32 BundleId_t; -const BundleId_t k_uBundleIdInvalid = 0; - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. typedef uint32 AppId_t; const AppId_t k_uAppIdInvalid = 0x0; -typedef uint64 AssetClassId_t; -const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; - -typedef uint32 PhysicalItemId_t; -const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; - - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. AppIds and DepotIDs also presently -// share the same namespace, but since we'd like to change that in the future -// I've defined it seperately here. +// AppIds and DepotIDs also presently share the same namespace typedef uint32 DepotId_t; const DepotId_t k_uDepotIdInvalid = 0x0; -// RTime32 -// We use this 32 bit time representing real world time. -// It offers 1 second resolution beginning on January 1, 1970 (Unix time) +// RTime32. Seconds elapsed since Jan 1 1970, i.e. unix timestamp. +// It's the same as time_t, but it is always 32-bit and unsigned. typedef uint32 RTime32; -typedef uint32 CellID_t; -const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; - // handle to a Steam API call typedef uint64 SteamAPICall_t; const SteamAPICall_t k_uAPICallInvalid = 0x0; typedef uint32 AccountID_t; -typedef uint32 PartnerId_t; -const PartnerId_t k_uPartnerIdInvalid = 0; - -// ID for a depot content manifest -typedef uint64 ManifestId_t; -const ManifestId_t k_uManifestIdInvalid = 0; - -// ID for cafe sites -typedef uint64 SiteId_t; -const SiteId_t k_ulSiteIdInvalid = 0; - // Party Beacon ID typedef uint64 PartyBeaconID_t; const PartyBeaconID_t k_ulPartyBeaconIdInvalid = 0; +enum ESteamIPType +{ + k_ESteamIPTypeIPv4 = 0, + k_ESteamIPTypeIPv6 = 1, +}; + +#pragma pack( push, 1 ) + +struct SteamIPAddress_t +{ + union { + + uint32 m_unIPv4; // Host order + uint8 m_rgubIPv6[16]; // Network order! Same as inaddr_in6. (0011:2233:4455:6677:8899:aabb:ccdd:eeff) + + // Internal use only + uint64 m_ipv6Qword[2]; // big endian + }; + + ESteamIPType m_eType; + + bool IsSet() const + { + if ( k_ESteamIPTypeIPv4 == m_eType ) + { + return m_unIPv4 != 0; + } + else + { + return m_ipv6Qword[0] !=0 || m_ipv6Qword[1] != 0; + } + } + + static SteamIPAddress_t IPv4Any() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv4; + ipOut.m_unIPv4 = 0; + + return ipOut; + } + + static SteamIPAddress_t IPv6Any() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv6; + ipOut.m_ipv6Qword[0] = 0; + ipOut.m_ipv6Qword[1] = 0; + + return ipOut; + } + + static SteamIPAddress_t IPv4Loopback() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv4; + ipOut.m_unIPv4 = 0x7f000001; + + return ipOut; + } + + static SteamIPAddress_t IPv6Loopback() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv6; + ipOut.m_ipv6Qword[0] = 0; + ipOut.m_ipv6Qword[1] = 0; + ipOut.m_rgubIPv6[15] = 1; + + return ipOut; + } +}; + +#pragma pack( pop ) + #endif // STEAMTYPES_H diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 3aa7ccc..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,46 +0,0 @@ -node ( 'vs2017' ) -{ - try - { - stage 'Checkout' - checkout scm - - stage 'Restore' - bat "dotnet restore Facepunch.Steamworks/Facepunch.Steamworks.Win32.csproj" - bat "dotnet restore Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj" - bat "dotnet restore Facepunch.Steamworks/Facepunch.Steamworks.Posix32.csproj" - bat "dotnet restore Facepunch.Steamworks/Facepunch.Steamworks.Posix64.csproj" - - stage 'Build Release' - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Win32.csproj --configuration Release" - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj --configuration Release" - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Posix32.csproj --configuration Release" - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Posix64.csproj --configuration Release" - - stage 'Build Debug' - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Win32.csproj --configuration Debug" - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj --configuration Debug" - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Posix32.csproj --configuration Debug" - bat "dotnet build Facepunch.Steamworks/Facepunch.Steamworks.Posix64.csproj --configuration Debug" - - stage 'Archive' - archiveArtifacts artifacts: 'Facepunch.Steamworks/bin/**/*' - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Win32.dll UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Win32.pdb UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Win32.xml UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Win64.dll UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Win64.pdb UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Win64.xml UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Posix32.dll UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Posix32.pdb UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Posix32.xml UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Posix64.dll UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Posix64.pdb UnityPlugin\\" ) - bat( "copy /Y Facepunch.Steamworks\\bin\\Debug\\netstandard2.0\\Facepunch.Steamworks.Posix64.xml UnityPlugin\\" ) - archiveArtifacts artifacts: 'UnityPlugin/**/*' - } - finally - { - cleanWs() - } -} \ No newline at end of file diff --git a/README.md b/README.md index 7a9ed0a..22a0b61 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # Facepunch.Steamworks -Another fucking c# Steamworks implementation -[![Build Status](http://build.facepunch.com/buildStatus/icon?job=Facepunch/Facepunch.Steamworks/master)](http://build.facepunch.com/job/Facepunch/job/Facepunch.Steamworks/job/master/) +[Another fucking c# Steamworks implementation](https://wiki.facepunch.com/steamworks/) + +![Build All](https://github.com/Crytilis/Facepunch.Steamworks/workflows/Build%20All/badge.svg) ## Features @@ -17,7 +18,7 @@ Another fucking c# Steamworks implementation | Single C# dll (no native requirements apart from Steam) | ✔ | | Open Source | ✔ | | MIT license | ✔ | -| Any 32bit OS | ❌ | +| Any 32bit OS | ✔ | ## Why @@ -46,8 +47,8 @@ C# is meant to make things easier. So lets try to wrap it up in a way that makes ```csharp foreach ( var friend in SteamFriends.GetFriends() ) { - Console.WriteLine( "{friend.Id}: {friend.Name}" ); - Console.WriteLine( "{friend.IsOnline} / {friend.SteamLevel}" ); + Console.WriteLine( $"{friend.Id}: {friend.Name}" ); + Console.WriteLine( $"{friend.IsOnline} / {friend.SteamLevel}" ); friend.SendMessage( "Hello Friend" ); } @@ -70,7 +71,7 @@ foreach ( var friend in SteamFriends.GetFriends() ) var image = await SteamFriends.GetLargeAvatarAsync( steamid ); if ( !image.HasValue ) return DefaultImage; - return MakeTextureFromRGBA( image.Data, image.Width, image.Height ); + return MakeTextureFromRGBA( image.Value.Data, image.Value.Width, image.Value.Height ); ``` ### Get a list of servers @@ -95,7 +96,7 @@ List them ```csharp foreach ( var a in SteamUserStats.Achievements ) { - Console.WriteLine( $"{a.Name} ({a.State}})" ); + Console.WriteLine( $"{a.Name} ({a.State})" ); } ``` @@ -199,7 +200,7 @@ Query a list of workshop items foreach ( Ugc.Item entry in result.Value.Entries ) { - Console.WriteLine( $" {entry.Title}" ); + Console.WriteLine( $"{entry.Title}" ); } ``` @@ -240,7 +241,7 @@ Write a cloud file Read a cloud file ```csharp - var fileContents = SteamRemoteStorage.ReadFile( "file.txt" ); + var fileContents = SteamRemoteStorage.FileRead( "file.txt" ); ``` List all files @@ -349,6 +350,8 @@ Wanna help? Go for it, pull requests, bug reports, yes, do it. You can also hit up the [Steamworks Thread](http://steamcommunity.com/groups/steamworks/discussions/0/1319961618833314524/) for help/discussion. +We also have [a wiki you can read](https://wiki.facepunch.com/steamworks/) and help fill out with examples and advice. + # License MIT - do whatever you want. diff --git a/UnityPlugin/Facepunch.Steamworks.Posix.dll.meta b/UnityPlugin/Facepunch.Steamworks.Posix.dll.meta new file mode 100644 index 0000000..1e31fb9 --- /dev/null +++ b/UnityPlugin/Facepunch.Steamworks.Posix.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: fc89a528dd38bd04a90af929e9c0f80e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: OSX + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityPlugin/Facepunch.Steamworks.pdb.meta b/UnityPlugin/Facepunch.Steamworks.Posix.pdb.meta similarity index 74% rename from UnityPlugin/Facepunch.Steamworks.pdb.meta rename to UnityPlugin/Facepunch.Steamworks.Posix.pdb.meta index c16fa0e..38f5017 100644 --- a/UnityPlugin/Facepunch.Steamworks.pdb.meta +++ b/UnityPlugin/Facepunch.Steamworks.Posix.pdb.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: dd29afd67a2b68243b283f848e393b97 +guid: 70840efe0f145064cbb0b568f11d7ff5 DefaultImporter: externalObjects: {} userData: diff --git a/UnityPlugin/Facepunch.Steamworks.xml.meta b/UnityPlugin/Facepunch.Steamworks.Posix.xml.meta similarity index 75% rename from UnityPlugin/Facepunch.Steamworks.xml.meta rename to UnityPlugin/Facepunch.Steamworks.Posix.xml.meta index f6becc8..5e5f20c 100644 --- a/UnityPlugin/Facepunch.Steamworks.xml.meta +++ b/UnityPlugin/Facepunch.Steamworks.Posix.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 238ade710c967c74bb035e6179469ddd +guid: f13b7820b3a9b6145a8ea48a92291748 TextScriptImporter: externalObjects: {} userData: diff --git a/UnityPlugin/Facepunch.Steamworks.Win32.dll.meta b/UnityPlugin/Facepunch.Steamworks.Win32.dll.meta new file mode 100644 index 0000000..c824695 --- /dev/null +++ b/UnityPlugin/Facepunch.Steamworks.Win32.dll.meta @@ -0,0 +1,81 @@ +fileFormatVersion: 2 +guid: fb41692bc4208c0449c96c0576331408 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 0 + Exclude Win64: 1 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityPlugin/Facepunch.Steamworks.Win32.pdb.meta b/UnityPlugin/Facepunch.Steamworks.Win32.pdb.meta new file mode 100644 index 0000000..0d4f596 --- /dev/null +++ b/UnityPlugin/Facepunch.Steamworks.Win32.pdb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b8e838f93aba6a47a16dbe26efbe02d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityPlugin/Facepunch.Steamworks.Win32.xml.meta b/UnityPlugin/Facepunch.Steamworks.Win32.xml.meta new file mode 100644 index 0000000..4b60cf0 --- /dev/null +++ b/UnityPlugin/Facepunch.Steamworks.Win32.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1c9eb7c3219a16948b7520dc7026cf20 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityPlugin/Facepunch.Steamworks.Win64.dll.meta b/UnityPlugin/Facepunch.Steamworks.Win64.dll.meta new file mode 100644 index 0000000..d0a3d4b --- /dev/null +++ b/UnityPlugin/Facepunch.Steamworks.Win64.dll.meta @@ -0,0 +1,95 @@ +fileFormatVersion: 2 +guid: b3ad7ccc15f481747842885a21b7b4ab +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 0 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityPlugin/Facepunch.Steamworks.Win64.pdb.meta b/UnityPlugin/Facepunch.Steamworks.Win64.pdb.meta new file mode 100644 index 0000000..632c125 --- /dev/null +++ b/UnityPlugin/Facepunch.Steamworks.Win64.pdb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5f57f6707f14421449c3145099b82743 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityPlugin/Facepunch.Steamworks.Win64.xml.meta b/UnityPlugin/Facepunch.Steamworks.Win64.xml.meta new file mode 100644 index 0000000..bf80f5b --- /dev/null +++ b/UnityPlugin/Facepunch.Steamworks.Win64.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea452b431085aed499c01339e89fce8b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityPlugin/Facepunch.Steamworks.dll.meta b/UnityPlugin/Facepunch.Steamworks.dll.meta deleted file mode 100644 index ac818be..0000000 --- a/UnityPlugin/Facepunch.Steamworks.dll.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: a8f68628902ac4949919f2f5865f15c2 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityPlugin/redistributable_bin/linux32/libsteam_api.so b/UnityPlugin/redistributable_bin/linux32/libsteam_api.so index 348a107..9476561 100644 Binary files a/UnityPlugin/redistributable_bin/linux32/libsteam_api.so and b/UnityPlugin/redistributable_bin/linux32/libsteam_api.so differ diff --git a/UnityPlugin/redistributable_bin/linux64/libsteam_api.so b/UnityPlugin/redistributable_bin/linux64/libsteam_api.so index eb230a9..d755843 100644 Binary files a/UnityPlugin/redistributable_bin/linux64/libsteam_api.so and b/UnityPlugin/redistributable_bin/linux64/libsteam_api.so differ diff --git a/UnityPlugin/redistributable_bin/osx32.meta b/UnityPlugin/redistributable_bin/osx.meta similarity index 100% rename from UnityPlugin/redistributable_bin/osx32.meta rename to UnityPlugin/redistributable_bin/osx.meta diff --git a/UnityPlugin/redistributable_bin/osx/libsteam_api.dylib b/UnityPlugin/redistributable_bin/osx/libsteam_api.dylib new file mode 100644 index 0000000..41fc923 Binary files /dev/null and b/UnityPlugin/redistributable_bin/osx/libsteam_api.dylib differ diff --git a/UnityPlugin/redistributable_bin/osx32/libsteam_api.bundle.meta b/UnityPlugin/redistributable_bin/osx/libsteam_api.dylib.meta similarity index 51% rename from UnityPlugin/redistributable_bin/osx32/libsteam_api.bundle.meta rename to UnityPlugin/redistributable_bin/osx/libsteam_api.dylib.meta index c0be5c9..1f2df2e 100644 --- a/UnityPlugin/redistributable_bin/osx32/libsteam_api.bundle.meta +++ b/UnityPlugin/redistributable_bin/osx/libsteam_api.dylib.meta @@ -11,6 +11,16 @@ PluginImporter: isExplicitlyReferenced: 0 validateReferences: 1 platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux64: 1 + Exclude OSXUniversal: 0 + Exclude Win: 1 + Exclude Win64: 1 - first: Any: second: @@ -21,12 +31,33 @@ PluginImporter: second: enabled: 1 settings: + CPU: AnyCPU DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 - first: Standalone: OSXUniversal second: enabled: 1 - settings: {} + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: x86_64 userData: assetBundleName: assetBundleVariant: diff --git a/UnityPlugin/redistributable_bin/osx32/libsteam_api.bundle b/UnityPlugin/redistributable_bin/osx32/libsteam_api.bundle deleted file mode 100644 index ce8dc57..0000000 Binary files a/UnityPlugin/redistributable_bin/osx32/libsteam_api.bundle and /dev/null differ diff --git a/UnityPlugin/redistributable_bin/steam_api.dll b/UnityPlugin/redistributable_bin/steam_api.dll index 060b6b9..3c4d47f 100644 Binary files a/UnityPlugin/redistributable_bin/steam_api.dll and b/UnityPlugin/redistributable_bin/steam_api.dll differ diff --git a/UnityPlugin/redistributable_bin/steam_api.lib b/UnityPlugin/redistributable_bin/steam_api.lib index 07bf145..44d01ec 100644 Binary files a/UnityPlugin/redistributable_bin/steam_api.lib and b/UnityPlugin/redistributable_bin/steam_api.lib differ diff --git a/UnityPlugin/redistributable_bin/win64/steam_api64.dll b/UnityPlugin/redistributable_bin/win64/steam_api64.dll index 328dade..5b798af 100644 Binary files a/UnityPlugin/redistributable_bin/win64/steam_api64.dll and b/UnityPlugin/redistributable_bin/win64/steam_api64.dll differ diff --git a/UnityPlugin/redistributable_bin/win64/steam_api64.lib b/UnityPlugin/redistributable_bin/win64/steam_api64.lib index 6370681..7b6b2f8 100644 Binary files a/UnityPlugin/redistributable_bin/win64/steam_api64.lib and b/UnityPlugin/redistributable_bin/win64/steam_api64.lib differ