diff options
Diffstat (limited to 'Impostor-dev/src/Impostor.Patcher/Impostor.Patcher.Cli/Program.cs')
-rw-r--r-- | Impostor-dev/src/Impostor.Patcher/Impostor.Patcher.Cli/Program.cs | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Impostor-dev/src/Impostor.Patcher/Impostor.Patcher.Cli/Program.cs b/Impostor-dev/src/Impostor.Patcher/Impostor.Patcher.Cli/Program.cs new file mode 100644 index 0000000..76653a1 --- /dev/null +++ b/Impostor-dev/src/Impostor.Patcher/Impostor.Patcher.Cli/Program.cs @@ -0,0 +1,88 @@ +using System; +using System.CommandLine; +using System.CommandLine.Invocation; +using System.Threading.Tasks; +using Impostor.Patcher.Shared; +using Impostor.Patcher.Shared.Events; + +namespace Impostor.Patcher.Cli +{ + internal static class Program + { + private static readonly AmongUsModifier Modifier = new AmongUsModifier(); + + internal static Task<int> Main(string[] args) + { + var rootCommand = new RootCommand + { + new Option<string>( + "--address", + "IP Address of the server, will prompt if not specified" + ), + new Option<string>( + "--name", + () => AmongUsModifier.DefaultRegionName, + "Name for server region" + ) + }; + + rootCommand.Handler = CommandHandler.Create<string, string>((address, name) => + { + Modifier.RegionName = name; + Modifier.Error += ModifierOnError; + Modifier.Saved += ModifierOnSaved; + + Console.WriteLine("Welcome to Impostor"); + + if (Modifier.TryLoadRegionInfo(out var regionInfo)) + { + Console.WriteLine($"Currently selected region: {regionInfo.Name} ({regionInfo.Ping}, {regionInfo.Servers.Count} server(s))"); + } + + if (address != null) + { + return Modifier.SaveIpAsync(address); + } + + return PromptAsync(); + }); + + return rootCommand.InvokeAsync(args); + } + + private static void ModifierOnSaved(object sender, SavedEventArgs e) + { + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("The IP Address was saved, please (re)start Among Us."); + Console.ResetColor(); + } + + private static void WriteError(string message) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(message); + Console.ResetColor(); + } + + private static void ModifierOnError(object sender, ErrorEventArgs e) + { + WriteError(e.Message); + } + + private static async Task PromptAsync() + { + Console.WriteLine("Please enter in the IP Address of the server you would like to use for Among Us"); + Console.WriteLine("If you want to stop playing on the server, simply select another region"); + + while (true) + { + Console.Write("> "); + + if (await Modifier.SaveIpAsync(Console.ReadLine())) + { + return; + } + } + } + } +} |