public void formMain_Shown(object sender, EventArgs events) { //Hide(); bool done = false; currentOwner = this; //Change title this.Text = "AA2Install v" + formAbout.AssemblyVersion; //Show splash ThreadPool.QueueUserWorkItem((x) => { using (var splashForm = new formSplash()) { currentOwner = splashForm; splashForm.lblVer.Text = "AA2Install v" + formAbout.AssemblyVersion; splashForm.Visible = true; splashForm.CreateControl(); statusUpdated += (s) => { splashForm.BeginInvoke(new MethodInvoker(() => { splashForm.lblStatus.Text = s; })); }; splashForm.Show(); while (!done) Application.DoEvents(); statusUpdated = null; currentOwner = this; splashForm.Close(); this.BeginInvoke(new MethodInvoker((() => { this.Activate(); }))); } }); //Create necessary folders if (!Directory.Exists(Paths.BACKUP)) { Directory.CreateDirectory(Paths.BACKUP + @"\"); } if (!Directory.Exists(Paths.MODS)) { Directory.CreateDirectory(Paths.MODS + @"\"); } if (!Directory.Exists(Paths.CACHE)) { Directory.CreateDirectory(Paths.CACHE + @"\"); } if (!Directory.Exists(Paths.PLUGINS)) { Directory.CreateDirectory(Paths.PLUGINS + @"\"); } //Load plugins ICollection<IPlugin> plugins; if (PluginLoader.PluginLoader.LoadAllDLLs(Paths.PLUGINS + "\\", out plugins)) Plugins.AddRange(plugins); else currentOwner.InvokeMessageBox("One or more plugin .dll files are blocked. Plugins will not be loaded.", "Blocked DLL files", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); foreach (IPlugin plugin in Plugins) { switch (plugin.Type) { case PluginType.StartupScript: Method script = (Method)plugin.Payload; script.Invoke(); break; case PluginType.MenuStripButton: MenuStripMethod strip = (MenuStripMethod)plugin.Payload; ToolStripMenuItem button = new ToolStripMenuItem(); button.Text = strip.Text; button.AutoSize = true; button.Click += new EventHandler((s, ev) => { strip.Method.Invoke(); }); pluginsToolStripMenuItem.DropDownItems.Add(button); break; case PluginType.UserControl: UserControlMethod control = (UserControlMethod)plugin.Payload; TabPage page = new TabPage(control.Text); page.Controls.Add(control.Method); page.Controls[0].Dock = DockStyle.Fill; tabControl1.TabPages.Add(page); break; } } //Resize the column lsvMods_SizeChanged(null, null); //Check if installed if (!(Directory.Exists(Paths.AA2Play) && Directory.Exists(Paths.AA2Edit))) { currentOwner.InvokeMessageBox("You don't seem to have AA2Play and/or AA2Edit (properly) installed.\nPlease install it, use the registry fixer (if you've already installed it) or manually specify the install path in the preferences.", "AA2 Not Installed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } //Setup sorting lsvMods.ListViewItemSorter = new CustomListViewSorter(int.Parse(Configuration.ReadSetting("SORTMODE") ?? "0")); cmbSorting.SelectedIndex = int.Parse(Configuration.ReadSetting("SORTMODE") ?? "0"); //Start program refreshModList(); //Hide splash done = true; loadUIConfiguration(); Show(); change = new formChanges(pendingChangesToolStripMenuItem); change.Show(); change.Activate(); }