From d29ee0368117ba77c9a9393739e219efa9509a4f Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 12 Sep 2015 10:23:05 +0300 Subject: [PATCH] Launcher improvements --- Launcher2/LauncherMain.cs | 21 ++++++++++++--------- Subsurface/Source/Utils/UpdaterUtil.cs | 2 +- Subsurface_Solution.v12.suo | Bin 678912 -> 679936 bytes 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Launcher2/LauncherMain.cs b/Launcher2/LauncherMain.cs index ae2e27d2e..f607f340c 100644 --- a/Launcher2/LauncherMain.cs +++ b/Launcher2/LauncherMain.cs @@ -38,6 +38,8 @@ namespace Launcher2 private GUIProgressBar progressBar; private GUIButton downloadButton; + GUIButton launchButton; + public bool FullScreenEnabled { get { return settings.FullScreenEnabled; } @@ -104,8 +106,8 @@ namespace Launcher2 guiRoot = new GUIFrame(new Rectangle(0,0,graphicsWidth, graphicsHeight), Color.Transparent); guiRoot.Padding = new Vector4(40.0f, 40.0f, 40.0f, 40.0f); - GUIButton button = new GUIButton(new Rectangle(0,0,100,30), "START", Alignment.BottomRight, GUI.Style, guiRoot); - button.OnClicked = LaunchClick; + launchButton = new GUIButton(new Rectangle(0,0,100,30), "START", Alignment.BottomRight, GUI.Style, guiRoot); + launchButton.OnClicked = LaunchClick; int y = 50; @@ -360,7 +362,8 @@ namespace Launcher2 if (string.IsNullOrWhiteSpace(latestVersionFolder)) return false; button.Enabled = false; - + launchButton.Enabled = false; + XDocument doc = null; try @@ -371,6 +374,7 @@ namespace Launcher2 catch (Exception e) { SetUpdateInfoBox("Error while updating: " + e.Message); + launchButton.Enabled = true; return false; } @@ -420,12 +424,14 @@ namespace Launcher2 { updateInfoText.Text = "Update failed"; SetUpdateInfoBox("Error while installing the update: "+e.Message); + launchButton.Enabled = true; return; - } + } UpdaterUtil.CleanUnnecessaryFiles(latestVersionFiles); updateInfoText.Text = "The game was updated succesfully!"; + launchButton.Enabled = true; //MessageBox.Show("Download completed!"); return; @@ -442,16 +448,13 @@ namespace Launcher2 WebClient webClient = new WebClient(); webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); - //webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); - - - + if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } - string fileDir = Path.GetDirectoryName(filesToDownload[filesDownloaded]); + string fileDir = dir+"\\"+Path.GetDirectoryName(filesToDownload[filesDownloaded]); if (!string.IsNullOrWhiteSpace(fileDir) && !Directory.Exists(fileDir)) { Directory.CreateDirectory(fileDir); diff --git a/Subsurface/Source/Utils/UpdaterUtil.cs b/Subsurface/Source/Utils/UpdaterUtil.cs index b1dbac8a3..368e72d93 100644 --- a/Subsurface/Source/Utils/UpdaterUtil.cs +++ b/Subsurface/Source/Utils/UpdaterUtil.cs @@ -150,7 +150,7 @@ namespace Subsurface File.Move(file, fileRelPath); } - Directory.Delete(updateFileFolder); + Directory.Delete(updateFileFolder, true); } public static void CleanUnnecessaryFiles(List filesToKeep) diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index 60b92d5402c73caf675176bc1348e879af05c70b..c7e248a4d5f323d2d6d368d8e46377f284cf92e9 100644 GIT binary patch delta 8590 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 W5{o_+hVZ?TcA9%sf2Q1F?ff5UM!+oq