From c155980947b1f2e9762c3e604e8fc4b3ec0fffb7 Mon Sep 17 00:00:00 2001
From: muqing <1966944300@qq.com>
Date: Fri, 16 Aug 2024 18:09:19 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E5=86=8C=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
RustTools/ApiFox/user.cs | 59 +++++++-
RustTools/README.md | 33 ++---
RustTools/Themes/LoginPage.xaml | 2 +-
RustTools/Themes/LoginPage.xaml.cs | 189 +++++++++++++++++-------
RustTools/ViewModels/ModuleViewModel.cs | 38 +----
RustTools/Views/ModulePage.xaml | 3 +-
RustTools/Views/ModulePage.xaml.cs | 71 ++++++++-
RustTools/muqing/gj.cs | 18 +--
8 files changed, 270 insertions(+), 143 deletions(-)
diff --git a/RustTools/ApiFox/user.cs b/RustTools/ApiFox/user.cs
index 86a1d2f..279deca 100644
--- a/RustTools/ApiFox/user.cs
+++ b/RustTools/ApiFox/user.cs
@@ -1,15 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Principal;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using RustTools.muqing;
+using RustTools.Views;
namespace RustTools.ApiFox;
+#pragma warning disable CS8981 // 该类型名称仅包含小写 ascii 字符。此类名称可能会成为该语言的保留值。
+#pragma warning disable IDE1006 // 命名样式
public class user
{
+ ///
+ /// 登陆
+ ///
+ ///
+ ///
+ ///
public static async Task loginPc(string account, string passWord)
{
var pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
@@ -17,20 +27,57 @@ public class user
//gj.sc(account + " " + v); //这里不知道为什么会出现 True 而不是 true 导致识别邮箱失败
var task = await wl.postAsync("/php/user.php?action=loginPc", new string[][]
{
- new string[]{ "account",account},
- new string[]{ "passWord", passWord },
- new string[]{ "isEmail", v.ToString().ToLower() }
+ new[]{ "account",account},
+ new[]{ "passWord", passWord },
+ new[]{ "isEmail", v.ToString().ToLower() }
});
return task;
}
+
+ ///
+ /// 获取信息
+ ///
+ ///
+ ///
public static async Task SpaceInfo(string account)
{
- var pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
- var v = Regex.IsMatch(account, pattern);
var task = await wl.postAsync("/php/user.php?action=getSpaceInfo", new string[][]
{
- new string[]{ "account",account}
+ new[]{ "account",account}
});
return task;
}
+
+
+ ///
+ /// 注册
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task register(string account,string userName,string passWord,string email)
+ {
+ var task = await wl.postAsync("/php/user.php?action=register", new string[][]
+ {
+ new []{ "account",account},
+ new []{ "userName", userName },
+ new []{ "passWord", passWord },
+ new []{ "email", email },
+ new []{ "appID",gj.GetUUID()}
+ });
+ return task;
+ }
+
+ public static async Task enableAccount(string account, string key)
+ {
+ var task = await wl.postAsync("/php/user.php?action=enableAccount", new string[][]
+ {
+ new []{ "account",account},
+ new []{ "key", key }
+ });
+ return task;
+ }
+
}
diff --git a/RustTools/README.md b/RustTools/README.md
index 794c2ca..5f7171f 100644
--- a/RustTools/README.md
+++ b/RustTools/README.md
@@ -1,8 +1,11 @@
## 开始使用
-如果你的电脑是win10+可以使用Visual Studio或Visual Studio Code 来运行此源码。
+ Windows10系统版本以上
+ Visual Studio Code
+ Visual Studio
+ JetBrains Rider
## 发布和安装
-在VS 2022上面运行此源码后选择证书签名,打包后.msix文件点击运行,如果提示证书问题请双击.cer文件
+在Visual Studio上面运行此源码后选择证书签名,打包后.msix文件点击运行,如果提示证书问题请双击.cer文件
点击安装证书,储存位置选择本地计算机 选择自定义储存为 受信任的根证书颁发机构 下一步保存即可
## 注意事项
@@ -27,32 +30,16 @@ WinUI还是比较冷门的一个技术,代码和例子都不多 关于编译器
其实开发电脑版是作者对于铁锈的热爱开发的,请大家多多支持,开发不易。
## 反馈
+
我们目前没有写反馈的接口和功能 你可以加群 点击链接加入群聊【铁锈助手】:https://qm.qq.com/q/dUfOK04pj2 在此反馈
## 特别鸣谢 (参与项目开发)
-
-
-
+ height: 66px;" alt="薄荷"/>
+
## 开源协议
虽然没什么用但还是要写一写
diff --git a/RustTools/Themes/LoginPage.xaml b/RustTools/Themes/LoginPage.xaml
index 648c6dd..a2e4ee4 100644
--- a/RustTools/Themes/LoginPage.xaml
+++ b/RustTools/Themes/LoginPage.xaml
@@ -91,7 +91,7 @@
diff --git a/RustTools/Themes/LoginPage.xaml.cs b/RustTools/Themes/LoginPage.xaml.cs
index 5066121..6ba94a5 100644
--- a/RustTools/Themes/LoginPage.xaml.cs
+++ b/RustTools/Themes/LoginPage.xaml.cs
@@ -10,7 +10,7 @@ namespace RustTools.Themes;
public sealed partial class LoginPage : UserControl
{
public delegate void LoginSucceededEventHandler(object sender, string e);
- public event LoginSucceededEventHandler LoginSucceeded;
+ public event LoginSucceededEventHandler? LoginSucceeded;
public LoginPage()
{
InitializeComponent();
@@ -26,29 +26,12 @@ public sealed partial class LoginPage : UserControl
ZpasswordBox.PasswordChanged += ZPasswordBox_PasswordChanged;
ZpasswordyesBox.PasswordChanged += ZPasswordBox_PasswordChanged;
- }
+ ZaccountBox.Text = "muqing1";
+ ZnameBox.Text = "muqing153";
+ ZpasswordBox.Password = "123456";
+ ZpasswordBox.Password= "123456";
+ ZemialBox.Text="123456@qq.com";
- private void AgreementCheck_Checked(object sender, RoutedEventArgs e)
- {
- loginButton.IsEnabled = loginButtonIsEnabled;
- }
- private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
- {
- loginButton.IsEnabled = loginButtonIsEnabled;
- }
-
-
- private void ZAgreementCheck_Checked(object sender, RoutedEventArgs e)
- {
- ZenrollButton.IsEnabled = ZenrollButtonIsEnabled;
- }
- private void ZPasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
- {
- ZenrollButton.IsEnabled = ZenrollButtonIsEnabled;
- }
-
- private void AccountBox_TextChanged(object sender, TextChangedEventArgs e){
- loginButton.IsEnabled = loginButtonIsEnabled;
}
///
@@ -121,51 +104,153 @@ public sealed partial class LoginPage : UserControl
///
private async void login_Click(object sender, RoutedEventArgs e)
{
- var v = await user.loginPc(accountBox.Text, passwordBox.Password);
- var message = JsonConvert.DeserializeObject(v);
- if (message != null)
+ try
{
- if (message.code == 0)
+ Toast.IsOpen = false;
+ var v = await user.loginPc(accountBox.Text, passwordBox.Password);
+ var message = JsonConvert.DeserializeObject(v);
+ if (message != null)
{
- Toast.Title = "ʾ";
- Toast.Subtitle = message.message;
- Toast.IsOpen = true;
- if (message.data != null)
+ if (message.message.Equals("ȼ˻"))
{
- // ¼ɹ¼
- var iniHelper = new IniHelper();
- iniHelper.Load(IniHelper.FILE.User);
- iniHelper.SetValue(IniHelper.CODE.User, IniHelper.KEY.token, message.data.token);
- iniHelper.SetValue(IniHelper.CODE.User, IniHelper.KEY.account, message.data.account);
- iniHelper.Save();
- LoginSucceeded?.Invoke(this, message.data.account);
+ await enableAccountDialog(accountBox.Text);
+ return;
+ }
+ if (message.code == 0)
+ {
+ Toast.Title = "ʾ";
+ Toast.Subtitle = message.message;
+ Toast.IsOpen = true;
+ await Task.Delay(500);
+ Toast.IsOpen = false;
+ if (message.data != null)
+ {
+ // ¼ɹ¼
+ var iniHelper = new IniHelper();
+ iniHelper.Load(IniHelper.FILE.User);
+ iniHelper.SetValue(IniHelper.CODE.User, IniHelper.KEY.token, message.data.token);
+ iniHelper.SetValue(IniHelper.CODE.User, IniHelper.KEY.account, message.data.account);
+ iniHelper.Save();
+ LoginSucceeded?.Invoke(this, message.data.account);
+ }
+ }
+ else
+ {
+ Toast.Title = "";
+ Toast.Subtitle = message.message;
+ Toast.IsOpen = true;
}
}
- else
- {
- Toast.Title = "";
- Toast.Subtitle = message.message;
- Toast.IsOpen = true;
- }
+ gj.sc(v);
+ }
+ catch (Exception ex)
+ {
+ gj.sc(ex);
}
- gj.sc(v);
}
- public void login()
- {
-
- }
-
-
- private void ZenrollButton_Click(object sender, RoutedEventArgs e)
+ ///
+ /// ע
+ ///
+ ///
+ ///
+ public async void enroll_Button_Click(object sender, RoutedEventArgs e)
{
if (ZpasswordBox.Password != ZpasswordyesBox.Password)
{
Toast.Title = "";
Toast.Subtitle = "벻һ";
Toast.IsOpen = true;
+ await Task.Delay(1000);
+ Toast.IsOpen = false;
return;
}
+ try
+ {
+ var v = await user.register(ZaccountBox.Text, ZnameBox.Text, ZpasswordBox.Password, ZemialBox.Text);
+ gj.sc(v);
+ var message = JsonConvert.DeserializeObject(v);
+ if (message.code == 0)
+ {
+ Toast.Title = "ʾ";
+ Toast.Subtitle = message.message;
+ Toast.IsOpen = true;
+ CreateFadeTransitionStoryboard(enroll_view, login_view).Begin();
+ accountBox.Text=ZaccountBox.Text;
+ passwordBox.Password = ZpasswordBox.Password;
+ await enableAccountDialog(ZaccountBox.Text);
+ await Task.Delay(1000);
+ Toast.IsOpen = false;
+ }
+ }catch (Exception ex)
+ {
+ Toast.Title = "";
+ Toast.Subtitle = ex.Message;
+ Toast.IsOpen = true;
+ await Task.Delay(1000);
+ Toast.IsOpen = false;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task enableAccountDialog(string account)
+ {
+ var textBox = new TextBox()
+ {
+ PlaceholderText = "һ㶼䵱",
+ MaxLength=6,
+ };
+ var contentDialog = new ContentDialog()
+ {
+ XamlRoot = Content.XamlRoot,
+ Title ="",
+ Content =textBox,
+ PrimaryButtonText = "ȷ",
+ PrimaryButtonStyle= Application.Current.Resources["AccentButtonStyle"] as Style,
+ CloseButtonText = "ȡ"
+ };
+ var result =await contentDialog.ShowAsync();
+ if (result == ContentDialogResult.Primary)
+ {
+ gj.sc(textBox.Text);
+ var v = await user.enableAccount(account, textBox.Text);
+ var message = JsonConvert.DeserializeObject(v);
+ if (message != null)
+ {
+ Toast.Title = "ʾ";
+ Toast.Subtitle = message.message;
+ Toast.IsOpen = true;
+ await Task.Delay(1000);
+ Toast.IsOpen = false;
+ }
+ }
+ }
+
+ private void AgreementCheck_Checked(object sender, RoutedEventArgs e)
+ {
+ loginButton.IsEnabled = loginButtonIsEnabled;
+ }
+ private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
+ {
+ loginButton.IsEnabled = loginButtonIsEnabled;
+ }
+
+ private void ZAgreementCheck_Checked(object sender, RoutedEventArgs e)
+ {
+ ZenrollButton.IsEnabled = ZenrollButtonIsEnabled;
+ }
+ private void ZPasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
+ {
+ ZenrollButton.IsEnabled = ZenrollButtonIsEnabled;
+ }
+
+ private void AccountBox_TextChanged(object sender, TextChangedEventArgs e)
+ {
+ loginButton.IsEnabled = loginButtonIsEnabled;
}
}
diff --git a/RustTools/ViewModels/ModuleViewModel.cs b/RustTools/ViewModels/ModuleViewModel.cs
index 2493b1d..a3bbd88 100644
--- a/RustTools/ViewModels/ModuleViewModel.cs
+++ b/RustTools/ViewModels/ModuleViewModel.cs
@@ -41,41 +41,5 @@ public class ModuleViewModel : ObservableRecipient
}
}
- public async void Button_Rwmod(object sender, RoutedEventArgs e)
- {
-
- var menuItem = sender as MenuFlyoutItem;
- if (menuItem != null)
- {
- if (menuItem.DataContext is DataObject folderItem)
- {
- var filepath = Path.Combine(Path.GetDirectoryName(folderItem.Dri), folderItem.Name + ".rwmod");
- if (File.Exists(filepath))
- {
- var show = await new ContentDialog()
- {
- XamlRoot = menuItem.XamlRoot,
- Title = "警告",
- Content = "已经存在必须覆盖",
- PrimaryButtonText = "确定",
- SecondaryButtonText = "取消"
- }.ShowAsync();
- if (show == ContentDialogResult.Primary)
- {
- }
- else
- {
- return;
- }
- }
- // 压缩zip
- var v = wj.ZipExample(folderItem.Dri, folderItem.Name + ".rwmod");
- if (v != string.Empty)
- {
- ListMod.Remove(new DataObject(new FileInfo(filepath)));
- ListMod.Insert(0, new DataObject(new FileInfo(v)));
- }
- }
- }
- }
+
}
diff --git a/RustTools/Views/ModulePage.xaml b/RustTools/Views/ModulePage.xaml
index 76d2e37..d05abe0 100644
--- a/RustTools/Views/ModulePage.xaml
+++ b/RustTools/Views/ModulePage.xaml
@@ -7,6 +7,7 @@
xmlns:local="using:RustTools.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:themes="using:RustTools.Themes"
+ d:DataContext="{d:DesignInstance Type=local:ModulePage}"
mc:Ignorable="d">
@@ -55,7 +56,7 @@
-
+
diff --git a/RustTools/Views/ModulePage.xaml.cs b/RustTools/Views/ModulePage.xaml.cs
index 210eecf..298240c 100644
--- a/RustTools/Views/ModulePage.xaml.cs
+++ b/RustTools/Views/ModulePage.xaml.cs
@@ -82,13 +82,12 @@ public sealed partial class ModulePage : Page
InitializeComponent();
}
- //private void ShowMenu(bool isTransient, GridViewItem dataTemplate)
- //{
- // FlyoutShowOptions myOption = new FlyoutShowOptions();
- // myOption.ShowMode = isTransient ? FlyoutShowMode.Transient : FlyoutShowMode.Standard;
- // CommandBarFlyout1.ShowAt(dataTemplate, myOption);
- //}
+ ///
+ /// 打开模组
+ ///
+ ///
+ ///
private void Button_Click(object sender, RoutedEventArgs e)
{
var button = sender as Button;
@@ -104,6 +103,13 @@ public sealed partial class ModulePage : Page
}
}
}
+
+
+ ///
+ /// 删除模组和文件夹
+ ///
+ ///
+ ///
private void Button_Delete(object sender, RoutedEventArgs e)
{
var menuItem = sender as Control;
@@ -128,6 +134,12 @@ public sealed partial class ModulePage : Page
}
+
+ ///
+ /// 解压模组
+ ///
+ ///
+ ///
private async void Button_Click_RwmodItem(object sender, RoutedEventArgs e)
{
ContentDialog dialog = new ContentDialog();
@@ -146,7 +158,7 @@ public sealed partial class ModulePage : Page
var container = VisualTreeHelper.GetParent(button) as FrameworkElement;
if (container != null && container.DataContext is DataObject dataItem)
{
- CheckBox checkbox = (dialog.Content as StackPanel)?.Children[1] as CheckBox;
+ var checkbox = (dialog.Content as StackPanel)?.Children[1] as CheckBox;
if (checkbox.IsChecked == true)
{
File.Delete(dataItem.Dri);
@@ -183,13 +195,56 @@ public sealed partial class ModulePage : Page
{
Text = "解压模组到目录",
};
-
var stackPanel = new StackPanel();
stackPanel.Children.Add(text);
stackPanel.Children.Add(checkbox);
return stackPanel;
}
+
+ ///
+ /// 打包模组
+ ///
+ ///
+ ///
+ public async void Button_Rwmod(object sender, RoutedEventArgs e)
+ {
+
+ var menuItem = sender as MenuFlyoutItem;
+ if (menuItem != null)
+ {
+ if (menuItem.DataContext is DataObject folderItem)
+ {
+ var filepath = Path.Combine(Path.GetDirectoryName(folderItem.Dri), folderItem.Name + ".rwmod");
+ if (File.Exists(filepath))
+ {
+ var show = await new ContentDialog()
+ {
+ XamlRoot = menuItem.XamlRoot,
+ Title = "警告",
+ Content = "已经存在必须覆盖",
+ PrimaryButtonText = "确定",
+ SecondaryButtonText = "取消"
+ }.ShowAsync();
+ if (show == ContentDialogResult.Primary)
+ {
+ }
+ else
+ {
+ return;
+ }
+ }
+ // 压缩zip
+ var v = wj.ZipExample(folderItem.Dri, folderItem.Name + ".rwmod");
+ if (v != string.Empty)
+ {
+ ViewModel.ListMod.Remove(new DataObject(new FileInfo(filepath)));
+ ViewModel.ListMod.Insert(0, new DataObject(new FileInfo(v)));
+ }
+ }
+ }
+ }
+
}
public class MyItemTemplateSelector : DataTemplateSelector
{
diff --git a/RustTools/muqing/gj.cs b/RustTools/muqing/gj.cs
index 61b4277..36cafb9 100644
--- a/RustTools/muqing/gj.cs
+++ b/RustTools/muqing/gj.cs
@@ -24,27 +24,15 @@ public class gj
public static string GetUUID()
{
- try
- {
- using var searcher = new ManagementObjectSearcher("select UUID from Win32_ComputerSystemProduct");
- foreach (var obj in searcher.Get().Cast())
- {
- return obj["UUID"] != null ? (string)obj["UUID"] : "";
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine($"An error occurred while retrieving the UUID: {ex.Message}");
- }
-
- return string.Empty;
+ var newGuid = Guid.NewGuid();
+ return newGuid.ToString();
}
///
/// 设置window窗口适配器 主题颜色
///
- public static async void SetBackTheme(WindowEx windowEx)
+ public static void SetBackTheme(WindowEx windowEx)
{
var iniHelper = new IniHelper();
iniHelper.Load(IniHelper.FILE.Config);