diff --git a/TBConsole/TBConsole.csproj b/TBConsole/TBConsole.csproj index e809eb3..4fd66f2 100644 --- a/TBConsole/TBConsole.csproj +++ b/TBConsole/TBConsole.csproj @@ -6,6 +6,7 @@ Exe --> netstandard2.0 + NorbiPeti diff --git a/TBConsole/TBConsoleMod.cs b/TBConsole/TBConsoleMod.cs index a301490..0b51db6 100644 --- a/TBConsole/TBConsoleMod.cs +++ b/TBConsole/TBConsoleMod.cs @@ -4,7 +4,9 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; using IllusionPlugin; +using TechbloxModdingAPI.App; using TechbloxModdingAPI.Commands; +using TechbloxModdingAPI.Utility; using UnityEngine; namespace TBConsole @@ -19,8 +21,19 @@ namespace TBConsole public override void OnApplicationStart() { TechbloxModdingAPI.Main.Init(); - _server = new WebServer(CommandReceived, GetCommandList); - _server.Start(); + Game.Enter += async (sender, e) => + { + while (_server?.Running ?? false) + { + Logging.LogWarning("A previous web server is still running"); + _server?.Stop(); + await Task.Delay(500); + } + + _server = new WebServer(CommandReceived, GetCommandList); + _server.Start(); + }; + Game.Exit += (sender, e) => _server?.Stop(); } private string CommandReceived(string command) @@ -42,8 +55,6 @@ namespace TBConsole } } - //Console.WriteLine("Command parts: " + cmdparts.Aggregate((a, b) => a + ", " + b)); - switch (cmdparts.Count) { case 1: @@ -74,7 +85,7 @@ namespace TBConsole public override void OnApplicationQuit() { - _server.Stop(); + _server?.Stop(); TechbloxModdingAPI.Main.Shutdown(); } diff --git a/TBConsole/WebServer.cs b/TBConsole/WebServer.cs index 2d33061..6366725 100644 --- a/TBConsole/WebServer.cs +++ b/TBConsole/WebServer.cs @@ -7,7 +7,7 @@ namespace TBConsole { public class WebServer { - private bool _running; + public bool Running { get; private set; } private readonly HttpListener _listener = new HttpListener(); private readonly Func _commandReceiver; private readonly Func _commandsListSender; @@ -20,13 +20,13 @@ namespace TBConsole public void Start() { - _running = true; + Running = true; KeepListening(); } public void Stop() { - _running = false; + Running = false; _listener.Stop(); } @@ -34,7 +34,7 @@ namespace TBConsole { _listener.Prefixes.Add("http://localhost:8019/"); _listener.Start(); - while (_running) + while (Running) { try {