From 486b56b5fb28cf2e01fc52c89f4f334f5d5dd241 Mon Sep 17 00:00:00 2001 From: "Oleg \"OSA413\" Sokolov" Date: Thu, 21 Sep 2023 14:14:15 +0500 Subject: [PATCH] This completes the installation process --- .../Forms/UltimateWinForm.cs | 10 +++++++-- .../OneClickModInstaller/Forms/UpdateUI.cs | 7 ++++++ .../ModInstallationInstance.cs | 22 +++++++++++++------ 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Sonic4_ModLoader/OneClickModInstaller/Forms/UltimateWinForm.cs b/Sonic4_ModLoader/OneClickModInstaller/Forms/UltimateWinForm.cs index 05e16c6..7e9b69b 100644 --- a/Sonic4_ModLoader/OneClickModInstaller/Forms/UltimateWinForm.cs +++ b/Sonic4_ModLoader/OneClickModInstaller/Forms/UltimateWinForm.cs @@ -62,7 +62,6 @@ private void UnInstallAndUpdateStatus(Action d, GAME? game = null) private void bModInstall_Click(object sender, EventArgs e) { - //TODO: change if (mod.Status == ModInstallationStatus.Beginning || mod.Cancelled == true || mod.Status == ModInstallationStatus.Installed @@ -71,7 +70,14 @@ private void bModInstall_Click(object sender, EventArgs e) tbModURL.ReadOnly = true; bModPath.Enabled = bModInstall.Enabled = false; - //StartInstallation(); + mod.Status = ModInstallationStatus.Beginning; + + UpdateUI.Status(mod.Status.ToString()); + while (mod.DoNextStep()) + { + mod.ContinueInstallation(); + UpdateUI.Status(mod.Status.ToString()); + } } } diff --git a/Sonic4_ModLoader/OneClickModInstaller/Forms/UpdateUI.cs b/Sonic4_ModLoader/OneClickModInstaller/Forms/UpdateUI.cs index 8cb12c6..690e94f 100644 --- a/Sonic4_ModLoader/OneClickModInstaller/Forms/UpdateUI.cs +++ b/Sonic4_ModLoader/OneClickModInstaller/Forms/UpdateUI.cs @@ -9,6 +9,7 @@ using Common.MyIO; using Common.URL; using Common.Launcher; +using System.Drawing; namespace OneClickModInstaller { @@ -39,6 +40,12 @@ public static void ModInfo() { form.lDownloadID.Text = null; } + public static void Status(string text) + { + form.statusBar.Text = text; + Console.WriteLine(text); + } + public static void GlobalGameStatus() { var statuses = hiWrapper.GetAllInstallationStatus(); diff --git a/Sonic4_ModLoader/OneClickModInstaller/ModInstallationInstance.cs b/Sonic4_ModLoader/OneClickModInstaller/ModInstallationInstance.cs index 6ecfabb..710186d 100644 --- a/Sonic4_ModLoader/OneClickModInstaller/ModInstallationInstance.cs +++ b/Sonic4_ModLoader/OneClickModInstaller/ModInstallationInstance.cs @@ -78,12 +78,12 @@ public void ContinueInstallation() ModInstallationStatus.Downloaded => ExtractMod(), ModInstallationStatus.Extracted => FindRoots(), ModInstallationStatus.Scanned => InstallFromModRoots(), - ModInstallationStatus.ServerError => throw new NotImplementedException(), - ModInstallationStatus.Extracting => throw new NotImplementedException(), - ModInstallationStatus.Scanning => throw new NotImplementedException(), - ModInstallationStatus.Installing => throw new NotImplementedException(), - ModInstallationStatus.Installed => throw new NotImplementedException(), - ModInstallationStatus.ModIsComplicated => throw new NotImplementedException(), + ModInstallationStatus.ServerError => false, + ModInstallationStatus.Extracting => false, + ModInstallationStatus.Scanning => false, + ModInstallationStatus.Installing => false, + ModInstallationStatus.Installed => false, + ModInstallationStatus.ModIsComplicated => false, _ => false, }; @@ -96,9 +96,15 @@ public bool Prepare() Status = ModInstallationStatus.Downloading; if (info.FromArchive) + { + ModArchivePath = Link; Status = ModInstallationStatus.Downloaded; + } else if (info.FromDir) + { + ModDirectory = Link; Status = ModInstallationStatus.Extracted; + } return true; } @@ -109,7 +115,7 @@ public bool Download() public bool ExtractMod() { - ModDirectory = Path.GetFileNameWithoutExtension(ModArchivePath) + "_extracted"; + ModDirectory = ModArchivePath + "_extracted"; if (Directory.Exists(ModDirectory)) MyDirectory.DeleteRecursively(ModDirectory); @@ -118,6 +124,8 @@ public bool ExtractMod() ModArchive.Extract(ModArchivePath, Settings.Paths["7-Zip"]); else ModArchive.Extract(ModArchivePath); + + Status = ModInstallationStatus.Extracted; return true; }