From f5cbbaf892df078364e70dc26e575abf2291a7d7 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 8 Feb 2017 11:58:16 -0500 Subject: [PATCH] Fix Shiftorium init bugs. --- ShiftOS.WinForms/FakeSetupScreen.cs | 11 ++- ShiftOS.WinForms/WinformsDesktop.cs | 136 +++++++++++++++------------- ShiftOS_TheReturn/Shiftorium.cs | 19 +++- 3 files changed, 94 insertions(+), 72 deletions(-) diff --git a/ShiftOS.WinForms/FakeSetupScreen.cs b/ShiftOS.WinForms/FakeSetupScreen.cs index dd93a55..eb3a186 100644 --- a/ShiftOS.WinForms/FakeSetupScreen.cs +++ b/ShiftOS.WinForms/FakeSetupScreen.cs @@ -27,10 +27,13 @@ namespace ShiftOS.WinForms SetupUI(); ServerManager.MessageReceived += (msg) => { - if (msg.Name == "mud_notfound") - this.Invoke(new Action(() => { MUDUserFound?.Invoke(false); })); - else if (msg.Name == "mud_found") - this.Invoke(new Action(() => { MUDUserFound?.Invoke(true); })); + if (this.Visible == true) + { + if (msg.Name == "mud_notfound") + this.Invoke(new Action(() => { MUDUserFound?.Invoke(false); })); + else if (msg.Name == "mud_found") + this.Invoke(new Action(() => { MUDUserFound?.Invoke(true); })); + } }; } diff --git a/ShiftOS.WinForms/WinformsDesktop.cs b/ShiftOS.WinForms/WinformsDesktop.cs index 63cdcfa..93e290d 100644 --- a/ShiftOS.WinForms/WinformsDesktop.cs +++ b/ShiftOS.WinForms/WinformsDesktop.cs @@ -128,67 +128,70 @@ namespace ShiftOS.WinForms public void PopulatePanelButtons() { panelbuttonholder.Controls.Clear(); - if (Shiftorium.UpgradeInstalled("wm_panel_buttons")) + if (Shiftorium.IsInitiated == true) { - foreach (WindowBorder form in Engine.AppearanceManager.OpenForms) + if (Shiftorium.UpgradeInstalled("wm_panel_buttons")) { - if (form != null) + foreach (WindowBorder form in Engine.AppearanceManager.OpenForms) { - if (form.Visible == true) + if (form != null) { - EventHandler onClick = (o, a) => + if (form.Visible == true) { - if(form == focused) + EventHandler onClick = (o, a) => { - if (form.IsMinimized) + if (form == focused) { - RestoreWindow(form); + if (form.IsMinimized) + { + RestoreWindow(form); + } + else + { + MinimizeWindow(form); + } } else { - MinimizeWindow(form); + form.BringToFront(); + focused = form; } - } - else - { - form.BringToFront(); - focused = form; - } - }; + }; - var pnlbtn = new Panel(); - pnlbtn.Margin = new Padding(2, LoadedSkin.PanelButtonFromTop, 0, 0); - pnlbtn.BackColor = LoadedSkin.PanelButtonColor; - pnlbtn.BackgroundImage = GetImage("panelbutton"); - pnlbtn.BackgroundImageLayout = GetImageLayout("panelbutton"); + var pnlbtn = new Panel(); + pnlbtn.Margin = new Padding(2, LoadedSkin.PanelButtonFromTop, 0, 0); + pnlbtn.BackColor = LoadedSkin.PanelButtonColor; + pnlbtn.BackgroundImage = GetImage("panelbutton"); + pnlbtn.BackgroundImageLayout = GetImageLayout("panelbutton"); - var pnlbtntext = new Label(); - pnlbtntext.Text = NameChangerBackend.GetName(form.ParentWindow); - pnlbtntext.AutoSize = true; - pnlbtntext.Location = LoadedSkin.PanelButtonFromLeft; - pnlbtntext.ForeColor = LoadedSkin.PanelButtonTextColor; - pnlbtntext.Font = LoadedSkin.PanelButtonFont; - pnlbtntext.BackColor = Color.Transparent; - - pnlbtn.BackColor = LoadedSkin.PanelButtonColor; - if (pnlbtn.BackgroundImage != null) - { + var pnlbtntext = new Label(); + pnlbtntext.Text = NameChangerBackend.GetName(form.ParentWindow); + pnlbtntext.AutoSize = true; + pnlbtntext.Location = LoadedSkin.PanelButtonFromLeft; + pnlbtntext.ForeColor = LoadedSkin.PanelButtonTextColor; + pnlbtntext.Font = LoadedSkin.PanelButtonFont; pnlbtntext.BackColor = Color.Transparent; - } - pnlbtn.Size = LoadedSkin.PanelButtonSize; - pnlbtn.Tag = "keepbg"; - pnlbtntext.Tag = "keepbg"; - pnlbtn.Controls.Add(pnlbtntext); - this.panelbuttonholder.Controls.Add(pnlbtn); - pnlbtn.Show(); - pnlbtntext.Show(); - if (Shiftorium.UpgradeInstalled("useful_panel_buttons")) - { - pnlbtn.Click += onClick; - pnlbtntext.Click += onClick; + pnlbtn.BackColor = LoadedSkin.PanelButtonColor; + if (pnlbtn.BackgroundImage != null) + { + pnlbtntext.BackColor = Color.Transparent; + } + pnlbtn.Size = LoadedSkin.PanelButtonSize; + pnlbtn.Tag = "keepbg"; + pnlbtntext.Tag = "keepbg"; + pnlbtn.Controls.Add(pnlbtntext); + this.panelbuttonholder.Controls.Add(pnlbtn); + pnlbtn.Show(); + pnlbtntext.Show(); + + if (Shiftorium.UpgradeInstalled("useful_panel_buttons")) + { + pnlbtn.Click += onClick; + pnlbtntext.Click += onClick; + } + SetCursors(pnlbtn); } - SetCursors(pnlbtn); } } } @@ -210,7 +213,7 @@ namespace ShiftOS.WinForms //upgrades - if (SaveSystem.CurrentSave != null) + if (Shiftorium.IsInitiated == true) { desktoppanel.Visible = Shiftorium.UpgradeInstalled("desktop"); lbtime.Visible = Shiftorium.UpgradeInstalled("desktop_clock_widget"); @@ -327,34 +330,41 @@ namespace ShiftOS.WinForms foreach(var kv in sortedItems) { - if (Shiftorium.UpgradeInstalled("app_launcher_categories")) + if (Shiftorium.IsInitiated == true) { - var cat = GetALCategoryWithName(kv.Key); - foreach(var subItem in kv.Value) + if (Shiftorium.UpgradeInstalled("app_launcher_categories")) { - cat.DropDownItems.Add(subItem); + var cat = GetALCategoryWithName(kv.Key); + foreach (var subItem in kv.Value) + { + cat.DropDownItems.Add(subItem); + } } - } - else - { - foreach(var subItem in kv.Value) + + else { - apps.DropDownItems.Add(subItem); + foreach (var subItem in kv.Value) + { + apps.DropDownItems.Add(subItem); + } } } } - if (Shiftorium.UpgradeInstalled("al_shutdown")) + if (Shiftorium.IsInitiated == true) { - apps.DropDownItems.Add(new ToolStripSeparator()); - var item = new ToolStripMenuItem(); - item.Text = Localization.Parse("{SHUTDOWN}"); - item.Click += (o, a) => + if (Shiftorium.UpgradeInstalled("al_shutdown")) { - TerminalBackend.InvokeCommand("sos.shutdown"); - }; - apps.DropDownItems.Add(item); + apps.DropDownItems.Add(new ToolStripSeparator()); + var item = new ToolStripMenuItem(); + item.Text = Localization.Parse("{SHUTDOWN}"); + item.Click += (o, a) => + { + TerminalBackend.InvokeCommand("sos.shutdown"); + }; + apps.DropDownItems.Add(item); + } } } diff --git a/ShiftOS_TheReturn/Shiftorium.cs b/ShiftOS_TheReturn/Shiftorium.cs index 06a189f..4e31427 100644 --- a/ShiftOS_TheReturn/Shiftorium.cs +++ b/ShiftOS_TheReturn/Shiftorium.cs @@ -191,19 +191,18 @@ namespace ShiftOS.Engine { if (SaveSystem.CurrentSave != null) { - if (SaveSystem.CurrentSave.Upgrades == null) + if (!IsInitiated) Init(); } try { return SaveSystem.CurrentSave.Upgrades[id]; } - catch (Exception ex) + catch { - if(LogOrphanedUpgrades == true) - Console.WriteLine($"WHOA, Developers! Upgrade ID '{id}' is unaccounted for in the Shiftorium.txt resource!"); - return false; + throw new ShiftoriumUpgradeLookupException(id); } + } //LEAVE THIS AS FALSE. The game will set it when the save is loaded. @@ -238,6 +237,16 @@ namespace ShiftOS.Engine List GetDefaults(); } + public class ShiftoriumUpgradeLookupException : Exception + { + public ShiftoriumUpgradeLookupException(string id) : base("A shiftorium upgrade of ID \"" + id + "\" was not found in the system.") + { + ID = id; + } + + public string ID { get; private set; } + } + public class ShiftoriumUpgrade { public string Name { get; set; }