From 71521f610b49e0c2a4bd6646f9d2ba2bf6bfc12a Mon Sep 17 00:00:00 2001 From: Merijn Hendriks Date: Tue, 28 Dec 2021 21:29:03 +0100 Subject: [PATCH] Migrate launcher to C# --- Haru.sln | 22 ++++++++++++++++++++++ Launcher/Launcher.csproj | 11 +++++++++++ Launcher/Program.cs | 23 +++++++++++++++++++++++ Launcher/icon.ico | Bin 0 -> 72566 bytes 4 files changed, 56 insertions(+) create mode 100644 Haru.sln create mode 100644 Launcher/Launcher.csproj create mode 100644 Launcher/Program.cs create mode 100644 Launcher/icon.ico diff --git a/Haru.sln b/Haru.sln new file mode 100644 index 0000000..04452dd --- /dev/null +++ b/Haru.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Launcher", "Launcher\Launcher.csproj", "{748D03B7-017B-47D7-81B3-BAD2E6AD4C11}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {748D03B7-017B-47D7-81B3-BAD2E6AD4C11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {748D03B7-017B-47D7-81B3-BAD2E6AD4C11}.Debug|Any CPU.Build.0 = Debug|Any CPU + {748D03B7-017B-47D7-81B3-BAD2E6AD4C11}.Release|Any CPU.ActiveCfg = Release|Any CPU + {748D03B7-017B-47D7-81B3-BAD2E6AD4C11}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Launcher/Launcher.csproj b/Launcher/Launcher.csproj new file mode 100644 index 0000000..94d9565 --- /dev/null +++ b/Launcher/Launcher.csproj @@ -0,0 +1,11 @@ + + + + Exe + net6.0 + disable + disable + icon.ico + + + diff --git a/Launcher/Program.cs b/Launcher/Program.cs new file mode 100644 index 0000000..82882f4 --- /dev/null +++ b/Launcher/Program.cs @@ -0,0 +1,23 @@ +using System; +using System.Diagnostics; + +namespace Haru.Launcher +{ + class Program + { + static void Main(string[] args) + { + var sessionId = "haru-singleplayer"; + var host = "http://localhost:8000"; + var exe = "EscapeFromTarkov.exe"; + var process = new ProcessStartInfo(exe) + { + Arguments = "-force-gfx-jobs native -token=" + sessionId + "-config={\"backendurl\":\"" + host + "\",\"version\":\"live\"}", + UseShellExecute = false + }; + + Process.Start(process); + Environment.Exit(0); + } + } +} \ No newline at end of file diff --git a/Launcher/icon.ico b/Launcher/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e3e032f0fff84b05c51e6f61547d997c4e9fbdc6 GIT binary patch literal 72566 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