diff --git a/.gitignore b/.gitignore index a299eba99..6edd59f57 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ packages/* CollapseLauncher/Invoker/* *.psd +InstallerProp/Output/* diff --git a/CollapseLauncher.Updater/Properties/launchSettings.json b/CollapseLauncher.Updater/Properties/launchSettings.json index 48fcf5204..60349e705 100644 --- a/CollapseLauncher.Updater/Properties/launchSettings.json +++ b/CollapseLauncher.Updater/Properties/launchSettings.json @@ -7,12 +7,12 @@ }, "CollapseLauncher.ReindexPreview": { "commandName": "Project", - "commandLineArgs": "reindex C:\\myGit\\CollapseLauncher-ReleaseRepo\\preview 1.0.10.0", + "commandLineArgs": "reindex C:\\myGit\\CollapseLauncher-ReleaseRepo\\preview 1.0.12.0", "nativeDebugging": true }, "CollapseLauncher.ReindexStable": { "commandName": "Project", - "commandLineArgs": "reindex C:\\myGit\\CollapseLauncher-ReleaseRepo\\stable 1.0.10.0", + "commandLineArgs": "reindex C:\\myGit\\CollapseLauncher-ReleaseRepo\\stable 1.0.11.0", "nativeDebugging": true }, "CollapseLauncher.ElevateUpdate": { diff --git a/CollapseLauncher/App.xaml.cs b/CollapseLauncher/App.xaml.cs index f54a60421..0bad61dc1 100644 --- a/CollapseLauncher/App.xaml.cs +++ b/CollapseLauncher/App.xaml.cs @@ -1,8 +1,12 @@ using System; +using System.IO; + +using Windows.UI; using Microsoft.UI.Xaml; using Hi3Helper; +using Hi3Helper.Shared.ClassStruct; using static Hi3Helper.Shared.Region.LauncherConfig; using static Hi3Helper.InvokeProp; @@ -21,10 +25,20 @@ public App() #if PREVIEW AppConfig.IsPreview = true; #endif + if (!File.Exists(AppConfigFile)) + AppConfig.IsFirstInstall = true; + InitializeConsole(true, AppDataFolder); + + LoadAppPreset(); WriteLog("App Started!", LogType.Scheme); LogWriteLine($"Initializing...", LogType.Empty); + AppConfig.SystemAppTheme = new Windows.UI.ViewManagement.UISettings().GetColorValue(Windows.UI.ViewManagement.UIColorType.Background); + AppConfig.CurrentAppTheme = Enum.Parse(GetAppConfigValue("ThemeMode").ToString()); + + RequestedTheme = (AppConfig.CurrentRequestedAppTheme = AppConfig.GetAppTheme()); + try { this.InitializeComponent(); diff --git a/CollapseLauncher/Assets/BG/stable/fileindex.json b/CollapseLauncher/Assets/BG/stable/fileindex.json new file mode 100644 index 000000000..4ed34f75d --- /dev/null +++ b/CollapseLauncher/Assets/BG/stable/fileindex.json @@ -0,0 +1,291 @@ +{ + "ver": "1.0.11.0", + "time": 1650607837, + "f": [ + { + "p": "Aiursoft.HSharp.dll", + "crc": "E2DA63271043234816B5963B68DA82B8", + "s": 29184 + }, + { + "p": "CollapseLauncher.deps.json", + "crc": "048C552805E0B5040CFD560AF1DAA75E", + "s": 77477 + }, + { + "p": "CollapseLauncher.dll", + "crc": "298F598ACF0CC14AF7C76BFECBB7D8E9", + "s": 1342464 + }, + { + "p": "CollapseLauncher.exe", + "crc": "F43084301D83298736A6D8AEA4DCAF60", + "s": 471552 + }, + { + "p": "CollapseLauncher.Invoker.deps.json", + "crc": "68D3523DB656CFC3302C088590C86ED5", + "s": 59369 + }, + { + "p": "CollapseLauncher.Invoker.dll", + "crc": "8C67758D7BA3A2080C3AB556898CAEFF", + "s": 21504 + }, + { + "p": "CollapseLauncher.Invoker.exe", + "crc": "70E3AFCE670DE4FEBB2DAC83A72A23CF", + "s": 152064 + }, + { + "p": "CollapseLauncher.Invoker.runtimeconfig.json", + "crc": "D720176A229E9D969B40FABEB0BAF62E", + "s": 266 + }, + { + "p": "CollapseLauncher.runtimeconfig.json", + "crc": "8C88CF0C6F912BA8598FCA08650F74B9", + "s": 340 + }, + { + "p": "ColorCode.Core.dll", + "crc": "3232D11D3E4CCCB945674B7E3A755CE5", + "s": 189952 + }, + { + "p": "ColorCode.WinUI.dll", + "crc": "9A1F9E3DAA3A727049F772FB35C2BC89", + "s": 17408 + }, + { + "p": "ColorThief.Netstandard.v20.dll", + "crc": "14A2E674A5830850C7849E912136B2B5", + "s": 44544 + }, + { + "p": "CommunityToolkit.Common.dll", + "crc": "6143D5E087EDFC661E5ADDA8A6A62115", + "s": 63488 + }, + { + "p": "CommunityToolkit.WinUI.dll", + "crc": "0C09C59AF8C2D688CED1A8F0A1DA1900", + "s": 271872 + }, + { + "p": "CommunityToolkit.WinUI.UI.Controls.Core.dll", + "crc": "288DF650998F34A31FB549EEA306933A", + "s": 600064 + }, + { + "p": "CommunityToolkit.WinUI.UI.Controls.DataGrid.dll", + "crc": "1E97AB34E9CCA1C3A6A53C093913B55B", + "s": 1149952 + }, + { + "p": "CommunityToolkit.WinUI.UI.Controls.Input.dll", + "crc": "B445499C1F92236E8268DDA52D9E935B", + "s": 661504 + }, + { + "p": "CommunityToolkit.WinUI.UI.Controls.Layout.dll", + "crc": "EDBB71A924CADAB2B9DBCE25D9283496", + "s": 392704 + }, + { + "p": "CommunityToolkit.WinUI.UI.Controls.Markdown.dll", + "crc": "2F265C94A40EC5F537136FE52FAD8A03", + "s": 513536 + }, + { + "p": "CommunityToolkit.WinUI.UI.Controls.Media.dll", + "crc": "D6215D18C37E49FFD711678A6FC0BF9B", + "s": 381952 + }, + { + "p": "CommunityToolkit.WinUI.UI.Controls.Primitives.dll", + "crc": "F31EEF646D1DFA243A5E082BE3A12E9A", + "s": 146944 + }, + { + "p": "CommunityToolkit.WinUI.UI.dll", + "crc": "C26DC77622E6C580B3AA097B7471B160", + "s": 446464 + }, + { + "p": "Crc32.NET.dll", + "crc": "F9B1DA8460C99CA822E85C11B3D4E7B2", + "s": 15360 + }, + { + "p": "Google.Protobuf.dll", + "crc": "17F75A99C8170C4FED9400AFA1DBFA9B", + "s": 1160704 + }, + { + "p": "Hi3HelperCore.dll", + "crc": "B83B96EFE1B1A2A071E3AAA36ECB25DB", + "s": 1479680 + }, + { + "p": "Microsoft.Graphics.Canvas.dll", + "crc": "61A7044370597F8433EA679D2CB42DCE", + "s": 1564544 + }, + { + "p": "Microsoft.Graphics.Canvas.Interop.dll", + "crc": "D7E60DDED8772D26C9C226E2C518BB2B", + "s": 3277824 + }, + { + "p": "Microsoft.InteractiveExperiences.Projection.dll", + "crc": "686C804EF30DE5B7005BFBD09FC3A130", + "s": 2693632 + }, + { + "p": "Microsoft.Win32.SystemEvents.dll", + "crc": "73CA04A0E349179CD5E2C2FE98747128", + "s": 90112 + }, + { + "p": "Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll", + "crc": "065691B05013B4CFA6B742AB5E24108A", + "s": 104448 + }, + { + "p": "Microsoft.Windows.ApplicationModel.Resources.Projection.dll", + "crc": "0657CB43831D2280F25177F18B370FEC", + "s": 140800 + }, + { + "p": "Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll", + "crc": "2CC1A998F91551BB9B5E2577BA0820F4", + "s": 74752 + }, + { + "p": "Microsoft.Windows.AppLifecycle.Projection.dll", + "crc": "E136081BF1AB3CF284773210E9A8A132", + "s": 89088 + }, + { + "p": "Microsoft.Windows.AppNotifications.Projection.dll", + "crc": "63E77B31AD604EF39BBB0B7A3C2FC8CF", + "s": 122368 + }, + { + "p": "Microsoft.Windows.PushNotifications.Projection.dll", + "crc": "00BDFE41D206CE01468FE3D7012716AB", + "s": 101376 + }, + { + "p": "Microsoft.Windows.SDK.NET.dll", + "crc": "5484948E3315DA6823EE7AECBBE6DBCE", + "s": 25534888 + }, + { + "p": "Microsoft.Windows.System.Power.Projection.dll", + "crc": "50C6B148103E5C60FFC4990F197C3B69", + "s": 91136 + }, + { + "p": "Microsoft.Windows.System.Projection.dll", + "crc": "2CD12E9B1A8B8EA64075A23B1A5AE6BC", + "s": 62976 + }, + { + "p": "Microsoft.WindowsAppRuntime.Bootstrap.dll", + "crc": "0D5C891FADAFB8A2940D38A524CC9540", + "s": 152992 + }, + { + "p": "Microsoft.WindowsAppRuntime.Bootstrap.Net.dll", + "crc": "F5CE830FBEB9B760DE93C1140F493D56", + "s": 9216 + }, + { + "p": "Microsoft.WinUI.dll", + "crc": "582D4F9B966EF76114AABA8841020135", + "s": 16964608 + }, + { + "p": "Newtonsoft.Json.dll", + "crc": "BE92C9478A458321B37758935555AA0A", + "s": 1845248 + }, + { + "p": "PInvoke.Kernel32.dll", + "crc": "DB61F3394CC99A1168196C0BB16BB563", + "s": 160768 + }, + { + "p": "PInvoke.User32.dll", + "crc": "364C00DACBE51BB9B5169E1B2DC88606", + "s": 135168 + }, + { + "p": "PInvoke.Windows.Core.dll", + "crc": "A943F0C02CE0D80C7CA68DB9D7D1EEA4", + "s": 269312 + }, + { + "p": "PInvoke.Windows.ShellScalingApi.dll", + "crc": "21E15E77BE1D785EEF14C445DD5EABD6", + "s": 9216 + }, + { + "p": "resources.pri", + "crc": "24ABC8520C43B81D0DD54A6EC1541844", + "s": 289392 + }, + { + "p": "SharpCompress.dll", + "crc": "5D04691245DC489B51E79E49C89F04FD", + "s": 1375744 + }, + { + "p": "System.Drawing.Common.dll", + "crc": "8D771F357FB70EF33B2AFE8DE49CF13D", + "s": 1189376 + }, + { + "p": "Validation.dll", + "crc": "A1895684872C2D57E861A011C00DFCAB", + "s": 30208 + }, + { + "p": "WinRT.Runtime.dll", + "crc": "4B06C2748AA16466814D350B97736631", + "s": 354216 + }, + { + "p": "Assets/ironmaiden_logo_256.png", + "crc": "B5B2CC70C19A797F8CD498D7DC68E34A", + "s": 34541 + }, + { + "p": "config/fileconfig.json", + "crc": "D1F979186B682B7E711878885F861802", + "s": 13629 + }, + { + "p": "Lib/7z.dll", + "crc": "42336B5FC6BE24BABFB87699C858FB27", + "s": 1697280 + }, + { + "p": "Lib/HPatchZ.dll", + "crc": "4C8A76268E905DC0312078FA38C3F91C", + "s": 369664 + }, + { + "p": "Assets/BG/AiHappy.png", + "crc": "66B35258016EFF2D34D01AB1764A67F8", + "s": 165513 + }, + { + "p": "Assets/BG/default.png", + "crc": "8327DA308617B6B9431153907BDE69DA", + "s": 24263 + } + ] +} \ No newline at end of file diff --git a/CollapseLauncher/Classes/BackgroundManagement/BackgroundManagement.cs b/CollapseLauncher/Classes/BackgroundManagement/BackgroundManagement.cs index f121c493a..a5a53229d 100644 --- a/CollapseLauncher/Classes/BackgroundManagement/BackgroundManagement.cs +++ b/CollapseLauncher/Classes/BackgroundManagement/BackgroundManagement.cs @@ -87,15 +87,11 @@ private void ChangeBackgroundImageAsRegion(CancellationToken token) private void ApplyAccentColor() { - var uiSettings = new Windows.UI.ViewManagement.UISettings(); - var theme = uiSettings.GetColorValue( - Windows.UI.ViewManagement.UIColorType.Background - ); - Windows.UI.Color _color = new Windows.UI.Color(); DispatcherQueue.TryEnqueue(() => { - if (theme.ToString() == "#FFFFFFFF") + if (AppConfig.CurrentAppTheme == AppThemeMode.Light || + (AppConfig.CurrentAppTheme == AppThemeMode.Default && AppConfig.SystemAppTheme.ToString() == "#FFFFFFFF")) { try { @@ -135,7 +131,7 @@ private void ApplyAccentColor() Application.Current.Resources["SystemAccentColorLight3"] = _color; } - ReloadPageTheme(this.RequestedTheme); + ReloadPageTheme(ConvertAppThemeToElementTheme(AppConfig.CurrentAppTheme)); }); } diff --git a/CollapseLauncher/Classes/InstallManagement/InstallManagement.cs b/CollapseLauncher/Classes/InstallManagement/InstallManagement.cs index d06a8f273..3aa257afc 100644 --- a/CollapseLauncher/Classes/InstallManagement/InstallManagement.cs +++ b/CollapseLauncher/Classes/InstallManagement/InstallManagement.cs @@ -793,7 +793,7 @@ await Task.Run(() => if (Entry.fileSize >= 10 << 20) DownloadFile(RemotePath, LocalPath, DownloadThread, Token); else - DownloadFile(RemotePath, LocalPath, Token); + DownloadFile(RemotePath, new FileStream(LocalPath, FileMode.Create, FileAccess.Write, FileShare.Write), Token); }); } DownloadProgress -= DownloadProgressAdapter; diff --git a/CollapseLauncher/Classes/Properties/GameConfig.cs b/CollapseLauncher/Classes/Properties/GameConfig.cs index 0d3cfcd9f..7a5ccd21f 100644 --- a/CollapseLauncher/Classes/Properties/GameConfig.cs +++ b/CollapseLauncher/Classes/Properties/GameConfig.cs @@ -1,6 +1,12 @@ using System; + +using Windows.UI; + +using Microsoft.UI.Xaml; using Microsoft.UI.Windowing; +using Hi3Helper.Shared.ClassStruct; + namespace CollapseLauncher { public static class AppConfig @@ -9,5 +15,28 @@ public static class AppConfig public static AppWindow m_AppWindow; public static OverlappedPresenter m_presenter; public static bool IsPreview = false; + public static bool IsAppThemeNeedRestart = false; + public static bool IsFirstInstall = false; + public static ApplicationTheme CurrentRequestedAppTheme; + public static AppThemeMode CurrentAppTheme; + public static Color SystemAppTheme; + + public static ApplicationTheme GetAppTheme() + { + AppThemeMode AppTheme = CurrentAppTheme; + + switch (AppTheme) + { + case AppThemeMode.Light: + return ApplicationTheme.Light; + case AppThemeMode.Dark: + return ApplicationTheme.Dark; + default: + if (SystemAppTheme.ToString() == "#FFFFFFFF") + return ApplicationTheme.Light; + else + return ApplicationTheme.Dark; + } + } } } diff --git a/CollapseLauncher/CollapseLauncher.csproj b/CollapseLauncher/CollapseLauncher.csproj index d071546aa..0e8ca9902 100644 --- a/CollapseLauncher/CollapseLauncher.csproj +++ b/CollapseLauncher/CollapseLauncher.csproj @@ -12,7 +12,7 @@ true None true - 1.0.10.0 + 1.0.12.0 Debug;Release;Publish icon.ico diff --git a/CollapseLauncher/MainPage.xaml.cs b/CollapseLauncher/MainPage.xaml.cs index bd05c72a1..71e89dfd6 100644 --- a/CollapseLauncher/MainPage.xaml.cs +++ b/CollapseLauncher/MainPage.xaml.cs @@ -14,6 +14,7 @@ using Microsoft.UI.Xaml.Media.Animation; using Hi3Helper; +using Hi3Helper.Shared.ClassStruct; using static Hi3Helper.Shared.Region.LauncherConfig; using static Hi3Helper.Logger; @@ -26,7 +27,6 @@ public MainPage() { try { - LoadAppPreset(); LoadGamePreset(); LogWriteLine($"Welcome to Collapse Launcher v{Assembly.GetExecutingAssembly().GetName().Version} - {GetVersionString()}", LogType.Default, false); LogWriteLine($"Application Data Location:\r\n\t{AppDataFolder}", LogType.Default); @@ -57,8 +57,19 @@ private void ReloadPageTheme(ElementTheme startTheme) if (this.RequestedTheme != startTheme) ReloadPageTheme(startTheme); + } - ThemeChanger.ChangeTheme(ApplicationTheme.Dark); + private ElementTheme ConvertAppThemeToElementTheme(AppThemeMode Theme) + { + switch (Theme) + { + default: + return ElementTheme.Default; + case AppThemeMode.Dark: + return ElementTheme.Dark; + case AppThemeMode.Light: + return ElementTheme.Light; + } } private async void CheckRunningGameInstance() diff --git a/CollapseLauncher/MainWindow.xaml.cs b/CollapseLauncher/MainWindow.xaml.cs index 83a35446f..f4bb56b11 100644 --- a/CollapseLauncher/MainWindow.xaml.cs +++ b/CollapseLauncher/MainWindow.xaml.cs @@ -56,6 +56,16 @@ public MainWindow() m_presenter.IsMaximizable = false; CustomTitleBar.Visibility = Visibility.Collapsed; + switch (GetAppTheme()) + { + case ApplicationTheme.Light: + m_AppWindow.TitleBar.ButtonForegroundColor = new Windows.UI.Color { A = 255, B = 0, G = 0, R = 0 }; + break; + case ApplicationTheme.Dark: + m_AppWindow.TitleBar.ButtonForegroundColor = new Windows.UI.Color { A = 255, B = 255, G = 255, R = 255 }; + break; + } + m_AppWindow.TitleBar.ButtonBackgroundColor = new Windows.UI.Color { A = 0, B = 0, G = 0, R = 0 }; m_AppWindow.TitleBar.ButtonInactiveBackgroundColor = new Windows.UI.Color { A = 0, B = 0, G = 0, R = 0 }; } @@ -69,6 +79,17 @@ public MainWindow() AppTitleBar.Visibility = Visibility.Collapsed; CustomTitleBar.Visibility = Visibility.Visible; SetTitleBar(CustomTitleBar); + + switch (GetAppTheme()) + { + case ApplicationTheme.Light: + Application.Current.Resources["WindowCaptionForeground"] = new Windows.UI.Color { A = 255, B = 0, G = 0, R = 0 }; + break; + case ApplicationTheme.Dark: + Application.Current.Resources["WindowCaptionForeground"] = new Windows.UI.Color { A = 255, B = 255, G = 255, R = 255 }; + break; + } + Application.Current.Resources["WindowCaptionBackground"] = new SolidColorBrush(new Windows.UI.Color { A = 0, B = 0, G = 0, R = 0 }); Application.Current.Resources["WindowCaptionBackgroundDisabled"] = new SolidColorBrush(new Windows.UI.Color { A = 0, B = 0, G = 0, R = 0 }); } @@ -76,7 +97,7 @@ public MainWindow() MainFrameChangerInvoker.WindowFrameEvent += MainFrameChangerInvoker_WindowFrameEvent; LauncherUpdateInvoker.UpdateEvent += LauncherUpdateInvoker_UpdateEvent; - if (!File.Exists(AppConfigFile)) + if (IsFirstInstall) rootFrame.Navigate(typeof(Pages.StartupPage), null, new DrillInNavigationTransitionInfo()); else rootFrame.Navigate(typeof(MainPage), null, new DrillInNavigationTransitionInfo()); diff --git a/CollapseLauncher/Pages/Dialogs/SimpleDialogs.cs b/CollapseLauncher/Pages/Dialogs/SimpleDialogs.cs index 8c3aca576..480b828e8 100644 --- a/CollapseLauncher/Pages/Dialogs/SimpleDialogs.cs +++ b/CollapseLauncher/Pages/Dialogs/SimpleDialogs.cs @@ -215,9 +215,9 @@ public static async Task Dialog_GameInstallationFileCorrupt await SpawnDialog( "Oops! Game Installation is Corrupted", string.Format( - "Sorry but seems the downloaded Game Installation file." + "Sorry but seems one of downloaded file has been corrupted." + "\r\n\r\nServer Hash: {0}\r\nDownloaded Hash: {1}" - + "\r\n\r\nDo you want to rerdownload the file?", sourceHash, downloadedHash), + + "\r\n\r\nDo you want to redownload the file?", sourceHash, downloadedHash), Content, "No, Cancel", "Yes, Redownload", diff --git a/CollapseLauncher/Pages/HomePage.xaml.cs b/CollapseLauncher/Pages/HomePage.xaml.cs index 2af36f66c..35efe07f7 100644 --- a/CollapseLauncher/Pages/HomePage.xaml.cs +++ b/CollapseLauncher/Pages/HomePage.xaml.cs @@ -539,7 +539,7 @@ private async Task DownloadGameClient(string destinationFolder) InstallTool = new InstallManagement(DownloadType.FirstInstall, destinationFolder, appIni.Profile["app"]["DownloadThread"].ToInt(), - Environment.ProcessorCount, + GetAppExtractConfigValue(), token, CurrentRegion.IsGenshin ?? false ? regionResourceProp.data.game.latest.decompressed_path : @@ -645,13 +645,13 @@ private void ExtractDownloadedGame(string sourceFile, string destinationFolder, // sevenZip.LoadLegacy(sourceFile); sevenZip.ExtractProgressChanged += ExtractProgress; - sevenZip.ExtractToDirectory(destinationFolder, Environment.ProcessorCount, token); + sevenZip.ExtractToDirectory(destinationFolder, GetAppExtractConfigValue(), token); break; case ".zip": sevenZip.LoadZip(sourceFile); sevenZip.ExtractProgressChanged += ExtractProgress; - sevenZip.ExtractToDirectory(destinationFolder, Environment.ProcessorCount, token); + sevenZip.ExtractToDirectory(destinationFolder, GetAppExtractConfigValue(), token); break; } } @@ -1157,7 +1157,7 @@ private async void RepairGameButton_Click(object sender, RoutedEventArgs e) InstallTool = new InstallManagement(DownloadType.FirstInstall, GameDirPath, appIni.Profile["app"]["DownloadThread"].ToInt(), - Environment.ProcessorCount, + GetAppExtractConfigValue(), token, CurrentRegion.IsGenshin ?? false ? regionResourceProp.data.game.latest.decompressed_path : @@ -1274,7 +1274,7 @@ private async void UpdateGameDialog(object sender, RoutedEventArgs e) InstallTool = new InstallManagement(DownloadType.Update, GameDirPath, appIni.Profile["app"]["DownloadThread"].ToInt(), - Environment.ProcessorCount, + GetAppExtractConfigValue(), token, CurrentRegion.IsGenshin ?? false ? regionResourceProp.data.game.latest.decompressed_path : @@ -1496,7 +1496,7 @@ public void PostInstallVerificationGenshin(string GamePath, string RemoteBasePat ProgressStatusTitle.Text = "Verifying Integrity"; }); - PostInstallCheck InstallCheckTool = new PostInstallCheck(GamePath, fileProp, Environment.ProcessorCount, token); + PostInstallCheck InstallCheckTool = new PostInstallCheck(GamePath, fileProp, GetAppExtractConfigValue(), token); InstallCheckTool.PostInstallCheckChanged += InstallCheckTool_PostInstallCheckChanged; BrokenFiles = InstallCheckTool.StartCheck(); InstallCheckTool.PostInstallCheckChanged -= InstallCheckTool_PostInstallCheckChanged; diff --git a/CollapseLauncher/Pages/SettingsPage.xaml b/CollapseLauncher/Pages/SettingsPage.xaml index 9fea8b3be..0f3cecd61 100644 --- a/CollapseLauncher/Pages/SettingsPage.xaml +++ b/CollapseLauncher/Pages/SettingsPage.xaml @@ -25,10 +25,64 @@ - + + + + + + + + + + + + + + + + + + diff --git a/CollapseLauncher/Pages/SettingsPage.xaml.cs b/CollapseLauncher/Pages/SettingsPage.xaml.cs index eb4e77b76..4010f8359 100644 --- a/CollapseLauncher/Pages/SettingsPage.xaml.cs +++ b/CollapseLauncher/Pages/SettingsPage.xaml.cs @@ -1,10 +1,13 @@ -using System.IO; +using System; +using System.IO; using System.Reflection; using System.Diagnostics; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; +using Hi3Helper.Shared.ClassStruct; + using static Hi3Helper.Logger; using static Hi3Helper.InvokeProp; using static Hi3Helper.Shared.Region.LauncherConfig; @@ -26,6 +29,9 @@ public SettingsPage() AppVersionTextBlock.Text = Version; CurrentVersion.Text = Version; + AppThemeSelection.SelectedIndex = (int)Enum.Parse(GetAppConfigValue("ThemeMode").ToString()); + DownloadThreadsNumBox.Value = GetAppConfigValue("DownloadThread").ToInt(); + ExtractionThreadsNumBox.Value = GetAppConfigValue("ExtractionThread").ToInt(); } public bool EnableConsole { get { return Hi3Helper.Logger.EnableConsole; } } @@ -130,5 +136,17 @@ private void LauncherUpdateInvoker_UpdateEvent(object sender, LauncherUpdateProp } }); } + + private void ChangeThemeSelection(object sender, SelectionChangedEventArgs e) + { + SetAppConfigValue("ThemeMode", Enum.GetName(typeof(AppThemeMode), (sender as RadioButtons).SelectedIndex)); + if (AppConfig.IsAppThemeNeedRestart) + AppThemeSelectionWarning.Visibility = Visibility.Visible; + + AppConfig.IsAppThemeNeedRestart = true; + } + + private void ChangeDownloadThreadsValue(NumberBox sender, NumberBoxValueChangedEventArgs args) => SetAppConfigValue("DownloadThread", double.IsNaN(sender.Value) ? 8 : sender.Value); + private void ChangeExtractThreadsValue(NumberBox sender, NumberBoxValueChangedEventArgs args) => SetAppConfigValue("ExtractionThread", double.IsNaN(sender.Value) ? 0 : sender.Value); } } diff --git a/Hi3HelperCore/Classes/Shared/ClassStruct/StructsEnums.cs b/Hi3HelperCore/Classes/Shared/ClassStruct/StructsEnums.cs index fd4bd63e5..a36aff270 100644 --- a/Hi3HelperCore/Classes/Shared/ClassStruct/StructsEnums.cs +++ b/Hi3HelperCore/Classes/Shared/ClassStruct/StructsEnums.cs @@ -14,6 +14,13 @@ public struct AppIniStruct public string ProfilePath; } + public enum AppThemeMode + { + Default = 0, + Light = 1, + Dark = 2, + } + public enum GameInstallStateEnum { Installed = 0, diff --git a/Hi3HelperCore/Classes/Shared/Region/Config/LauncherConfig.cs b/Hi3HelperCore/Classes/Shared/Region/Config/LauncherConfig.cs index 680c7ff4d..375ab0f7a 100644 --- a/Hi3HelperCore/Classes/Shared/Region/Config/LauncherConfig.cs +++ b/Hi3HelperCore/Classes/Shared/Region/Config/LauncherConfig.cs @@ -81,6 +81,16 @@ public static void LoadAppPreset() InitConsoleSetting(); InitUpdateSettings(); + InitMiscSettings(); + } + + public static void InitMiscSettings() + { + if (GetAppConfigValue("ThemeMode").ToString() == null) + { + SetAppConfigValue("ThemeMode", Enum.GetName(typeof(AppThemeMode), 0)); + SaveAppConfig(); + } } public static void InitUpdateSettings() @@ -106,6 +116,7 @@ public static void InitConsoleSetting() HideConsoleWindow(); } + public static int GetAppExtractConfigValue() => GetAppConfigValue("ExtractionThread").ToInt() == 0 ? Environment.ProcessorCount : GetAppConfigValue("ExtractionThread").ToInt(); public static IniValue GetAppConfigValue(string key) => appIni.Profile[SectionName][key]; public static void SetAppConfigValue(string key, object? value) { @@ -125,6 +136,7 @@ static void BuildAppIniProfile() { "CurrentRegion", new IniValue(0) }, { "CurrentBackground", new IniValue("/Assets/BG/default.png") }, { "DownloadThread", new IniValue(8) }, + { "ExtractionThread", new IniValue(0) }, { "GameFolder", new IniValue(AppGameFolder) }, #if DEBUG { "EnableConsole", new IniValue(true) }, @@ -132,6 +144,7 @@ static void BuildAppIniProfile() { "EnableConsole", new IniValue(false) }, #endif { "DontAskUpdate", new IniValue(false) }, + { "ThemeMode", new IniValue(AppThemeMode.Default) }, }); SaveAppConfig(); diff --git a/InstallerProp/DeployInstaller.iss b/InstallerProp/DeployInstaller.iss new file mode 100644 index 000000000..09febd232 --- /dev/null +++ b/InstallerProp/DeployInstaller.iss @@ -0,0 +1,115 @@ +; Script generated by the Inno Script Studio Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +[Setup] +AppName=Collapse Launcher +AppVersion=1.0.12.0 +AppCopyright=2022 - neon-nyan +AppPublisher=neon-nyan +VersionInfoVersion=1.0.12.0 +VersionInfoCompany=neon-nyan +VersionInfoDescription=Collapse Launcher - An advanced launcher for Honkai Impact 3rd +VersionInfoCopyright=2022 - neon-nyan +VersionInfoProductName=Collapse Launcher +VersionInfoProductVersion=1.0.12.0 +VersionInfoProductTextVersion=1.0.12.0-preview +SolidCompression=True +Compression=lzma2/ultra64 +InternalCompressLevel=ultra64 +MinVersion=0,10.0.17763 +DefaultDirName={autopf64}\Collapse Launcher\ +DefaultGroupName=Collapse Launcher +UninstallDisplayName=Collapse Launcher +UninstallDisplayIcon={app}\CollapseLauncher.exe +WizardStyle=modern +WizardImageFile=..\InstallerProp\WizardBannerDesign.bmp +WizardSmallImageFile=..\InstallerProp\WizardBannerDesignSmall.bmp +DisableWelcomePage=False +ArchitecturesInstallIn64BitMode=x64 +LicenseFile=..\LICENSE + +[Files] +Source: "..\build\prequesties\Install.bat"; DestDir: "{app}\prequesties"; Flags: ignoreversion +Source: "..\build\prequesties\WindowsAppSDK-Installer-x64\InstallRuntime.ps1"; DestDir: "{app}\prequesties\WindowsAppSDK-Installer-x64"; Flags: ignoreversion +Source: "..\build\prequesties\WindowsAppSDK-Installer-x64\RemoveRuntime.ps1"; DestDir: "{app}\prequesties\WindowsAppSDK-Installer-x64"; Flags: ignoreversion +Source: "..\build\prequesties\WindowsAppSDK-Installer-x64\win10-x64\Microsoft.WindowsAppRuntime.1.1-preview2.msix"; DestDir: "{app}\prequesties\WindowsAppSDK-Installer-x64\win10-x64"; Flags: ignoreversion +Source: "..\build\prequesties\WindowsAppSDK-Installer-x64\win10-x64\Microsoft.WindowsAppRuntime.DDLM.1.1-preview2.msix"; DestDir: "{app}\prequesties\WindowsAppSDK-Installer-x64\win10-x64"; Flags: ignoreversion +Source: "..\build\prequesties\WindowsAppSDK-Installer-x64\win10-x64\Microsoft.WindowsAppRuntime.Main.1.1-preview2.msix"; DestDir: "{app}\prequesties\WindowsAppSDK-Installer-x64\win10-x64"; Flags: ignoreversion +Source: "..\build\prequesties\WindowsAppSDK-Installer-x64\win10-x64\Microsoft.WindowsAppRuntime.Singleton.1.1-preview2.msix"; DestDir: "{app}\prequesties\WindowsAppSDK-Installer-x64\win10-x64"; Flags: ignoreversion +Source: "..\build\prequesties\WindowsAppSDK-Installer-x64\win10-x64\MSIX.inventory"; DestDir: "{app}\prequesties\WindowsAppSDK-Installer-x64\win10-x64"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Aiursoft.HSharp.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.deps.json"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.Invoker.deps.json"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.Invoker.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.Invoker.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.Invoker.runtimeconfig.json"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.pdb"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.runtimeconfig.json"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CollapseLauncher.Updater.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\ColorCode.Core.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\ColorCode.WinUI.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\ColorThief.Netstandard.v20.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.Common.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.Controls.Core.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.Controls.DataGrid.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.Controls.Input.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.Controls.Layout.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.Controls.Markdown.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.Controls.Media.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.Controls.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\CommunityToolkit.WinUI.UI.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Crc32.NET.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Google.Protobuf.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Hi3HelperCore.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Hi3HelperCore.pdb"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Graphics.Canvas.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Graphics.Canvas.Interop.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.InteractiveExperiences.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Win32.SystemEvents.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.ApplicationModel.Resources.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.AppLifecycle.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.AppNotifications.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.PushNotifications.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.SDK.NET.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.System.Power.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.Windows.System.Projection.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.WindowsAppRuntime.Bootstrap.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.WindowsAppRuntime.Bootstrap.Net.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Microsoft.WinUI.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\PInvoke.Kernel32.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\PInvoke.User32.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\PInvoke.Windows.Core.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\PInvoke.Windows.ShellScalingApi.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\resources.pri"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\SharpCompress.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\System.Drawing.Common.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Validation.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\WinRT.Runtime.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Lib\7z.dll"; DestDir: "{app}\Lib"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Lib\HPatchZ.dll"; DestDir: "{app}\Lib"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Assets\ironmaiden_logo_256.png"; DestDir: "{app}\Assets"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Assets\BG\AiHappy.png"; DestDir: "{app}\Assets\BG"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\Assets\BG\default.png"; DestDir: "{app}\Assets\BG"; Flags: ignoreversion +Source: "..\..\CollapseLauncher-ReleaseRepo\preview\config\fileconfig.json"; DestDir: "{app}\config"; Flags: ignoreversion + +[Icons] +Name: "{group}\Collapse Launcher\Collapse Launcher"; Filename: "{app}\CollapseLauncher.exe"; WorkingDir: "{app}"; IconFilename: "{app}\CollapseLauncher.exe"; IconIndex: 0 +Name: "{userdesktop}\Collapse Launcher"; Filename: "{app}\CollapseLauncher.exe"; WorkingDir: "{app}"; IconFilename: "{app}\CollapseLauncher.exe"; IconIndex: 0 + +[PreCompile] +Name: "{app}\prequesties" +Name: "{app}\prequesties\WindowsAppSDK-Installer-x64" + +Name: "{app}\Lib" +Name: "{app}\Assets" +Name: "{app}\Assets\BG" +Name: "{app}\config" + +[Run] +Filename: "{app}\prequesties\Install.bat"; Description: "Install Prequesties (Mandatory)" diff --git a/InstallerProp/WizardBannerDesign.bmp b/InstallerProp/WizardBannerDesign.bmp new file mode 100644 index 000000000..e1c9cad85 Binary files /dev/null and b/InstallerProp/WizardBannerDesign.bmp differ diff --git a/InstallerProp/WizardBannerDesign.png b/InstallerProp/WizardBannerDesign.png new file mode 100644 index 000000000..3adbd129e Binary files /dev/null and b/InstallerProp/WizardBannerDesign.png differ diff --git a/InstallerProp/WizardBannerDesignSmall.bmp b/InstallerProp/WizardBannerDesignSmall.bmp new file mode 100644 index 000000000..b3fefdeeb Binary files /dev/null and b/InstallerProp/WizardBannerDesignSmall.bmp differ diff --git a/InstallerProp/WizardBannerDesignSmall.png b/InstallerProp/WizardBannerDesignSmall.png new file mode 100644 index 000000000..999da743e Binary files /dev/null and b/InstallerProp/WizardBannerDesignSmall.png differ