From 2612721346bc59807c4963d5e8c2f936852aa48b Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 2 Apr 2017 18:29:42 -0400 Subject: [PATCH] Reconnect to MUD after unexpected loss --- ShiftOS.WinForms/WinformsWindowManager.cs | 12 ++++++++++-- ShiftOS_TheReturn/ServerManager.cs | 20 +++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/ShiftOS.WinForms/WinformsWindowManager.cs b/ShiftOS.WinForms/WinformsWindowManager.cs index 494c572..26438bf 100644 --- a/ShiftOS.WinForms/WinformsWindowManager.cs +++ b/ShiftOS.WinForms/WinformsWindowManager.cs @@ -40,7 +40,7 @@ namespace ShiftOS.WinForms { get { - return Desktop.Size.Height - ((Shiftorium.UpgradeInstalled("desktop_panel") == true) ? SkinEngine.LoadedSkin.DesktopPanelHeight : 0); + return Desktop.Size.Height - ((Shiftorium.UpgradeInstalled("desktop") == true) ? SkinEngine.LoadedSkin.DesktopPanelHeight : 0); } } @@ -48,7 +48,7 @@ namespace ShiftOS.WinForms { get { - if (!Shiftorium.UpgradeInstalled("desktop_panel")) + if (!Shiftorium.UpgradeInstalled("desktop")) return 0; return ((SkinEngine.LoadedSkin.DesktopPanelPosition == 0) ? SkinEngine.LoadedSkin.DesktopPanelHeight : 0); } @@ -64,6 +64,14 @@ namespace ShiftOS.WinForms Desktop.InvokeOnWorkerThread(act); } + public WinformsWindowManager() + { + Shiftorium.Installed += () => + { + SetupWindows(); + }; + } + public override void Maximize(IWindowBorder form) { try diff --git a/ShiftOS_TheReturn/ServerManager.cs b/ShiftOS_TheReturn/ServerManager.cs index 31b3129..4fce247 100644 --- a/ShiftOS_TheReturn/ServerManager.cs +++ b/ShiftOS_TheReturn/ServerManager.cs @@ -51,9 +51,11 @@ namespace ShiftOS.Engine public static Guid thisGuid { get; private set; } private static NetObjectClient client { get; set; } + private static bool UserDisconnect = false; public static void Disconnect() { + UserDisconnect = true; if (client != null) { client.Disconnect(); @@ -117,7 +119,23 @@ namespace ShiftOS.Engine public static void Initiate(string mud_address, int port) { client = new NetObjectClient(); - + client.OnDisconnected += (o, a) => + { + if (!UserDisconnect) + { + TerminalBackend.PrefixEnabled = true; + ConsoleEx.ForegroundColor = ConsoleColor.Red; + ConsoleEx.Bold = true; + Console.Write($@"Disconnected from MUD: "); + ConsoleEx.Bold = false; + ConsoleEx.Italic = true; + ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow; + Console.WriteLine("You have been disconnected from the multi-user domain for an unknown reason. Your save data is preserved within the kernel and you will be reconnected shortly."); + TerminalBackend.PrefixEnabled = true; + TerminalBackend.PrintPrompt(); + Initiate(mud_address, port); + } + }; client.OnReceived += (o, a) => { var msg = a.Data.Object as ServerMessage;