From 83c92a486eb5cb16dcda6e3788f8c2a29cafcb68 Mon Sep 17 00:00:00 2001 From: Bitl Date: Fri, 22 Oct 2021 14:06:40 -0700 Subject: [PATCH] partcolors enhancements --- .../CharacterCustomizationShared.cs | 7 +-- .../CharCustom/ContentProviders.cs | 9 +-- .../CharacterCustomizationCompact.Designer.cs | 4 +- .../Compact/CharacterCustomizationCompact.cs | 1 + ...CharacterCustomizationExtended.Designer.cs | 11 ++-- .../CharacterCustomizationExtended.cs | 1 + .../CharacterCustomizationExtended.resx | 2 +- Novetus/NovetusCore/Classes/PartColors.cs | 61 ++++++++----------- .../StorageAndFunctions/GlobalFuncs.cs | 59 ++++++++++++++++-- .../Compact/LauncherFormCompact.cs | 1 + .../Extended/LauncherFormExtended.cs | 1 + .../Forms/SDK/ItemCreationSDK.cs | 14 ----- .../Forms/SDK/ItemCreationSDKColorMenu.cs | 12 +--- .../NovetusLauncherEntryPoint.cs | 1 + Novetus/NovetusURI/NovetusURI.cs | 1 + 15 files changed, 101 insertions(+), 84 deletions(-) diff --git a/Novetus/NovetusCore/CharCustom/CharacterCustomizationShared.cs b/Novetus/NovetusCore/CharCustom/CharacterCustomizationShared.cs index bb74024..aff6b99 100644 --- a/Novetus/NovetusCore/CharCustom/CharacterCustomizationShared.cs +++ b/Novetus/NovetusCore/CharCustom/CharacterCustomizationShared.cs @@ -42,7 +42,7 @@ class CharacterCustomizationShared #endregion #region Form Event Functions - public async void InitForm() + public void InitForm() { if (GlobalFuncs.HasColorsChanged()) { @@ -112,10 +112,7 @@ class CharacterCustomizationShared } int imgsize = (FormStyle == Settings.Style.Extended) ? 28 : 18; - string oldTitle = Parent.Text; - Parent.Text = "Please Wait..."; - await PartColorLoader.AddPartColorsToListView(GlobalVars.PartColorList, ColorView, imgsize); - Parent.Text = oldTitle; + PartColorLoader.AddPartColorsToListView(GlobalVars.PartColorList, ColorView, imgsize); //body SelectedPartLabel.Text = SelectedPart; diff --git a/Novetus/NovetusCore/CharCustom/ContentProviders.cs b/Novetus/NovetusCore/CharCustom/ContentProviders.cs index 533a394..5d0488f 100644 --- a/Novetus/NovetusCore/CharCustom/ContentProviders.cs +++ b/Novetus/NovetusCore/CharCustom/ContentProviders.cs @@ -27,11 +27,12 @@ public class OnlineClothing if (File.Exists(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ContentProviderXMLName)) { XmlSerializer serializer = new XmlSerializer(typeof(ContentProviders)); - - FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ContentProviderXMLName, FileMode.Open); ContentProviders providers; - providers = (ContentProviders)serializer.Deserialize(fs); - fs.Close(); + + using (FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ContentProviderXMLName, FileMode.Open)) + { + providers = (ContentProviders)serializer.Deserialize(fs); + } return providers.Providers; } diff --git a/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.Designer.cs b/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.Designer.cs index 241edd2..43c31d1 100644 --- a/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.Designer.cs +++ b/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.Designer.cs @@ -237,15 +237,15 @@ partial class CharacterCustomizationCompact this.label30.Name = "label30"; this.label30.Size = new System.Drawing.Size(271, 15); this.label30.TabIndex = 4; - this.label30.Text = "Incompatible colors will show up as grey in-game. "; + this.label30.Text = "Some colors may show up as grey in-game."; this.label30.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // listView1 // this.listView1.HideSelection = false; this.listView1.Location = new System.Drawing.Point(6, 15); - this.listView1.Name = "listView1"; this.listView1.MultiSelect = false; + this.listView1.Name = "listView1"; this.listView1.Size = new System.Drawing.Size(271, 115); this.listView1.TabIndex = 0; this.listView1.UseCompatibleStateImageBehavior = false; diff --git a/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.cs b/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.cs index eac872d..4898031 100644 --- a/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.cs +++ b/Novetus/NovetusCore/CharCustom/Forms/Compact/CharacterCustomizationCompact.cs @@ -24,6 +24,7 @@ public partial class CharacterCustomizationCompact : Form void CharacterCustomizationLoad(object sender, EventArgs e) { characterCustomizationForm.InitForm(); + CenterToScreen(); } void tabControl1_SelectedIndexChanged(object sender, EventArgs e) diff --git a/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.Designer.cs b/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.Designer.cs index 4b5ecbb..a60a93c 100644 --- a/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.Designer.cs +++ b/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.Designer.cs @@ -398,13 +398,12 @@ partial class CharacterCustomizationExtended // this.label30.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label30.ForeColor = System.Drawing.Color.Red; - this.label30.Location = new System.Drawing.Point(6, 156); + this.label30.Location = new System.Drawing.Point(6, 177); this.label30.Name = "label30"; - this.label30.Size = new System.Drawing.Size(329, 36); + this.label30.Size = new System.Drawing.Size(329, 15); this.label30.TabIndex = 5; - this.label30.Text = "Some colors may be incompatible with earlier clients. Incompatible colors will sh" + - "ow up as grey in-game. "; - this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label30.Text = "Some colors may show up as grey in-game."; + this.label30.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // listView1 // @@ -412,7 +411,7 @@ partial class CharacterCustomizationExtended this.listView1.Location = new System.Drawing.Point(6, 16); this.listView1.MultiSelect = false; this.listView1.Name = "listView1"; - this.listView1.Size = new System.Drawing.Size(329, 137); + this.listView1.Size = new System.Drawing.Size(329, 161); this.listView1.TabIndex = 0; this.listView1.UseCompatibleStateImageBehavior = false; this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); diff --git a/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.cs b/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.cs index 5be5f99..f0463ae 100644 --- a/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.cs +++ b/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.cs @@ -26,6 +26,7 @@ public partial class CharacterCustomizationExtended : Form void CharacterCustomizationLoad(object sender, EventArgs e) { characterCustomizationForm.InitForm(); + CenterToScreen(); } void tabControl1_SelectedIndexChanged(object sender, EventArgs e) diff --git a/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.resx b/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.resx index c63cb4f..dbaa7ef 100644 --- a/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.resx +++ b/Novetus/NovetusCore/CharCustom/Forms/Extended/CharacterCustomizationExtended.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACe - OAAAAk1TRnQBSQFMAgEBAwEAAYQBAQGEAQEBQAEAAUABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + OAAAAk1TRnQBSQFMAgEBAwEAAYwBAQGMAQEBQAEAAUABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo BAABAQIAAUADAAEBAQABCAYAAUAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/Novetus/NovetusCore/Classes/PartColors.cs b/Novetus/NovetusCore/Classes/PartColors.cs index 7f1ba30..ee8b359 100644 --- a/Novetus/NovetusCore/Classes/PartColors.cs +++ b/Novetus/NovetusCore/Classes/PartColors.cs @@ -23,6 +23,8 @@ public class PartColor public string ColorGroup; [XmlIgnore] public string ColorRawName; + [XmlIgnore] + public Bitmap ColorImage; } [XmlRoot("PartColors")] @@ -39,32 +41,34 @@ public class PartColorLoader if (File.Exists(GlobalPaths.ConfigDir + "\\" + GlobalPaths.PartColorXMLName)) { XmlSerializer serializer = new XmlSerializer(typeof(PartColors)); - - FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.PartColorXMLName, FileMode.Open); PartColors colors; - colors = (PartColors)serializer.Deserialize(fs); - fs.Close(); - for (int i = 0; i < colors.ColorList.Length; i++) + using (FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.PartColorXMLName, FileMode.Open)) { - string colorFixed = Regex.Replace(colors.ColorList[i].ColorRGB, @"[\[\]\{\}\(\)\<\> ]", ""); - string[] rgbValues = colorFixed.Split(','); - colors.ColorList[i].ColorObject = Color.FromArgb(Convert.ToInt32(rgbValues[0]), Convert.ToInt32(rgbValues[1]), Convert.ToInt32(rgbValues[2])); + colors = (PartColors)serializer.Deserialize(fs); + } - if (!(colors.ColorList[i].ColorName.Contains("[") && colors.ColorList[i].ColorName.Contains("]"))) + foreach (var item in colors.ColorList) + { + string colorFixed = Regex.Replace(item.ColorRGB, @"[\[\]\{\}\(\)\<\> ]", ""); + string[] rgbValues = colorFixed.Split(','); + item.ColorObject = Color.FromArgb(Convert.ToInt32(rgbValues[0]), Convert.ToInt32(rgbValues[1]), Convert.ToInt32(rgbValues[2])); + + if (!(item.ColorName.Contains("[") && item.ColorName.Contains("]"))) { - colors.ColorList[i].ColorRawName = colors.ColorList[i].ColorName; - colors.ColorList[i].ColorName = "[Uncategorized]" + colors.ColorList[i].ColorName; + item.ColorRawName = item.ColorName; + item.ColorName = "[Uncategorized]" + item.ColorName; } else { - colors.ColorList[i].ColorRawName = colors.ColorList[i].ColorName; + item.ColorRawName = item.ColorName; } - int pFrom = colors.ColorList[i].ColorName.IndexOf("["); - int pTo = colors.ColorList[i].ColorName.IndexOf("]"); - colors.ColorList[i].ColorGroup = colors.ColorList[i].ColorName.Substring(pFrom + 1, pTo - pFrom - 1); - colors.ColorList[i].ColorName = colors.ColorList[i].ColorName.Replace(colors.ColorList[i].ColorGroup, "").Replace("[", "").Replace("]", ""); + int pFrom = item.ColorName.IndexOf("["); + int pTo = item.ColorName.IndexOf("]"); + item.ColorGroup = item.ColorName.Substring(pFrom + 1, pTo - pFrom - 1); + item.ColorName = item.ColorName.Replace(item.ColorGroup, "").Replace("[", "").Replace("]", ""); + item.ColorImage = GeneratePartColorIcon(item, 128); } return colors.ColorList; @@ -76,11 +80,7 @@ public class PartColorLoader } //make faster -#if !BASICLAUNCHER - public static async Task AddPartColorsToListView(PartColor[] PartColorList, ListView ColorView, int imgsize, bool showIDs = false) -#else public static void AddPartColorsToListView(PartColor[] PartColorList, ListView ColorView, int imgsize, bool showIDs = false) -#endif { try { @@ -110,21 +110,19 @@ public class PartColorLoader lvi.Group = group; -#if !BASICLAUNCHER - Bitmap Bmp = await GeneratePartColorIconAsync(item, imgsize); - if (Bmp != null) + if (item.ColorImage != null) { - ColorImageList.Images.Add(item.ColorName, Bmp); + ColorImageList.Images.Add(item.ColorName, item.ColorImage); lvi.ImageIndex = ColorImageList.Images.IndexOfKey(item.ColorName); } -#endif + ColorView.Items.Add(lvi); } - foreach (var group in ColorView.Groups.Cast()) + /*foreach (var group in ColorView.Groups.Cast()) { group.Header = group.Header + " (" + group.Items.Count + ")"; - } + }*/ } #if URI || LAUNCHER || CMD catch (Exception ex) @@ -137,15 +135,6 @@ public class PartColorLoader } } -#if !BASICLAUNCHER - public static async Task GeneratePartColorIconAsync(PartColor color, int imgsize) - { - Task task = Task.Factory.StartNew(() => GeneratePartColorIcon(color, imgsize)); - await task; - return task.Result; - } -#endif - public static Bitmap GeneratePartColorIcon(PartColor color, int imgsize) { try diff --git a/Novetus/NovetusCore/StorageAndFunctions/GlobalFuncs.cs b/Novetus/NovetusCore/StorageAndFunctions/GlobalFuncs.cs index 21879d2..d5a718a 100644 --- a/Novetus/NovetusCore/StorageAndFunctions/GlobalFuncs.cs +++ b/Novetus/NovetusCore/StorageAndFunctions/GlobalFuncs.cs @@ -269,8 +269,6 @@ public class GlobalFuncs } } - GlobalVars.ColorsLoaded = InitColors(); - if (!File.Exists(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigNameCustomization)) { Customization(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigNameCustomization, true); @@ -592,7 +590,7 @@ public class GlobalFuncs if (File.Exists(GlobalPaths.ConfigDir + "\\" + GlobalPaths.PartColorXMLName)) { tempList = PartColorLoader.GetPartColors(); - if (tempList.Length == GlobalVars.PartColorList.Length) + if (tempList.Length != GlobalVars.PartColorList.Length) { return true; } @@ -721,6 +719,40 @@ public class GlobalFuncs ChangeGameSettings(ClientName); } + //Modified from https://stackoverflow.com/questions/4286487/is-there-any-lorem-ipsum-generator-in-c + public static string LoremIpsum(int minWords, int maxWords, + int minSentences, int maxSentences, + int numParagraphs) + { + + var words = new[]{"lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", + "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", + "tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam", "erat"}; + + var rand = new Random(); + int numSentences = rand.Next(maxSentences - minSentences) + + minSentences + 1; + int numWords = rand.Next(maxWords - minWords) + minWords + 1; + + StringBuilder result = new StringBuilder(); + + for (int p = 0; p < numParagraphs; p++) + { + result.Append("lorem ipsum "); + for (int s = 0; s < numSentences; s++) + { + for (int w = 0; w < numWords; w++) + { + if (w > 0) { result.Append(" "); } + result.Append(words[rand.Next(words.Length)]); + } + result.Append(". "); + } + } + + return result.ToString(); + } + public static void GenerateDefaultClientInfo(string path) { FileFormat.ClientInfo DefaultClientInfo = new FileFormat.ClientInfo(); @@ -751,7 +783,7 @@ public class GlobalFuncs } else { - IOException clientNotFoundEX = new IOException("Could not find client exe for MD5 generation."); + IOException clientNotFoundEX = new IOException("Could not find client exe for MD5 generation. It must be named either RobloxApp.exe or RobloxApp_client.exe in order to function."); throw clientNotFoundEX; } @@ -763,12 +795,13 @@ public class GlobalFuncs } else { - IOException clientNotFoundEX = new IOException("Could not find script file for MD5 generation."); + IOException clientNotFoundEX = new IOException("Could not find script file for MD5 generation. You must have a CSMPFunctions.lua script in your client's content/scripts folder."); throw clientNotFoundEX; } string desc = "This client information file for '" + GlobalVars.UserConfiguration.SelectedClient + - "' was pre-generated by Novetus for your convienence. You will need to load and save this clientinfo.nov file into the Client SDK."; + "' was pre-generated by Novetus for your convienence. You will need to load this clientinfo.nov file into the Client SDK for additional options.\n\n" + + LoremIpsum(1, 128, 1, 6, 1); DefaultClientInfo.Description = desc; @@ -2189,6 +2222,20 @@ public class GlobalFuncs #if LAUNCHER || URI public static void LaunchCharacterCustomization() { + //https://stackoverflow.com/questions/9029351/close-all-open-forms-except-the-main-menu-in-c-sharp + FormCollection fc = Application.OpenForms; + + foreach (Form frm in fc) + { + //iterate through + if (frm.Name == "CharacterCustomizationExtended" || + frm.Name == "CharacterCustomizationCompact") + { + frm.Close(); + break; + } + } + switch (GlobalVars.UserConfiguration.LauncherStyle) { case Settings.Style.Extended: diff --git a/Novetus/NovetusLauncher/Forms/LauncherForm/Compact/LauncherFormCompact.cs b/Novetus/NovetusLauncher/Forms/LauncherForm/Compact/LauncherFormCompact.cs index a4ec85b..39dfd82 100644 --- a/Novetus/NovetusLauncher/Forms/LauncherForm/Compact/LauncherFormCompact.cs +++ b/Novetus/NovetusLauncher/Forms/LauncherForm/Compact/LauncherFormCompact.cs @@ -58,6 +58,7 @@ namespace NovetusLauncher void MainFormLoad(object sender, EventArgs e) { launcherForm.InitForm(); + CenterToScreen(); } void MainFormClose(object sender, CancelEventArgs e) diff --git a/Novetus/NovetusLauncher/Forms/LauncherForm/Extended/LauncherFormExtended.cs b/Novetus/NovetusLauncher/Forms/LauncherForm/Extended/LauncherFormExtended.cs index e1c1abe..bbf9b0c 100644 --- a/Novetus/NovetusLauncher/Forms/LauncherForm/Extended/LauncherFormExtended.cs +++ b/Novetus/NovetusLauncher/Forms/LauncherForm/Extended/LauncherFormExtended.cs @@ -63,6 +63,7 @@ namespace NovetusLauncher void MainFormLoad(object sender, EventArgs e) { launcherForm.InitForm(); + CenterToScreen(); } void MainFormClose(object sender, CancelEventArgs e) diff --git a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs index 2bc5c79..9ed3264 100644 --- a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs +++ b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs @@ -310,20 +310,6 @@ public partial class ItemCreationSDK : Form if (LaunchCharCustom == DialogResult.Yes) { - //https://stackoverflow.com/questions/9029351/close-all-open-forms-except-the-main-menu-in-c-sharp - FormCollection fc = Application.OpenForms; - - foreach (Form frm in fc) - { - //iterate through - if (frm.Name == "CharacterCustomizationExtended" || - frm.Name == "CharacterCustomizationCompact") - { - frm.Close(); - break; - } - } - GlobalFuncs.LaunchCharacterCustomization(); } } diff --git a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDKColorMenu.cs b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDKColorMenu.cs index 20c2a82..4b98b41 100644 --- a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDKColorMenu.cs +++ b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDKColorMenu.cs @@ -1,10 +1,5 @@ #region Usings using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Linq; using System.Windows.Forms; #endregion @@ -45,7 +40,7 @@ public partial class ItemCreationSDKColorMenu : Form Close(); } - private async void ItemCreationSDKColorMenu_Load(object sender, EventArgs e) + private void ItemCreationSDKColorMenu_Load(object sender, EventArgs e) { if (GlobalFuncs.HasColorsChanged()) { @@ -60,10 +55,7 @@ public partial class ItemCreationSDKColorMenu : Form return; } - string oldTitle = Text; - Text = "Please Wait..."; - await PartColorLoader.AddPartColorsToListView(GlobalVars.PartColorList, colorMenu, 32, true); - Text = oldTitle; + PartColorLoader.AddPartColorsToListView(GlobalVars.PartColorList, colorMenu, 48, true); CenterToScreen(); } #endregion diff --git a/Novetus/NovetusLauncher/NovetusLauncherEntryPoint.cs b/Novetus/NovetusLauncher/NovetusLauncherEntryPoint.cs index e92ae75..ae32ef5 100644 --- a/Novetus/NovetusLauncher/NovetusLauncherEntryPoint.cs +++ b/Novetus/NovetusLauncher/NovetusLauncherEntryPoint.cs @@ -24,6 +24,7 @@ namespace NovetusLauncher GlobalFuncs.ReadInfoFile(GlobalPaths.ConfigDir + "\\" + GlobalPaths.InfoName); GlobalFuncs.Config(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName, false); + GlobalVars.ColorsLoaded = GlobalFuncs.InitColors(); if (args.Length == 0) { try diff --git a/Novetus/NovetusURI/NovetusURI.cs b/Novetus/NovetusURI/NovetusURI.cs index 2356c74..82a9f09 100644 --- a/Novetus/NovetusURI/NovetusURI.cs +++ b/Novetus/NovetusURI/NovetusURI.cs @@ -25,6 +25,7 @@ namespace NovetusURI Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); GlobalFuncs.Config(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName, false); + GlobalVars.ColorsLoaded = GlobalFuncs.InitColors(); if (args.Length == 0) { Application.Run(new InstallForm());