milimoe 7061996177
修改架构 第二部分 (#16)
* 移除多余实现

* 修改方法名

* 更新连接服务器的逻辑

* 添加异常处理

* 修改架构之Login

* 修复IntoRoom Bug

* 修复ForceLogOut Bug

* 修复LogOut Bug

* 修复CreateRoom QuitRoom IntoRoom

* 断开连接后,应该关闭Socket连接

* 修复Reg Main Bug
2023-09-12 00:23:35 +08:00

93 lines
4.0 KiB
C#

using Milimoe.FunGame.Core.Api.Transmittal;
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.Library.Component;
using Milimoe.FunGame.Desktop.Model;
using Milimoe.FunGame.Desktop.UI;
namespace Milimoe.FunGame.Desktop.Controller
{
public class RegisterController
{
private readonly Register Register;
public RegisterController(Register reg)
{
Register = reg;
}
public async Task<bool> RegAsync(string username = "", string password = "", string email = "")
{
bool result = false;
try
{
password = password.Encrypt(username);
RegisterEventArgs RegEventArgs = new(username, password, email);
if (Register.OnBeforeRegEvent(RegEventArgs) == EventResult.Fail) return false;
DataRequest request = RunTime.NewLongRunningDataRequest(DataRequestType.Reg_GetRegVerifyCode);
request.AddRequestData("username", username);
request.AddRequestData("password", password);
request.AddRequestData("email", email);
request.AddRequestData("verifycode", "");
await request.SendRequestAsync();
if (request.Result == RequestResult.Success)
{
RegInvokeType InvokeType = request.GetResult<RegInvokeType>("type");
switch (InvokeType)
{
case RegInvokeType.InputVerifyCode:
{
while (true)
{
string verifycode = ShowMessage.InputMessageCancel("请输入注册邮件中的6位数字验证码", "注册验证码", out MessageResult cancel);
if (cancel != MessageResult.Cancel)
{
request.AddRequestData("verifycode", verifycode);
await request.SendRequestAsync();
if (request.Result == RequestResult.Success)
{
result = request.GetResult<bool>("success");
string msg = request.GetResult<string>("msg") ?? "";
if (msg != "") ShowMessage.Message(msg, "注册结果");
}
}
else break;
}
break;
}
case RegInvokeType.DuplicateUserName:
{
result = request.GetResult<bool>("success");
string msg = request.GetResult<string>("msg") ?? "";
ShowMessage.Message(msg, "注册结果");
break;
}
case RegInvokeType.DuplicateEmail:
{
result = request.GetResult<bool>("success");
string msg = request.GetResult<string>("msg") ?? "";
ShowMessage.Message(msg, "注册结果");
break;
}
}
}
request.Dispose();
if (result) Register.OnSucceedRegEvent(RegEventArgs);
else Register.OnFailedRegEvent(RegEventArgs);
Register.OnAfterRegEvent(RegEventArgs);
}
catch (Exception e)
{
RunTime.WritelnSystemInfo(e.GetErrorInfo());
}
return result;
}
}
}