using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Library.Common.Event;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Library.Exception;
using Milimoe.FunGame.Desktop.Controller;
using Milimoe.FunGame.Desktop.Library;
using Milimoe.FunGame.Desktop.Library.Base;
using Milimoe.FunGame.Desktop.Library.Component;
namespace Milimoe.FunGame.Desktop.UI
{
public partial class Register : BaseReg
{
public bool CheckReg { get; set; } = false;
public RegisterEventArgs EventArgs { get; set; } = new RegisterEventArgs();
private readonly RegisterController RegController;
public Register()
{
InitializeComponent();
RegController = new RegisterController(this);
}
protected override void BindEvent()
{
base.BindEvent();
Disposed += Register_Disposed;
SucceedReg += SucceedRegEvent;
}
private void Register_Disposed(object? sender, EventArgs e)
{
RegController.Dispose();
}
private bool Reg_Handler()
{
try
{
string username = UsernameText.Text.Trim();
string password = PasswordText.Text.Trim();
string checkpassword = CheckPasswordText.Text.Trim();
string email = EmailText.Text.Trim();
if (username != "")
{
if (NetworkUtility.IsUserName(username))
{
int length = NetworkUtility.GetUserNameLength(username);
if (length >= 3 && length <= 12) // 字节范围 3~12
{
if (password != checkpassword)
{
ShowMessage.ErrorMessage("两个密码不相同,请重新输入!");
CheckPasswordText.Focus();
return false;
}
}
else
{
ShowMessage.ErrorMessage("账号名长度不符合要求:最多6个中文字符或12个英文字符");
UsernameText.Focus();
return false;
}
}
else
{
ShowMessage.ErrorMessage("账号名不符合要求:不能包含特殊字符");
UsernameText.Focus();
return false;
}
}
if (password != "")
{
int length = password.Length;
if (length < 6 || length > 15) // 字节范围 3~12
{
ShowMessage.ErrorMessage("密码长度不符合要求:6~15个字符数");
PasswordText.Focus();
return false;
}
}
if (username == "" || password == "" || checkpassword == "")
{
ShowMessage.ErrorMessage("请将账号和密码填写完整!");
UsernameText.Focus();
return false;
}
if (email == "")
{
ShowMessage.ErrorMessage("邮箱不能为空!");
EmailText.Focus();
return false;
}
if (!NetworkUtility.IsEmail(email))
{
ShowMessage.ErrorMessage("这不是一个邮箱地址!");
EmailText.Focus();
return false;
}
EventArgs = new RegisterEventArgs(username, password, email);
if (!RegController.Reg(username, email))
{
ShowMessage.Message("注册失败!", "注册失败");
return false;
}
}
catch (Exception e)
{
RunTime.WritelnSystemInfo(e.GetErrorInfo());
return false;
}
return true;
}
public void UpdateUI(RegInvokeType type)
{
try
{
void Action()
{
switch (type)
{
case RegInvokeType.InputVerifyCode:
string username = UsernameText.Text.Trim();
string password = PasswordText.Text.Trim();
string email = EmailText.Text.Trim();
string verifycode = ShowMessage.InputMessageCancel("请输入注册邮件中的6位数字验证码", "注册验证码", out MessageResult cancel);
if (cancel != MessageResult.Cancel) RegController.CheckReg(username, password, email, verifycode);
else RegButton.Enabled = true;
break;
case RegInvokeType.DuplicateUserName:
ShowMessage.WarningMessage("此账号名已被注册,请使用其他账号名。");
RegButton.Enabled = true;
break;
case RegInvokeType.DuplicateEmail:
ShowMessage.WarningMessage("此邮箱已被使用,请使用其他邮箱注册。");
RegButton.Enabled = true;
break;
}
};
if (!IsDisposed)
{
if (InvokeRequired) Invoke(Action);
else Action();
}
}
catch (Exception e)
{
RunTime.WritelnSystemInfo(e.GetErrorInfo());
}
}
///
/// 关闭窗口
///
///
///
private void ExitButton_Click(object sender, EventArgs e)
{
Dispose();
}
private EventResult SucceedRegEvent(object sender, GeneralEventArgs e)
{
string username = ((RegisterEventArgs)e).Username;
string password = ((RegisterEventArgs)e).Password;
RunTime.Connector?.AutoLogin(username, password);
return EventResult.Success;
}
private void RegButton_Click(object sender, EventArgs e)
{
RegButton.Enabled = false;
if (!Reg_Handler()) RegButton.Enabled = true;
}
private void GoToLogin_Click(object sender, EventArgs e)
{
Dispose();
}
}
}