From c43da863642226a41db3ba4a4af706f583ddfb47 Mon Sep 17 00:00:00 2001 From: 1415ddfer <1783488228@qq.com> Date: Mon, 11 Mar 2024 10:57:12 +0800 Subject: [PATCH] syanc --- App.xaml.cs | 22 ++++++------ MainWindow.xaml.cs | 8 ++--- Manager/CloundMananger.cs | 6 ++-- Manager/EngineManager.cs | 25 +++++++++----- Manager/UpDateManager.cs | 63 ++++------------------------------ Manager/WebApiManager.cs | 2 +- StaticUpdatePath.cs | 9 +++++ controls/MemberControl.xaml.cs | 9 ++--- dialog/DialogHelper.cs | 8 ++--- dialog/DownloadControl.xaml.cs | 6 ++-- util/Download.cs | 9 ----- util/SpaceEncoder.cs | 1 + 12 files changed, 64 insertions(+), 104 deletions(-) create mode 100644 StaticUpdatePath.cs delete mode 100644 util/Download.cs diff --git a/App.xaml.cs b/App.xaml.cs index f56410c..3326dfd 100644 --- a/App.xaml.cs +++ b/App.xaml.cs @@ -11,20 +11,18 @@ namespace Zerolauncher protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); - - var a = CloundMananger.TakeQMessage(); - a.Wait(); - UpDateManager.DoCheckUpdate(); - if (DownloadTask.state) + Task.Run(async () => { + await CloundMananger.TakeQMessage(); + UpDateManager.DoCheckUpdate(); + if (DownloadTask.state) + { - }else - { - DataStream.Load(); - _ = WebApiManager.StartListener(); - AccountManager.initLoadData(); - } - } + } + }); + DataStream.Load(); + _ = WebApiManager.StartListener(); + AccountManager.initLoadData(); } protected override void OnExit(ExitEventArgs e) { diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 4a6db47..906b13f 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -104,22 +104,22 @@ namespace Zerolauncher private void addMemberItem_Click(object sender, RoutedEventArgs e) { - EditMemberDialog.CreateDailog(this, null); + EditMemberDialog.CreateDailog(null); } private void addMembersItem_Click(object sender, RoutedEventArgs e) { - AddMemebersDialog.CreateDailog(this); + AddMemebersDialog.CreateDailog(); } private void addTeamItem_Click(object sender, RoutedEventArgs e) { - EditTeamDialog.CreateDailog(this); + EditTeamDialog.CreateDailog(); } private void editTeamItem_Click(object sender, RoutedEventArgs e) { - EditTeamDialog.CreateDailog(this, AccountManager.teamName); + EditTeamDialog.CreateDailog(AccountManager.teamName); } private void Button_Click(object sender, RoutedEventArgs e) diff --git a/Manager/CloundMananger.cs b/Manager/CloundMananger.cs index a226679..0e0318a 100644 --- a/Manager/CloundMananger.cs +++ b/Manager/CloundMananger.cs @@ -15,6 +15,7 @@ namespace Zerolauncher.Manager class UpDateData { + public static bool is_check = false; public static bool state = false; public static string version = ""; public static string tis = ""; @@ -46,6 +47,7 @@ namespace Zerolauncher.Manager { CacheSha.errorCode = 2; } + UpDateData.is_check = true; } static bool FormatMessage(string message) @@ -68,8 +70,8 @@ namespace Zerolauncher.Manager { if (sha0.Length < 90) return false; int count; - var sha = SpaceEncoder.Decode(sha0[..86], out count); - if (sha == null) + var sha = SpaceEncoder.Decode(sha0, out count); + if (sha == null || sha.Length < 64) { //Console.WriteLine($"faile: {count}"); return false; diff --git a/Manager/EngineManager.cs b/Manager/EngineManager.cs index 166cdbd..b021cb2 100644 --- a/Manager/EngineManager.cs +++ b/Manager/EngineManager.cs @@ -1,6 +1,4 @@ using System.Diagnostics; -using System.IO; -using System.Security.Cryptography; using System.Windows; using Zerolauncher.Defender; @@ -17,9 +15,19 @@ namespace Zerolauncher.Manager return string.Format("{0}{1}{2}", account.providerId, account.serverId, account.userName); } - public static bool CreateGame(Account account) + public static bool CreateGame(Account account, out bool showDialog) { - + showDialog = false; + if (UpDateData.is_check == false) + { + MessageBox.Show("正在更新数据,请等待1-3秒。\n 请检查网络", "错误", MessageBoxButton.OKCancel, MessageBoxImage.Warning); + return true; + } + if (UpDateData.state) + { + showDialog = true; + return true; + } var key = AccToKey(account); if (mGame.ContainsKey(key)) { return false; } if (CacheSha.errorCode != 0) { @@ -35,22 +43,21 @@ namespace Zerolauncher.Manager MessageBox.Show("发生未知错误==EMS。\n 请联系管理员", "错误", MessageBoxButton.OKCancel, MessageBoxImage.Error); break; } - return false; + return true; } try { mGame[key] = new SingleGame(account); }catch (Exception _ex) { - MessageBox.Show("发生错误!\n如重复发生此错误,\n请重新下载登陆器文件或联系管理员。", "错误", MessageBoxButton.OKCancel, MessageBoxImage.Error); - return false; + MessageBox.Show("发生错误!\n如重复发生此错误,\n请重新下载大厅文件或联系管理员。", "错误", MessageBoxButton.OKCancel, MessageBoxImage.Error); } return true; } - public static bool CreateGame(int memberId) + public static bool CreateGame(int memberId, out bool showDialog) { - return CreateGame(AccountManager.accountsList[memberId]); + return CreateGame(AccountManager.accountsList[memberId], out showDialog); } public static int CheckGameState(Account account) diff --git a/Manager/UpDateManager.cs b/Manager/UpDateManager.cs index 6c75e34..437accb 100644 --- a/Manager/UpDateManager.cs +++ b/Manager/UpDateManager.cs @@ -1,6 +1,6 @@ using System.Diagnostics; using System.IO; -using System.Net; +using System.IO.Compression; using System.Security.Cryptography; using Zerolauncher.Defender; @@ -15,7 +15,8 @@ namespace Zerolauncher.Manager class UpDateManager { - public static bool isCheeking = false; + const string cache_file = "cache.zip"; + static bool isCheeking = false; public static void DoCheckUpdate(bool checkMain=true, bool needEngine = false) { @@ -56,62 +57,10 @@ namespace Zerolauncher.Manager isCheeking = false; } - public static void DownLoad(string Url, string FileName, bool has) + public static void OnDownLoadDone() { - bool Value = false; - WebResponse response = null; - Stream stream = null; - - try - { - HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); - - response = request.GetResponse(); - stream = response.GetResponseStream(); - - if (!response.ContentType.ToLower().StartsWith("text/")) - { - Value = SaveBinaryFile(response, FileName); - - } - - } - catch (Exception err) - { - string aa = err.ToString(); - } - - } - - private static bool SaveBinaryFile(WebResponse response, string FileName) - { - bool Value = true; - byte[] buffer = new byte[1024]; - - try - { - if (File.Exists(FileName)) - File.Delete(FileName); - Stream outStream = File.Create(FileName); - Stream inStream = response.GetResponseStream(); - - int l; - do - { - l = inStream.Read(buffer, 0, buffer.Length); - if (l > 0) - outStream.Write(buffer, 0, l); - } - while (l > 0); - - outStream.Close(); - inStream.Close(); - } - catch - { - Value = false; - } - return Value; + ZipFile.ExtractToDirectory(cache_file, "."); + Process.Start("./upacket.bin"); } } diff --git a/Manager/WebApiManager.cs b/Manager/WebApiManager.cs index c4b9703..b0e633f 100644 --- a/Manager/WebApiManager.cs +++ b/Manager/WebApiManager.cs @@ -80,7 +80,7 @@ namespace Zerolauncher.Manager break; case "/LoginGame": { - if (EngineManager.CreateGame(acc)) + if (EngineManager.CreateGame(acc, out _)) { rb = new ResponesBody(0, 0, $"Account [{nick}] successful to start."); } diff --git a/StaticUpdatePath.cs b/StaticUpdatePath.cs new file mode 100644 index 0000000..b29577c --- /dev/null +++ b/StaticUpdatePath.cs @@ -0,0 +1,9 @@ +namespace Zerolauncher +{ + class StaticUpdatePath + { + public const string cache_patch = "./.cache/"; + public const string cache_file = "cache.zip"; + public const string extract_file = "./.cache/un/"; + } +} diff --git a/controls/MemberControl.xaml.cs b/controls/MemberControl.xaml.cs index 53d7141..641eb80 100644 --- a/controls/MemberControl.xaml.cs +++ b/controls/MemberControl.xaml.cs @@ -35,8 +35,9 @@ namespace Zerolauncher.controls if (!isMouseDown) return; RenderTransform = new TranslateTransform(0, 0); if (e.ChangedButton == MouseButton.Right) return; - if (!EngineManager.CreateGame(memberId)) MessageBox.Show("账号已启动!请勿重复启动", "提示"); - + bool needDialog; + if (!EngineManager.CreateGame(memberId, out needDialog)) MessageBox.Show("账号已启动!请勿重复启动", "提示"); + if (needDialog) UpdateDialog.CreateDailog(); }; // 鼠标离开事件 @@ -107,8 +108,8 @@ namespace Zerolauncher.controls private void editItem_Click(object sender, RoutedEventArgs e) { - Trace.WriteLine("edit member " + memberId.ToString()); - EditMemberDialog.CreateDailog(MainWindow.Instance, memberId); + //Trace.WriteLine("edit member " + memberId.ToString()); + EditMemberDialog.CreateDailog(memberId); } } } diff --git a/dialog/DialogHelper.cs b/dialog/DialogHelper.cs index fa6ac2f..2c60a90 100644 --- a/dialog/DialogHelper.cs +++ b/dialog/DialogHelper.cs @@ -9,7 +9,7 @@ namespace Zerolauncher.dialog public static int? member; - public static void CreateDailog(Window p, int? memberId) + public static void CreateDailog(int? memberId) { if (editControl != null || baseDialog != null) { @@ -40,7 +40,7 @@ namespace Zerolauncher.dialog static EditTeamControl? editControl; - public static bool CreateDailog(Window p, string? oldTeamName=null) + public static bool CreateDailog(string? oldTeamName=null) { if (editControl != null || baseDialog != null) { @@ -77,7 +77,7 @@ namespace Zerolauncher.dialog static BaseDialog? baseDialog; static UseAccDataTextAdd? editControl; - public static void CreateDailog(Window p) + public static void CreateDailog() { if (editControl != null || baseDialog != null) { @@ -106,7 +106,7 @@ namespace Zerolauncher.dialog public static DownloadControl1? editControl; public static bool ui_enale = false; - public static void CreateDailog(Window p) + public static void CreateDailog() { if (editControl != null || baseDialog != null) { diff --git a/dialog/DownloadControl.xaml.cs b/dialog/DownloadControl.xaml.cs index a66da98..da9b87d 100644 --- a/dialog/DownloadControl.xaml.cs +++ b/dialog/DownloadControl.xaml.cs @@ -44,7 +44,10 @@ namespace Zerolauncher.dialog private static void OnDownloadFileCompleted(object? sender, AsyncCompletedEventArgs e) { - + if (UpdateDialog.ui_enale) + { + UpdateDialog.Close(); + } } private static void OnDownloadProgressChanged(object? sender, DownloadProgressChangedEventArgs e) @@ -54,7 +57,6 @@ namespace Zerolauncher.dialog UpdateDialog.editControl.pbDown.Value = e.ProgressPercentage; UpdateDialog.editControl.text2.Text = $"{e.AverageBytesPerSecondSpeed}"; } - throw new NotImplementedException(); } private static void OnDownloadStarted(object? sender, DownloadStartedEventArgs e) diff --git a/util/Download.cs b/util/Download.cs deleted file mode 100644 index b1cdcab..0000000 --- a/util/Download.cs +++ /dev/null @@ -1,9 +0,0 @@ - - -namespace Zerolauncher.util -{ - class Download - { - - } -} diff --git a/util/SpaceEncoder.cs b/util/SpaceEncoder.cs index f1c7bb6..c76d7a1 100644 --- a/util/SpaceEncoder.cs +++ b/util/SpaceEncoder.cs @@ -51,6 +51,7 @@ namespace Zerolauncher.util counter = 0; foreach (char c in hex) { + if (sb.Length == 64) break; counter++; if (!map.Contains(c)) return null; if (c != map[11])