├── .gitignore ├── .vs └── ExampleBot │ └── v15 │ ├── .suo │ └── Server │ └── sqlite3 │ ├── db.lock │ └── storage.ide ├── DotnetCoreRunner ├── DotnetCoreRunner.csproj └── Program.cs ├── ExampleBot.sln ├── ExampleBot ├── App.config ├── ExampleBot.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── YourBot.cs ├── obj │ ├── ExampleBot.csproj.nuget.dgspec.json │ ├── ExampleBot.csproj.nuget.g.props │ ├── ExampleBot.csproj.nuget.g.targets │ ├── project.assets.json │ └── project.nuget.cache └── packages.config ├── LICENSE ├── PROTOCOL_LICENSE ├── README.md ├── SC2API-CSharp ├── Bot.cs ├── CLArgs.cs ├── GameConnection.cs ├── ProtobufProxy.cs └── SC2API-CSharp.csproj ├── SC2APIProtocol ├── Common.cs ├── Data.cs ├── Debug.cs ├── Error.cs ├── Query.cs ├── Raw.cs ├── SC2APIProtocol.csproj ├── Sc2Api.cs ├── Score.cs ├── Spatial.cs └── Ui.cs ├── ladderbots.json └── packages └── Google.Protobuf.3.5.1 ├── Google.Protobuf.3.5.1.nupkg └── lib ├── net45 ├── Google.Protobuf.dll └── Google.Protobuf.xml └── netstandard1.0 ├── Google.Protobuf.dll └── Google.Protobuf.xml /.gitignore: -------------------------------------------------------------------------------- 1 | packages/ 2 | Tyr/bin/ 3 | Tyr/obj/ 4 | SC2API-CSharp/bin/ 5 | SC2API-CSharp/obj/ 6 | SC2APIProtocol/bin/ 7 | SC2APIProtocol/obj/ 8 | ExampleBot/bin/ 9 | ExampleBot/obj/ 10 | DotnetCoreRunner/bin/ 11 | DotnetCoreRunner/obj/ 12 | .vs/ 13 | -------------------------------------------------------------------------------- /.vs/ExampleBot/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonPrins/ExampleBot/053d5fa79a387153f96bd21928d8b94224813da8/.vs/ExampleBot/v15/.suo -------------------------------------------------------------------------------- /.vs/ExampleBot/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonPrins/ExampleBot/053d5fa79a387153f96bd21928d8b94224813da8/.vs/ExampleBot/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /.vs/ExampleBot/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonPrins/ExampleBot/053d5fa79a387153f96bd21928d8b94224813da8/.vs/ExampleBot/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /DotnetCoreRunner/DotnetCoreRunner.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp3.1 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /DotnetCoreRunner/Program.cs: -------------------------------------------------------------------------------- 1 | using SC2Sharp; 2 | 3 | namespace DotnetCoreRunner 4 | { 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | SC2Sharp.Program.Run(args); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ExampleBot.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30225.117 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SC2APIProtocol", "SC2APIProtocol\SC2APIProtocol.csproj", "{EAFCEFB4-A3E9-4481-8A8B-310E4D8DC438}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SC2API-CSharp", "SC2API-CSharp\SC2API-CSharp.csproj", "{3A80D8CD-E915-4094-8ED8-890B8F4EE72F}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExampleBot", "ExampleBot\ExampleBot.csproj", "{50579668-A3FB-43F4-B88C-05995BE4C8CC}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotnetCoreRunner", "DotnetCoreRunner\DotnetCoreRunner.csproj", "{B24F9573-4A58-43D5-824B-92C5E51281F8}" 13 | ProjectSection(ProjectDependencies) = postProject 14 | {50579668-A3FB-43F4-B88C-05995BE4C8CC} = {50579668-A3FB-43F4-B88C-05995BE4C8CC} 15 | EndProjectSection 16 | EndProject 17 | Global 18 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 19 | Debug|Any CPU = Debug|Any CPU 20 | Release|Any CPU = Release|Any CPU 21 | EndGlobalSection 22 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 23 | {EAFCEFB4-A3E9-4481-8A8B-310E4D8DC438}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 24 | {EAFCEFB4-A3E9-4481-8A8B-310E4D8DC438}.Debug|Any CPU.Build.0 = Debug|Any CPU 25 | {EAFCEFB4-A3E9-4481-8A8B-310E4D8DC438}.Release|Any CPU.ActiveCfg = Release|Any CPU 26 | {EAFCEFB4-A3E9-4481-8A8B-310E4D8DC438}.Release|Any CPU.Build.0 = Release|Any CPU 27 | {3A80D8CD-E915-4094-8ED8-890B8F4EE72F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 28 | {3A80D8CD-E915-4094-8ED8-890B8F4EE72F}.Debug|Any CPU.Build.0 = Debug|Any CPU 29 | {3A80D8CD-E915-4094-8ED8-890B8F4EE72F}.Release|Any CPU.ActiveCfg = Release|Any CPU 30 | {3A80D8CD-E915-4094-8ED8-890B8F4EE72F}.Release|Any CPU.Build.0 = Release|Any CPU 31 | {50579668-A3FB-43F4-B88C-05995BE4C8CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 32 | {50579668-A3FB-43F4-B88C-05995BE4C8CC}.Debug|Any CPU.Build.0 = Debug|Any CPU 33 | {50579668-A3FB-43F4-B88C-05995BE4C8CC}.Release|Any CPU.ActiveCfg = Release|Any CPU 34 | {50579668-A3FB-43F4-B88C-05995BE4C8CC}.Release|Any CPU.Build.0 = Release|Any CPU 35 | {B24F9573-4A58-43D5-824B-92C5E51281F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 36 | {B24F9573-4A58-43D5-824B-92C5E51281F8}.Debug|Any CPU.Build.0 = Debug|Any CPU 37 | {B24F9573-4A58-43D5-824B-92C5E51281F8}.Release|Any CPU.ActiveCfg = Release|Any CPU 38 | {B24F9573-4A58-43D5-824B-92C5E51281F8}.Release|Any CPU.Build.0 = Release|Any CPU 39 | EndGlobalSection 40 | GlobalSection(SolutionProperties) = preSolution 41 | HideSolutionNode = FALSE 42 | EndGlobalSection 43 | GlobalSection(ExtensibilityGlobals) = postSolution 44 | SolutionGuid = {0A50D8A1-42E3-4AF8-9E89-BD03778E4C5A} 45 | EndGlobalSection 46 | EndGlobal 47 | -------------------------------------------------------------------------------- /ExampleBot/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ExampleBot/ExampleBot.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Library 4 | netcoreapp2.1;net461 5 | 6 | 7 | 8 | false 9 | 10 | 11 | ExampleBot 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ExampleBot/Program.cs: -------------------------------------------------------------------------------- 1 | using SC2API_CSharp; 2 | using SC2APIProtocol; 3 | 4 | namespace SC2Sharp 5 | { 6 | public class Program 7 | { 8 | // Settings for your bot. 9 | private static Bot bot = new Bot(); 10 | private static Race race = Race.Terran; 11 | 12 | // Settings for single player mode. 13 | private static string mapName = @"InterloperLE.SC2Map"; 14 | private static Race opponentRace = Race.Random; 15 | private static Difficulty opponentDifficulty = Difficulty.VeryEasy; 16 | 17 | /* The main entry point for the bot. 18 | * This will start the Stacraft 2 instance and connect to it. 19 | * The program can run in single player mode against the standard Blizzard AI, or it can be run against other bots through the ladder. 20 | */ 21 | public static void Run(string[] args) 22 | { 23 | if (args.Length == 0) 24 | new GameConnection().RunSinglePlayer(bot, mapName, race, opponentRace, opponentDifficulty).Wait(); 25 | else 26 | new GameConnection().RunLadder(bot, race, args).Wait(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ExampleBot/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | /* 9 | [assembly: AssemblyTitle("ExampleBot")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("ExampleBot")] 14 | [assembly: AssemblyCopyright("Copyright © 2018")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | */ 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | // The following GUID is for the ID of the typelib if this project is exposed to COM 25 | [assembly: Guid("50579668-a3fb-43f4-b88c-05995be4c8cc")] 26 | 27 | // Version information for an assembly consists of the following four values: 28 | // 29 | // Major Version 30 | // Minor Version 31 | // Build Number 32 | // Revision 33 | // 34 | // You can specify all the values or you can default the Build and Revision Numbers 35 | // by using the '*' as shown below: 36 | // [assembly: AssemblyVersion("1.0.*")] 37 | // [assembly: AssemblyVersion("1.0.0.0")] 38 | // [assembly: AssemblyFileVersion("1.0.0.0")] 39 | -------------------------------------------------------------------------------- /ExampleBot/YourBot.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using SC2APIProtocol; 3 | 4 | namespace SC2Sharp 5 | { 6 | class Bot : SC2API_CSharp.Bot 7 | { 8 | public void OnStart(ResponseGameInfo gameInfo, ResponseData data, ResponsePing pingResponse, ResponseObservation observation, uint playerId, string opponentID) 9 | { } 10 | 11 | public IEnumerable OnFrame(ResponseObservation observation) 12 | { 13 | List actions = new List(); 14 | 15 | return actions; 16 | } 17 | 18 | public void OnEnd(ResponseObservation observation, Result result) 19 | { } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ExampleBot/obj/ExampleBot.csproj.nuget.dgspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": 1, 3 | "restore": { 4 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\ExampleBot.csproj": {} 5 | }, 6 | "projects": { 7 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\ExampleBot.csproj": { 8 | "version": "1.0.0", 9 | "restore": { 10 | "projectUniqueName": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\ExampleBot.csproj", 11 | "projectName": "ExampleBot", 12 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\ExampleBot.csproj", 13 | "packagesPath": "C:\\Users\\Simon\\.nuget\\packages\\", 14 | "outputPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\obj\\", 15 | "projectStyle": "PackageReference", 16 | "crossTargeting": true, 17 | "fallbackFolders": [ 18 | "C:\\Microsoft\\Xamarin\\NuGet\\", 19 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 20 | ], 21 | "configFilePaths": [ 22 | "C:\\Users\\Simon\\AppData\\Roaming\\NuGet\\NuGet.Config", 23 | "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", 24 | "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" 25 | ], 26 | "originalTargetFrameworks": [ 27 | "net461", 28 | "netcoreapp2.1" 29 | ], 30 | "sources": { 31 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, 32 | "https://api.nuget.org/v3/index.json": {} 33 | }, 34 | "frameworks": { 35 | "netcoreapp2.1": { 36 | "projectReferences": { 37 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj": { 38 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj" 39 | }, 40 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj": { 41 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj" 42 | } 43 | } 44 | }, 45 | "net461": { 46 | "projectReferences": { 47 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj": { 48 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj" 49 | }, 50 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj": { 51 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj" 52 | } 53 | } 54 | } 55 | }, 56 | "warningProperties": { 57 | "warnAsError": [ 58 | "NU1605" 59 | ] 60 | } 61 | }, 62 | "frameworks": { 63 | "netcoreapp2.1": { 64 | "dependencies": { 65 | "Google.Protobuf": { 66 | "target": "Package", 67 | "version": "[3.5.1, )" 68 | }, 69 | "Microsoft.NETCore.App": { 70 | "suppressParent": "All", 71 | "target": "Package", 72 | "version": "[2.1.0, )", 73 | "autoReferenced": true 74 | } 75 | }, 76 | "imports": [ 77 | "net461", 78 | "net462", 79 | "net47", 80 | "net471", 81 | "net472", 82 | "net48" 83 | ], 84 | "assetTargetFallback": true, 85 | "warn": true, 86 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 87 | }, 88 | "net461": { 89 | "dependencies": { 90 | "Google.Protobuf": { 91 | "target": "Package", 92 | "version": "[3.5.1, )" 93 | } 94 | }, 95 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 96 | } 97 | } 98 | }, 99 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj": { 100 | "version": "1.0.0", 101 | "restore": { 102 | "projectUniqueName": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj", 103 | "projectName": "SC2API-CSharp", 104 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj", 105 | "packagesPath": "C:\\Users\\Simon\\.nuget\\packages\\", 106 | "outputPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\obj\\", 107 | "projectStyle": "PackageReference", 108 | "crossTargeting": true, 109 | "fallbackFolders": [ 110 | "C:\\Microsoft\\Xamarin\\NuGet\\", 111 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 112 | ], 113 | "configFilePaths": [ 114 | "C:\\Users\\Simon\\AppData\\Roaming\\NuGet\\NuGet.Config", 115 | "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", 116 | "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" 117 | ], 118 | "originalTargetFrameworks": [ 119 | "net461", 120 | "netcoreapp2.1" 121 | ], 122 | "sources": { 123 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, 124 | "https://api.nuget.org/v3/index.json": {} 125 | }, 126 | "frameworks": { 127 | "netcoreapp2.1": { 128 | "projectReferences": { 129 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj": { 130 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj" 131 | } 132 | } 133 | }, 134 | "net461": { 135 | "projectReferences": { 136 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj": { 137 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj" 138 | } 139 | } 140 | } 141 | }, 142 | "warningProperties": { 143 | "warnAsError": [ 144 | "NU1605" 145 | ] 146 | } 147 | }, 148 | "frameworks": { 149 | "netcoreapp2.1": { 150 | "dependencies": { 151 | "Microsoft.NETCore.App": { 152 | "suppressParent": "All", 153 | "target": "Package", 154 | "version": "[2.1.0, )", 155 | "autoReferenced": true 156 | } 157 | }, 158 | "imports": [ 159 | "net461", 160 | "net462", 161 | "net47", 162 | "net471", 163 | "net472", 164 | "net48" 165 | ], 166 | "assetTargetFallback": true, 167 | "warn": true, 168 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 169 | }, 170 | "net461": { 171 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 172 | } 173 | } 174 | }, 175 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj": { 176 | "version": "1.0.0", 177 | "restore": { 178 | "projectUniqueName": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj", 179 | "projectName": "SC2APIProtocol", 180 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj", 181 | "packagesPath": "C:\\Users\\Simon\\.nuget\\packages\\", 182 | "outputPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\obj\\", 183 | "projectStyle": "PackageReference", 184 | "crossTargeting": true, 185 | "fallbackFolders": [ 186 | "C:\\Microsoft\\Xamarin\\NuGet\\", 187 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 188 | ], 189 | "configFilePaths": [ 190 | "C:\\Users\\Simon\\AppData\\Roaming\\NuGet\\NuGet.Config", 191 | "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", 192 | "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" 193 | ], 194 | "originalTargetFrameworks": [ 195 | "net461", 196 | "netcoreapp2.1" 197 | ], 198 | "sources": { 199 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, 200 | "https://api.nuget.org/v3/index.json": {} 201 | }, 202 | "frameworks": { 203 | "netcoreapp2.1": { 204 | "projectReferences": {} 205 | }, 206 | "net461": { 207 | "projectReferences": {} 208 | } 209 | }, 210 | "warningProperties": { 211 | "warnAsError": [ 212 | "NU1605" 213 | ] 214 | } 215 | }, 216 | "frameworks": { 217 | "netcoreapp2.1": { 218 | "dependencies": { 219 | "Google.Protobuf": { 220 | "target": "Package", 221 | "version": "[3.5.1, )" 222 | }, 223 | "Microsoft.NETCore.App": { 224 | "suppressParent": "All", 225 | "target": "Package", 226 | "version": "[2.1.0, )", 227 | "autoReferenced": true 228 | } 229 | }, 230 | "imports": [ 231 | "net461", 232 | "net462", 233 | "net47", 234 | "net471", 235 | "net472", 236 | "net48" 237 | ], 238 | "assetTargetFallback": true, 239 | "warn": true, 240 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 241 | }, 242 | "net461": { 243 | "dependencies": { 244 | "Google.Protobuf": { 245 | "target": "Package", 246 | "version": "[3.5.1, )" 247 | } 248 | }, 249 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 250 | } 251 | } 252 | } 253 | } 254 | } -------------------------------------------------------------------------------- /ExampleBot/obj/ExampleBot.csproj.nuget.g.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | True 5 | NuGet 6 | $(MSBuildThisFileDirectory)project.assets.json 7 | $(UserProfile)\.nuget\packages\ 8 | C:\Users\Simon\.nuget\packages\;C:\Microsoft\Xamarin\NuGet\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder 9 | PackageReference 10 | 5.6.0 11 | 12 | 13 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ExampleBot/obj/ExampleBot.csproj.nuget.g.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ExampleBot/obj/project.assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "targets": { 4 | ".NETCoreApp,Version=v2.1": { 5 | "Google.Protobuf/3.5.1": { 6 | "type": "package", 7 | "dependencies": { 8 | "NETStandard.Library": "1.6.1" 9 | }, 10 | "compile": { 11 | "lib/netstandard1.0/Google.Protobuf.dll": {} 12 | }, 13 | "runtime": { 14 | "lib/netstandard1.0/Google.Protobuf.dll": {} 15 | } 16 | }, 17 | "Microsoft.NETCore.App/2.1.0": { 18 | "type": "package", 19 | "dependencies": { 20 | "Microsoft.NETCore.DotNetHostPolicy": "2.1.0", 21 | "Microsoft.NETCore.Platforms": "2.1.0", 22 | "Microsoft.NETCore.Targets": "2.1.0", 23 | "NETStandard.Library": "2.0.3" 24 | }, 25 | "compile": { 26 | "ref/netcoreapp2.1/Microsoft.CSharp.dll": {}, 27 | "ref/netcoreapp2.1/Microsoft.VisualBasic.dll": {}, 28 | "ref/netcoreapp2.1/Microsoft.Win32.Primitives.dll": {}, 29 | "ref/netcoreapp2.1/System.AppContext.dll": {}, 30 | "ref/netcoreapp2.1/System.Buffers.dll": {}, 31 | "ref/netcoreapp2.1/System.Collections.Concurrent.dll": {}, 32 | "ref/netcoreapp2.1/System.Collections.Immutable.dll": {}, 33 | "ref/netcoreapp2.1/System.Collections.NonGeneric.dll": {}, 34 | "ref/netcoreapp2.1/System.Collections.Specialized.dll": {}, 35 | "ref/netcoreapp2.1/System.Collections.dll": {}, 36 | "ref/netcoreapp2.1/System.ComponentModel.Annotations.dll": {}, 37 | "ref/netcoreapp2.1/System.ComponentModel.DataAnnotations.dll": {}, 38 | "ref/netcoreapp2.1/System.ComponentModel.EventBasedAsync.dll": {}, 39 | "ref/netcoreapp2.1/System.ComponentModel.Primitives.dll": {}, 40 | "ref/netcoreapp2.1/System.ComponentModel.TypeConverter.dll": {}, 41 | "ref/netcoreapp2.1/System.ComponentModel.dll": {}, 42 | "ref/netcoreapp2.1/System.Configuration.dll": {}, 43 | "ref/netcoreapp2.1/System.Console.dll": {}, 44 | "ref/netcoreapp2.1/System.Core.dll": {}, 45 | "ref/netcoreapp2.1/System.Data.Common.dll": {}, 46 | "ref/netcoreapp2.1/System.Data.dll": {}, 47 | "ref/netcoreapp2.1/System.Diagnostics.Contracts.dll": {}, 48 | "ref/netcoreapp2.1/System.Diagnostics.Debug.dll": {}, 49 | "ref/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll": {}, 50 | "ref/netcoreapp2.1/System.Diagnostics.FileVersionInfo.dll": {}, 51 | "ref/netcoreapp2.1/System.Diagnostics.Process.dll": {}, 52 | "ref/netcoreapp2.1/System.Diagnostics.StackTrace.dll": {}, 53 | "ref/netcoreapp2.1/System.Diagnostics.TextWriterTraceListener.dll": {}, 54 | "ref/netcoreapp2.1/System.Diagnostics.Tools.dll": {}, 55 | "ref/netcoreapp2.1/System.Diagnostics.TraceSource.dll": {}, 56 | "ref/netcoreapp2.1/System.Diagnostics.Tracing.dll": {}, 57 | "ref/netcoreapp2.1/System.Drawing.Primitives.dll": {}, 58 | "ref/netcoreapp2.1/System.Drawing.dll": {}, 59 | "ref/netcoreapp2.1/System.Dynamic.Runtime.dll": {}, 60 | "ref/netcoreapp2.1/System.Globalization.Calendars.dll": {}, 61 | "ref/netcoreapp2.1/System.Globalization.Extensions.dll": {}, 62 | "ref/netcoreapp2.1/System.Globalization.dll": {}, 63 | "ref/netcoreapp2.1/System.IO.Compression.Brotli.dll": {}, 64 | "ref/netcoreapp2.1/System.IO.Compression.FileSystem.dll": {}, 65 | "ref/netcoreapp2.1/System.IO.Compression.ZipFile.dll": {}, 66 | "ref/netcoreapp2.1/System.IO.Compression.dll": {}, 67 | "ref/netcoreapp2.1/System.IO.FileSystem.DriveInfo.dll": {}, 68 | "ref/netcoreapp2.1/System.IO.FileSystem.Primitives.dll": {}, 69 | "ref/netcoreapp2.1/System.IO.FileSystem.Watcher.dll": {}, 70 | "ref/netcoreapp2.1/System.IO.FileSystem.dll": {}, 71 | "ref/netcoreapp2.1/System.IO.IsolatedStorage.dll": {}, 72 | "ref/netcoreapp2.1/System.IO.MemoryMappedFiles.dll": {}, 73 | "ref/netcoreapp2.1/System.IO.Pipes.dll": {}, 74 | "ref/netcoreapp2.1/System.IO.UnmanagedMemoryStream.dll": {}, 75 | "ref/netcoreapp2.1/System.IO.dll": {}, 76 | "ref/netcoreapp2.1/System.Linq.Expressions.dll": {}, 77 | "ref/netcoreapp2.1/System.Linq.Parallel.dll": {}, 78 | "ref/netcoreapp2.1/System.Linq.Queryable.dll": {}, 79 | "ref/netcoreapp2.1/System.Linq.dll": {}, 80 | "ref/netcoreapp2.1/System.Memory.dll": {}, 81 | "ref/netcoreapp2.1/System.Net.Http.dll": {}, 82 | "ref/netcoreapp2.1/System.Net.HttpListener.dll": {}, 83 | "ref/netcoreapp2.1/System.Net.Mail.dll": {}, 84 | "ref/netcoreapp2.1/System.Net.NameResolution.dll": {}, 85 | "ref/netcoreapp2.1/System.Net.NetworkInformation.dll": {}, 86 | "ref/netcoreapp2.1/System.Net.Ping.dll": {}, 87 | "ref/netcoreapp2.1/System.Net.Primitives.dll": {}, 88 | "ref/netcoreapp2.1/System.Net.Requests.dll": {}, 89 | "ref/netcoreapp2.1/System.Net.Security.dll": {}, 90 | "ref/netcoreapp2.1/System.Net.ServicePoint.dll": {}, 91 | "ref/netcoreapp2.1/System.Net.Sockets.dll": {}, 92 | "ref/netcoreapp2.1/System.Net.WebClient.dll": {}, 93 | "ref/netcoreapp2.1/System.Net.WebHeaderCollection.dll": {}, 94 | "ref/netcoreapp2.1/System.Net.WebProxy.dll": {}, 95 | "ref/netcoreapp2.1/System.Net.WebSockets.Client.dll": {}, 96 | "ref/netcoreapp2.1/System.Net.WebSockets.dll": {}, 97 | "ref/netcoreapp2.1/System.Net.dll": {}, 98 | "ref/netcoreapp2.1/System.Numerics.Vectors.dll": {}, 99 | "ref/netcoreapp2.1/System.Numerics.dll": {}, 100 | "ref/netcoreapp2.1/System.ObjectModel.dll": {}, 101 | "ref/netcoreapp2.1/System.Reflection.DispatchProxy.dll": {}, 102 | "ref/netcoreapp2.1/System.Reflection.Emit.ILGeneration.dll": {}, 103 | "ref/netcoreapp2.1/System.Reflection.Emit.Lightweight.dll": {}, 104 | "ref/netcoreapp2.1/System.Reflection.Emit.dll": {}, 105 | "ref/netcoreapp2.1/System.Reflection.Extensions.dll": {}, 106 | "ref/netcoreapp2.1/System.Reflection.Metadata.dll": {}, 107 | "ref/netcoreapp2.1/System.Reflection.Primitives.dll": {}, 108 | "ref/netcoreapp2.1/System.Reflection.TypeExtensions.dll": {}, 109 | "ref/netcoreapp2.1/System.Reflection.dll": {}, 110 | "ref/netcoreapp2.1/System.Resources.Reader.dll": {}, 111 | "ref/netcoreapp2.1/System.Resources.ResourceManager.dll": {}, 112 | "ref/netcoreapp2.1/System.Resources.Writer.dll": {}, 113 | "ref/netcoreapp2.1/System.Runtime.CompilerServices.VisualC.dll": {}, 114 | "ref/netcoreapp2.1/System.Runtime.Extensions.dll": {}, 115 | "ref/netcoreapp2.1/System.Runtime.Handles.dll": {}, 116 | "ref/netcoreapp2.1/System.Runtime.InteropServices.RuntimeInformation.dll": {}, 117 | "ref/netcoreapp2.1/System.Runtime.InteropServices.WindowsRuntime.dll": {}, 118 | "ref/netcoreapp2.1/System.Runtime.InteropServices.dll": {}, 119 | "ref/netcoreapp2.1/System.Runtime.Loader.dll": {}, 120 | "ref/netcoreapp2.1/System.Runtime.Numerics.dll": {}, 121 | "ref/netcoreapp2.1/System.Runtime.Serialization.Formatters.dll": {}, 122 | "ref/netcoreapp2.1/System.Runtime.Serialization.Json.dll": {}, 123 | "ref/netcoreapp2.1/System.Runtime.Serialization.Primitives.dll": {}, 124 | "ref/netcoreapp2.1/System.Runtime.Serialization.Xml.dll": {}, 125 | "ref/netcoreapp2.1/System.Runtime.Serialization.dll": {}, 126 | "ref/netcoreapp2.1/System.Runtime.dll": {}, 127 | "ref/netcoreapp2.1/System.Security.Claims.dll": {}, 128 | "ref/netcoreapp2.1/System.Security.Cryptography.Algorithms.dll": {}, 129 | "ref/netcoreapp2.1/System.Security.Cryptography.Csp.dll": {}, 130 | "ref/netcoreapp2.1/System.Security.Cryptography.Encoding.dll": {}, 131 | "ref/netcoreapp2.1/System.Security.Cryptography.Primitives.dll": {}, 132 | "ref/netcoreapp2.1/System.Security.Cryptography.X509Certificates.dll": {}, 133 | "ref/netcoreapp2.1/System.Security.Principal.dll": {}, 134 | "ref/netcoreapp2.1/System.Security.SecureString.dll": {}, 135 | "ref/netcoreapp2.1/System.Security.dll": {}, 136 | "ref/netcoreapp2.1/System.ServiceModel.Web.dll": {}, 137 | "ref/netcoreapp2.1/System.ServiceProcess.dll": {}, 138 | "ref/netcoreapp2.1/System.Text.Encoding.Extensions.dll": {}, 139 | "ref/netcoreapp2.1/System.Text.Encoding.dll": {}, 140 | "ref/netcoreapp2.1/System.Text.RegularExpressions.dll": {}, 141 | "ref/netcoreapp2.1/System.Threading.Overlapped.dll": {}, 142 | "ref/netcoreapp2.1/System.Threading.Tasks.Dataflow.dll": {}, 143 | "ref/netcoreapp2.1/System.Threading.Tasks.Extensions.dll": {}, 144 | "ref/netcoreapp2.1/System.Threading.Tasks.Parallel.dll": {}, 145 | "ref/netcoreapp2.1/System.Threading.Tasks.dll": {}, 146 | "ref/netcoreapp2.1/System.Threading.Thread.dll": {}, 147 | "ref/netcoreapp2.1/System.Threading.ThreadPool.dll": {}, 148 | "ref/netcoreapp2.1/System.Threading.Timer.dll": {}, 149 | "ref/netcoreapp2.1/System.Threading.dll": {}, 150 | "ref/netcoreapp2.1/System.Transactions.Local.dll": {}, 151 | "ref/netcoreapp2.1/System.Transactions.dll": {}, 152 | "ref/netcoreapp2.1/System.ValueTuple.dll": {}, 153 | "ref/netcoreapp2.1/System.Web.HttpUtility.dll": {}, 154 | "ref/netcoreapp2.1/System.Web.dll": {}, 155 | "ref/netcoreapp2.1/System.Windows.dll": {}, 156 | "ref/netcoreapp2.1/System.Xml.Linq.dll": {}, 157 | "ref/netcoreapp2.1/System.Xml.ReaderWriter.dll": {}, 158 | "ref/netcoreapp2.1/System.Xml.Serialization.dll": {}, 159 | "ref/netcoreapp2.1/System.Xml.XDocument.dll": {}, 160 | "ref/netcoreapp2.1/System.Xml.XPath.XDocument.dll": {}, 161 | "ref/netcoreapp2.1/System.Xml.XPath.dll": {}, 162 | "ref/netcoreapp2.1/System.Xml.XmlDocument.dll": {}, 163 | "ref/netcoreapp2.1/System.Xml.XmlSerializer.dll": {}, 164 | "ref/netcoreapp2.1/System.Xml.dll": {}, 165 | "ref/netcoreapp2.1/System.dll": {}, 166 | "ref/netcoreapp2.1/WindowsBase.dll": {}, 167 | "ref/netcoreapp2.1/mscorlib.dll": {}, 168 | "ref/netcoreapp2.1/netstandard.dll": {} 169 | }, 170 | "build": { 171 | "build/netcoreapp2.1/Microsoft.NETCore.App.props": {}, 172 | "build/netcoreapp2.1/Microsoft.NETCore.App.targets": {} 173 | } 174 | }, 175 | "Microsoft.NETCore.DotNetAppHost/2.1.0": { 176 | "type": "package" 177 | }, 178 | "Microsoft.NETCore.DotNetHostPolicy/2.1.0": { 179 | "type": "package", 180 | "dependencies": { 181 | "Microsoft.NETCore.DotNetHostResolver": "2.1.0" 182 | } 183 | }, 184 | "Microsoft.NETCore.DotNetHostResolver/2.1.0": { 185 | "type": "package", 186 | "dependencies": { 187 | "Microsoft.NETCore.DotNetAppHost": "2.1.0" 188 | } 189 | }, 190 | "Microsoft.NETCore.Platforms/2.1.0": { 191 | "type": "package", 192 | "compile": { 193 | "lib/netstandard1.0/_._": {} 194 | }, 195 | "runtime": { 196 | "lib/netstandard1.0/_._": {} 197 | } 198 | }, 199 | "Microsoft.NETCore.Targets/2.1.0": { 200 | "type": "package", 201 | "compile": { 202 | "lib/netstandard1.0/_._": {} 203 | }, 204 | "runtime": { 205 | "lib/netstandard1.0/_._": {} 206 | } 207 | }, 208 | "NETStandard.Library/2.0.3": { 209 | "type": "package", 210 | "dependencies": { 211 | "Microsoft.NETCore.Platforms": "1.1.0" 212 | }, 213 | "compile": { 214 | "lib/netstandard1.0/_._": {} 215 | }, 216 | "runtime": { 217 | "lib/netstandard1.0/_._": {} 218 | }, 219 | "build": { 220 | "build/netstandard2.0/NETStandard.Library.targets": {} 221 | } 222 | }, 223 | "SC2API-CSharp/1.0.0": { 224 | "type": "project", 225 | "framework": ".NETCoreApp,Version=v2.1", 226 | "dependencies": { 227 | "SC2APIProtocol": "1.0.0" 228 | }, 229 | "compile": { 230 | "bin/placeholder/SC2API-CSharp.dll": {} 231 | }, 232 | "runtime": { 233 | "bin/placeholder/SC2API-CSharp.dll": {} 234 | } 235 | }, 236 | "SC2APIProtocol/1.0.0": { 237 | "type": "project", 238 | "framework": ".NETCoreApp,Version=v2.1", 239 | "dependencies": { 240 | "Google.Protobuf": "3.5.1" 241 | }, 242 | "compile": { 243 | "bin/placeholder/SC2APIProtocol.dll": {} 244 | }, 245 | "runtime": { 246 | "bin/placeholder/SC2APIProtocol.dll": {} 247 | } 248 | } 249 | }, 250 | ".NETFramework,Version=v4.6.1": { 251 | "Google.Protobuf/3.5.1": { 252 | "type": "package", 253 | "compile": { 254 | "lib/net45/Google.Protobuf.dll": {} 255 | }, 256 | "runtime": { 257 | "lib/net45/Google.Protobuf.dll": {} 258 | } 259 | }, 260 | "SC2API-CSharp/1.0.0": { 261 | "type": "project", 262 | "framework": ".NETFramework,Version=v4.6.1", 263 | "dependencies": { 264 | "SC2APIProtocol": "1.0.0" 265 | }, 266 | "compile": { 267 | "bin/placeholder/SC2API-CSharp.dll": {} 268 | }, 269 | "runtime": { 270 | "bin/placeholder/SC2API-CSharp.dll": {} 271 | } 272 | }, 273 | "SC2APIProtocol/1.0.0": { 274 | "type": "project", 275 | "framework": ".NETFramework,Version=v4.6.1", 276 | "dependencies": { 277 | "Google.Protobuf": "3.5.1" 278 | }, 279 | "compile": { 280 | "bin/placeholder/SC2APIProtocol.dll": {} 281 | }, 282 | "runtime": { 283 | "bin/placeholder/SC2APIProtocol.dll": {} 284 | } 285 | } 286 | } 287 | }, 288 | "libraries": { 289 | "Google.Protobuf/3.5.1": { 290 | "sha512": "f2k1VNaB9bfvEsvARzzEL1TZiIpL33KKK3JMH7UANlPlJVptuvsk4qpBZEnz0pORWZOdUHlVwMQuUzFqjJYCxA==", 291 | "type": "package", 292 | "path": "google.protobuf/3.5.1", 293 | "files": [ 294 | ".nupkg.metadata", 295 | ".signature.p7s", 296 | "google.protobuf.3.5.1.nupkg.sha512", 297 | "google.protobuf.nuspec", 298 | "lib/net45/Google.Protobuf.dll", 299 | "lib/net45/Google.Protobuf.xml", 300 | "lib/netstandard1.0/Google.Protobuf.dll", 301 | "lib/netstandard1.0/Google.Protobuf.xml" 302 | ] 303 | }, 304 | "Microsoft.NETCore.App/2.1.0": { 305 | "sha512": "JNHhG+j5eIhG26+H721IDmwswGUznTwwSuJMFe/08h0X2YarHvA15sVAvUkA/2Sp3W0ENNm48t+J7KTPRqEpfA==", 306 | "type": "package", 307 | "path": "microsoft.netcore.app/2.1.0", 308 | "files": [ 309 | ".nupkg.metadata", 310 | ".signature.p7s", 311 | "LICENSE.TXT", 312 | "Microsoft.NETCore.App.versions.txt", 313 | "THIRD-PARTY-NOTICES.TXT", 314 | "build/netcoreapp2.1/Microsoft.NETCore.App.PlatformManifest.txt", 315 | "build/netcoreapp2.1/Microsoft.NETCore.App.props", 316 | "build/netcoreapp2.1/Microsoft.NETCore.App.targets", 317 | "microsoft.netcore.app.2.1.0.nupkg.sha512", 318 | "microsoft.netcore.app.nuspec", 319 | "ref/netcoreapp/_._", 320 | "ref/netcoreapp2.1/Microsoft.CSharp.dll", 321 | "ref/netcoreapp2.1/Microsoft.CSharp.xml", 322 | "ref/netcoreapp2.1/Microsoft.VisualBasic.dll", 323 | "ref/netcoreapp2.1/Microsoft.VisualBasic.xml", 324 | "ref/netcoreapp2.1/Microsoft.Win32.Primitives.dll", 325 | "ref/netcoreapp2.1/Microsoft.Win32.Primitives.xml", 326 | "ref/netcoreapp2.1/System.AppContext.dll", 327 | "ref/netcoreapp2.1/System.Buffers.dll", 328 | "ref/netcoreapp2.1/System.Buffers.xml", 329 | "ref/netcoreapp2.1/System.Collections.Concurrent.dll", 330 | "ref/netcoreapp2.1/System.Collections.Concurrent.xml", 331 | "ref/netcoreapp2.1/System.Collections.Immutable.dll", 332 | "ref/netcoreapp2.1/System.Collections.Immutable.xml", 333 | "ref/netcoreapp2.1/System.Collections.NonGeneric.dll", 334 | "ref/netcoreapp2.1/System.Collections.NonGeneric.xml", 335 | "ref/netcoreapp2.1/System.Collections.Specialized.dll", 336 | "ref/netcoreapp2.1/System.Collections.Specialized.xml", 337 | "ref/netcoreapp2.1/System.Collections.dll", 338 | "ref/netcoreapp2.1/System.Collections.xml", 339 | "ref/netcoreapp2.1/System.ComponentModel.Annotations.dll", 340 | "ref/netcoreapp2.1/System.ComponentModel.Annotations.xml", 341 | "ref/netcoreapp2.1/System.ComponentModel.DataAnnotations.dll", 342 | "ref/netcoreapp2.1/System.ComponentModel.EventBasedAsync.dll", 343 | "ref/netcoreapp2.1/System.ComponentModel.EventBasedAsync.xml", 344 | "ref/netcoreapp2.1/System.ComponentModel.Primitives.dll", 345 | "ref/netcoreapp2.1/System.ComponentModel.Primitives.xml", 346 | "ref/netcoreapp2.1/System.ComponentModel.TypeConverter.dll", 347 | "ref/netcoreapp2.1/System.ComponentModel.TypeConverter.xml", 348 | "ref/netcoreapp2.1/System.ComponentModel.dll", 349 | "ref/netcoreapp2.1/System.ComponentModel.xml", 350 | "ref/netcoreapp2.1/System.Configuration.dll", 351 | "ref/netcoreapp2.1/System.Console.dll", 352 | "ref/netcoreapp2.1/System.Console.xml", 353 | "ref/netcoreapp2.1/System.Core.dll", 354 | "ref/netcoreapp2.1/System.Data.Common.dll", 355 | "ref/netcoreapp2.1/System.Data.Common.xml", 356 | "ref/netcoreapp2.1/System.Data.dll", 357 | "ref/netcoreapp2.1/System.Diagnostics.Contracts.dll", 358 | "ref/netcoreapp2.1/System.Diagnostics.Contracts.xml", 359 | "ref/netcoreapp2.1/System.Diagnostics.Debug.dll", 360 | "ref/netcoreapp2.1/System.Diagnostics.Debug.xml", 361 | "ref/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll", 362 | "ref/netcoreapp2.1/System.Diagnostics.DiagnosticSource.xml", 363 | "ref/netcoreapp2.1/System.Diagnostics.FileVersionInfo.dll", 364 | "ref/netcoreapp2.1/System.Diagnostics.FileVersionInfo.xml", 365 | "ref/netcoreapp2.1/System.Diagnostics.Process.dll", 366 | "ref/netcoreapp2.1/System.Diagnostics.Process.xml", 367 | "ref/netcoreapp2.1/System.Diagnostics.StackTrace.dll", 368 | "ref/netcoreapp2.1/System.Diagnostics.StackTrace.xml", 369 | "ref/netcoreapp2.1/System.Diagnostics.TextWriterTraceListener.dll", 370 | "ref/netcoreapp2.1/System.Diagnostics.TextWriterTraceListener.xml", 371 | "ref/netcoreapp2.1/System.Diagnostics.Tools.dll", 372 | "ref/netcoreapp2.1/System.Diagnostics.Tools.xml", 373 | "ref/netcoreapp2.1/System.Diagnostics.TraceSource.dll", 374 | "ref/netcoreapp2.1/System.Diagnostics.TraceSource.xml", 375 | "ref/netcoreapp2.1/System.Diagnostics.Tracing.dll", 376 | "ref/netcoreapp2.1/System.Diagnostics.Tracing.xml", 377 | "ref/netcoreapp2.1/System.Drawing.Primitives.dll", 378 | "ref/netcoreapp2.1/System.Drawing.Primitives.xml", 379 | "ref/netcoreapp2.1/System.Drawing.dll", 380 | "ref/netcoreapp2.1/System.Dynamic.Runtime.dll", 381 | "ref/netcoreapp2.1/System.Globalization.Calendars.dll", 382 | "ref/netcoreapp2.1/System.Globalization.Extensions.dll", 383 | "ref/netcoreapp2.1/System.Globalization.dll", 384 | "ref/netcoreapp2.1/System.IO.Compression.Brotli.dll", 385 | "ref/netcoreapp2.1/System.IO.Compression.FileSystem.dll", 386 | "ref/netcoreapp2.1/System.IO.Compression.ZipFile.dll", 387 | "ref/netcoreapp2.1/System.IO.Compression.ZipFile.xml", 388 | "ref/netcoreapp2.1/System.IO.Compression.dll", 389 | "ref/netcoreapp2.1/System.IO.Compression.xml", 390 | "ref/netcoreapp2.1/System.IO.FileSystem.DriveInfo.dll", 391 | "ref/netcoreapp2.1/System.IO.FileSystem.DriveInfo.xml", 392 | "ref/netcoreapp2.1/System.IO.FileSystem.Primitives.dll", 393 | "ref/netcoreapp2.1/System.IO.FileSystem.Watcher.dll", 394 | "ref/netcoreapp2.1/System.IO.FileSystem.Watcher.xml", 395 | "ref/netcoreapp2.1/System.IO.FileSystem.dll", 396 | "ref/netcoreapp2.1/System.IO.FileSystem.xml", 397 | "ref/netcoreapp2.1/System.IO.IsolatedStorage.dll", 398 | "ref/netcoreapp2.1/System.IO.IsolatedStorage.xml", 399 | "ref/netcoreapp2.1/System.IO.MemoryMappedFiles.dll", 400 | "ref/netcoreapp2.1/System.IO.MemoryMappedFiles.xml", 401 | "ref/netcoreapp2.1/System.IO.Pipes.dll", 402 | "ref/netcoreapp2.1/System.IO.Pipes.xml", 403 | "ref/netcoreapp2.1/System.IO.UnmanagedMemoryStream.dll", 404 | "ref/netcoreapp2.1/System.IO.dll", 405 | "ref/netcoreapp2.1/System.Linq.Expressions.dll", 406 | "ref/netcoreapp2.1/System.Linq.Expressions.xml", 407 | "ref/netcoreapp2.1/System.Linq.Parallel.dll", 408 | "ref/netcoreapp2.1/System.Linq.Parallel.xml", 409 | "ref/netcoreapp2.1/System.Linq.Queryable.dll", 410 | "ref/netcoreapp2.1/System.Linq.Queryable.xml", 411 | "ref/netcoreapp2.1/System.Linq.dll", 412 | "ref/netcoreapp2.1/System.Linq.xml", 413 | "ref/netcoreapp2.1/System.Memory.dll", 414 | "ref/netcoreapp2.1/System.Memory.xml", 415 | "ref/netcoreapp2.1/System.Net.Http.dll", 416 | "ref/netcoreapp2.1/System.Net.Http.xml", 417 | "ref/netcoreapp2.1/System.Net.HttpListener.dll", 418 | "ref/netcoreapp2.1/System.Net.HttpListener.xml", 419 | "ref/netcoreapp2.1/System.Net.Mail.dll", 420 | "ref/netcoreapp2.1/System.Net.Mail.xml", 421 | "ref/netcoreapp2.1/System.Net.NameResolution.dll", 422 | "ref/netcoreapp2.1/System.Net.NameResolution.xml", 423 | "ref/netcoreapp2.1/System.Net.NetworkInformation.dll", 424 | "ref/netcoreapp2.1/System.Net.NetworkInformation.xml", 425 | "ref/netcoreapp2.1/System.Net.Ping.dll", 426 | "ref/netcoreapp2.1/System.Net.Ping.xml", 427 | "ref/netcoreapp2.1/System.Net.Primitives.dll", 428 | "ref/netcoreapp2.1/System.Net.Primitives.xml", 429 | "ref/netcoreapp2.1/System.Net.Requests.dll", 430 | "ref/netcoreapp2.1/System.Net.Requests.xml", 431 | "ref/netcoreapp2.1/System.Net.Security.dll", 432 | "ref/netcoreapp2.1/System.Net.Security.xml", 433 | "ref/netcoreapp2.1/System.Net.ServicePoint.dll", 434 | "ref/netcoreapp2.1/System.Net.ServicePoint.xml", 435 | "ref/netcoreapp2.1/System.Net.Sockets.dll", 436 | "ref/netcoreapp2.1/System.Net.Sockets.xml", 437 | "ref/netcoreapp2.1/System.Net.WebClient.dll", 438 | "ref/netcoreapp2.1/System.Net.WebClient.xml", 439 | "ref/netcoreapp2.1/System.Net.WebHeaderCollection.dll", 440 | "ref/netcoreapp2.1/System.Net.WebHeaderCollection.xml", 441 | "ref/netcoreapp2.1/System.Net.WebProxy.dll", 442 | "ref/netcoreapp2.1/System.Net.WebProxy.xml", 443 | "ref/netcoreapp2.1/System.Net.WebSockets.Client.dll", 444 | "ref/netcoreapp2.1/System.Net.WebSockets.Client.xml", 445 | "ref/netcoreapp2.1/System.Net.WebSockets.dll", 446 | "ref/netcoreapp2.1/System.Net.WebSockets.xml", 447 | "ref/netcoreapp2.1/System.Net.dll", 448 | "ref/netcoreapp2.1/System.Numerics.Vectors.dll", 449 | "ref/netcoreapp2.1/System.Numerics.Vectors.xml", 450 | "ref/netcoreapp2.1/System.Numerics.dll", 451 | "ref/netcoreapp2.1/System.ObjectModel.dll", 452 | "ref/netcoreapp2.1/System.ObjectModel.xml", 453 | "ref/netcoreapp2.1/System.Reflection.DispatchProxy.dll", 454 | "ref/netcoreapp2.1/System.Reflection.DispatchProxy.xml", 455 | "ref/netcoreapp2.1/System.Reflection.Emit.ILGeneration.dll", 456 | "ref/netcoreapp2.1/System.Reflection.Emit.ILGeneration.xml", 457 | "ref/netcoreapp2.1/System.Reflection.Emit.Lightweight.dll", 458 | "ref/netcoreapp2.1/System.Reflection.Emit.Lightweight.xml", 459 | "ref/netcoreapp2.1/System.Reflection.Emit.dll", 460 | "ref/netcoreapp2.1/System.Reflection.Emit.xml", 461 | "ref/netcoreapp2.1/System.Reflection.Extensions.dll", 462 | "ref/netcoreapp2.1/System.Reflection.Metadata.dll", 463 | "ref/netcoreapp2.1/System.Reflection.Metadata.xml", 464 | "ref/netcoreapp2.1/System.Reflection.Primitives.dll", 465 | "ref/netcoreapp2.1/System.Reflection.Primitives.xml", 466 | "ref/netcoreapp2.1/System.Reflection.TypeExtensions.dll", 467 | "ref/netcoreapp2.1/System.Reflection.TypeExtensions.xml", 468 | "ref/netcoreapp2.1/System.Reflection.dll", 469 | "ref/netcoreapp2.1/System.Resources.Reader.dll", 470 | "ref/netcoreapp2.1/System.Resources.ResourceManager.dll", 471 | "ref/netcoreapp2.1/System.Resources.ResourceManager.xml", 472 | "ref/netcoreapp2.1/System.Resources.Writer.dll", 473 | "ref/netcoreapp2.1/System.Resources.Writer.xml", 474 | "ref/netcoreapp2.1/System.Runtime.CompilerServices.VisualC.dll", 475 | "ref/netcoreapp2.1/System.Runtime.CompilerServices.VisualC.xml", 476 | "ref/netcoreapp2.1/System.Runtime.Extensions.dll", 477 | "ref/netcoreapp2.1/System.Runtime.Extensions.xml", 478 | "ref/netcoreapp2.1/System.Runtime.Handles.dll", 479 | "ref/netcoreapp2.1/System.Runtime.InteropServices.RuntimeInformation.dll", 480 | "ref/netcoreapp2.1/System.Runtime.InteropServices.RuntimeInformation.xml", 481 | "ref/netcoreapp2.1/System.Runtime.InteropServices.WindowsRuntime.dll", 482 | "ref/netcoreapp2.1/System.Runtime.InteropServices.WindowsRuntime.xml", 483 | "ref/netcoreapp2.1/System.Runtime.InteropServices.dll", 484 | "ref/netcoreapp2.1/System.Runtime.InteropServices.xml", 485 | "ref/netcoreapp2.1/System.Runtime.Loader.dll", 486 | "ref/netcoreapp2.1/System.Runtime.Loader.xml", 487 | "ref/netcoreapp2.1/System.Runtime.Numerics.dll", 488 | "ref/netcoreapp2.1/System.Runtime.Numerics.xml", 489 | "ref/netcoreapp2.1/System.Runtime.Serialization.Formatters.dll", 490 | "ref/netcoreapp2.1/System.Runtime.Serialization.Formatters.xml", 491 | "ref/netcoreapp2.1/System.Runtime.Serialization.Json.dll", 492 | "ref/netcoreapp2.1/System.Runtime.Serialization.Json.xml", 493 | "ref/netcoreapp2.1/System.Runtime.Serialization.Primitives.dll", 494 | "ref/netcoreapp2.1/System.Runtime.Serialization.Primitives.xml", 495 | "ref/netcoreapp2.1/System.Runtime.Serialization.Xml.dll", 496 | "ref/netcoreapp2.1/System.Runtime.Serialization.Xml.xml", 497 | "ref/netcoreapp2.1/System.Runtime.Serialization.dll", 498 | "ref/netcoreapp2.1/System.Runtime.dll", 499 | "ref/netcoreapp2.1/System.Runtime.xml", 500 | "ref/netcoreapp2.1/System.Security.Claims.dll", 501 | "ref/netcoreapp2.1/System.Security.Claims.xml", 502 | "ref/netcoreapp2.1/System.Security.Cryptography.Algorithms.dll", 503 | "ref/netcoreapp2.1/System.Security.Cryptography.Algorithms.xml", 504 | "ref/netcoreapp2.1/System.Security.Cryptography.Csp.dll", 505 | "ref/netcoreapp2.1/System.Security.Cryptography.Csp.xml", 506 | "ref/netcoreapp2.1/System.Security.Cryptography.Encoding.dll", 507 | "ref/netcoreapp2.1/System.Security.Cryptography.Encoding.xml", 508 | "ref/netcoreapp2.1/System.Security.Cryptography.Primitives.dll", 509 | "ref/netcoreapp2.1/System.Security.Cryptography.Primitives.xml", 510 | "ref/netcoreapp2.1/System.Security.Cryptography.X509Certificates.dll", 511 | "ref/netcoreapp2.1/System.Security.Cryptography.X509Certificates.xml", 512 | "ref/netcoreapp2.1/System.Security.Principal.dll", 513 | "ref/netcoreapp2.1/System.Security.Principal.xml", 514 | "ref/netcoreapp2.1/System.Security.SecureString.dll", 515 | "ref/netcoreapp2.1/System.Security.dll", 516 | "ref/netcoreapp2.1/System.ServiceModel.Web.dll", 517 | "ref/netcoreapp2.1/System.ServiceProcess.dll", 518 | "ref/netcoreapp2.1/System.Text.Encoding.Extensions.dll", 519 | "ref/netcoreapp2.1/System.Text.Encoding.Extensions.xml", 520 | "ref/netcoreapp2.1/System.Text.Encoding.dll", 521 | "ref/netcoreapp2.1/System.Text.RegularExpressions.dll", 522 | "ref/netcoreapp2.1/System.Text.RegularExpressions.xml", 523 | "ref/netcoreapp2.1/System.Threading.Overlapped.dll", 524 | "ref/netcoreapp2.1/System.Threading.Overlapped.xml", 525 | "ref/netcoreapp2.1/System.Threading.Tasks.Dataflow.dll", 526 | "ref/netcoreapp2.1/System.Threading.Tasks.Dataflow.xml", 527 | "ref/netcoreapp2.1/System.Threading.Tasks.Extensions.dll", 528 | "ref/netcoreapp2.1/System.Threading.Tasks.Extensions.xml", 529 | "ref/netcoreapp2.1/System.Threading.Tasks.Parallel.dll", 530 | "ref/netcoreapp2.1/System.Threading.Tasks.Parallel.xml", 531 | "ref/netcoreapp2.1/System.Threading.Tasks.dll", 532 | "ref/netcoreapp2.1/System.Threading.Tasks.xml", 533 | "ref/netcoreapp2.1/System.Threading.Thread.dll", 534 | "ref/netcoreapp2.1/System.Threading.Thread.xml", 535 | "ref/netcoreapp2.1/System.Threading.ThreadPool.dll", 536 | "ref/netcoreapp2.1/System.Threading.ThreadPool.xml", 537 | "ref/netcoreapp2.1/System.Threading.Timer.dll", 538 | "ref/netcoreapp2.1/System.Threading.Timer.xml", 539 | "ref/netcoreapp2.1/System.Threading.dll", 540 | "ref/netcoreapp2.1/System.Threading.xml", 541 | "ref/netcoreapp2.1/System.Transactions.Local.dll", 542 | "ref/netcoreapp2.1/System.Transactions.Local.xml", 543 | "ref/netcoreapp2.1/System.Transactions.dll", 544 | "ref/netcoreapp2.1/System.ValueTuple.dll", 545 | "ref/netcoreapp2.1/System.Web.HttpUtility.dll", 546 | "ref/netcoreapp2.1/System.Web.HttpUtility.xml", 547 | "ref/netcoreapp2.1/System.Web.dll", 548 | "ref/netcoreapp2.1/System.Windows.dll", 549 | "ref/netcoreapp2.1/System.Xml.Linq.dll", 550 | "ref/netcoreapp2.1/System.Xml.ReaderWriter.dll", 551 | "ref/netcoreapp2.1/System.Xml.ReaderWriter.xml", 552 | "ref/netcoreapp2.1/System.Xml.Serialization.dll", 553 | "ref/netcoreapp2.1/System.Xml.XDocument.dll", 554 | "ref/netcoreapp2.1/System.Xml.XDocument.xml", 555 | "ref/netcoreapp2.1/System.Xml.XPath.XDocument.dll", 556 | "ref/netcoreapp2.1/System.Xml.XPath.XDocument.xml", 557 | "ref/netcoreapp2.1/System.Xml.XPath.dll", 558 | "ref/netcoreapp2.1/System.Xml.XPath.xml", 559 | "ref/netcoreapp2.1/System.Xml.XmlDocument.dll", 560 | "ref/netcoreapp2.1/System.Xml.XmlSerializer.dll", 561 | "ref/netcoreapp2.1/System.Xml.XmlSerializer.xml", 562 | "ref/netcoreapp2.1/System.Xml.dll", 563 | "ref/netcoreapp2.1/System.dll", 564 | "ref/netcoreapp2.1/WindowsBase.dll", 565 | "ref/netcoreapp2.1/mscorlib.dll", 566 | "ref/netcoreapp2.1/netstandard.dll", 567 | "runtime.json" 568 | ] 569 | }, 570 | "Microsoft.NETCore.DotNetAppHost/2.1.0": { 571 | "sha512": "vMn8V3GOp/SPOG2oE8WxswzAWZ/GZmc8EPiB3vc2EZ6us14ehXhsvUFXndYopGNSjCa9OdqC6L6xStF1KyUZnw==", 572 | "type": "package", 573 | "path": "microsoft.netcore.dotnetapphost/2.1.0", 574 | "files": [ 575 | ".nupkg.metadata", 576 | ".signature.p7s", 577 | "LICENSE.TXT", 578 | "THIRD-PARTY-NOTICES.TXT", 579 | "microsoft.netcore.dotnetapphost.2.1.0.nupkg.sha512", 580 | "microsoft.netcore.dotnetapphost.nuspec", 581 | "runtime.json" 582 | ] 583 | }, 584 | "Microsoft.NETCore.DotNetHostPolicy/2.1.0": { 585 | "sha512": "vBUwNihtLUVS2HhO6WocYfAktRmfFihm6JB8/sJ53caVW+AelvbnYpfiGzaZDpkWjN6vA3xzOKPu9Vu8Zz3p8Q==", 586 | "type": "package", 587 | "path": "microsoft.netcore.dotnethostpolicy/2.1.0", 588 | "files": [ 589 | ".nupkg.metadata", 590 | ".signature.p7s", 591 | "LICENSE.TXT", 592 | "THIRD-PARTY-NOTICES.TXT", 593 | "microsoft.netcore.dotnethostpolicy.2.1.0.nupkg.sha512", 594 | "microsoft.netcore.dotnethostpolicy.nuspec", 595 | "runtime.json" 596 | ] 597 | }, 598 | "Microsoft.NETCore.DotNetHostResolver/2.1.0": { 599 | "sha512": "o0PRql5qOHFEY3d1WvzE+T7cMFKtOsWLMg8L1oTeGNnI4u5AzOj8o6AdZT3y2GxFA1DAx7AQ9qZjpCO2/bgZRw==", 600 | "type": "package", 601 | "path": "microsoft.netcore.dotnethostresolver/2.1.0", 602 | "files": [ 603 | ".nupkg.metadata", 604 | ".signature.p7s", 605 | "LICENSE.TXT", 606 | "THIRD-PARTY-NOTICES.TXT", 607 | "microsoft.netcore.dotnethostresolver.2.1.0.nupkg.sha512", 608 | "microsoft.netcore.dotnethostresolver.nuspec", 609 | "runtime.json" 610 | ] 611 | }, 612 | "Microsoft.NETCore.Platforms/2.1.0": { 613 | "sha512": "ok+RPAtESz/9MUXeIEz6Lv5XAGQsaNmEYXMsgVALj4D7kqC8gveKWXWXbufLySR2fWrwZf8smyN5RmHu0e4BHA==", 614 | "type": "package", 615 | "path": "microsoft.netcore.platforms/2.1.0", 616 | "files": [ 617 | ".nupkg.metadata", 618 | ".signature.p7s", 619 | "LICENSE.TXT", 620 | "THIRD-PARTY-NOTICES.TXT", 621 | "lib/netstandard1.0/_._", 622 | "microsoft.netcore.platforms.2.1.0.nupkg.sha512", 623 | "microsoft.netcore.platforms.nuspec", 624 | "runtime.json", 625 | "useSharedDesignerContext.txt", 626 | "version.txt" 627 | ] 628 | }, 629 | "Microsoft.NETCore.Targets/2.1.0": { 630 | "sha512": "x188gIZXOwFXkPXyGavEcPGcR6RGvjFOES2QzskN4gERZjWPN34qhRsZVMC0CLJfQLGSButarcgWxPPM4vmg0w==", 631 | "type": "package", 632 | "path": "microsoft.netcore.targets/2.1.0", 633 | "files": [ 634 | ".nupkg.metadata", 635 | ".signature.p7s", 636 | "LICENSE.TXT", 637 | "THIRD-PARTY-NOTICES.TXT", 638 | "lib/netstandard1.0/_._", 639 | "microsoft.netcore.targets.2.1.0.nupkg.sha512", 640 | "microsoft.netcore.targets.nuspec", 641 | "runtime.json", 642 | "useSharedDesignerContext.txt", 643 | "version.txt" 644 | ] 645 | }, 646 | "NETStandard.Library/2.0.3": { 647 | "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", 648 | "type": "package", 649 | "path": "netstandard.library/2.0.3", 650 | "files": [ 651 | ".nupkg.metadata", 652 | "LICENSE.TXT", 653 | "THIRD-PARTY-NOTICES.TXT", 654 | "build/netstandard2.0/NETStandard.Library.targets", 655 | "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll", 656 | "build/netstandard2.0/ref/System.AppContext.dll", 657 | "build/netstandard2.0/ref/System.Collections.Concurrent.dll", 658 | "build/netstandard2.0/ref/System.Collections.NonGeneric.dll", 659 | "build/netstandard2.0/ref/System.Collections.Specialized.dll", 660 | "build/netstandard2.0/ref/System.Collections.dll", 661 | "build/netstandard2.0/ref/System.ComponentModel.Composition.dll", 662 | "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll", 663 | "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll", 664 | "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll", 665 | "build/netstandard2.0/ref/System.ComponentModel.dll", 666 | "build/netstandard2.0/ref/System.Console.dll", 667 | "build/netstandard2.0/ref/System.Core.dll", 668 | "build/netstandard2.0/ref/System.Data.Common.dll", 669 | "build/netstandard2.0/ref/System.Data.dll", 670 | "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll", 671 | "build/netstandard2.0/ref/System.Diagnostics.Debug.dll", 672 | "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll", 673 | "build/netstandard2.0/ref/System.Diagnostics.Process.dll", 674 | "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll", 675 | "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll", 676 | "build/netstandard2.0/ref/System.Diagnostics.Tools.dll", 677 | "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll", 678 | "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll", 679 | "build/netstandard2.0/ref/System.Drawing.Primitives.dll", 680 | "build/netstandard2.0/ref/System.Drawing.dll", 681 | "build/netstandard2.0/ref/System.Dynamic.Runtime.dll", 682 | "build/netstandard2.0/ref/System.Globalization.Calendars.dll", 683 | "build/netstandard2.0/ref/System.Globalization.Extensions.dll", 684 | "build/netstandard2.0/ref/System.Globalization.dll", 685 | "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll", 686 | "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll", 687 | "build/netstandard2.0/ref/System.IO.Compression.dll", 688 | "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll", 689 | "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll", 690 | "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll", 691 | "build/netstandard2.0/ref/System.IO.FileSystem.dll", 692 | "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll", 693 | "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll", 694 | "build/netstandard2.0/ref/System.IO.Pipes.dll", 695 | "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll", 696 | "build/netstandard2.0/ref/System.IO.dll", 697 | "build/netstandard2.0/ref/System.Linq.Expressions.dll", 698 | "build/netstandard2.0/ref/System.Linq.Parallel.dll", 699 | "build/netstandard2.0/ref/System.Linq.Queryable.dll", 700 | "build/netstandard2.0/ref/System.Linq.dll", 701 | "build/netstandard2.0/ref/System.Net.Http.dll", 702 | "build/netstandard2.0/ref/System.Net.NameResolution.dll", 703 | "build/netstandard2.0/ref/System.Net.NetworkInformation.dll", 704 | "build/netstandard2.0/ref/System.Net.Ping.dll", 705 | "build/netstandard2.0/ref/System.Net.Primitives.dll", 706 | "build/netstandard2.0/ref/System.Net.Requests.dll", 707 | "build/netstandard2.0/ref/System.Net.Security.dll", 708 | "build/netstandard2.0/ref/System.Net.Sockets.dll", 709 | "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll", 710 | "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll", 711 | "build/netstandard2.0/ref/System.Net.WebSockets.dll", 712 | "build/netstandard2.0/ref/System.Net.dll", 713 | "build/netstandard2.0/ref/System.Numerics.dll", 714 | "build/netstandard2.0/ref/System.ObjectModel.dll", 715 | "build/netstandard2.0/ref/System.Reflection.Extensions.dll", 716 | "build/netstandard2.0/ref/System.Reflection.Primitives.dll", 717 | "build/netstandard2.0/ref/System.Reflection.dll", 718 | "build/netstandard2.0/ref/System.Resources.Reader.dll", 719 | "build/netstandard2.0/ref/System.Resources.ResourceManager.dll", 720 | "build/netstandard2.0/ref/System.Resources.Writer.dll", 721 | "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll", 722 | "build/netstandard2.0/ref/System.Runtime.Extensions.dll", 723 | "build/netstandard2.0/ref/System.Runtime.Handles.dll", 724 | "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll", 725 | "build/netstandard2.0/ref/System.Runtime.InteropServices.dll", 726 | "build/netstandard2.0/ref/System.Runtime.Numerics.dll", 727 | "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll", 728 | "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll", 729 | "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll", 730 | "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll", 731 | "build/netstandard2.0/ref/System.Runtime.Serialization.dll", 732 | "build/netstandard2.0/ref/System.Runtime.dll", 733 | "build/netstandard2.0/ref/System.Security.Claims.dll", 734 | "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll", 735 | "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll", 736 | "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll", 737 | "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll", 738 | "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll", 739 | "build/netstandard2.0/ref/System.Security.Principal.dll", 740 | "build/netstandard2.0/ref/System.Security.SecureString.dll", 741 | "build/netstandard2.0/ref/System.ServiceModel.Web.dll", 742 | "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll", 743 | "build/netstandard2.0/ref/System.Text.Encoding.dll", 744 | "build/netstandard2.0/ref/System.Text.RegularExpressions.dll", 745 | "build/netstandard2.0/ref/System.Threading.Overlapped.dll", 746 | "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll", 747 | "build/netstandard2.0/ref/System.Threading.Tasks.dll", 748 | "build/netstandard2.0/ref/System.Threading.Thread.dll", 749 | "build/netstandard2.0/ref/System.Threading.ThreadPool.dll", 750 | "build/netstandard2.0/ref/System.Threading.Timer.dll", 751 | "build/netstandard2.0/ref/System.Threading.dll", 752 | "build/netstandard2.0/ref/System.Transactions.dll", 753 | "build/netstandard2.0/ref/System.ValueTuple.dll", 754 | "build/netstandard2.0/ref/System.Web.dll", 755 | "build/netstandard2.0/ref/System.Windows.dll", 756 | "build/netstandard2.0/ref/System.Xml.Linq.dll", 757 | "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll", 758 | "build/netstandard2.0/ref/System.Xml.Serialization.dll", 759 | "build/netstandard2.0/ref/System.Xml.XDocument.dll", 760 | "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll", 761 | "build/netstandard2.0/ref/System.Xml.XPath.dll", 762 | "build/netstandard2.0/ref/System.Xml.XmlDocument.dll", 763 | "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll", 764 | "build/netstandard2.0/ref/System.Xml.dll", 765 | "build/netstandard2.0/ref/System.dll", 766 | "build/netstandard2.0/ref/mscorlib.dll", 767 | "build/netstandard2.0/ref/netstandard.dll", 768 | "build/netstandard2.0/ref/netstandard.xml", 769 | "lib/netstandard1.0/_._", 770 | "netstandard.library.2.0.3.nupkg.sha512", 771 | "netstandard.library.nuspec" 772 | ] 773 | }, 774 | "SC2API-CSharp/1.0.0": { 775 | "type": "project", 776 | "path": "../SC2API-CSharp/SC2API-CSharp.csproj", 777 | "msbuildProject": "../SC2API-CSharp/SC2API-CSharp.csproj" 778 | }, 779 | "SC2APIProtocol/1.0.0": { 780 | "type": "project", 781 | "path": "../SC2APIProtocol/SC2APIProtocol.csproj", 782 | "msbuildProject": "../SC2APIProtocol/SC2APIProtocol.csproj" 783 | } 784 | }, 785 | "projectFileDependencyGroups": { 786 | ".NETCoreApp,Version=v2.1": [ 787 | "Google.Protobuf >= 3.5.1", 788 | "Microsoft.NETCore.App >= 2.1.0", 789 | "SC2API-CSharp >= 1.0.0", 790 | "SC2APIProtocol >= 1.0.0" 791 | ], 792 | ".NETFramework,Version=v4.6.1": [ 793 | "Google.Protobuf >= 3.5.1", 794 | "SC2API-CSharp >= 1.0.0", 795 | "SC2APIProtocol >= 1.0.0" 796 | ] 797 | }, 798 | "packageFolders": { 799 | "C:\\Users\\Simon\\.nuget\\packages\\": {}, 800 | "C:\\Microsoft\\Xamarin\\NuGet\\": {}, 801 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {} 802 | }, 803 | "project": { 804 | "version": "1.0.0", 805 | "restore": { 806 | "projectUniqueName": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\ExampleBot.csproj", 807 | "projectName": "ExampleBot", 808 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\ExampleBot.csproj", 809 | "packagesPath": "C:\\Users\\Simon\\.nuget\\packages\\", 810 | "outputPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\obj\\", 811 | "projectStyle": "PackageReference", 812 | "crossTargeting": true, 813 | "fallbackFolders": [ 814 | "C:\\Microsoft\\Xamarin\\NuGet\\", 815 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 816 | ], 817 | "configFilePaths": [ 818 | "C:\\Users\\Simon\\AppData\\Roaming\\NuGet\\NuGet.Config", 819 | "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", 820 | "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" 821 | ], 822 | "originalTargetFrameworks": [ 823 | "net461", 824 | "netcoreapp2.1" 825 | ], 826 | "sources": { 827 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, 828 | "https://api.nuget.org/v3/index.json": {} 829 | }, 830 | "frameworks": { 831 | "netcoreapp2.1": { 832 | "projectReferences": { 833 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj": { 834 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj" 835 | }, 836 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj": { 837 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj" 838 | } 839 | } 840 | }, 841 | "net461": { 842 | "projectReferences": { 843 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj": { 844 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2API-CSharp\\SC2API-CSharp.csproj" 845 | }, 846 | "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj": { 847 | "projectPath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\SC2APIProtocol\\SC2APIProtocol.csproj" 848 | } 849 | } 850 | } 851 | }, 852 | "warningProperties": { 853 | "warnAsError": [ 854 | "NU1605" 855 | ] 856 | } 857 | }, 858 | "frameworks": { 859 | "netcoreapp2.1": { 860 | "dependencies": { 861 | "Google.Protobuf": { 862 | "target": "Package", 863 | "version": "[3.5.1, )" 864 | }, 865 | "Microsoft.NETCore.App": { 866 | "suppressParent": "All", 867 | "target": "Package", 868 | "version": "[2.1.0, )", 869 | "autoReferenced": true 870 | } 871 | }, 872 | "imports": [ 873 | "net461", 874 | "net462", 875 | "net47", 876 | "net471", 877 | "net472", 878 | "net48" 879 | ], 880 | "assetTargetFallback": true, 881 | "warn": true, 882 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 883 | }, 884 | "net461": { 885 | "dependencies": { 886 | "Google.Protobuf": { 887 | "target": "Package", 888 | "version": "[3.5.1, )" 889 | } 890 | }, 891 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json" 892 | } 893 | } 894 | } 895 | } -------------------------------------------------------------------------------- /ExampleBot/obj/project.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "dgSpecHash": "Rs1lDdI7LVcXhW/FZm8fW8CmQUh63mzi88Zs1NTJJwBeN7YgGGd4QpDjJxX0OwVhGtRCTex40Mkq95gBjBBDDA==", 4 | "success": true, 5 | "projectFilePath": "C:\\Simon\\Code\\SC2AI\\C#\\ExampleBot\\ExampleBot\\ExampleBot.csproj", 6 | "expectedPackageFiles": [ 7 | "C:\\Users\\Simon\\.nuget\\packages\\google.protobuf\\3.5.1\\google.protobuf.3.5.1.nupkg.sha512", 8 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder\\microsoft.netcore.app\\2.1.0\\microsoft.netcore.app.2.1.0.nupkg.sha512", 9 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder\\microsoft.netcore.dotnetapphost\\2.1.0\\microsoft.netcore.dotnetapphost.2.1.0.nupkg.sha512", 10 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder\\microsoft.netcore.dotnethostpolicy\\2.1.0\\microsoft.netcore.dotnethostpolicy.2.1.0.nupkg.sha512", 11 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder\\microsoft.netcore.dotnethostresolver\\2.1.0\\microsoft.netcore.dotnethostresolver.2.1.0.nupkg.sha512", 12 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder\\microsoft.netcore.platforms\\2.1.0\\microsoft.netcore.platforms.2.1.0.nupkg.sha512", 13 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder\\microsoft.netcore.targets\\2.1.0\\microsoft.netcore.targets.2.1.0.nupkg.sha512", 14 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder\\netstandard.library\\2.0.3\\netstandard.library.2.0.3.nupkg.sha512" 15 | ], 16 | "logs": [] 17 | } -------------------------------------------------------------------------------- /ExampleBot/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Simon Prins 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PROTOCOL_LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Blizzard Entertainment 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ExampleBot 2 | This repository contains an example C# bot to play Starcraft 2. It is a blank bot, which does nothing, which you can use as a base to build your own bot. It makes use of the [Starcraft 2 Client protocol](https://github.com/Blizzard/s2client-proto). By starting from this bot, it will be easy to upload your bot for use on the [ladder](http://sc2ai.net) To get started simply follow the instructions below. 3 | 4 | ## Getting started 5 | ### Preperations 6 | First you will have to install some things, if you haven't already. 7 | 1. Download [Starcraft 2](https://starcraft2.com/) 8 | 2. Install [Visual studio](https://www.visualstudio.com/downloads/). In the installer, choose the .NET desktop development IDE. 9 | 3. Go [here](https://github.com/Blizzard/s2client-proto#downloads) and download the Season 3 map pack. 10 | 4. Extract the maps to 'C:\Program Files (x86)\StarCraft II\Maps\'. Make sure you have extracted the maps directly into the folder, if they aren't in exactly the right place the program will be unable to find them. 11 | 12 | ### Preparing the bot 13 | In this section you will prepare the bot for your own use. It is imortant that you have picked a name for your bot! You will have to rename a number of files for your bot. It is important to rename these files if you intend to use your bot on the ladder, since the bot will have to have a unique filename. 14 | 15 | 1. Clone or download this repository. 16 | 2. Open ExampleBot.sln in Visual Studio. 17 | 3. Right click on the DotnetCoreRunner project and go to properties. In the Application tab set the Assembly name to the name of your bot. This will determine the name of your bot's .dll file. If you plan to upload your bot to ai-arena it is important that this matches your bot name as chosen in ai-arena exactly as ai-arena finds the dll based on the name of your bot. 18 | 19 | ### Writing your bot 20 | To start writing your bot, let's first look at the existing files. 21 | 1. Open the Program.cs file in the ExampleBot project. 22 | 2. Set the race variable to the race you want your bot to play. 23 | 3. You can set the mapName, opponentRace and opponentDifficulty variables when testing against the built in Blizzard AI. 24 | 4. Open the Bot.cs file. 25 | 5. In the onFrame method you can program the behaviour for your bot. The observation parameter provides all the information about the current frame of the game. The gameInfo parameter will have the same value each frame. It provides static game information such as which parts of the map are buildable. The playerId parameter is the ID for your bot. You can use it to figure out which units are yours. 26 | 6. The onFrame method will return a list of actions you want your bot to perform. An action can, for instance, be a command for a unit to move somewhere, or a command for a building to start training a unit. You can simply add actions to the list and the bot will carry them out. 27 | 7. To try your bot against the Blizzard AI, you can simply run the ExampleBot project by right clicking it and selecting Debug -> Start new instance. If you haven't specified any actions for your bot to take your bot will do nothing. You will be able to order the units around yourself. It is a good idea to try this, to see if the game manages to load correctly. 28 | 29 | ### Preparing your bot for the ladder 30 | You will need to take a number of steps to prepare your bot for the ladder. 31 | 1. Publish your bot by using the command `dotnet publish DotnetCoreRunner` from the root folder of this project. 32 | 2. All the necesary files for your bot will be created in the `ExampleBot\DotnetCoreRunner\bin\Debug\netcoreapp3.1\publish\` folder. 33 | 3. Add a ladderbots.json file. An example file can be found in the root of this project. All you have to do is fill in your bots name and race. Also note the name of the dll file specified in the ladderbots.json. This should match the name you set for your bot in step 3 of Preparing your bot. 34 | 4. You can now create a zip file from the folder created at step 1 by right clicking on the contents of the folder and selecting Send to -> Compressed (zipped) folder. 35 | 5. You can upload the zipped file to the [sc2ai ladder](http://sc2ai.net) or the [ai-arena ladder](https://aiarena.net/). You may have to create an account first. 36 | 37 | ### Playing your bot against other bots through the LadderManager 38 | You can also run the LadderManager locally. The following instructions will allow you to do so. 39 | 1. Follow the instructions [here](https://github.com/Cryptyc/Sc2LadderServer#developer-install--compile-instructions-windows) to install the LadderManager. If you only have the .NET version of visual studio you may also need to install the C++ version. This can be done by using the installer from step 2 of the 'Preperations' section and choosing the C++ IDE. 40 | 2. Create a new folder inside the Bots folder and set the name of the new folder to the name of your bot. 41 | 3. Move the contents of the folder created in 'Preparing your bot for the ladder' to the new folder. 42 | 4. Add a game between your bot and another to the matchuplist. 43 | -------------------------------------------------------------------------------- /SC2API-CSharp/Bot.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using SC2APIProtocol; 4 | 5 | namespace SC2API_CSharp 6 | { 7 | public interface Bot 8 | { 9 | IEnumerable OnFrame(ResponseObservation observation); 10 | void OnEnd(ResponseObservation observation, Result result); 11 | void OnStart(ResponseGameInfo gameInfo, ResponseData data, ResponsePing pingResponse, ResponseObservation observation, uint playerId, String opponentId); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /SC2API-CSharp/CLArgs.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using SC2APIProtocol; 3 | 4 | namespace SC2API_CSharp 5 | { 6 | /* This class is used to load the CommandLine arguments for the bot. 7 | */ 8 | class CLArgs 9 | { 10 | private int gamePort; 11 | private int startPort; 12 | private string ladderServer; 13 | private Race computerRace = Race.NoRace; 14 | private Difficulty computerDifficulty = Difficulty.Unset; 15 | 16 | public CLArgs(string[] args) 17 | { 18 | for (int i = 0; i < args.Count(); i += 2) 19 | { 20 | if (args[i] == "-g" || args[i] == "--GamePort") 21 | gamePort = int.Parse(args[i + 1]); 22 | else if (args[i] == "-o" || args[i] == "--StartPort") 23 | startPort = int.Parse(args[i + 1]); 24 | else if (args[i] == "-l" || args[i] == "--LadderServer") 25 | ladderServer = args[i + 1]; 26 | else if (args[i] == "--OpponentId") 27 | OpponentID = args[i + 1]; 28 | else if (args[i] == "-c" || args[i] == "--ComputerOpponent") 29 | { 30 | if (computerRace == Race.NoRace) 31 | computerRace = Race.Random; 32 | if (computerDifficulty == Difficulty.Unset) 33 | computerDifficulty = Difficulty.VeryHard; 34 | i--; 35 | } 36 | else if (args[i] == "-a" || args[i] == "--ComputerRace") 37 | { 38 | if (args[i + 1] == "Protoss") 39 | computerRace = Race.Protoss; 40 | else if (args[i + 1] == "Terran") 41 | computerRace = Race.Terran; 42 | else if (args[i + 1] == "Zerg") 43 | computerRace = Race.Zerg; 44 | else if (args[i + 1] == "Random") 45 | computerRace = Race.Random; 46 | } 47 | else if (args[i] == "-d" || args[i] == "--ComputerDifficulty") 48 | { 49 | if (args[i + 1] == "VeryEasy") 50 | { 51 | computerDifficulty = Difficulty.VeryEasy; 52 | } 53 | if (args[i + 1] == "Easy") 54 | { 55 | computerDifficulty = Difficulty.Easy; 56 | } 57 | if (args[i + 1] == "Medium") 58 | { 59 | computerDifficulty = Difficulty.Medium; 60 | } 61 | if (args[i + 1] == "MediumHard") 62 | { 63 | computerDifficulty = Difficulty.MediumHard; 64 | } 65 | if (args[i + 1] == "Hard") 66 | { 67 | computerDifficulty = Difficulty.Hard; 68 | } 69 | if (args[i + 1] == "Harder") 70 | { 71 | computerDifficulty = Difficulty.Harder; 72 | } 73 | if (args[i + 1] == "VeryHard") 74 | { 75 | computerDifficulty = Difficulty.VeryHard; 76 | } 77 | if (args[i + 1] == "CheatVision") 78 | { 79 | computerDifficulty = Difficulty.CheatVision; 80 | } 81 | if (args[i + 1] == "CheatMoney") 82 | { 83 | computerDifficulty = Difficulty.CheatMoney; 84 | } 85 | if (args[i + 1] == "CheatInsane") 86 | { 87 | computerDifficulty = Difficulty.CheatInsane; 88 | } 89 | 90 | computerDifficulty = Difficulty.Easy; 91 | } 92 | } 93 | } 94 | 95 | public int GamePort { get => gamePort; set => gamePort = value; } 96 | public int StartPort { get => startPort; set => startPort = value; } 97 | public string LadderServer { get => ladderServer; set => ladderServer = value; } 98 | public Race ComputerRace { get => computerRace; set => computerRace = value; } 99 | public Difficulty ComputerDifficulty { get => computerDifficulty; set => computerDifficulty = value; } 100 | public string OpponentID { get; set; } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /SC2API-CSharp/GameConnection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Net.WebSockets; 6 | using System.Threading; 7 | using System.Threading.Tasks; 8 | using SC2APIProtocol; 9 | 10 | namespace SC2API_CSharp 11 | { 12 | public class GameConnection 13 | { 14 | ProtobufProxy proxy = new ProtobufProxy(); 15 | string address = "127.0.0.1"; 16 | 17 | string starcraftExe; 18 | string starcraftDir; 19 | 20 | public GameConnection() 21 | { } 22 | 23 | public void StartSC2Instance(int port) 24 | { 25 | ProcessStartInfo processStartInfo = new ProcessStartInfo(starcraftExe); 26 | processStartInfo.Arguments = String.Format("-listen {0} -port {1} -displayMode 0", address, port); 27 | processStartInfo.WorkingDirectory = Path.Combine(starcraftDir, "Support64"); 28 | Process.Start(processStartInfo); 29 | } 30 | 31 | public async Task Connect(int port) 32 | { 33 | 34 | for (int i = 0; i < 40; i++) 35 | { 36 | try 37 | { 38 | await proxy.Connect(address, port); 39 | return; 40 | } 41 | catch (WebSocketException) { } 42 | Thread.Sleep(2000); 43 | } 44 | throw new Exception("Unable to make a connection."); 45 | } 46 | 47 | public async Task CreateGame(String mapName, Race opponentRace, Difficulty opponentDifficulty) 48 | { 49 | RequestCreateGame createGame = new RequestCreateGame(); 50 | createGame.Realtime = false; 51 | 52 | string mapPath = Path.Combine(starcraftDir, "Maps", mapName); 53 | if (!File.Exists(mapPath)) 54 | throw new Exception("Could not find map at " + mapPath); 55 | createGame.LocalMap = new LocalMap(); 56 | createGame.LocalMap.MapPath = mapPath; 57 | 58 | PlayerSetup player1 = new PlayerSetup(); 59 | createGame.PlayerSetup.Add(player1); 60 | player1.Type = PlayerType.Participant; 61 | 62 | PlayerSetup player2 = new PlayerSetup(); 63 | createGame.PlayerSetup.Add(player2); 64 | player2.Race = opponentRace; 65 | player2.Type = PlayerType.Computer; 66 | player2.Difficulty = opponentDifficulty; 67 | 68 | Request request = new Request(); 69 | request.CreateGame = createGame; 70 | Response response = await proxy.SendRequest(request); 71 | } 72 | 73 | private void readSettings() 74 | { 75 | string myDocuments = Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); 76 | string executeInfo = Path.Combine(myDocuments, "Starcraft II", "ExecuteInfo.txt"); 77 | if (File.Exists(executeInfo)) 78 | { 79 | string[] lines = File.ReadAllLines(executeInfo); 80 | foreach (string line in lines) 81 | { 82 | string argument = line.Substring(line.IndexOf('=') + 1).Trim(); 83 | if (line.Trim().StartsWith("executable")) 84 | { 85 | starcraftExe = argument; 86 | starcraftDir = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(starcraftExe))); 87 | } 88 | } 89 | } 90 | else 91 | throw new Exception("Unable to find ExecuteInfo.txt at " + executeInfo); 92 | } 93 | 94 | public async Task JoinGame(Race race) 95 | { 96 | RequestJoinGame joinGame = new RequestJoinGame(); 97 | joinGame.Race = race; 98 | 99 | joinGame.Options = new InterfaceOptions(); 100 | joinGame.Options.Raw = true; 101 | joinGame.Options.Score = true; 102 | 103 | Request request = new Request(); 104 | request.JoinGame = joinGame; 105 | Response response = await proxy.SendRequest(request); 106 | return response.JoinGame.PlayerId; 107 | } 108 | 109 | public async Task JoinGameLadder(Race race, int startPort) 110 | { 111 | RequestJoinGame joinGame = new RequestJoinGame(); 112 | joinGame.Race = race; 113 | 114 | joinGame.SharedPort = startPort + 1; 115 | joinGame.ServerPorts = new PortSet(); 116 | joinGame.ServerPorts.GamePort = startPort + 2; 117 | joinGame.ServerPorts.BasePort = startPort + 3; 118 | 119 | joinGame.ClientPorts.Add(new PortSet()); 120 | joinGame.ClientPorts[0].GamePort = startPort + 4; 121 | joinGame.ClientPorts[0].BasePort = startPort + 5; 122 | 123 | joinGame.Options = new InterfaceOptions(); 124 | joinGame.Options.Raw = true; 125 | joinGame.Options.ShowCloaked = true; 126 | joinGame.Options.Score = true; 127 | 128 | Request request = new Request(); 129 | request.JoinGame = joinGame; 130 | 131 | Response response = await proxy.SendRequest(request); 132 | return response.JoinGame.PlayerId; 133 | } 134 | 135 | public async Task Ping() 136 | { 137 | Request request = new Request(); 138 | request.Ping = new RequestPing(); 139 | Response response = await proxy.SendRequest(request); 140 | return response.Ping; 141 | } 142 | 143 | public async Task RequestLeaveGame() 144 | { 145 | Request requestLeaveGame = new Request(); 146 | requestLeaveGame.LeaveGame = new RequestLeaveGame(); 147 | await proxy.SendRequest(requestLeaveGame); 148 | } 149 | 150 | public async Task SendRequest(Request request) 151 | { 152 | await proxy.SendRequest(request); 153 | } 154 | 155 | public async Task SendQuery(RequestQuery query) 156 | { 157 | Request request = new Request(); 158 | request.Query = query; 159 | Response response = await proxy.SendRequest(request); 160 | return response.Query; 161 | } 162 | 163 | public async Task Run(Bot bot, uint playerId, string opponentID) 164 | { 165 | Request gameInfoReq = new Request(); 166 | gameInfoReq.GameInfo = new RequestGameInfo(); 167 | 168 | Response gameInfoResponse = await proxy.SendRequest(gameInfoReq); 169 | 170 | Request gameDataRequest = new Request(); 171 | gameDataRequest.Data = new RequestData(); 172 | gameDataRequest.Data.UnitTypeId = true; 173 | gameDataRequest.Data.AbilityId = true; 174 | gameDataRequest.Data.BuffId = true; 175 | gameDataRequest.Data.EffectId = true; 176 | gameDataRequest.Data.UpgradeId = true; 177 | 178 | Response dataResponse = await proxy.SendRequest(gameDataRequest); 179 | 180 | ResponsePing pingResponse = await Ping(); 181 | 182 | bool start = true; 183 | 184 | while (true) 185 | { 186 | Request observationRequest = new Request(); 187 | observationRequest.Observation = new RequestObservation(); 188 | Response response = await proxy.SendRequest(observationRequest); 189 | 190 | ResponseObservation observation = response.Observation; 191 | 192 | if (observation == null) 193 | { 194 | bot.OnEnd(observation, Result.Unset); 195 | break; 196 | } 197 | if (response.Status == Status.Ended || response.Status == Status.Quit) 198 | { 199 | bot.OnEnd(observation, observation.PlayerResult[(int)playerId - 1].Result); 200 | break; 201 | } 202 | 203 | if (start) 204 | { 205 | start = false; 206 | bot.OnStart(gameInfoResponse.GameInfo, dataResponse.Data, pingResponse, observation, playerId, opponentID); 207 | } 208 | 209 | IEnumerable actions = bot.OnFrame(observation); 210 | 211 | Request actionRequest = new Request(); 212 | actionRequest.Action = new RequestAction(); 213 | actionRequest.Action.Actions.AddRange(actions); 214 | if (actionRequest.Action.Actions.Count > 0) 215 | await proxy.SendRequest(actionRequest); 216 | 217 | Request stepRequest = new Request(); 218 | stepRequest.Step = new RequestStep(); 219 | stepRequest.Step.Count = 1; 220 | await proxy.SendRequest(stepRequest); 221 | } 222 | } 223 | 224 | public async Task RunSinglePlayer(Bot bot, string map, Race myRace, Race opponentRace, Difficulty opponentDifficulty) 225 | { 226 | readSettings(); 227 | StartSC2Instance(5678); 228 | await Connect(5678); 229 | await CreateGame(map, opponentRace, opponentDifficulty); 230 | uint playerId = await JoinGame(myRace); 231 | await Run(bot, playerId, null); 232 | } 233 | 234 | public async Task RunLadder(Bot bot, Race myRace, int gamePort, int startPort, String opponentID) 235 | { 236 | await Connect(gamePort); 237 | uint playerId = await JoinGameLadder(myRace, startPort); 238 | await Run(bot, playerId, opponentID); 239 | } 240 | 241 | public async Task RunLadder(Bot bot, Race myRace, string[] args) 242 | { 243 | CLArgs clargs = new CLArgs(args); 244 | await RunLadder(bot, myRace, clargs.GamePort, clargs.StartPort, clargs.OpponentID); 245 | } 246 | } 247 | } 248 | -------------------------------------------------------------------------------- /SC2API-CSharp/ProtobufProxy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net.WebSockets; 3 | using System.Threading; 4 | using System.Threading.Tasks; 5 | using Google.Protobuf; 6 | using SC2APIProtocol; 7 | 8 | namespace SC2API_CSharp 9 | { 10 | public class ProtobufProxy 11 | { 12 | private ClientWebSocket clientSocket; 13 | private CancellationToken token = new CancellationTokenSource().Token; 14 | 15 | public async Task Connect(string address, int port) 16 | { 17 | clientSocket = new ClientWebSocket(); 18 | 19 | // Disable PING control frames (https://tools.ietf.org/html/rfc6455#section-5.5.2). 20 | // It seems SC2 built in websocket server does not do PONG but tries to process ping as 21 | // request and then sends empty response to client. 22 | clientSocket.Options.KeepAliveInterval = TimeSpan.FromDays(30); 23 | string adr = string.Format("ws://{0}:{1}/sc2api", address, port); 24 | Uri uri = new Uri(adr); 25 | await clientSocket.ConnectAsync(uri, token); 26 | 27 | await Ping(); 28 | } 29 | 30 | public async Task Ping() 31 | { 32 | Request request = new Request(); 33 | request.Ping = new RequestPing(); 34 | Response response = await SendRequest(request); 35 | } 36 | 37 | public async Task SendRequest(Request request) 38 | { 39 | await WriteMessage(request); 40 | return await ReadMessage(); 41 | } 42 | 43 | public async Task Quit() 44 | { 45 | Request quit = new Request(); 46 | quit.Quit = new RequestQuit(); 47 | await WriteMessage(quit); 48 | } 49 | 50 | private async Task WriteMessage(Request request) 51 | { 52 | byte[] sendBuf = new byte[1024 * 1024]; 53 | CodedOutputStream outStream = new CodedOutputStream(sendBuf); 54 | request.WriteTo(outStream); 55 | await clientSocket.SendAsync(new ArraySegment(sendBuf, 0, (int)outStream.Position), WebSocketMessageType.Binary, true, token); 56 | } 57 | 58 | private async Task ReadMessage() 59 | { 60 | byte[] receiveBuf = new byte[1024 * 1024]; 61 | bool finished = false; 62 | int curPos = 0; 63 | while (!finished) 64 | { 65 | int left = receiveBuf.Length - curPos; 66 | if (left < 0) 67 | { 68 | // No space left in the array, enlarge the array by doubling its size. 69 | byte[] temp = new byte[receiveBuf.Length * 2]; 70 | Array.Copy(receiveBuf, temp, receiveBuf.Length); 71 | receiveBuf = temp; 72 | left = receiveBuf.Length - curPos; 73 | } 74 | WebSocketReceiveResult result = await clientSocket.ReceiveAsync(new ArraySegment(receiveBuf, curPos, left), token); 75 | if (result.MessageType != WebSocketMessageType.Binary) 76 | throw new Exception("Expected Binary message type."); 77 | 78 | curPos += result.Count; 79 | finished = result.EndOfMessage; 80 | } 81 | 82 | Response response = Response.Parser.ParseFrom(new System.IO.MemoryStream(receiveBuf, 0, curPos)); 83 | 84 | return response; 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /SC2API-CSharp/SC2API-CSharp.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Library 5 | netcoreapp2.1;net461 6 | 7 | 8 | 9 | 10 | 11 | false 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /SC2APIProtocol/Common.cs: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: s2clientprotocol/common.proto 3 | #pragma warning disable 1591, 0612, 3021 4 | #region Designer generated code 5 | 6 | using pb = global::Google.Protobuf; 7 | using pbc = global::Google.Protobuf.Collections; 8 | using pbr = global::Google.Protobuf.Reflection; 9 | using scg = global::System.Collections.Generic; 10 | namespace SC2APIProtocol { 11 | 12 | /// Holder for reflection information generated from s2clientprotocol/common.proto 13 | public static partial class CommonReflection { 14 | 15 | #region Descriptor 16 | /// File descriptor for s2clientprotocol/common.proto 17 | public static pbr::FileDescriptor Descriptor { 18 | get { return descriptor; } 19 | } 20 | private static pbr::FileDescriptor descriptor; 21 | 22 | static CommonReflection() { 23 | byte[] descriptorData = global::System.Convert.FromBase64String( 24 | string.Concat( 25 | "Ch1zMmNsaWVudHByb3RvY29sL2NvbW1vbi5wcm90bxIOU0MyQVBJUHJvdG9j", 26 | "b2wiPgoQQXZhaWxhYmxlQWJpbGl0eRISCgphYmlsaXR5X2lkGAEgASgFEhYK", 27 | "DnJlcXVpcmVzX3BvaW50GAIgASgIIlgKCUltYWdlRGF0YRIWCg5iaXRzX3Bl", 28 | "cl9waXhlbBgBIAEoBRIlCgRzaXplGAIgASgLMhcuU0MyQVBJUHJvdG9jb2wu", 29 | "U2l6ZTJESRIMCgRkYXRhGAMgASgMIh4KBlBvaW50SRIJCgF4GAEgASgFEgkK", 30 | "AXkYAiABKAUiVAoKUmVjdGFuZ2xlSRIiCgJwMBgBIAEoCzIWLlNDMkFQSVBy", 31 | "b3RvY29sLlBvaW50SRIiCgJwMRgCIAEoCzIWLlNDMkFQSVByb3RvY29sLlBv", 32 | "aW50SSIfCgdQb2ludDJEEgkKAXgYASABKAISCQoBeRgCIAEoAiIoCgVQb2lu", 33 | "dBIJCgF4GAEgASgCEgkKAXkYAiABKAISCQoBehgDIAEoAiIfCgdTaXplMkRJ", 34 | "EgkKAXgYASABKAUSCQoBeRgCIAEoBSpBCgRSYWNlEgoKBk5vUmFjZRAAEgoK", 35 | "BlRlcnJhbhABEggKBFplcmcQAhILCgdQcm90b3NzEAMSCgoGUmFuZG9tEARi", 36 | "BnByb3RvMw==")); 37 | descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, 38 | new pbr::FileDescriptor[] { }, 39 | new pbr::GeneratedClrTypeInfo(new[] {typeof(global::SC2APIProtocol.Race), }, new pbr::GeneratedClrTypeInfo[] { 40 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.AvailableAbility), global::SC2APIProtocol.AvailableAbility.Parser, new[]{ "AbilityId", "RequiresPoint" }, null, null, null), 41 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.ImageData), global::SC2APIProtocol.ImageData.Parser, new[]{ "BitsPerPixel", "Size", "Data" }, null, null, null), 42 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.PointI), global::SC2APIProtocol.PointI.Parser, new[]{ "X", "Y" }, null, null, null), 43 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.RectangleI), global::SC2APIProtocol.RectangleI.Parser, new[]{ "P0", "P1" }, null, null, null), 44 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.Point2D), global::SC2APIProtocol.Point2D.Parser, new[]{ "X", "Y" }, null, null, null), 45 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.Point), global::SC2APIProtocol.Point.Parser, new[]{ "X", "Y", "Z" }, null, null, null), 46 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.Size2DI), global::SC2APIProtocol.Size2DI.Parser, new[]{ "X", "Y" }, null, null, null) 47 | })); 48 | } 49 | #endregion 50 | 51 | } 52 | #region Enums 53 | public enum Race { 54 | [pbr::OriginalName("NoRace")] NoRace = 0, 55 | [pbr::OriginalName("Terran")] Terran = 1, 56 | [pbr::OriginalName("Zerg")] Zerg = 2, 57 | [pbr::OriginalName("Protoss")] Protoss = 3, 58 | [pbr::OriginalName("Random")] Random = 4, 59 | } 60 | 61 | #endregion 62 | 63 | #region Messages 64 | public sealed partial class AvailableAbility : pb::IMessage { 65 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AvailableAbility()); 66 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 67 | public static pb::MessageParser Parser { get { return _parser; } } 68 | 69 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 70 | public static pbr::MessageDescriptor Descriptor { 71 | get { return global::SC2APIProtocol.CommonReflection.Descriptor.MessageTypes[0]; } 72 | } 73 | 74 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 75 | pbr::MessageDescriptor pb::IMessage.Descriptor { 76 | get { return Descriptor; } 77 | } 78 | 79 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 80 | public AvailableAbility() { 81 | OnConstruction(); 82 | } 83 | 84 | partial void OnConstruction(); 85 | 86 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 87 | public AvailableAbility(AvailableAbility other) : this() { 88 | abilityId_ = other.abilityId_; 89 | requiresPoint_ = other.requiresPoint_; 90 | } 91 | 92 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 93 | public AvailableAbility Clone() { 94 | return new AvailableAbility(this); 95 | } 96 | 97 | /// Field number for the "ability_id" field. 98 | public const int AbilityIdFieldNumber = 1; 99 | private int abilityId_; 100 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 101 | public int AbilityId { 102 | get { return abilityId_; } 103 | set { 104 | abilityId_ = value; 105 | } 106 | } 107 | 108 | /// Field number for the "requires_point" field. 109 | public const int RequiresPointFieldNumber = 2; 110 | private bool requiresPoint_; 111 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 112 | public bool RequiresPoint { 113 | get { return requiresPoint_; } 114 | set { 115 | requiresPoint_ = value; 116 | } 117 | } 118 | 119 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 120 | public override bool Equals(object other) { 121 | return Equals(other as AvailableAbility); 122 | } 123 | 124 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 125 | public bool Equals(AvailableAbility other) { 126 | if (ReferenceEquals(other, null)) { 127 | return false; 128 | } 129 | if (ReferenceEquals(other, this)) { 130 | return true; 131 | } 132 | if (AbilityId != other.AbilityId) return false; 133 | if (RequiresPoint != other.RequiresPoint) return false; 134 | return true; 135 | } 136 | 137 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 138 | public override int GetHashCode() { 139 | int hash = 1; 140 | if (AbilityId != 0) hash ^= AbilityId.GetHashCode(); 141 | if (RequiresPoint != false) hash ^= RequiresPoint.GetHashCode(); 142 | return hash; 143 | } 144 | 145 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 146 | public override string ToString() { 147 | return pb::JsonFormatter.ToDiagnosticString(this); 148 | } 149 | 150 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 151 | public void WriteTo(pb::CodedOutputStream output) { 152 | if (AbilityId != 0) { 153 | output.WriteRawTag(8); 154 | output.WriteInt32(AbilityId); 155 | } 156 | if (RequiresPoint != false) { 157 | output.WriteRawTag(16); 158 | output.WriteBool(RequiresPoint); 159 | } 160 | } 161 | 162 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 163 | public int CalculateSize() { 164 | int size = 0; 165 | if (AbilityId != 0) { 166 | size += 1 + pb::CodedOutputStream.ComputeInt32Size(AbilityId); 167 | } 168 | if (RequiresPoint != false) { 169 | size += 1 + 1; 170 | } 171 | return size; 172 | } 173 | 174 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 175 | public void MergeFrom(AvailableAbility other) { 176 | if (other == null) { 177 | return; 178 | } 179 | if (other.AbilityId != 0) { 180 | AbilityId = other.AbilityId; 181 | } 182 | if (other.RequiresPoint != false) { 183 | RequiresPoint = other.RequiresPoint; 184 | } 185 | } 186 | 187 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 188 | public void MergeFrom(pb::CodedInputStream input) { 189 | uint tag; 190 | while ((tag = input.ReadTag()) != 0) { 191 | switch(tag) { 192 | default: 193 | input.SkipLastField(); 194 | break; 195 | case 8: { 196 | AbilityId = input.ReadInt32(); 197 | break; 198 | } 199 | case 16: { 200 | RequiresPoint = input.ReadBool(); 201 | break; 202 | } 203 | } 204 | } 205 | } 206 | 207 | } 208 | 209 | public sealed partial class ImageData : pb::IMessage { 210 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ImageData()); 211 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 212 | public static pb::MessageParser Parser { get { return _parser; } } 213 | 214 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 215 | public static pbr::MessageDescriptor Descriptor { 216 | get { return global::SC2APIProtocol.CommonReflection.Descriptor.MessageTypes[1]; } 217 | } 218 | 219 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 220 | pbr::MessageDescriptor pb::IMessage.Descriptor { 221 | get { return Descriptor; } 222 | } 223 | 224 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 225 | public ImageData() { 226 | OnConstruction(); 227 | } 228 | 229 | partial void OnConstruction(); 230 | 231 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 232 | public ImageData(ImageData other) : this() { 233 | bitsPerPixel_ = other.bitsPerPixel_; 234 | Size = other.size_ != null ? other.Size.Clone() : null; 235 | data_ = other.data_; 236 | } 237 | 238 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 239 | public ImageData Clone() { 240 | return new ImageData(this); 241 | } 242 | 243 | /// Field number for the "bits_per_pixel" field. 244 | public const int BitsPerPixelFieldNumber = 1; 245 | private int bitsPerPixel_; 246 | /// 247 | /// Number of bits per pixel; 8 bits for a byte etc. 248 | /// 249 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 250 | public int BitsPerPixel { 251 | get { return bitsPerPixel_; } 252 | set { 253 | bitsPerPixel_ = value; 254 | } 255 | } 256 | 257 | /// Field number for the "size" field. 258 | public const int SizeFieldNumber = 2; 259 | private global::SC2APIProtocol.Size2DI size_; 260 | /// 261 | /// Dimension in pixels. 262 | /// 263 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 264 | public global::SC2APIProtocol.Size2DI Size { 265 | get { return size_; } 266 | set { 267 | size_ = value; 268 | } 269 | } 270 | 271 | /// Field number for the "data" field. 272 | public const int DataFieldNumber = 3; 273 | private pb::ByteString data_ = pb::ByteString.Empty; 274 | /// 275 | /// Binary data; the size of this buffer in bytes is width * height * bits_per_pixel / 8. 276 | /// 277 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 278 | public pb::ByteString Data { 279 | get { return data_; } 280 | set { 281 | data_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); 282 | } 283 | } 284 | 285 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 286 | public override bool Equals(object other) { 287 | return Equals(other as ImageData); 288 | } 289 | 290 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 291 | public bool Equals(ImageData other) { 292 | if (ReferenceEquals(other, null)) { 293 | return false; 294 | } 295 | if (ReferenceEquals(other, this)) { 296 | return true; 297 | } 298 | if (BitsPerPixel != other.BitsPerPixel) return false; 299 | if (!object.Equals(Size, other.Size)) return false; 300 | if (Data != other.Data) return false; 301 | return true; 302 | } 303 | 304 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 305 | public override int GetHashCode() { 306 | int hash = 1; 307 | if (BitsPerPixel != 0) hash ^= BitsPerPixel.GetHashCode(); 308 | if (size_ != null) hash ^= Size.GetHashCode(); 309 | if (Data.Length != 0) hash ^= Data.GetHashCode(); 310 | return hash; 311 | } 312 | 313 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 314 | public override string ToString() { 315 | return pb::JsonFormatter.ToDiagnosticString(this); 316 | } 317 | 318 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 319 | public void WriteTo(pb::CodedOutputStream output) { 320 | if (BitsPerPixel != 0) { 321 | output.WriteRawTag(8); 322 | output.WriteInt32(BitsPerPixel); 323 | } 324 | if (size_ != null) { 325 | output.WriteRawTag(18); 326 | output.WriteMessage(Size); 327 | } 328 | if (Data.Length != 0) { 329 | output.WriteRawTag(26); 330 | output.WriteBytes(Data); 331 | } 332 | } 333 | 334 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 335 | public int CalculateSize() { 336 | int size = 0; 337 | if (BitsPerPixel != 0) { 338 | size += 1 + pb::CodedOutputStream.ComputeInt32Size(BitsPerPixel); 339 | } 340 | if (size_ != null) { 341 | size += 1 + pb::CodedOutputStream.ComputeMessageSize(Size); 342 | } 343 | if (Data.Length != 0) { 344 | size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data); 345 | } 346 | return size; 347 | } 348 | 349 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 350 | public void MergeFrom(ImageData other) { 351 | if (other == null) { 352 | return; 353 | } 354 | if (other.BitsPerPixel != 0) { 355 | BitsPerPixel = other.BitsPerPixel; 356 | } 357 | if (other.size_ != null) { 358 | if (size_ == null) { 359 | size_ = new global::SC2APIProtocol.Size2DI(); 360 | } 361 | Size.MergeFrom(other.Size); 362 | } 363 | if (other.Data.Length != 0) { 364 | Data = other.Data; 365 | } 366 | } 367 | 368 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 369 | public void MergeFrom(pb::CodedInputStream input) { 370 | uint tag; 371 | while ((tag = input.ReadTag()) != 0) { 372 | switch(tag) { 373 | default: 374 | input.SkipLastField(); 375 | break; 376 | case 8: { 377 | BitsPerPixel = input.ReadInt32(); 378 | break; 379 | } 380 | case 18: { 381 | if (size_ == null) { 382 | size_ = new global::SC2APIProtocol.Size2DI(); 383 | } 384 | input.ReadMessage(size_); 385 | break; 386 | } 387 | case 26: { 388 | Data = input.ReadBytes(); 389 | break; 390 | } 391 | } 392 | } 393 | } 394 | 395 | } 396 | 397 | /// 398 | /// Point on the screen/minimap (e.g., 0..64). 399 | /// Note: bottom left of the screen is 0, 0. 400 | /// 401 | public sealed partial class PointI : pb::IMessage { 402 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PointI()); 403 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 404 | public static pb::MessageParser Parser { get { return _parser; } } 405 | 406 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 407 | public static pbr::MessageDescriptor Descriptor { 408 | get { return global::SC2APIProtocol.CommonReflection.Descriptor.MessageTypes[2]; } 409 | } 410 | 411 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 412 | pbr::MessageDescriptor pb::IMessage.Descriptor { 413 | get { return Descriptor; } 414 | } 415 | 416 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 417 | public PointI() { 418 | OnConstruction(); 419 | } 420 | 421 | partial void OnConstruction(); 422 | 423 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 424 | public PointI(PointI other) : this() { 425 | x_ = other.x_; 426 | y_ = other.y_; 427 | } 428 | 429 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 430 | public PointI Clone() { 431 | return new PointI(this); 432 | } 433 | 434 | /// Field number for the "x" field. 435 | public const int XFieldNumber = 1; 436 | private int x_; 437 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 438 | public int X { 439 | get { return x_; } 440 | set { 441 | x_ = value; 442 | } 443 | } 444 | 445 | /// Field number for the "y" field. 446 | public const int YFieldNumber = 2; 447 | private int y_; 448 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 449 | public int Y { 450 | get { return y_; } 451 | set { 452 | y_ = value; 453 | } 454 | } 455 | 456 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 457 | public override bool Equals(object other) { 458 | return Equals(other as PointI); 459 | } 460 | 461 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 462 | public bool Equals(PointI other) { 463 | if (ReferenceEquals(other, null)) { 464 | return false; 465 | } 466 | if (ReferenceEquals(other, this)) { 467 | return true; 468 | } 469 | if (X != other.X) return false; 470 | if (Y != other.Y) return false; 471 | return true; 472 | } 473 | 474 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 475 | public override int GetHashCode() { 476 | int hash = 1; 477 | if (X != 0) hash ^= X.GetHashCode(); 478 | if (Y != 0) hash ^= Y.GetHashCode(); 479 | return hash; 480 | } 481 | 482 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 483 | public override string ToString() { 484 | return pb::JsonFormatter.ToDiagnosticString(this); 485 | } 486 | 487 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 488 | public void WriteTo(pb::CodedOutputStream output) { 489 | if (X != 0) { 490 | output.WriteRawTag(8); 491 | output.WriteInt32(X); 492 | } 493 | if (Y != 0) { 494 | output.WriteRawTag(16); 495 | output.WriteInt32(Y); 496 | } 497 | } 498 | 499 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 500 | public int CalculateSize() { 501 | int size = 0; 502 | if (X != 0) { 503 | size += 1 + pb::CodedOutputStream.ComputeInt32Size(X); 504 | } 505 | if (Y != 0) { 506 | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y); 507 | } 508 | return size; 509 | } 510 | 511 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 512 | public void MergeFrom(PointI other) { 513 | if (other == null) { 514 | return; 515 | } 516 | if (other.X != 0) { 517 | X = other.X; 518 | } 519 | if (other.Y != 0) { 520 | Y = other.Y; 521 | } 522 | } 523 | 524 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 525 | public void MergeFrom(pb::CodedInputStream input) { 526 | uint tag; 527 | while ((tag = input.ReadTag()) != 0) { 528 | switch(tag) { 529 | default: 530 | input.SkipLastField(); 531 | break; 532 | case 8: { 533 | X = input.ReadInt32(); 534 | break; 535 | } 536 | case 16: { 537 | Y = input.ReadInt32(); 538 | break; 539 | } 540 | } 541 | } 542 | } 543 | 544 | } 545 | 546 | /// 547 | /// Screen space rectangular area. 548 | /// 549 | public sealed partial class RectangleI : pb::IMessage { 550 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RectangleI()); 551 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 552 | public static pb::MessageParser Parser { get { return _parser; } } 553 | 554 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 555 | public static pbr::MessageDescriptor Descriptor { 556 | get { return global::SC2APIProtocol.CommonReflection.Descriptor.MessageTypes[3]; } 557 | } 558 | 559 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 560 | pbr::MessageDescriptor pb::IMessage.Descriptor { 561 | get { return Descriptor; } 562 | } 563 | 564 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 565 | public RectangleI() { 566 | OnConstruction(); 567 | } 568 | 569 | partial void OnConstruction(); 570 | 571 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 572 | public RectangleI(RectangleI other) : this() { 573 | P0 = other.p0_ != null ? other.P0.Clone() : null; 574 | P1 = other.p1_ != null ? other.P1.Clone() : null; 575 | } 576 | 577 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 578 | public RectangleI Clone() { 579 | return new RectangleI(this); 580 | } 581 | 582 | /// Field number for the "p0" field. 583 | public const int P0FieldNumber = 1; 584 | private global::SC2APIProtocol.PointI p0_; 585 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 586 | public global::SC2APIProtocol.PointI P0 { 587 | get { return p0_; } 588 | set { 589 | p0_ = value; 590 | } 591 | } 592 | 593 | /// Field number for the "p1" field. 594 | public const int P1FieldNumber = 2; 595 | private global::SC2APIProtocol.PointI p1_; 596 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 597 | public global::SC2APIProtocol.PointI P1 { 598 | get { return p1_; } 599 | set { 600 | p1_ = value; 601 | } 602 | } 603 | 604 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 605 | public override bool Equals(object other) { 606 | return Equals(other as RectangleI); 607 | } 608 | 609 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 610 | public bool Equals(RectangleI other) { 611 | if (ReferenceEquals(other, null)) { 612 | return false; 613 | } 614 | if (ReferenceEquals(other, this)) { 615 | return true; 616 | } 617 | if (!object.Equals(P0, other.P0)) return false; 618 | if (!object.Equals(P1, other.P1)) return false; 619 | return true; 620 | } 621 | 622 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 623 | public override int GetHashCode() { 624 | int hash = 1; 625 | if (p0_ != null) hash ^= P0.GetHashCode(); 626 | if (p1_ != null) hash ^= P1.GetHashCode(); 627 | return hash; 628 | } 629 | 630 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 631 | public override string ToString() { 632 | return pb::JsonFormatter.ToDiagnosticString(this); 633 | } 634 | 635 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 636 | public void WriteTo(pb::CodedOutputStream output) { 637 | if (p0_ != null) { 638 | output.WriteRawTag(10); 639 | output.WriteMessage(P0); 640 | } 641 | if (p1_ != null) { 642 | output.WriteRawTag(18); 643 | output.WriteMessage(P1); 644 | } 645 | } 646 | 647 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 648 | public int CalculateSize() { 649 | int size = 0; 650 | if (p0_ != null) { 651 | size += 1 + pb::CodedOutputStream.ComputeMessageSize(P0); 652 | } 653 | if (p1_ != null) { 654 | size += 1 + pb::CodedOutputStream.ComputeMessageSize(P1); 655 | } 656 | return size; 657 | } 658 | 659 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 660 | public void MergeFrom(RectangleI other) { 661 | if (other == null) { 662 | return; 663 | } 664 | if (other.p0_ != null) { 665 | if (p0_ == null) { 666 | p0_ = new global::SC2APIProtocol.PointI(); 667 | } 668 | P0.MergeFrom(other.P0); 669 | } 670 | if (other.p1_ != null) { 671 | if (p1_ == null) { 672 | p1_ = new global::SC2APIProtocol.PointI(); 673 | } 674 | P1.MergeFrom(other.P1); 675 | } 676 | } 677 | 678 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 679 | public void MergeFrom(pb::CodedInputStream input) { 680 | uint tag; 681 | while ((tag = input.ReadTag()) != 0) { 682 | switch(tag) { 683 | default: 684 | input.SkipLastField(); 685 | break; 686 | case 10: { 687 | if (p0_ == null) { 688 | p0_ = new global::SC2APIProtocol.PointI(); 689 | } 690 | input.ReadMessage(p0_); 691 | break; 692 | } 693 | case 18: { 694 | if (p1_ == null) { 695 | p1_ = new global::SC2APIProtocol.PointI(); 696 | } 697 | input.ReadMessage(p1_); 698 | break; 699 | } 700 | } 701 | } 702 | } 703 | 704 | } 705 | 706 | /// 707 | /// Point on the game board, 0..255. 708 | /// Note: bottom left of the screen is 0, 0. 709 | /// 710 | public sealed partial class Point2D : pb::IMessage { 711 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Point2D()); 712 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 713 | public static pb::MessageParser Parser { get { return _parser; } } 714 | 715 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 716 | public static pbr::MessageDescriptor Descriptor { 717 | get { return global::SC2APIProtocol.CommonReflection.Descriptor.MessageTypes[4]; } 718 | } 719 | 720 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 721 | pbr::MessageDescriptor pb::IMessage.Descriptor { 722 | get { return Descriptor; } 723 | } 724 | 725 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 726 | public Point2D() { 727 | OnConstruction(); 728 | } 729 | 730 | partial void OnConstruction(); 731 | 732 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 733 | public Point2D(Point2D other) : this() { 734 | x_ = other.x_; 735 | y_ = other.y_; 736 | } 737 | 738 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 739 | public Point2D Clone() { 740 | return new Point2D(this); 741 | } 742 | 743 | /// Field number for the "x" field. 744 | public const int XFieldNumber = 1; 745 | private float x_; 746 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 747 | public float X { 748 | get { return x_; } 749 | set { 750 | x_ = value; 751 | } 752 | } 753 | 754 | /// Field number for the "y" field. 755 | public const int YFieldNumber = 2; 756 | private float y_; 757 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 758 | public float Y { 759 | get { return y_; } 760 | set { 761 | y_ = value; 762 | } 763 | } 764 | 765 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 766 | public override bool Equals(object other) { 767 | return Equals(other as Point2D); 768 | } 769 | 770 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 771 | public bool Equals(Point2D other) { 772 | if (ReferenceEquals(other, null)) { 773 | return false; 774 | } 775 | if (ReferenceEquals(other, this)) { 776 | return true; 777 | } 778 | if (X != other.X) return false; 779 | if (Y != other.Y) return false; 780 | return true; 781 | } 782 | 783 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 784 | public override int GetHashCode() { 785 | int hash = 1; 786 | if (X != 0F) hash ^= X.GetHashCode(); 787 | if (Y != 0F) hash ^= Y.GetHashCode(); 788 | return hash; 789 | } 790 | 791 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 792 | public override string ToString() { 793 | return pb::JsonFormatter.ToDiagnosticString(this); 794 | } 795 | 796 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 797 | public void WriteTo(pb::CodedOutputStream output) { 798 | if (X != 0F) { 799 | output.WriteRawTag(13); 800 | output.WriteFloat(X); 801 | } 802 | if (Y != 0F) { 803 | output.WriteRawTag(21); 804 | output.WriteFloat(Y); 805 | } 806 | } 807 | 808 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 809 | public int CalculateSize() { 810 | int size = 0; 811 | if (X != 0F) { 812 | size += 1 + 4; 813 | } 814 | if (Y != 0F) { 815 | size += 1 + 4; 816 | } 817 | return size; 818 | } 819 | 820 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 821 | public void MergeFrom(Point2D other) { 822 | if (other == null) { 823 | return; 824 | } 825 | if (other.X != 0F) { 826 | X = other.X; 827 | } 828 | if (other.Y != 0F) { 829 | Y = other.Y; 830 | } 831 | } 832 | 833 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 834 | public void MergeFrom(pb::CodedInputStream input) { 835 | uint tag; 836 | while ((tag = input.ReadTag()) != 0) { 837 | switch(tag) { 838 | default: 839 | input.SkipLastField(); 840 | break; 841 | case 13: { 842 | X = input.ReadFloat(); 843 | break; 844 | } 845 | case 21: { 846 | Y = input.ReadFloat(); 847 | break; 848 | } 849 | } 850 | } 851 | } 852 | 853 | } 854 | 855 | /// 856 | /// Point on the game board, 0..255. 857 | /// Note: bottom left of the screen is 0, 0. 858 | /// 859 | public sealed partial class Point : pb::IMessage { 860 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Point()); 861 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 862 | public static pb::MessageParser Parser { get { return _parser; } } 863 | 864 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 865 | public static pbr::MessageDescriptor Descriptor { 866 | get { return global::SC2APIProtocol.CommonReflection.Descriptor.MessageTypes[5]; } 867 | } 868 | 869 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 870 | pbr::MessageDescriptor pb::IMessage.Descriptor { 871 | get { return Descriptor; } 872 | } 873 | 874 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 875 | public Point() { 876 | OnConstruction(); 877 | } 878 | 879 | partial void OnConstruction(); 880 | 881 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 882 | public Point(Point other) : this() { 883 | x_ = other.x_; 884 | y_ = other.y_; 885 | z_ = other.z_; 886 | } 887 | 888 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 889 | public Point Clone() { 890 | return new Point(this); 891 | } 892 | 893 | /// Field number for the "x" field. 894 | public const int XFieldNumber = 1; 895 | private float x_; 896 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 897 | public float X { 898 | get { return x_; } 899 | set { 900 | x_ = value; 901 | } 902 | } 903 | 904 | /// Field number for the "y" field. 905 | public const int YFieldNumber = 2; 906 | private float y_; 907 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 908 | public float Y { 909 | get { return y_; } 910 | set { 911 | y_ = value; 912 | } 913 | } 914 | 915 | /// Field number for the "z" field. 916 | public const int ZFieldNumber = 3; 917 | private float z_; 918 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 919 | public float Z { 920 | get { return z_; } 921 | set { 922 | z_ = value; 923 | } 924 | } 925 | 926 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 927 | public override bool Equals(object other) { 928 | return Equals(other as Point); 929 | } 930 | 931 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 932 | public bool Equals(Point other) { 933 | if (ReferenceEquals(other, null)) { 934 | return false; 935 | } 936 | if (ReferenceEquals(other, this)) { 937 | return true; 938 | } 939 | if (X != other.X) return false; 940 | if (Y != other.Y) return false; 941 | if (Z != other.Z) return false; 942 | return true; 943 | } 944 | 945 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 946 | public override int GetHashCode() { 947 | int hash = 1; 948 | if (X != 0F) hash ^= X.GetHashCode(); 949 | if (Y != 0F) hash ^= Y.GetHashCode(); 950 | if (Z != 0F) hash ^= Z.GetHashCode(); 951 | return hash; 952 | } 953 | 954 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 955 | public override string ToString() { 956 | return pb::JsonFormatter.ToDiagnosticString(this); 957 | } 958 | 959 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 960 | public void WriteTo(pb::CodedOutputStream output) { 961 | if (X != 0F) { 962 | output.WriteRawTag(13); 963 | output.WriteFloat(X); 964 | } 965 | if (Y != 0F) { 966 | output.WriteRawTag(21); 967 | output.WriteFloat(Y); 968 | } 969 | if (Z != 0F) { 970 | output.WriteRawTag(29); 971 | output.WriteFloat(Z); 972 | } 973 | } 974 | 975 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 976 | public int CalculateSize() { 977 | int size = 0; 978 | if (X != 0F) { 979 | size += 1 + 4; 980 | } 981 | if (Y != 0F) { 982 | size += 1 + 4; 983 | } 984 | if (Z != 0F) { 985 | size += 1 + 4; 986 | } 987 | return size; 988 | } 989 | 990 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 991 | public void MergeFrom(Point other) { 992 | if (other == null) { 993 | return; 994 | } 995 | if (other.X != 0F) { 996 | X = other.X; 997 | } 998 | if (other.Y != 0F) { 999 | Y = other.Y; 1000 | } 1001 | if (other.Z != 0F) { 1002 | Z = other.Z; 1003 | } 1004 | } 1005 | 1006 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1007 | public void MergeFrom(pb::CodedInputStream input) { 1008 | uint tag; 1009 | while ((tag = input.ReadTag()) != 0) { 1010 | switch(tag) { 1011 | default: 1012 | input.SkipLastField(); 1013 | break; 1014 | case 13: { 1015 | X = input.ReadFloat(); 1016 | break; 1017 | } 1018 | case 21: { 1019 | Y = input.ReadFloat(); 1020 | break; 1021 | } 1022 | case 29: { 1023 | Z = input.ReadFloat(); 1024 | break; 1025 | } 1026 | } 1027 | } 1028 | } 1029 | 1030 | } 1031 | 1032 | /// 1033 | /// Screen dimensions. 1034 | /// 1035 | public sealed partial class Size2DI : pb::IMessage { 1036 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Size2DI()); 1037 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1038 | public static pb::MessageParser Parser { get { return _parser; } } 1039 | 1040 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1041 | public static pbr::MessageDescriptor Descriptor { 1042 | get { return global::SC2APIProtocol.CommonReflection.Descriptor.MessageTypes[6]; } 1043 | } 1044 | 1045 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1046 | pbr::MessageDescriptor pb::IMessage.Descriptor { 1047 | get { return Descriptor; } 1048 | } 1049 | 1050 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1051 | public Size2DI() { 1052 | OnConstruction(); 1053 | } 1054 | 1055 | partial void OnConstruction(); 1056 | 1057 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1058 | public Size2DI(Size2DI other) : this() { 1059 | x_ = other.x_; 1060 | y_ = other.y_; 1061 | } 1062 | 1063 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1064 | public Size2DI Clone() { 1065 | return new Size2DI(this); 1066 | } 1067 | 1068 | /// Field number for the "x" field. 1069 | public const int XFieldNumber = 1; 1070 | private int x_; 1071 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1072 | public int X { 1073 | get { return x_; } 1074 | set { 1075 | x_ = value; 1076 | } 1077 | } 1078 | 1079 | /// Field number for the "y" field. 1080 | public const int YFieldNumber = 2; 1081 | private int y_; 1082 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1083 | public int Y { 1084 | get { return y_; } 1085 | set { 1086 | y_ = value; 1087 | } 1088 | } 1089 | 1090 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1091 | public override bool Equals(object other) { 1092 | return Equals(other as Size2DI); 1093 | } 1094 | 1095 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1096 | public bool Equals(Size2DI other) { 1097 | if (ReferenceEquals(other, null)) { 1098 | return false; 1099 | } 1100 | if (ReferenceEquals(other, this)) { 1101 | return true; 1102 | } 1103 | if (X != other.X) return false; 1104 | if (Y != other.Y) return false; 1105 | return true; 1106 | } 1107 | 1108 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1109 | public override int GetHashCode() { 1110 | int hash = 1; 1111 | if (X != 0) hash ^= X.GetHashCode(); 1112 | if (Y != 0) hash ^= Y.GetHashCode(); 1113 | return hash; 1114 | } 1115 | 1116 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1117 | public override string ToString() { 1118 | return pb::JsonFormatter.ToDiagnosticString(this); 1119 | } 1120 | 1121 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1122 | public void WriteTo(pb::CodedOutputStream output) { 1123 | if (X != 0) { 1124 | output.WriteRawTag(8); 1125 | output.WriteInt32(X); 1126 | } 1127 | if (Y != 0) { 1128 | output.WriteRawTag(16); 1129 | output.WriteInt32(Y); 1130 | } 1131 | } 1132 | 1133 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1134 | public int CalculateSize() { 1135 | int size = 0; 1136 | if (X != 0) { 1137 | size += 1 + pb::CodedOutputStream.ComputeInt32Size(X); 1138 | } 1139 | if (Y != 0) { 1140 | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y); 1141 | } 1142 | return size; 1143 | } 1144 | 1145 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1146 | public void MergeFrom(Size2DI other) { 1147 | if (other == null) { 1148 | return; 1149 | } 1150 | if (other.X != 0) { 1151 | X = other.X; 1152 | } 1153 | if (other.Y != 0) { 1154 | Y = other.Y; 1155 | } 1156 | } 1157 | 1158 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1159 | public void MergeFrom(pb::CodedInputStream input) { 1160 | uint tag; 1161 | while ((tag = input.ReadTag()) != 0) { 1162 | switch(tag) { 1163 | default: 1164 | input.SkipLastField(); 1165 | break; 1166 | case 8: { 1167 | X = input.ReadInt32(); 1168 | break; 1169 | } 1170 | case 16: { 1171 | Y = input.ReadInt32(); 1172 | break; 1173 | } 1174 | } 1175 | } 1176 | } 1177 | 1178 | } 1179 | 1180 | #endregion 1181 | 1182 | } 1183 | 1184 | #endregion Designer generated code 1185 | -------------------------------------------------------------------------------- /SC2APIProtocol/Error.cs: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: s2clientprotocol/error.proto 3 | #pragma warning disable 1591, 0612, 3021 4 | #region Designer generated code 5 | 6 | using pb = global::Google.Protobuf; 7 | using pbc = global::Google.Protobuf.Collections; 8 | using pbr = global::Google.Protobuf.Reflection; 9 | using scg = global::System.Collections.Generic; 10 | namespace SC2APIProtocol { 11 | 12 | /// Holder for reflection information generated from s2clientprotocol/error.proto 13 | public static partial class ErrorReflection { 14 | 15 | #region Descriptor 16 | /// File descriptor for s2clientprotocol/error.proto 17 | public static pbr::FileDescriptor Descriptor { 18 | get { return descriptor; } 19 | } 20 | private static pbr::FileDescriptor descriptor; 21 | 22 | static ErrorReflection() { 23 | byte[] descriptorData = global::System.Convert.FromBase64String( 24 | string.Concat( 25 | "ChxzMmNsaWVudHByb3RvY29sL2Vycm9yLnByb3RvEg5TQzJBUElQcm90b2Nv", 26 | "bCrALQoMQWN0aW9uUmVzdWx0EhYKEkFjdGlvblJlc3VsdF9VTlNFVBAAEgsK", 27 | "B1N1Y2Nlc3MQARIQCgxOb3RTdXBwb3J0ZWQQAhIJCgVFcnJvchADEhYKEkNh", 28 | "bnRRdWV1ZVRoYXRPcmRlchAEEgkKBVJldHJ5EAUSDAoIQ29vbGRvd24QBhIP", 29 | "CgtRdWV1ZUlzRnVsbBAHEhQKEFJhbGx5UXVldWVJc0Z1bGwQCBIVChFOb3RF", 30 | "bm91Z2hNaW5lcmFscxAJEhQKEE5vdEVub3VnaFZlc3BlbmUQChIWChJOb3RF", 31 | "bm91Z2hUZXJyYXppbmUQCxITCg9Ob3RFbm91Z2hDdXN0b20QDBIRCg1Ob3RF", 32 | "bm91Z2hGb29kEA0SFwoTRm9vZFVzYWdlSW1wb3NzaWJsZRAOEhEKDU5vdEVu", 33 | "b3VnaExpZmUQDxIUChBOb3RFbm91Z2hTaGllbGRzEBASEwoPTm90RW5vdWdo", 34 | "RW5lcmd5EBESEgoOTGlmZVN1cHByZXNzZWQQEhIVChFTaGllbGRzU3VwcHJl", 35 | "c3NlZBATEhQKEEVuZXJneVN1cHByZXNzZWQQFBIUChBOb3RFbm91Z2hDaGFy", 36 | "Z2VzEBUSFgoSQ2FudEFkZE1vcmVDaGFyZ2VzEBYSEwoPVG9vTXVjaE1pbmVy", 37 | "YWxzEBcSEgoOVG9vTXVjaFZlc3BlbmUQGBIUChBUb29NdWNoVGVycmF6aW5l", 38 | "EBkSEQoNVG9vTXVjaEN1c3RvbRAaEg8KC1Rvb011Y2hGb29kEBsSDwoLVG9v", 39 | "TXVjaExpZmUQHBISCg5Ub29NdWNoU2hpZWxkcxAdEhEKDVRvb011Y2hFbmVy", 40 | "Z3kQHhIaChZNdXN0VGFyZ2V0VW5pdFdpdGhMaWZlEB8SHQoZTXVzdFRhcmdl", 41 | "dFVuaXRXaXRoU2hpZWxkcxAgEhwKGE11c3RUYXJnZXRVbml0V2l0aEVuZXJn", 42 | "eRAhEg0KCUNhbnRUcmFkZRAiEg0KCUNhbnRTcGVuZBAjEhYKEkNhbnRUYXJn", 43 | "ZXRUaGF0VW5pdBAkEhcKE0NvdWxkbnRBbGxvY2F0ZVVuaXQQJRIQCgxVbml0", 44 | "Q2FudE1vdmUQJhIeChpUcmFuc3BvcnRJc0hvbGRpbmdQb3NpdGlvbhAnEh8K", 45 | "G0J1aWxkVGVjaFJlcXVpcmVtZW50c05vdE1ldBAoEh0KGUNhbnRGaW5kUGxh", 46 | "Y2VtZW50TG9jYXRpb24QKRITCg9DYW50QnVpbGRPblRoYXQQKhIeChpDYW50", 47 | "QnVpbGRUb29DbG9zZVRvRHJvcE9mZhArEhwKGENhbnRCdWlsZExvY2F0aW9u", 48 | "SW52YWxpZBAsEhgKFENhbnRTZWVCdWlsZExvY2F0aW9uEC0SIgoeQ2FudEJ1", 49 | "aWxkVG9vQ2xvc2VUb0NyZWVwU291cmNlEC4SIAocQ2FudEJ1aWxkVG9vQ2xv", 50 | "c2VUb1Jlc291cmNlcxAvEhwKGENhbnRCdWlsZFRvb0ZhckZyb21XYXRlchAw", 51 | "EiIKHkNhbnRCdWlsZFRvb0ZhckZyb21DcmVlcFNvdXJjZRAxEicKI0NhbnRC", 52 | "dWlsZFRvb0ZhckZyb21CdWlsZFBvd2VyU291cmNlEDISGwoXQ2FudEJ1aWxk", 53 | "T25EZW5zZVRlcnJhaW4QMxInCiNDYW50VHJhaW5Ub29GYXJGcm9tVHJhaW5Q", 54 | "b3dlclNvdXJjZRA0EhsKF0NhbnRMYW5kTG9jYXRpb25JbnZhbGlkEDUSFwoT", 55 | "Q2FudFNlZUxhbmRMb2NhdGlvbhA2EiEKHUNhbnRMYW5kVG9vQ2xvc2VUb0Ny", 56 | "ZWVwU291cmNlEDcSHwobQ2FudExhbmRUb29DbG9zZVRvUmVzb3VyY2VzEDgS", 57 | "GwoXQ2FudExhbmRUb29GYXJGcm9tV2F0ZXIQORIhCh1DYW50TGFuZFRvb0Zh", 58 | "ckZyb21DcmVlcFNvdXJjZRA6EiYKIkNhbnRMYW5kVG9vRmFyRnJvbUJ1aWxk", 59 | "UG93ZXJTb3VyY2UQOxImCiJDYW50TGFuZFRvb0ZhckZyb21UcmFpblBvd2Vy", 60 | "U291cmNlEDwSGgoWQ2FudExhbmRPbkRlbnNlVGVycmFpbhA9EhsKF0FkZE9u", 61 | "VG9vRmFyRnJvbUJ1aWxkaW5nED4SGgoWTXVzdEJ1aWxkUmVmaW5lcnlGaXJz", 62 | "dBA/Eh8KG0J1aWxkaW5nSXNVbmRlckNvbnN0cnVjdGlvbhBAEhMKD0NhbnRG", 63 | "aW5kRHJvcE9mZhBBEh0KGUNhbnRMb2FkT3RoZXJQbGF5ZXJzVW5pdHMQQhIb", 64 | "ChdOb3RFbm91Z2hSb29tVG9Mb2FkVW5pdBBDEhgKFENhbnRVbmxvYWRVbml0", 65 | "c1RoZXJlEEQSGAoUQ2FudFdhcnBJblVuaXRzVGhlcmUQRRIZChVDYW50TG9h", 66 | "ZEltbW9iaWxlVW5pdHMQRhIdChlDYW50UmVjaGFyZ2VJbW1vYmlsZVVuaXRz", 67 | "EEcSJgoiQ2FudFJlY2hhcmdlVW5kZXJDb25zdHJ1Y3Rpb25Vbml0cxBIEhQK", 68 | "EENhbnRMb2FkVGhhdFVuaXQQSRITCg9Ob0NhcmdvVG9VbmxvYWQQShIZChVM", 69 | "b2FkQWxsTm9UYXJnZXRzRm91bmQQSxIUChBOb3RXaGlsZU9jY3VwaWVkEEwS", 70 | "GQoVQ2FudEF0dGFja1dpdGhvdXRBbW1vEE0SFwoTQ2FudEhvbGRBbnlNb3Jl", 71 | "QW1tbxBOEhoKFlRlY2hSZXF1aXJlbWVudHNOb3RNZXQQTxIZChVNdXN0TG9j", 72 | "a2Rvd25Vbml0Rmlyc3QQUBISCg5NdXN0VGFyZ2V0VW5pdBBREhcKE011c3RU", 73 | "YXJnZXRJbnZlbnRvcnkQUhIZChVNdXN0VGFyZ2V0VmlzaWJsZVVuaXQQUxId", 74 | "ChlNdXN0VGFyZ2V0VmlzaWJsZUxvY2F0aW9uEFQSHgoaTXVzdFRhcmdldFdh", 75 | "bGthYmxlTG9jYXRpb24QVRIaChZNdXN0VGFyZ2V0UGF3bmFibGVVbml0EFYS", 76 | "GgoWWW91Q2FudENvbnRyb2xUaGF0VW5pdBBXEiIKHllvdUNhbnRJc3N1ZUNv", 77 | "bW1hbmRzVG9UaGF0VW5pdBBYEhcKE011c3RUYXJnZXRSZXNvdXJjZXMQWRIW", 78 | "ChJSZXF1aXJlc0hlYWxUYXJnZXQQWhIYChRSZXF1aXJlc1JlcGFpclRhcmdl", 79 | "dBBbEhEKDU5vSXRlbXNUb0Ryb3AQXBIYChRDYW50SG9sZEFueU1vcmVJdGVt", 80 | "cxBdEhAKDENhbnRIb2xkVGhhdBBeEhgKFFRhcmdldEhhc05vSW52ZW50b3J5", 81 | "EF8SFAoQQ2FudERyb3BUaGlzSXRlbRBgEhQKEENhbnRNb3ZlVGhpc0l0ZW0Q", 82 | "YRIUChBDYW50UGF3blRoaXNVbml0EGISFAoQTXVzdFRhcmdldENhc3RlchBj", 83 | "EhQKEENhbnRUYXJnZXRDYXN0ZXIQZBITCg9NdXN0VGFyZ2V0T3V0ZXIQZRIT", 84 | "Cg9DYW50VGFyZ2V0T3V0ZXIQZhIaChZNdXN0VGFyZ2V0WW91ck93blVuaXRz", 85 | "EGcSGgoWQ2FudFRhcmdldFlvdXJPd25Vbml0cxBoEhsKF011c3RUYXJnZXRG", 86 | "cmllbmRseVVuaXRzEGkSGwoXQ2FudFRhcmdldEZyaWVuZGx5VW5pdHMQahIa", 87 | "ChZNdXN0VGFyZ2V0TmV1dHJhbFVuaXRzEGsSGgoWQ2FudFRhcmdldE5ldXRy", 88 | "YWxVbml0cxBsEhgKFE11c3RUYXJnZXRFbmVteVVuaXRzEG0SGAoUQ2FudFRh", 89 | "cmdldEVuZW15VW5pdHMQbhIWChJNdXN0VGFyZ2V0QWlyVW5pdHMQbxIWChJD", 90 | "YW50VGFyZ2V0QWlyVW5pdHMQcBIZChVNdXN0VGFyZ2V0R3JvdW5kVW5pdHMQ", 91 | "cRIZChVDYW50VGFyZ2V0R3JvdW5kVW5pdHMQchIYChRNdXN0VGFyZ2V0U3Ry", 92 | "dWN0dXJlcxBzEhgKFENhbnRUYXJnZXRTdHJ1Y3R1cmVzEHQSGAoUTXVzdFRh", 93 | "cmdldExpZ2h0VW5pdHMQdRIYChRDYW50VGFyZ2V0TGlnaHRVbml0cxB2EhoK", 94 | "Fk11c3RUYXJnZXRBcm1vcmVkVW5pdHMQdxIaChZDYW50VGFyZ2V0QXJtb3Jl", 95 | "ZFVuaXRzEHgSHQoZTXVzdFRhcmdldEJpb2xvZ2ljYWxVbml0cxB5Eh0KGUNh", 96 | "bnRUYXJnZXRCaW9sb2dpY2FsVW5pdHMQehIZChVNdXN0VGFyZ2V0SGVyb2lj", 97 | "VW5pdHMQexIZChVDYW50VGFyZ2V0SGVyb2ljVW5pdHMQfBIaChZNdXN0VGFy", 98 | "Z2V0Um9ib3RpY1VuaXRzEH0SGgoWQ2FudFRhcmdldFJvYm90aWNVbml0cxB+", 99 | "Eh0KGU11c3RUYXJnZXRNZWNoYW5pY2FsVW5pdHMQfxIeChlDYW50VGFyZ2V0", 100 | "TWVjaGFuaWNhbFVuaXRzEIABEhsKFk11c3RUYXJnZXRQc2lvbmljVW5pdHMQ", 101 | "gQESGwoWQ2FudFRhcmdldFBzaW9uaWNVbml0cxCCARIbChZNdXN0VGFyZ2V0", 102 | "TWFzc2l2ZVVuaXRzEIMBEhsKFkNhbnRUYXJnZXRNYXNzaXZlVW5pdHMQhAES", 103 | "FgoRTXVzdFRhcmdldE1pc3NpbGUQhQESFgoRQ2FudFRhcmdldE1pc3NpbGUQ", 104 | "hgESGgoVTXVzdFRhcmdldFdvcmtlclVuaXRzEIcBEhoKFUNhbnRUYXJnZXRX", 105 | "b3JrZXJVbml0cxCIARIhChxNdXN0VGFyZ2V0RW5lcmd5Q2FwYWJsZVVuaXRz", 106 | "EIkBEiEKHENhbnRUYXJnZXRFbmVyZ3lDYXBhYmxlVW5pdHMQigESIQocTXVz", 107 | "dFRhcmdldFNoaWVsZENhcGFibGVVbml0cxCLARIhChxDYW50VGFyZ2V0U2hp", 108 | "ZWxkQ2FwYWJsZVVuaXRzEIwBEhUKEE11c3RUYXJnZXRGbHllcnMQjQESFQoQ", 109 | "Q2FudFRhcmdldEZseWVycxCOARIaChVNdXN0VGFyZ2V0QnVyaWVkVW5pdHMQ", 110 | "jwESGgoVQ2FudFRhcmdldEJ1cmllZFVuaXRzEJABEhsKFk11c3RUYXJnZXRD", 111 | "bG9ha2VkVW5pdHMQkQESGwoWQ2FudFRhcmdldENsb2FrZWRVbml0cxCSARIi", 112 | "Ch1NdXN0VGFyZ2V0VW5pdHNJbkFTdGFzaXNGaWVsZBCTARIiCh1DYW50VGFy", 113 | "Z2V0VW5pdHNJbkFTdGFzaXNGaWVsZBCUARIlCiBNdXN0VGFyZ2V0VW5kZXJD", 114 | "b25zdHJ1Y3Rpb25Vbml0cxCVARIlCiBDYW50VGFyZ2V0VW5kZXJDb25zdHJ1", 115 | "Y3Rpb25Vbml0cxCWARIYChNNdXN0VGFyZ2V0RGVhZFVuaXRzEJcBEhgKE0Nh", 116 | "bnRUYXJnZXREZWFkVW5pdHMQmAESHQoYTXVzdFRhcmdldFJldml2YWJsZVVu", 117 | "aXRzEJkBEh0KGENhbnRUYXJnZXRSZXZpdmFibGVVbml0cxCaARIaChVNdXN0", 118 | "VGFyZ2V0SGlkZGVuVW5pdHMQmwESGgoVQ2FudFRhcmdldEhpZGRlblVuaXRz", 119 | "EJwBEiIKHUNhbnRSZWNoYXJnZU90aGVyUGxheWVyc1VuaXRzEJ0BEh0KGE11", 120 | "c3RUYXJnZXRIYWxsdWNpbmF0aW9ucxCeARIdChhDYW50VGFyZ2V0SGFsbHVj", 121 | "aW5hdGlvbnMQnwESIAobTXVzdFRhcmdldEludnVsbmVyYWJsZVVuaXRzEKAB", 122 | "EiAKG0NhbnRUYXJnZXRJbnZ1bG5lcmFibGVVbml0cxChARIcChdNdXN0VGFy", 123 | "Z2V0RGV0ZWN0ZWRVbml0cxCiARIcChdDYW50VGFyZ2V0RGV0ZWN0ZWRVbml0", 124 | "cxCjARIdChhDYW50VGFyZ2V0VW5pdFdpdGhFbmVyZ3kQpAESHgoZQ2FudFRh", 125 | "cmdldFVuaXRXaXRoU2hpZWxkcxClARIhChxNdXN0VGFyZ2V0VW5jb21tYW5k", 126 | "YWJsZVVuaXRzEKYBEiEKHENhbnRUYXJnZXRVbmNvbW1hbmRhYmxlVW5pdHMQ", 127 | "pwESIQocTXVzdFRhcmdldFByZXZlbnREZWZlYXRVbml0cxCoARIhChxDYW50", 128 | "VGFyZ2V0UHJldmVudERlZmVhdFVuaXRzEKkBEiEKHE11c3RUYXJnZXRQcmV2", 129 | "ZW50UmV2ZWFsVW5pdHMQqgESIQocQ2FudFRhcmdldFByZXZlbnRSZXZlYWxV", 130 | "bml0cxCrARIbChZNdXN0VGFyZ2V0UGFzc2l2ZVVuaXRzEKwBEhsKFkNhbnRU", 131 | "YXJnZXRQYXNzaXZlVW5pdHMQrQESGwoWTXVzdFRhcmdldFN0dW5uZWRVbml0", 132 | "cxCuARIbChZDYW50VGFyZ2V0U3R1bm5lZFVuaXRzEK8BEhwKF011c3RUYXJn", 133 | "ZXRTdW1tb25lZFVuaXRzELABEhwKF0NhbnRUYXJnZXRTdW1tb25lZFVuaXRz", 134 | "ELEBEhQKD011c3RUYXJnZXRVc2VyMRCyARIUCg9DYW50VGFyZ2V0VXNlcjEQ", 135 | "swESHwoaTXVzdFRhcmdldFVuc3RvcHBhYmxlVW5pdHMQtAESHwoaQ2FudFRh", 136 | "cmdldFVuc3RvcHBhYmxlVW5pdHMQtQESHQoYTXVzdFRhcmdldFJlc2lzdGFu", 137 | "dFVuaXRzELYBEh0KGENhbnRUYXJnZXRSZXNpc3RhbnRVbml0cxC3ARIZChRN", 138 | "dXN0VGFyZ2V0RGF6ZWRVbml0cxC4ARIZChRDYW50VGFyZ2V0RGF6ZWRVbml0", 139 | "cxC5ARIRCgxDYW50TG9ja2Rvd24QugESFAoPQ2FudE1pbmRDb250cm9sELsB", 140 | "EhwKF011c3RUYXJnZXREZXN0cnVjdGlibGVzELwBEhwKF0NhbnRUYXJnZXRE", 141 | "ZXN0cnVjdGlibGVzEL0BEhQKD011c3RUYXJnZXRJdGVtcxC+ARIUCg9DYW50", 142 | "VGFyZ2V0SXRlbXMQvwESGAoTTm9DYWxsZG93bkF2YWlsYWJsZRDAARIVChBX", 143 | "YXlwb2ludExpc3RGdWxsEMEBEhMKDk11c3RUYXJnZXRSYWNlEMIBEhMKDkNh", 144 | "bnRUYXJnZXRSYWNlEMMBEhsKFk11c3RUYXJnZXRTaW1pbGFyVW5pdHMQxAES", 145 | "GwoWQ2FudFRhcmdldFNpbWlsYXJVbml0cxDFARIaChVDYW50RmluZEVub3Vn", 146 | "aFRhcmdldHMQxgESGQoUQWxyZWFkeVNwYXduaW5nTGFydmEQxwESIQocQ2Fu", 147 | "dFRhcmdldEV4aGF1c3RlZFJlc291cmNlcxDIARITCg5DYW50VXNlTWluaW1h", 148 | "cBDJARIVChBDYW50VXNlSW5mb1BhbmVsEMoBEhUKEE9yZGVyUXVldWVJc0Z1", 149 | "bGwQywESHAoXQ2FudEhhcnZlc3RUaGF0UmVzb3VyY2UQzAESGgoVSGFydmVz", 150 | "dGVyc05vdFJlcXVpcmVkEM0BEhQKD0FscmVhZHlUYXJnZXRlZBDOARIeChlD", 151 | "YW50QXR0YWNrV2VhcG9uc0Rpc2FibGVkEM8BEhcKEkNvdWxkbnRSZWFjaFRh", 152 | "cmdldBDQARIXChJUYXJnZXRJc091dE9mUmFuZ2UQ0QESFQoQVGFyZ2V0SXNU", 153 | "b29DbG9zZRDSARIVChBUYXJnZXRJc091dE9mQXJjENMBEh0KGENhbnRGaW5k", 154 | "VGVsZXBvcnRMb2NhdGlvbhDUARIVChBJbnZhbGlkSXRlbUNsYXNzENUBEhgK", 155 | "E0NhbnRGaW5kQ2FuY2VsT3JkZXIQ1gFiBnByb3RvMw==")); 156 | descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, 157 | new pbr::FileDescriptor[] { }, 158 | new pbr::GeneratedClrTypeInfo(new[] {typeof(global::SC2APIProtocol.ActionResult), }, null)); 159 | } 160 | #endregion 161 | 162 | } 163 | #region Enums 164 | public enum ActionResult { 165 | [pbr::OriginalName("ActionResult_UNSET")] Unset = 0, 166 | [pbr::OriginalName("Success")] Success = 1, 167 | [pbr::OriginalName("NotSupported")] NotSupported = 2, 168 | [pbr::OriginalName("Error")] Error = 3, 169 | [pbr::OriginalName("CantQueueThatOrder")] CantQueueThatOrder = 4, 170 | [pbr::OriginalName("Retry")] Retry = 5, 171 | [pbr::OriginalName("Cooldown")] Cooldown = 6, 172 | [pbr::OriginalName("QueueIsFull")] QueueIsFull = 7, 173 | [pbr::OriginalName("RallyQueueIsFull")] RallyQueueIsFull = 8, 174 | [pbr::OriginalName("NotEnoughMinerals")] NotEnoughMinerals = 9, 175 | [pbr::OriginalName("NotEnoughVespene")] NotEnoughVespene = 10, 176 | [pbr::OriginalName("NotEnoughTerrazine")] NotEnoughTerrazine = 11, 177 | [pbr::OriginalName("NotEnoughCustom")] NotEnoughCustom = 12, 178 | [pbr::OriginalName("NotEnoughFood")] NotEnoughFood = 13, 179 | [pbr::OriginalName("FoodUsageImpossible")] FoodUsageImpossible = 14, 180 | [pbr::OriginalName("NotEnoughLife")] NotEnoughLife = 15, 181 | [pbr::OriginalName("NotEnoughShields")] NotEnoughShields = 16, 182 | [pbr::OriginalName("NotEnoughEnergy")] NotEnoughEnergy = 17, 183 | [pbr::OriginalName("LifeSuppressed")] LifeSuppressed = 18, 184 | [pbr::OriginalName("ShieldsSuppressed")] ShieldsSuppressed = 19, 185 | [pbr::OriginalName("EnergySuppressed")] EnergySuppressed = 20, 186 | [pbr::OriginalName("NotEnoughCharges")] NotEnoughCharges = 21, 187 | [pbr::OriginalName("CantAddMoreCharges")] CantAddMoreCharges = 22, 188 | [pbr::OriginalName("TooMuchMinerals")] TooMuchMinerals = 23, 189 | [pbr::OriginalName("TooMuchVespene")] TooMuchVespene = 24, 190 | [pbr::OriginalName("TooMuchTerrazine")] TooMuchTerrazine = 25, 191 | [pbr::OriginalName("TooMuchCustom")] TooMuchCustom = 26, 192 | [pbr::OriginalName("TooMuchFood")] TooMuchFood = 27, 193 | [pbr::OriginalName("TooMuchLife")] TooMuchLife = 28, 194 | [pbr::OriginalName("TooMuchShields")] TooMuchShields = 29, 195 | [pbr::OriginalName("TooMuchEnergy")] TooMuchEnergy = 30, 196 | [pbr::OriginalName("MustTargetUnitWithLife")] MustTargetUnitWithLife = 31, 197 | [pbr::OriginalName("MustTargetUnitWithShields")] MustTargetUnitWithShields = 32, 198 | [pbr::OriginalName("MustTargetUnitWithEnergy")] MustTargetUnitWithEnergy = 33, 199 | [pbr::OriginalName("CantTrade")] CantTrade = 34, 200 | [pbr::OriginalName("CantSpend")] CantSpend = 35, 201 | [pbr::OriginalName("CantTargetThatUnit")] CantTargetThatUnit = 36, 202 | [pbr::OriginalName("CouldntAllocateUnit")] CouldntAllocateUnit = 37, 203 | [pbr::OriginalName("UnitCantMove")] UnitCantMove = 38, 204 | [pbr::OriginalName("TransportIsHoldingPosition")] TransportIsHoldingPosition = 39, 205 | [pbr::OriginalName("BuildTechRequirementsNotMet")] BuildTechRequirementsNotMet = 40, 206 | [pbr::OriginalName("CantFindPlacementLocation")] CantFindPlacementLocation = 41, 207 | [pbr::OriginalName("CantBuildOnThat")] CantBuildOnThat = 42, 208 | [pbr::OriginalName("CantBuildTooCloseToDropOff")] CantBuildTooCloseToDropOff = 43, 209 | [pbr::OriginalName("CantBuildLocationInvalid")] CantBuildLocationInvalid = 44, 210 | [pbr::OriginalName("CantSeeBuildLocation")] CantSeeBuildLocation = 45, 211 | [pbr::OriginalName("CantBuildTooCloseToCreepSource")] CantBuildTooCloseToCreepSource = 46, 212 | [pbr::OriginalName("CantBuildTooCloseToResources")] CantBuildTooCloseToResources = 47, 213 | [pbr::OriginalName("CantBuildTooFarFromWater")] CantBuildTooFarFromWater = 48, 214 | [pbr::OriginalName("CantBuildTooFarFromCreepSource")] CantBuildTooFarFromCreepSource = 49, 215 | [pbr::OriginalName("CantBuildTooFarFromBuildPowerSource")] CantBuildTooFarFromBuildPowerSource = 50, 216 | [pbr::OriginalName("CantBuildOnDenseTerrain")] CantBuildOnDenseTerrain = 51, 217 | [pbr::OriginalName("CantTrainTooFarFromTrainPowerSource")] CantTrainTooFarFromTrainPowerSource = 52, 218 | [pbr::OriginalName("CantLandLocationInvalid")] CantLandLocationInvalid = 53, 219 | [pbr::OriginalName("CantSeeLandLocation")] CantSeeLandLocation = 54, 220 | [pbr::OriginalName("CantLandTooCloseToCreepSource")] CantLandTooCloseToCreepSource = 55, 221 | [pbr::OriginalName("CantLandTooCloseToResources")] CantLandTooCloseToResources = 56, 222 | [pbr::OriginalName("CantLandTooFarFromWater")] CantLandTooFarFromWater = 57, 223 | [pbr::OriginalName("CantLandTooFarFromCreepSource")] CantLandTooFarFromCreepSource = 58, 224 | [pbr::OriginalName("CantLandTooFarFromBuildPowerSource")] CantLandTooFarFromBuildPowerSource = 59, 225 | [pbr::OriginalName("CantLandTooFarFromTrainPowerSource")] CantLandTooFarFromTrainPowerSource = 60, 226 | [pbr::OriginalName("CantLandOnDenseTerrain")] CantLandOnDenseTerrain = 61, 227 | [pbr::OriginalName("AddOnTooFarFromBuilding")] AddOnTooFarFromBuilding = 62, 228 | [pbr::OriginalName("MustBuildRefineryFirst")] MustBuildRefineryFirst = 63, 229 | [pbr::OriginalName("BuildingIsUnderConstruction")] BuildingIsUnderConstruction = 64, 230 | [pbr::OriginalName("CantFindDropOff")] CantFindDropOff = 65, 231 | [pbr::OriginalName("CantLoadOtherPlayersUnits")] CantLoadOtherPlayersUnits = 66, 232 | [pbr::OriginalName("NotEnoughRoomToLoadUnit")] NotEnoughRoomToLoadUnit = 67, 233 | [pbr::OriginalName("CantUnloadUnitsThere")] CantUnloadUnitsThere = 68, 234 | [pbr::OriginalName("CantWarpInUnitsThere")] CantWarpInUnitsThere = 69, 235 | [pbr::OriginalName("CantLoadImmobileUnits")] CantLoadImmobileUnits = 70, 236 | [pbr::OriginalName("CantRechargeImmobileUnits")] CantRechargeImmobileUnits = 71, 237 | [pbr::OriginalName("CantRechargeUnderConstructionUnits")] CantRechargeUnderConstructionUnits = 72, 238 | [pbr::OriginalName("CantLoadThatUnit")] CantLoadThatUnit = 73, 239 | [pbr::OriginalName("NoCargoToUnload")] NoCargoToUnload = 74, 240 | [pbr::OriginalName("LoadAllNoTargetsFound")] LoadAllNoTargetsFound = 75, 241 | [pbr::OriginalName("NotWhileOccupied")] NotWhileOccupied = 76, 242 | [pbr::OriginalName("CantAttackWithoutAmmo")] CantAttackWithoutAmmo = 77, 243 | [pbr::OriginalName("CantHoldAnyMoreAmmo")] CantHoldAnyMoreAmmo = 78, 244 | [pbr::OriginalName("TechRequirementsNotMet")] TechRequirementsNotMet = 79, 245 | [pbr::OriginalName("MustLockdownUnitFirst")] MustLockdownUnitFirst = 80, 246 | [pbr::OriginalName("MustTargetUnit")] MustTargetUnit = 81, 247 | [pbr::OriginalName("MustTargetInventory")] MustTargetInventory = 82, 248 | [pbr::OriginalName("MustTargetVisibleUnit")] MustTargetVisibleUnit = 83, 249 | [pbr::OriginalName("MustTargetVisibleLocation")] MustTargetVisibleLocation = 84, 250 | [pbr::OriginalName("MustTargetWalkableLocation")] MustTargetWalkableLocation = 85, 251 | [pbr::OriginalName("MustTargetPawnableUnit")] MustTargetPawnableUnit = 86, 252 | [pbr::OriginalName("YouCantControlThatUnit")] YouCantControlThatUnit = 87, 253 | [pbr::OriginalName("YouCantIssueCommandsToThatUnit")] YouCantIssueCommandsToThatUnit = 88, 254 | [pbr::OriginalName("MustTargetResources")] MustTargetResources = 89, 255 | [pbr::OriginalName("RequiresHealTarget")] RequiresHealTarget = 90, 256 | [pbr::OriginalName("RequiresRepairTarget")] RequiresRepairTarget = 91, 257 | [pbr::OriginalName("NoItemsToDrop")] NoItemsToDrop = 92, 258 | [pbr::OriginalName("CantHoldAnyMoreItems")] CantHoldAnyMoreItems = 93, 259 | [pbr::OriginalName("CantHoldThat")] CantHoldThat = 94, 260 | [pbr::OriginalName("TargetHasNoInventory")] TargetHasNoInventory = 95, 261 | [pbr::OriginalName("CantDropThisItem")] CantDropThisItem = 96, 262 | [pbr::OriginalName("CantMoveThisItem")] CantMoveThisItem = 97, 263 | [pbr::OriginalName("CantPawnThisUnit")] CantPawnThisUnit = 98, 264 | [pbr::OriginalName("MustTargetCaster")] MustTargetCaster = 99, 265 | [pbr::OriginalName("CantTargetCaster")] CantTargetCaster = 100, 266 | [pbr::OriginalName("MustTargetOuter")] MustTargetOuter = 101, 267 | [pbr::OriginalName("CantTargetOuter")] CantTargetOuter = 102, 268 | [pbr::OriginalName("MustTargetYourOwnUnits")] MustTargetYourOwnUnits = 103, 269 | [pbr::OriginalName("CantTargetYourOwnUnits")] CantTargetYourOwnUnits = 104, 270 | [pbr::OriginalName("MustTargetFriendlyUnits")] MustTargetFriendlyUnits = 105, 271 | [pbr::OriginalName("CantTargetFriendlyUnits")] CantTargetFriendlyUnits = 106, 272 | [pbr::OriginalName("MustTargetNeutralUnits")] MustTargetNeutralUnits = 107, 273 | [pbr::OriginalName("CantTargetNeutralUnits")] CantTargetNeutralUnits = 108, 274 | [pbr::OriginalName("MustTargetEnemyUnits")] MustTargetEnemyUnits = 109, 275 | [pbr::OriginalName("CantTargetEnemyUnits")] CantTargetEnemyUnits = 110, 276 | [pbr::OriginalName("MustTargetAirUnits")] MustTargetAirUnits = 111, 277 | [pbr::OriginalName("CantTargetAirUnits")] CantTargetAirUnits = 112, 278 | [pbr::OriginalName("MustTargetGroundUnits")] MustTargetGroundUnits = 113, 279 | [pbr::OriginalName("CantTargetGroundUnits")] CantTargetGroundUnits = 114, 280 | [pbr::OriginalName("MustTargetStructures")] MustTargetStructures = 115, 281 | [pbr::OriginalName("CantTargetStructures")] CantTargetStructures = 116, 282 | [pbr::OriginalName("MustTargetLightUnits")] MustTargetLightUnits = 117, 283 | [pbr::OriginalName("CantTargetLightUnits")] CantTargetLightUnits = 118, 284 | [pbr::OriginalName("MustTargetArmoredUnits")] MustTargetArmoredUnits = 119, 285 | [pbr::OriginalName("CantTargetArmoredUnits")] CantTargetArmoredUnits = 120, 286 | [pbr::OriginalName("MustTargetBiologicalUnits")] MustTargetBiologicalUnits = 121, 287 | [pbr::OriginalName("CantTargetBiologicalUnits")] CantTargetBiologicalUnits = 122, 288 | [pbr::OriginalName("MustTargetHeroicUnits")] MustTargetHeroicUnits = 123, 289 | [pbr::OriginalName("CantTargetHeroicUnits")] CantTargetHeroicUnits = 124, 290 | [pbr::OriginalName("MustTargetRoboticUnits")] MustTargetRoboticUnits = 125, 291 | [pbr::OriginalName("CantTargetRoboticUnits")] CantTargetRoboticUnits = 126, 292 | [pbr::OriginalName("MustTargetMechanicalUnits")] MustTargetMechanicalUnits = 127, 293 | [pbr::OriginalName("CantTargetMechanicalUnits")] CantTargetMechanicalUnits = 128, 294 | [pbr::OriginalName("MustTargetPsionicUnits")] MustTargetPsionicUnits = 129, 295 | [pbr::OriginalName("CantTargetPsionicUnits")] CantTargetPsionicUnits = 130, 296 | [pbr::OriginalName("MustTargetMassiveUnits")] MustTargetMassiveUnits = 131, 297 | [pbr::OriginalName("CantTargetMassiveUnits")] CantTargetMassiveUnits = 132, 298 | [pbr::OriginalName("MustTargetMissile")] MustTargetMissile = 133, 299 | [pbr::OriginalName("CantTargetMissile")] CantTargetMissile = 134, 300 | [pbr::OriginalName("MustTargetWorkerUnits")] MustTargetWorkerUnits = 135, 301 | [pbr::OriginalName("CantTargetWorkerUnits")] CantTargetWorkerUnits = 136, 302 | [pbr::OriginalName("MustTargetEnergyCapableUnits")] MustTargetEnergyCapableUnits = 137, 303 | [pbr::OriginalName("CantTargetEnergyCapableUnits")] CantTargetEnergyCapableUnits = 138, 304 | [pbr::OriginalName("MustTargetShieldCapableUnits")] MustTargetShieldCapableUnits = 139, 305 | [pbr::OriginalName("CantTargetShieldCapableUnits")] CantTargetShieldCapableUnits = 140, 306 | [pbr::OriginalName("MustTargetFlyers")] MustTargetFlyers = 141, 307 | [pbr::OriginalName("CantTargetFlyers")] CantTargetFlyers = 142, 308 | [pbr::OriginalName("MustTargetBuriedUnits")] MustTargetBuriedUnits = 143, 309 | [pbr::OriginalName("CantTargetBuriedUnits")] CantTargetBuriedUnits = 144, 310 | [pbr::OriginalName("MustTargetCloakedUnits")] MustTargetCloakedUnits = 145, 311 | [pbr::OriginalName("CantTargetCloakedUnits")] CantTargetCloakedUnits = 146, 312 | [pbr::OriginalName("MustTargetUnitsInAStasisField")] MustTargetUnitsInAstasisField = 147, 313 | [pbr::OriginalName("CantTargetUnitsInAStasisField")] CantTargetUnitsInAstasisField = 148, 314 | [pbr::OriginalName("MustTargetUnderConstructionUnits")] MustTargetUnderConstructionUnits = 149, 315 | [pbr::OriginalName("CantTargetUnderConstructionUnits")] CantTargetUnderConstructionUnits = 150, 316 | [pbr::OriginalName("MustTargetDeadUnits")] MustTargetDeadUnits = 151, 317 | [pbr::OriginalName("CantTargetDeadUnits")] CantTargetDeadUnits = 152, 318 | [pbr::OriginalName("MustTargetRevivableUnits")] MustTargetRevivableUnits = 153, 319 | [pbr::OriginalName("CantTargetRevivableUnits")] CantTargetRevivableUnits = 154, 320 | [pbr::OriginalName("MustTargetHiddenUnits")] MustTargetHiddenUnits = 155, 321 | [pbr::OriginalName("CantTargetHiddenUnits")] CantTargetHiddenUnits = 156, 322 | [pbr::OriginalName("CantRechargeOtherPlayersUnits")] CantRechargeOtherPlayersUnits = 157, 323 | [pbr::OriginalName("MustTargetHallucinations")] MustTargetHallucinations = 158, 324 | [pbr::OriginalName("CantTargetHallucinations")] CantTargetHallucinations = 159, 325 | [pbr::OriginalName("MustTargetInvulnerableUnits")] MustTargetInvulnerableUnits = 160, 326 | [pbr::OriginalName("CantTargetInvulnerableUnits")] CantTargetInvulnerableUnits = 161, 327 | [pbr::OriginalName("MustTargetDetectedUnits")] MustTargetDetectedUnits = 162, 328 | [pbr::OriginalName("CantTargetDetectedUnits")] CantTargetDetectedUnits = 163, 329 | [pbr::OriginalName("CantTargetUnitWithEnergy")] CantTargetUnitWithEnergy = 164, 330 | [pbr::OriginalName("CantTargetUnitWithShields")] CantTargetUnitWithShields = 165, 331 | [pbr::OriginalName("MustTargetUncommandableUnits")] MustTargetUncommandableUnits = 166, 332 | [pbr::OriginalName("CantTargetUncommandableUnits")] CantTargetUncommandableUnits = 167, 333 | [pbr::OriginalName("MustTargetPreventDefeatUnits")] MustTargetPreventDefeatUnits = 168, 334 | [pbr::OriginalName("CantTargetPreventDefeatUnits")] CantTargetPreventDefeatUnits = 169, 335 | [pbr::OriginalName("MustTargetPreventRevealUnits")] MustTargetPreventRevealUnits = 170, 336 | [pbr::OriginalName("CantTargetPreventRevealUnits")] CantTargetPreventRevealUnits = 171, 337 | [pbr::OriginalName("MustTargetPassiveUnits")] MustTargetPassiveUnits = 172, 338 | [pbr::OriginalName("CantTargetPassiveUnits")] CantTargetPassiveUnits = 173, 339 | [pbr::OriginalName("MustTargetStunnedUnits")] MustTargetStunnedUnits = 174, 340 | [pbr::OriginalName("CantTargetStunnedUnits")] CantTargetStunnedUnits = 175, 341 | [pbr::OriginalName("MustTargetSummonedUnits")] MustTargetSummonedUnits = 176, 342 | [pbr::OriginalName("CantTargetSummonedUnits")] CantTargetSummonedUnits = 177, 343 | [pbr::OriginalName("MustTargetUser1")] MustTargetUser1 = 178, 344 | [pbr::OriginalName("CantTargetUser1")] CantTargetUser1 = 179, 345 | [pbr::OriginalName("MustTargetUnstoppableUnits")] MustTargetUnstoppableUnits = 180, 346 | [pbr::OriginalName("CantTargetUnstoppableUnits")] CantTargetUnstoppableUnits = 181, 347 | [pbr::OriginalName("MustTargetResistantUnits")] MustTargetResistantUnits = 182, 348 | [pbr::OriginalName("CantTargetResistantUnits")] CantTargetResistantUnits = 183, 349 | [pbr::OriginalName("MustTargetDazedUnits")] MustTargetDazedUnits = 184, 350 | [pbr::OriginalName("CantTargetDazedUnits")] CantTargetDazedUnits = 185, 351 | [pbr::OriginalName("CantLockdown")] CantLockdown = 186, 352 | [pbr::OriginalName("CantMindControl")] CantMindControl = 187, 353 | [pbr::OriginalName("MustTargetDestructibles")] MustTargetDestructibles = 188, 354 | [pbr::OriginalName("CantTargetDestructibles")] CantTargetDestructibles = 189, 355 | [pbr::OriginalName("MustTargetItems")] MustTargetItems = 190, 356 | [pbr::OriginalName("CantTargetItems")] CantTargetItems = 191, 357 | [pbr::OriginalName("NoCalldownAvailable")] NoCalldownAvailable = 192, 358 | [pbr::OriginalName("WaypointListFull")] WaypointListFull = 193, 359 | [pbr::OriginalName("MustTargetRace")] MustTargetRace = 194, 360 | [pbr::OriginalName("CantTargetRace")] CantTargetRace = 195, 361 | [pbr::OriginalName("MustTargetSimilarUnits")] MustTargetSimilarUnits = 196, 362 | [pbr::OriginalName("CantTargetSimilarUnits")] CantTargetSimilarUnits = 197, 363 | [pbr::OriginalName("CantFindEnoughTargets")] CantFindEnoughTargets = 198, 364 | [pbr::OriginalName("AlreadySpawningLarva")] AlreadySpawningLarva = 199, 365 | [pbr::OriginalName("CantTargetExhaustedResources")] CantTargetExhaustedResources = 200, 366 | [pbr::OriginalName("CantUseMinimap")] CantUseMinimap = 201, 367 | [pbr::OriginalName("CantUseInfoPanel")] CantUseInfoPanel = 202, 368 | [pbr::OriginalName("OrderQueueIsFull")] OrderQueueIsFull = 203, 369 | [pbr::OriginalName("CantHarvestThatResource")] CantHarvestThatResource = 204, 370 | [pbr::OriginalName("HarvestersNotRequired")] HarvestersNotRequired = 205, 371 | [pbr::OriginalName("AlreadyTargeted")] AlreadyTargeted = 206, 372 | [pbr::OriginalName("CantAttackWeaponsDisabled")] CantAttackWeaponsDisabled = 207, 373 | [pbr::OriginalName("CouldntReachTarget")] CouldntReachTarget = 208, 374 | [pbr::OriginalName("TargetIsOutOfRange")] TargetIsOutOfRange = 209, 375 | [pbr::OriginalName("TargetIsTooClose")] TargetIsTooClose = 210, 376 | [pbr::OriginalName("TargetIsOutOfArc")] TargetIsOutOfArc = 211, 377 | [pbr::OriginalName("CantFindTeleportLocation")] CantFindTeleportLocation = 212, 378 | [pbr::OriginalName("InvalidItemClass")] InvalidItemClass = 213, 379 | [pbr::OriginalName("CantFindCancelOrder")] CantFindCancelOrder = 214, 380 | } 381 | 382 | #endregion 383 | 384 | } 385 | 386 | #endregion Designer generated code 387 | -------------------------------------------------------------------------------- /SC2APIProtocol/Query.cs: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: s2clientprotocol/query.proto 3 | #pragma warning disable 1591, 0612, 3021 4 | #region Designer generated code 5 | 6 | using pb = global::Google.Protobuf; 7 | using pbc = global::Google.Protobuf.Collections; 8 | using pbr = global::Google.Protobuf.Reflection; 9 | using scg = global::System.Collections.Generic; 10 | namespace SC2APIProtocol { 11 | 12 | /// Holder for reflection information generated from s2clientprotocol/query.proto 13 | public static partial class QueryReflection { 14 | 15 | #region Descriptor 16 | /// File descriptor for s2clientprotocol/query.proto 17 | public static pbr::FileDescriptor Descriptor { 18 | get { return descriptor; } 19 | } 20 | private static pbr::FileDescriptor descriptor; 21 | 22 | static QueryReflection() { 23 | byte[] descriptorData = global::System.Convert.FromBase64String( 24 | string.Concat( 25 | "ChxzMmNsaWVudHByb3RvY29sL3F1ZXJ5LnByb3RvEg5TQzJBUElQcm90b2Nv", 26 | "bBodczJjbGllbnRwcm90b2NvbC9jb21tb24ucHJvdG8aHHMyY2xpZW50cHJv", 27 | "dG9jb2wvZXJyb3IucHJvdG8i8AEKDFJlcXVlc3RRdWVyeRI0CgdwYXRoaW5n", 28 | "GAEgAygLMiMuU0MyQVBJUHJvdG9jb2wuUmVxdWVzdFF1ZXJ5UGF0aGluZxJB", 29 | "CglhYmlsaXRpZXMYAiADKAsyLi5TQzJBUElQcm90b2NvbC5SZXF1ZXN0UXVl", 30 | "cnlBdmFpbGFibGVBYmlsaXRpZXMSQQoKcGxhY2VtZW50cxgDIAMoCzItLlND", 31 | "MkFQSVByb3RvY29sLlJlcXVlc3RRdWVyeUJ1aWxkaW5nUGxhY2VtZW50EiQK", 32 | "HGlnbm9yZV9yZXNvdXJjZV9yZXF1aXJlbWVudHMYBCABKAgizgEKDVJlc3Bv", 33 | "bnNlUXVlcnkSNQoHcGF0aGluZxgBIAMoCzIkLlNDMkFQSVByb3RvY29sLlJl", 34 | "c3BvbnNlUXVlcnlQYXRoaW5nEkIKCWFiaWxpdGllcxgCIAMoCzIvLlNDMkFQ", 35 | "SVByb3RvY29sLlJlc3BvbnNlUXVlcnlBdmFpbGFibGVBYmlsaXRpZXMSQgoK", 36 | "cGxhY2VtZW50cxgDIAMoCzIuLlNDMkFQSVByb3RvY29sLlJlc3BvbnNlUXVl", 37 | "cnlCdWlsZGluZ1BsYWNlbWVudCKKAQoTUmVxdWVzdFF1ZXJ5UGF0aGluZxIs", 38 | "CglzdGFydF9wb3MYASABKAsyFy5TQzJBUElQcm90b2NvbC5Qb2ludDJESAAS", 39 | "EgoIdW5pdF90YWcYAiABKARIABIoCgdlbmRfcG9zGAMgASgLMhcuU0MyQVBJ", 40 | "UHJvdG9jb2wuUG9pbnQyREIHCgVzdGFydCIoChRSZXNwb25zZVF1ZXJ5UGF0", 41 | "aGluZxIQCghkaXN0YW5jZRgBIAEoAiIyCh5SZXF1ZXN0UXVlcnlBdmFpbGFi", 42 | "bGVBYmlsaXRpZXMSEAoIdW5pdF90YWcYASABKAQifgofUmVzcG9uc2VRdWVy", 43 | "eUF2YWlsYWJsZUFiaWxpdGllcxIzCglhYmlsaXRpZXMYASADKAsyIC5TQzJB", 44 | "UElQcm90b2NvbC5BdmFpbGFibGVBYmlsaXR5EhAKCHVuaXRfdGFnGAIgASgE", 45 | "EhQKDHVuaXRfdHlwZV9pZBgDIAEoDSJ6Ch1SZXF1ZXN0UXVlcnlCdWlsZGlu", 46 | "Z1BsYWNlbWVudBISCgphYmlsaXR5X2lkGAEgASgFEisKCnRhcmdldF9wb3MY", 47 | "AiABKAsyFy5TQzJBUElQcm90b2NvbC5Qb2ludDJEEhgKEHBsYWNpbmdfdW5p", 48 | "dF90YWcYAyABKAQiTgoeUmVzcG9uc2VRdWVyeUJ1aWxkaW5nUGxhY2VtZW50", 49 | "EiwKBnJlc3VsdBgBIAEoDjIcLlNDMkFQSVByb3RvY29sLkFjdGlvblJlc3Vs", 50 | "dGIGcHJvdG8z")); 51 | descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, 52 | new pbr::FileDescriptor[] { global::SC2APIProtocol.CommonReflection.Descriptor, global::SC2APIProtocol.ErrorReflection.Descriptor, }, 53 | new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { 54 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.RequestQuery), global::SC2APIProtocol.RequestQuery.Parser, new[]{ "Pathing", "Abilities", "Placements", "IgnoreResourceRequirements" }, null, null, null), 55 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.ResponseQuery), global::SC2APIProtocol.ResponseQuery.Parser, new[]{ "Pathing", "Abilities", "Placements" }, null, null, null), 56 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.RequestQueryPathing), global::SC2APIProtocol.RequestQueryPathing.Parser, new[]{ "StartPos", "UnitTag", "EndPos" }, new[]{ "Start" }, null, null), 57 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.ResponseQueryPathing), global::SC2APIProtocol.ResponseQueryPathing.Parser, new[]{ "Distance" }, null, null, null), 58 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.RequestQueryAvailableAbilities), global::SC2APIProtocol.RequestQueryAvailableAbilities.Parser, new[]{ "UnitTag" }, null, null, null), 59 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.ResponseQueryAvailableAbilities), global::SC2APIProtocol.ResponseQueryAvailableAbilities.Parser, new[]{ "Abilities", "UnitTag", "UnitTypeId" }, null, null, null), 60 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.RequestQueryBuildingPlacement), global::SC2APIProtocol.RequestQueryBuildingPlacement.Parser, new[]{ "AbilityId", "TargetPos", "PlacingUnitTag" }, null, null, null), 61 | new pbr::GeneratedClrTypeInfo(typeof(global::SC2APIProtocol.ResponseQueryBuildingPlacement), global::SC2APIProtocol.ResponseQueryBuildingPlacement.Parser, new[]{ "Result" }, null, null, null) 62 | })); 63 | } 64 | #endregion 65 | 66 | } 67 | #region Messages 68 | public sealed partial class RequestQuery : pb::IMessage { 69 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RequestQuery()); 70 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 71 | public static pb::MessageParser Parser { get { return _parser; } } 72 | 73 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 74 | public static pbr::MessageDescriptor Descriptor { 75 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[0]; } 76 | } 77 | 78 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 79 | pbr::MessageDescriptor pb::IMessage.Descriptor { 80 | get { return Descriptor; } 81 | } 82 | 83 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 84 | public RequestQuery() { 85 | OnConstruction(); 86 | } 87 | 88 | partial void OnConstruction(); 89 | 90 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 91 | public RequestQuery(RequestQuery other) : this() { 92 | pathing_ = other.pathing_.Clone(); 93 | abilities_ = other.abilities_.Clone(); 94 | placements_ = other.placements_.Clone(); 95 | ignoreResourceRequirements_ = other.ignoreResourceRequirements_; 96 | } 97 | 98 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 99 | public RequestQuery Clone() { 100 | return new RequestQuery(this); 101 | } 102 | 103 | /// Field number for the "pathing" field. 104 | public const int PathingFieldNumber = 1; 105 | private static readonly pb::FieldCodec _repeated_pathing_codec 106 | = pb::FieldCodec.ForMessage(10, global::SC2APIProtocol.RequestQueryPathing.Parser); 107 | private readonly pbc::RepeatedField pathing_ = new pbc::RepeatedField(); 108 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 109 | public pbc::RepeatedField Pathing { 110 | get { return pathing_; } 111 | } 112 | 113 | /// Field number for the "abilities" field. 114 | public const int AbilitiesFieldNumber = 2; 115 | private static readonly pb::FieldCodec _repeated_abilities_codec 116 | = pb::FieldCodec.ForMessage(18, global::SC2APIProtocol.RequestQueryAvailableAbilities.Parser); 117 | private readonly pbc::RepeatedField abilities_ = new pbc::RepeatedField(); 118 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 119 | public pbc::RepeatedField Abilities { 120 | get { return abilities_; } 121 | } 122 | 123 | /// Field number for the "placements" field. 124 | public const int PlacementsFieldNumber = 3; 125 | private static readonly pb::FieldCodec _repeated_placements_codec 126 | = pb::FieldCodec.ForMessage(26, global::SC2APIProtocol.RequestQueryBuildingPlacement.Parser); 127 | private readonly pbc::RepeatedField placements_ = new pbc::RepeatedField(); 128 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 129 | public pbc::RepeatedField Placements { 130 | get { return placements_; } 131 | } 132 | 133 | /// Field number for the "ignore_resource_requirements" field. 134 | public const int IgnoreResourceRequirementsFieldNumber = 4; 135 | private bool ignoreResourceRequirements_; 136 | /// 137 | /// Ignores requirements like food, minerals and so on. 138 | /// 139 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 140 | public bool IgnoreResourceRequirements { 141 | get { return ignoreResourceRequirements_; } 142 | set { 143 | ignoreResourceRequirements_ = value; 144 | } 145 | } 146 | 147 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 148 | public override bool Equals(object other) { 149 | return Equals(other as RequestQuery); 150 | } 151 | 152 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 153 | public bool Equals(RequestQuery other) { 154 | if (ReferenceEquals(other, null)) { 155 | return false; 156 | } 157 | if (ReferenceEquals(other, this)) { 158 | return true; 159 | } 160 | if(!pathing_.Equals(other.pathing_)) return false; 161 | if(!abilities_.Equals(other.abilities_)) return false; 162 | if(!placements_.Equals(other.placements_)) return false; 163 | if (IgnoreResourceRequirements != other.IgnoreResourceRequirements) return false; 164 | return true; 165 | } 166 | 167 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 168 | public override int GetHashCode() { 169 | int hash = 1; 170 | hash ^= pathing_.GetHashCode(); 171 | hash ^= abilities_.GetHashCode(); 172 | hash ^= placements_.GetHashCode(); 173 | if (IgnoreResourceRequirements != false) hash ^= IgnoreResourceRequirements.GetHashCode(); 174 | return hash; 175 | } 176 | 177 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 178 | public override string ToString() { 179 | return pb::JsonFormatter.ToDiagnosticString(this); 180 | } 181 | 182 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 183 | public void WriteTo(pb::CodedOutputStream output) { 184 | pathing_.WriteTo(output, _repeated_pathing_codec); 185 | abilities_.WriteTo(output, _repeated_abilities_codec); 186 | placements_.WriteTo(output, _repeated_placements_codec); 187 | if (IgnoreResourceRequirements != false) { 188 | output.WriteRawTag(32); 189 | output.WriteBool(IgnoreResourceRequirements); 190 | } 191 | } 192 | 193 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 194 | public int CalculateSize() { 195 | int size = 0; 196 | size += pathing_.CalculateSize(_repeated_pathing_codec); 197 | size += abilities_.CalculateSize(_repeated_abilities_codec); 198 | size += placements_.CalculateSize(_repeated_placements_codec); 199 | if (IgnoreResourceRequirements != false) { 200 | size += 1 + 1; 201 | } 202 | return size; 203 | } 204 | 205 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 206 | public void MergeFrom(RequestQuery other) { 207 | if (other == null) { 208 | return; 209 | } 210 | pathing_.Add(other.pathing_); 211 | abilities_.Add(other.abilities_); 212 | placements_.Add(other.placements_); 213 | if (other.IgnoreResourceRequirements != false) { 214 | IgnoreResourceRequirements = other.IgnoreResourceRequirements; 215 | } 216 | } 217 | 218 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 219 | public void MergeFrom(pb::CodedInputStream input) { 220 | uint tag; 221 | while ((tag = input.ReadTag()) != 0) { 222 | switch(tag) { 223 | default: 224 | input.SkipLastField(); 225 | break; 226 | case 10: { 227 | pathing_.AddEntriesFrom(input, _repeated_pathing_codec); 228 | break; 229 | } 230 | case 18: { 231 | abilities_.AddEntriesFrom(input, _repeated_abilities_codec); 232 | break; 233 | } 234 | case 26: { 235 | placements_.AddEntriesFrom(input, _repeated_placements_codec); 236 | break; 237 | } 238 | case 32: { 239 | IgnoreResourceRequirements = input.ReadBool(); 240 | break; 241 | } 242 | } 243 | } 244 | } 245 | 246 | } 247 | 248 | public sealed partial class ResponseQuery : pb::IMessage { 249 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResponseQuery()); 250 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 251 | public static pb::MessageParser Parser { get { return _parser; } } 252 | 253 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 254 | public static pbr::MessageDescriptor Descriptor { 255 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[1]; } 256 | } 257 | 258 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 259 | pbr::MessageDescriptor pb::IMessage.Descriptor { 260 | get { return Descriptor; } 261 | } 262 | 263 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 264 | public ResponseQuery() { 265 | OnConstruction(); 266 | } 267 | 268 | partial void OnConstruction(); 269 | 270 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 271 | public ResponseQuery(ResponseQuery other) : this() { 272 | pathing_ = other.pathing_.Clone(); 273 | abilities_ = other.abilities_.Clone(); 274 | placements_ = other.placements_.Clone(); 275 | } 276 | 277 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 278 | public ResponseQuery Clone() { 279 | return new ResponseQuery(this); 280 | } 281 | 282 | /// Field number for the "pathing" field. 283 | public const int PathingFieldNumber = 1; 284 | private static readonly pb::FieldCodec _repeated_pathing_codec 285 | = pb::FieldCodec.ForMessage(10, global::SC2APIProtocol.ResponseQueryPathing.Parser); 286 | private readonly pbc::RepeatedField pathing_ = new pbc::RepeatedField(); 287 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 288 | public pbc::RepeatedField Pathing { 289 | get { return pathing_; } 290 | } 291 | 292 | /// Field number for the "abilities" field. 293 | public const int AbilitiesFieldNumber = 2; 294 | private static readonly pb::FieldCodec _repeated_abilities_codec 295 | = pb::FieldCodec.ForMessage(18, global::SC2APIProtocol.ResponseQueryAvailableAbilities.Parser); 296 | private readonly pbc::RepeatedField abilities_ = new pbc::RepeatedField(); 297 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 298 | public pbc::RepeatedField Abilities { 299 | get { return abilities_; } 300 | } 301 | 302 | /// Field number for the "placements" field. 303 | public const int PlacementsFieldNumber = 3; 304 | private static readonly pb::FieldCodec _repeated_placements_codec 305 | = pb::FieldCodec.ForMessage(26, global::SC2APIProtocol.ResponseQueryBuildingPlacement.Parser); 306 | private readonly pbc::RepeatedField placements_ = new pbc::RepeatedField(); 307 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 308 | public pbc::RepeatedField Placements { 309 | get { return placements_; } 310 | } 311 | 312 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 313 | public override bool Equals(object other) { 314 | return Equals(other as ResponseQuery); 315 | } 316 | 317 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 318 | public bool Equals(ResponseQuery other) { 319 | if (ReferenceEquals(other, null)) { 320 | return false; 321 | } 322 | if (ReferenceEquals(other, this)) { 323 | return true; 324 | } 325 | if(!pathing_.Equals(other.pathing_)) return false; 326 | if(!abilities_.Equals(other.abilities_)) return false; 327 | if(!placements_.Equals(other.placements_)) return false; 328 | return true; 329 | } 330 | 331 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 332 | public override int GetHashCode() { 333 | int hash = 1; 334 | hash ^= pathing_.GetHashCode(); 335 | hash ^= abilities_.GetHashCode(); 336 | hash ^= placements_.GetHashCode(); 337 | return hash; 338 | } 339 | 340 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 341 | public override string ToString() { 342 | return pb::JsonFormatter.ToDiagnosticString(this); 343 | } 344 | 345 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 346 | public void WriteTo(pb::CodedOutputStream output) { 347 | pathing_.WriteTo(output, _repeated_pathing_codec); 348 | abilities_.WriteTo(output, _repeated_abilities_codec); 349 | placements_.WriteTo(output, _repeated_placements_codec); 350 | } 351 | 352 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 353 | public int CalculateSize() { 354 | int size = 0; 355 | size += pathing_.CalculateSize(_repeated_pathing_codec); 356 | size += abilities_.CalculateSize(_repeated_abilities_codec); 357 | size += placements_.CalculateSize(_repeated_placements_codec); 358 | return size; 359 | } 360 | 361 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 362 | public void MergeFrom(ResponseQuery other) { 363 | if (other == null) { 364 | return; 365 | } 366 | pathing_.Add(other.pathing_); 367 | abilities_.Add(other.abilities_); 368 | placements_.Add(other.placements_); 369 | } 370 | 371 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 372 | public void MergeFrom(pb::CodedInputStream input) { 373 | uint tag; 374 | while ((tag = input.ReadTag()) != 0) { 375 | switch(tag) { 376 | default: 377 | input.SkipLastField(); 378 | break; 379 | case 10: { 380 | pathing_.AddEntriesFrom(input, _repeated_pathing_codec); 381 | break; 382 | } 383 | case 18: { 384 | abilities_.AddEntriesFrom(input, _repeated_abilities_codec); 385 | break; 386 | } 387 | case 26: { 388 | placements_.AddEntriesFrom(input, _repeated_placements_codec); 389 | break; 390 | } 391 | } 392 | } 393 | } 394 | 395 | } 396 | 397 | /// 398 | ///-------------------------------------------------------------------------------------------------- 399 | /// 400 | public sealed partial class RequestQueryPathing : pb::IMessage { 401 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RequestQueryPathing()); 402 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 403 | public static pb::MessageParser Parser { get { return _parser; } } 404 | 405 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 406 | public static pbr::MessageDescriptor Descriptor { 407 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[2]; } 408 | } 409 | 410 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 411 | pbr::MessageDescriptor pb::IMessage.Descriptor { 412 | get { return Descriptor; } 413 | } 414 | 415 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 416 | public RequestQueryPathing() { 417 | OnConstruction(); 418 | } 419 | 420 | partial void OnConstruction(); 421 | 422 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 423 | public RequestQueryPathing(RequestQueryPathing other) : this() { 424 | EndPos = other.endPos_ != null ? other.EndPos.Clone() : null; 425 | switch (other.StartCase) { 426 | case StartOneofCase.StartPos: 427 | StartPos = other.StartPos.Clone(); 428 | break; 429 | case StartOneofCase.UnitTag: 430 | UnitTag = other.UnitTag; 431 | break; 432 | } 433 | 434 | } 435 | 436 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 437 | public RequestQueryPathing Clone() { 438 | return new RequestQueryPathing(this); 439 | } 440 | 441 | /// Field number for the "start_pos" field. 442 | public const int StartPosFieldNumber = 1; 443 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 444 | public global::SC2APIProtocol.Point2D StartPos { 445 | get { return startCase_ == StartOneofCase.StartPos ? (global::SC2APIProtocol.Point2D) start_ : null; } 446 | set { 447 | start_ = value; 448 | startCase_ = value == null ? StartOneofCase.None : StartOneofCase.StartPos; 449 | } 450 | } 451 | 452 | /// Field number for the "unit_tag" field. 453 | public const int UnitTagFieldNumber = 2; 454 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 455 | public ulong UnitTag { 456 | get { return startCase_ == StartOneofCase.UnitTag ? (ulong) start_ : 0UL; } 457 | set { 458 | start_ = value; 459 | startCase_ = StartOneofCase.UnitTag; 460 | } 461 | } 462 | 463 | /// Field number for the "end_pos" field. 464 | public const int EndPosFieldNumber = 3; 465 | private global::SC2APIProtocol.Point2D endPos_; 466 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 467 | public global::SC2APIProtocol.Point2D EndPos { 468 | get { return endPos_; } 469 | set { 470 | endPos_ = value; 471 | } 472 | } 473 | 474 | private object start_; 475 | /// Enum of possible cases for the "start" oneof. 476 | public enum StartOneofCase { 477 | None = 0, 478 | StartPos = 1, 479 | UnitTag = 2, 480 | } 481 | private StartOneofCase startCase_ = StartOneofCase.None; 482 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 483 | public StartOneofCase StartCase { 484 | get { return startCase_; } 485 | } 486 | 487 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 488 | public void ClearStart() { 489 | startCase_ = StartOneofCase.None; 490 | start_ = null; 491 | } 492 | 493 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 494 | public override bool Equals(object other) { 495 | return Equals(other as RequestQueryPathing); 496 | } 497 | 498 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 499 | public bool Equals(RequestQueryPathing other) { 500 | if (ReferenceEquals(other, null)) { 501 | return false; 502 | } 503 | if (ReferenceEquals(other, this)) { 504 | return true; 505 | } 506 | if (!object.Equals(StartPos, other.StartPos)) return false; 507 | if (UnitTag != other.UnitTag) return false; 508 | if (!object.Equals(EndPos, other.EndPos)) return false; 509 | if (StartCase != other.StartCase) return false; 510 | return true; 511 | } 512 | 513 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 514 | public override int GetHashCode() { 515 | int hash = 1; 516 | if (startCase_ == StartOneofCase.StartPos) hash ^= StartPos.GetHashCode(); 517 | if (startCase_ == StartOneofCase.UnitTag) hash ^= UnitTag.GetHashCode(); 518 | if (endPos_ != null) hash ^= EndPos.GetHashCode(); 519 | hash ^= (int) startCase_; 520 | return hash; 521 | } 522 | 523 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 524 | public override string ToString() { 525 | return pb::JsonFormatter.ToDiagnosticString(this); 526 | } 527 | 528 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 529 | public void WriteTo(pb::CodedOutputStream output) { 530 | if (startCase_ == StartOneofCase.StartPos) { 531 | output.WriteRawTag(10); 532 | output.WriteMessage(StartPos); 533 | } 534 | if (startCase_ == StartOneofCase.UnitTag) { 535 | output.WriteRawTag(16); 536 | output.WriteUInt64(UnitTag); 537 | } 538 | if (endPos_ != null) { 539 | output.WriteRawTag(26); 540 | output.WriteMessage(EndPos); 541 | } 542 | } 543 | 544 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 545 | public int CalculateSize() { 546 | int size = 0; 547 | if (startCase_ == StartOneofCase.StartPos) { 548 | size += 1 + pb::CodedOutputStream.ComputeMessageSize(StartPos); 549 | } 550 | if (startCase_ == StartOneofCase.UnitTag) { 551 | size += 1 + pb::CodedOutputStream.ComputeUInt64Size(UnitTag); 552 | } 553 | if (endPos_ != null) { 554 | size += 1 + pb::CodedOutputStream.ComputeMessageSize(EndPos); 555 | } 556 | return size; 557 | } 558 | 559 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 560 | public void MergeFrom(RequestQueryPathing other) { 561 | if (other == null) { 562 | return; 563 | } 564 | if (other.endPos_ != null) { 565 | if (endPos_ == null) { 566 | endPos_ = new global::SC2APIProtocol.Point2D(); 567 | } 568 | EndPos.MergeFrom(other.EndPos); 569 | } 570 | switch (other.StartCase) { 571 | case StartOneofCase.StartPos: 572 | StartPos = other.StartPos; 573 | break; 574 | case StartOneofCase.UnitTag: 575 | UnitTag = other.UnitTag; 576 | break; 577 | } 578 | 579 | } 580 | 581 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 582 | public void MergeFrom(pb::CodedInputStream input) { 583 | uint tag; 584 | while ((tag = input.ReadTag()) != 0) { 585 | switch(tag) { 586 | default: 587 | input.SkipLastField(); 588 | break; 589 | case 10: { 590 | global::SC2APIProtocol.Point2D subBuilder = new global::SC2APIProtocol.Point2D(); 591 | if (startCase_ == StartOneofCase.StartPos) { 592 | subBuilder.MergeFrom(StartPos); 593 | } 594 | input.ReadMessage(subBuilder); 595 | StartPos = subBuilder; 596 | break; 597 | } 598 | case 16: { 599 | UnitTag = input.ReadUInt64(); 600 | break; 601 | } 602 | case 26: { 603 | if (endPos_ == null) { 604 | endPos_ = new global::SC2APIProtocol.Point2D(); 605 | } 606 | input.ReadMessage(endPos_); 607 | break; 608 | } 609 | } 610 | } 611 | } 612 | 613 | } 614 | 615 | public sealed partial class ResponseQueryPathing : pb::IMessage { 616 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResponseQueryPathing()); 617 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 618 | public static pb::MessageParser Parser { get { return _parser; } } 619 | 620 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 621 | public static pbr::MessageDescriptor Descriptor { 622 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[3]; } 623 | } 624 | 625 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 626 | pbr::MessageDescriptor pb::IMessage.Descriptor { 627 | get { return Descriptor; } 628 | } 629 | 630 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 631 | public ResponseQueryPathing() { 632 | OnConstruction(); 633 | } 634 | 635 | partial void OnConstruction(); 636 | 637 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 638 | public ResponseQueryPathing(ResponseQueryPathing other) : this() { 639 | distance_ = other.distance_; 640 | } 641 | 642 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 643 | public ResponseQueryPathing Clone() { 644 | return new ResponseQueryPathing(this); 645 | } 646 | 647 | /// Field number for the "distance" field. 648 | public const int DistanceFieldNumber = 1; 649 | private float distance_; 650 | /// 651 | /// 0 if no path exists 652 | /// 653 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 654 | public float Distance { 655 | get { return distance_; } 656 | set { 657 | distance_ = value; 658 | } 659 | } 660 | 661 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 662 | public override bool Equals(object other) { 663 | return Equals(other as ResponseQueryPathing); 664 | } 665 | 666 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 667 | public bool Equals(ResponseQueryPathing other) { 668 | if (ReferenceEquals(other, null)) { 669 | return false; 670 | } 671 | if (ReferenceEquals(other, this)) { 672 | return true; 673 | } 674 | if (Distance != other.Distance) return false; 675 | return true; 676 | } 677 | 678 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 679 | public override int GetHashCode() { 680 | int hash = 1; 681 | if (Distance != 0F) hash ^= Distance.GetHashCode(); 682 | return hash; 683 | } 684 | 685 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 686 | public override string ToString() { 687 | return pb::JsonFormatter.ToDiagnosticString(this); 688 | } 689 | 690 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 691 | public void WriteTo(pb::CodedOutputStream output) { 692 | if (Distance != 0F) { 693 | output.WriteRawTag(13); 694 | output.WriteFloat(Distance); 695 | } 696 | } 697 | 698 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 699 | public int CalculateSize() { 700 | int size = 0; 701 | if (Distance != 0F) { 702 | size += 1 + 4; 703 | } 704 | return size; 705 | } 706 | 707 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 708 | public void MergeFrom(ResponseQueryPathing other) { 709 | if (other == null) { 710 | return; 711 | } 712 | if (other.Distance != 0F) { 713 | Distance = other.Distance; 714 | } 715 | } 716 | 717 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 718 | public void MergeFrom(pb::CodedInputStream input) { 719 | uint tag; 720 | while ((tag = input.ReadTag()) != 0) { 721 | switch(tag) { 722 | default: 723 | input.SkipLastField(); 724 | break; 725 | case 13: { 726 | Distance = input.ReadFloat(); 727 | break; 728 | } 729 | } 730 | } 731 | } 732 | 733 | } 734 | 735 | /// 736 | ///-------------------------------------------------------------------------------------------------- 737 | /// 738 | public sealed partial class RequestQueryAvailableAbilities : pb::IMessage { 739 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RequestQueryAvailableAbilities()); 740 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 741 | public static pb::MessageParser Parser { get { return _parser; } } 742 | 743 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 744 | public static pbr::MessageDescriptor Descriptor { 745 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[4]; } 746 | } 747 | 748 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 749 | pbr::MessageDescriptor pb::IMessage.Descriptor { 750 | get { return Descriptor; } 751 | } 752 | 753 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 754 | public RequestQueryAvailableAbilities() { 755 | OnConstruction(); 756 | } 757 | 758 | partial void OnConstruction(); 759 | 760 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 761 | public RequestQueryAvailableAbilities(RequestQueryAvailableAbilities other) : this() { 762 | unitTag_ = other.unitTag_; 763 | } 764 | 765 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 766 | public RequestQueryAvailableAbilities Clone() { 767 | return new RequestQueryAvailableAbilities(this); 768 | } 769 | 770 | /// Field number for the "unit_tag" field. 771 | public const int UnitTagFieldNumber = 1; 772 | private ulong unitTag_; 773 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 774 | public ulong UnitTag { 775 | get { return unitTag_; } 776 | set { 777 | unitTag_ = value; 778 | } 779 | } 780 | 781 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 782 | public override bool Equals(object other) { 783 | return Equals(other as RequestQueryAvailableAbilities); 784 | } 785 | 786 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 787 | public bool Equals(RequestQueryAvailableAbilities other) { 788 | if (ReferenceEquals(other, null)) { 789 | return false; 790 | } 791 | if (ReferenceEquals(other, this)) { 792 | return true; 793 | } 794 | if (UnitTag != other.UnitTag) return false; 795 | return true; 796 | } 797 | 798 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 799 | public override int GetHashCode() { 800 | int hash = 1; 801 | if (UnitTag != 0UL) hash ^= UnitTag.GetHashCode(); 802 | return hash; 803 | } 804 | 805 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 806 | public override string ToString() { 807 | return pb::JsonFormatter.ToDiagnosticString(this); 808 | } 809 | 810 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 811 | public void WriteTo(pb::CodedOutputStream output) { 812 | if (UnitTag != 0UL) { 813 | output.WriteRawTag(8); 814 | output.WriteUInt64(UnitTag); 815 | } 816 | } 817 | 818 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 819 | public int CalculateSize() { 820 | int size = 0; 821 | if (UnitTag != 0UL) { 822 | size += 1 + pb::CodedOutputStream.ComputeUInt64Size(UnitTag); 823 | } 824 | return size; 825 | } 826 | 827 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 828 | public void MergeFrom(RequestQueryAvailableAbilities other) { 829 | if (other == null) { 830 | return; 831 | } 832 | if (other.UnitTag != 0UL) { 833 | UnitTag = other.UnitTag; 834 | } 835 | } 836 | 837 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 838 | public void MergeFrom(pb::CodedInputStream input) { 839 | uint tag; 840 | while ((tag = input.ReadTag()) != 0) { 841 | switch(tag) { 842 | default: 843 | input.SkipLastField(); 844 | break; 845 | case 8: { 846 | UnitTag = input.ReadUInt64(); 847 | break; 848 | } 849 | } 850 | } 851 | } 852 | 853 | } 854 | 855 | public sealed partial class ResponseQueryAvailableAbilities : pb::IMessage { 856 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResponseQueryAvailableAbilities()); 857 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 858 | public static pb::MessageParser Parser { get { return _parser; } } 859 | 860 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 861 | public static pbr::MessageDescriptor Descriptor { 862 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[5]; } 863 | } 864 | 865 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 866 | pbr::MessageDescriptor pb::IMessage.Descriptor { 867 | get { return Descriptor; } 868 | } 869 | 870 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 871 | public ResponseQueryAvailableAbilities() { 872 | OnConstruction(); 873 | } 874 | 875 | partial void OnConstruction(); 876 | 877 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 878 | public ResponseQueryAvailableAbilities(ResponseQueryAvailableAbilities other) : this() { 879 | abilities_ = other.abilities_.Clone(); 880 | unitTag_ = other.unitTag_; 881 | unitTypeId_ = other.unitTypeId_; 882 | } 883 | 884 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 885 | public ResponseQueryAvailableAbilities Clone() { 886 | return new ResponseQueryAvailableAbilities(this); 887 | } 888 | 889 | /// Field number for the "abilities" field. 890 | public const int AbilitiesFieldNumber = 1; 891 | private static readonly pb::FieldCodec _repeated_abilities_codec 892 | = pb::FieldCodec.ForMessage(10, global::SC2APIProtocol.AvailableAbility.Parser); 893 | private readonly pbc::RepeatedField abilities_ = new pbc::RepeatedField(); 894 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 895 | public pbc::RepeatedField Abilities { 896 | get { return abilities_; } 897 | } 898 | 899 | /// Field number for the "unit_tag" field. 900 | public const int UnitTagFieldNumber = 2; 901 | private ulong unitTag_; 902 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 903 | public ulong UnitTag { 904 | get { return unitTag_; } 905 | set { 906 | unitTag_ = value; 907 | } 908 | } 909 | 910 | /// Field number for the "unit_type_id" field. 911 | public const int UnitTypeIdFieldNumber = 3; 912 | private uint unitTypeId_; 913 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 914 | public uint UnitTypeId { 915 | get { return unitTypeId_; } 916 | set { 917 | unitTypeId_ = value; 918 | } 919 | } 920 | 921 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 922 | public override bool Equals(object other) { 923 | return Equals(other as ResponseQueryAvailableAbilities); 924 | } 925 | 926 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 927 | public bool Equals(ResponseQueryAvailableAbilities other) { 928 | if (ReferenceEquals(other, null)) { 929 | return false; 930 | } 931 | if (ReferenceEquals(other, this)) { 932 | return true; 933 | } 934 | if(!abilities_.Equals(other.abilities_)) return false; 935 | if (UnitTag != other.UnitTag) return false; 936 | if (UnitTypeId != other.UnitTypeId) return false; 937 | return true; 938 | } 939 | 940 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 941 | public override int GetHashCode() { 942 | int hash = 1; 943 | hash ^= abilities_.GetHashCode(); 944 | if (UnitTag != 0UL) hash ^= UnitTag.GetHashCode(); 945 | if (UnitTypeId != 0) hash ^= UnitTypeId.GetHashCode(); 946 | return hash; 947 | } 948 | 949 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 950 | public override string ToString() { 951 | return pb::JsonFormatter.ToDiagnosticString(this); 952 | } 953 | 954 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 955 | public void WriteTo(pb::CodedOutputStream output) { 956 | abilities_.WriteTo(output, _repeated_abilities_codec); 957 | if (UnitTag != 0UL) { 958 | output.WriteRawTag(16); 959 | output.WriteUInt64(UnitTag); 960 | } 961 | if (UnitTypeId != 0) { 962 | output.WriteRawTag(24); 963 | output.WriteUInt32(UnitTypeId); 964 | } 965 | } 966 | 967 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 968 | public int CalculateSize() { 969 | int size = 0; 970 | size += abilities_.CalculateSize(_repeated_abilities_codec); 971 | if (UnitTag != 0UL) { 972 | size += 1 + pb::CodedOutputStream.ComputeUInt64Size(UnitTag); 973 | } 974 | if (UnitTypeId != 0) { 975 | size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UnitTypeId); 976 | } 977 | return size; 978 | } 979 | 980 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 981 | public void MergeFrom(ResponseQueryAvailableAbilities other) { 982 | if (other == null) { 983 | return; 984 | } 985 | abilities_.Add(other.abilities_); 986 | if (other.UnitTag != 0UL) { 987 | UnitTag = other.UnitTag; 988 | } 989 | if (other.UnitTypeId != 0) { 990 | UnitTypeId = other.UnitTypeId; 991 | } 992 | } 993 | 994 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 995 | public void MergeFrom(pb::CodedInputStream input) { 996 | uint tag; 997 | while ((tag = input.ReadTag()) != 0) { 998 | switch(tag) { 999 | default: 1000 | input.SkipLastField(); 1001 | break; 1002 | case 10: { 1003 | abilities_.AddEntriesFrom(input, _repeated_abilities_codec); 1004 | break; 1005 | } 1006 | case 16: { 1007 | UnitTag = input.ReadUInt64(); 1008 | break; 1009 | } 1010 | case 24: { 1011 | UnitTypeId = input.ReadUInt32(); 1012 | break; 1013 | } 1014 | } 1015 | } 1016 | } 1017 | 1018 | } 1019 | 1020 | /// 1021 | ///-------------------------------------------------------------------------------------------------- 1022 | /// 1023 | public sealed partial class RequestQueryBuildingPlacement : pb::IMessage { 1024 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RequestQueryBuildingPlacement()); 1025 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1026 | public static pb::MessageParser Parser { get { return _parser; } } 1027 | 1028 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1029 | public static pbr::MessageDescriptor Descriptor { 1030 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[6]; } 1031 | } 1032 | 1033 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1034 | pbr::MessageDescriptor pb::IMessage.Descriptor { 1035 | get { return Descriptor; } 1036 | } 1037 | 1038 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1039 | public RequestQueryBuildingPlacement() { 1040 | OnConstruction(); 1041 | } 1042 | 1043 | partial void OnConstruction(); 1044 | 1045 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1046 | public RequestQueryBuildingPlacement(RequestQueryBuildingPlacement other) : this() { 1047 | abilityId_ = other.abilityId_; 1048 | TargetPos = other.targetPos_ != null ? other.TargetPos.Clone() : null; 1049 | placingUnitTag_ = other.placingUnitTag_; 1050 | } 1051 | 1052 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1053 | public RequestQueryBuildingPlacement Clone() { 1054 | return new RequestQueryBuildingPlacement(this); 1055 | } 1056 | 1057 | /// Field number for the "ability_id" field. 1058 | public const int AbilityIdFieldNumber = 1; 1059 | private int abilityId_; 1060 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1061 | public int AbilityId { 1062 | get { return abilityId_; } 1063 | set { 1064 | abilityId_ = value; 1065 | } 1066 | } 1067 | 1068 | /// Field number for the "target_pos" field. 1069 | public const int TargetPosFieldNumber = 2; 1070 | private global::SC2APIProtocol.Point2D targetPos_; 1071 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1072 | public global::SC2APIProtocol.Point2D TargetPos { 1073 | get { return targetPos_; } 1074 | set { 1075 | targetPos_ = value; 1076 | } 1077 | } 1078 | 1079 | /// Field number for the "placing_unit_tag" field. 1080 | public const int PlacingUnitTagFieldNumber = 3; 1081 | private ulong placingUnitTag_; 1082 | /// 1083 | /// Not required 1084 | /// 1085 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1086 | public ulong PlacingUnitTag { 1087 | get { return placingUnitTag_; } 1088 | set { 1089 | placingUnitTag_ = value; 1090 | } 1091 | } 1092 | 1093 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1094 | public override bool Equals(object other) { 1095 | return Equals(other as RequestQueryBuildingPlacement); 1096 | } 1097 | 1098 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1099 | public bool Equals(RequestQueryBuildingPlacement other) { 1100 | if (ReferenceEquals(other, null)) { 1101 | return false; 1102 | } 1103 | if (ReferenceEquals(other, this)) { 1104 | return true; 1105 | } 1106 | if (AbilityId != other.AbilityId) return false; 1107 | if (!object.Equals(TargetPos, other.TargetPos)) return false; 1108 | if (PlacingUnitTag != other.PlacingUnitTag) return false; 1109 | return true; 1110 | } 1111 | 1112 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1113 | public override int GetHashCode() { 1114 | int hash = 1; 1115 | if (AbilityId != 0) hash ^= AbilityId.GetHashCode(); 1116 | if (targetPos_ != null) hash ^= TargetPos.GetHashCode(); 1117 | if (PlacingUnitTag != 0UL) hash ^= PlacingUnitTag.GetHashCode(); 1118 | return hash; 1119 | } 1120 | 1121 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1122 | public override string ToString() { 1123 | return pb::JsonFormatter.ToDiagnosticString(this); 1124 | } 1125 | 1126 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1127 | public void WriteTo(pb::CodedOutputStream output) { 1128 | if (AbilityId != 0) { 1129 | output.WriteRawTag(8); 1130 | output.WriteInt32(AbilityId); 1131 | } 1132 | if (targetPos_ != null) { 1133 | output.WriteRawTag(18); 1134 | output.WriteMessage(TargetPos); 1135 | } 1136 | if (PlacingUnitTag != 0UL) { 1137 | output.WriteRawTag(24); 1138 | output.WriteUInt64(PlacingUnitTag); 1139 | } 1140 | } 1141 | 1142 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1143 | public int CalculateSize() { 1144 | int size = 0; 1145 | if (AbilityId != 0) { 1146 | size += 1 + pb::CodedOutputStream.ComputeInt32Size(AbilityId); 1147 | } 1148 | if (targetPos_ != null) { 1149 | size += 1 + pb::CodedOutputStream.ComputeMessageSize(TargetPos); 1150 | } 1151 | if (PlacingUnitTag != 0UL) { 1152 | size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PlacingUnitTag); 1153 | } 1154 | return size; 1155 | } 1156 | 1157 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1158 | public void MergeFrom(RequestQueryBuildingPlacement other) { 1159 | if (other == null) { 1160 | return; 1161 | } 1162 | if (other.AbilityId != 0) { 1163 | AbilityId = other.AbilityId; 1164 | } 1165 | if (other.targetPos_ != null) { 1166 | if (targetPos_ == null) { 1167 | targetPos_ = new global::SC2APIProtocol.Point2D(); 1168 | } 1169 | TargetPos.MergeFrom(other.TargetPos); 1170 | } 1171 | if (other.PlacingUnitTag != 0UL) { 1172 | PlacingUnitTag = other.PlacingUnitTag; 1173 | } 1174 | } 1175 | 1176 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1177 | public void MergeFrom(pb::CodedInputStream input) { 1178 | uint tag; 1179 | while ((tag = input.ReadTag()) != 0) { 1180 | switch(tag) { 1181 | default: 1182 | input.SkipLastField(); 1183 | break; 1184 | case 8: { 1185 | AbilityId = input.ReadInt32(); 1186 | break; 1187 | } 1188 | case 18: { 1189 | if (targetPos_ == null) { 1190 | targetPos_ = new global::SC2APIProtocol.Point2D(); 1191 | } 1192 | input.ReadMessage(targetPos_); 1193 | break; 1194 | } 1195 | case 24: { 1196 | PlacingUnitTag = input.ReadUInt64(); 1197 | break; 1198 | } 1199 | } 1200 | } 1201 | } 1202 | 1203 | } 1204 | 1205 | public sealed partial class ResponseQueryBuildingPlacement : pb::IMessage { 1206 | private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResponseQueryBuildingPlacement()); 1207 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1208 | public static pb::MessageParser Parser { get { return _parser; } } 1209 | 1210 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1211 | public static pbr::MessageDescriptor Descriptor { 1212 | get { return global::SC2APIProtocol.QueryReflection.Descriptor.MessageTypes[7]; } 1213 | } 1214 | 1215 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1216 | pbr::MessageDescriptor pb::IMessage.Descriptor { 1217 | get { return Descriptor; } 1218 | } 1219 | 1220 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1221 | public ResponseQueryBuildingPlacement() { 1222 | OnConstruction(); 1223 | } 1224 | 1225 | partial void OnConstruction(); 1226 | 1227 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1228 | public ResponseQueryBuildingPlacement(ResponseQueryBuildingPlacement other) : this() { 1229 | result_ = other.result_; 1230 | } 1231 | 1232 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1233 | public ResponseQueryBuildingPlacement Clone() { 1234 | return new ResponseQueryBuildingPlacement(this); 1235 | } 1236 | 1237 | /// Field number for the "result" field. 1238 | public const int ResultFieldNumber = 1; 1239 | private global::SC2APIProtocol.ActionResult result_ = 0; 1240 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1241 | public global::SC2APIProtocol.ActionResult Result { 1242 | get { return result_; } 1243 | set { 1244 | result_ = value; 1245 | } 1246 | } 1247 | 1248 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1249 | public override bool Equals(object other) { 1250 | return Equals(other as ResponseQueryBuildingPlacement); 1251 | } 1252 | 1253 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1254 | public bool Equals(ResponseQueryBuildingPlacement other) { 1255 | if (ReferenceEquals(other, null)) { 1256 | return false; 1257 | } 1258 | if (ReferenceEquals(other, this)) { 1259 | return true; 1260 | } 1261 | if (Result != other.Result) return false; 1262 | return true; 1263 | } 1264 | 1265 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1266 | public override int GetHashCode() { 1267 | int hash = 1; 1268 | if (Result != 0) hash ^= Result.GetHashCode(); 1269 | return hash; 1270 | } 1271 | 1272 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1273 | public override string ToString() { 1274 | return pb::JsonFormatter.ToDiagnosticString(this); 1275 | } 1276 | 1277 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1278 | public void WriteTo(pb::CodedOutputStream output) { 1279 | if (Result != 0) { 1280 | output.WriteRawTag(8); 1281 | output.WriteEnum((int) Result); 1282 | } 1283 | } 1284 | 1285 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1286 | public int CalculateSize() { 1287 | int size = 0; 1288 | if (Result != 0) { 1289 | size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Result); 1290 | } 1291 | return size; 1292 | } 1293 | 1294 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1295 | public void MergeFrom(ResponseQueryBuildingPlacement other) { 1296 | if (other == null) { 1297 | return; 1298 | } 1299 | if (other.Result != 0) { 1300 | Result = other.Result; 1301 | } 1302 | } 1303 | 1304 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] 1305 | public void MergeFrom(pb::CodedInputStream input) { 1306 | uint tag; 1307 | while ((tag = input.ReadTag()) != 0) { 1308 | switch(tag) { 1309 | default: 1310 | input.SkipLastField(); 1311 | break; 1312 | case 8: { 1313 | result_ = (global::SC2APIProtocol.ActionResult) input.ReadEnum(); 1314 | break; 1315 | } 1316 | } 1317 | } 1318 | } 1319 | 1320 | } 1321 | 1322 | #endregion 1323 | 1324 | } 1325 | 1326 | #endregion Designer generated code 1327 | -------------------------------------------------------------------------------- /SC2APIProtocol/SC2APIProtocol.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Library 5 | netcoreapp2.1;net461 6 | 7 | 8 | 9 | 10 | 11 | false 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ladderbots.json: -------------------------------------------------------------------------------- 1 | { 2 | "Bots": { 3 | "": { 4 | "Race": "", 5 | "Type": "DotNetCore", 6 | "RootPath": "./", 7 | "FileName": ".dll", 8 | "Debug": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/Google.Protobuf.3.5.1/Google.Protobuf.3.5.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonPrins/ExampleBot/053d5fa79a387153f96bd21928d8b94224813da8/packages/Google.Protobuf.3.5.1/Google.Protobuf.3.5.1.nupkg -------------------------------------------------------------------------------- /packages/Google.Protobuf.3.5.1/lib/net45/Google.Protobuf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonPrins/ExampleBot/053d5fa79a387153f96bd21928d8b94224813da8/packages/Google.Protobuf.3.5.1/lib/net45/Google.Protobuf.dll -------------------------------------------------------------------------------- /packages/Google.Protobuf.3.5.1/lib/netstandard1.0/Google.Protobuf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonPrins/ExampleBot/053d5fa79a387153f96bd21928d8b94224813da8/packages/Google.Protobuf.3.5.1/lib/netstandard1.0/Google.Protobuf.dll --------------------------------------------------------------------------------