Frame/Assets/Scripts/UI/UILogic/InputNameUI.cs

118 lines
4.5 KiB
C#
Raw Normal View History

using System;
using Cysharp.Threading.Tasks;
using Newtonsoft.Json;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
namespace Game
{
[UIType(UIType.InputNameUI)]
public class InputNameUI : UIBase
{
private TMP_InputField _inpUserName;
private TMP_InputField _inputUserPassword;
private Button _button;
private UserLoginData _userData;
private bool isLogining;
public override void Init()
{
base.Init();
this._inpUserName = self.transform.FindChildDeep<TMP_InputField>("inp_Name");
this._inputUserPassword = self.transform.FindChildDeep<TMP_InputField>("inp_Password");
this._button = self.transform.FindChildDeep<Button>("btn_Sure");
this._button.onClick.AddListener(ClickSureButton);
this.isLogining = false;
}
public override void Dispose()
{
base.Dispose();
this._button.onClick.RemoveListener(ClickSureButton);
}
private void ClickSureButton()
{
if (this.isLogining)
return;
this.Pause();
var userName = this._inpUserName.text;
if (string.IsNullOrEmpty(userName))
return;
var userPassword = this._inputUserPassword.text;
if (string.IsNullOrEmpty(userPassword))
return;
_userData = new UserLoginData() { username = userName, password = userPassword };
this.isLogining = true;
this.LoginAsync().Forget();
}
async UniTask LoginAsync()
{
var responseData = new ResponseData();
var isFinish = false;
try
{
isFinish = await Game.httpManager.LoginAsync(this._userData.username, this._userData.password, responseData);
this.Resume();
if (isFinish)
{
CommonHelper.OpenAndSetTips($"登录成功,请点击确定按钮\n code:{responseData?.code}\n msg:{responseData?.msg}", () => { EventManager.Instance.FireNow(this, new InputNameFinishEventArgs(this._userData.username)); });
}
else
{
CommonHelper.OpenAndSetTips($"登录失败,可点击进入离线模式按钮\n code:{responseData?.code}\n msg:{responseData?.msg}", () => { EventManager.Instance.FireNow(this, new InputNameFinishEventArgs(this._userData.username)); }, "进入离线模式");
this.isLogining = false;
}
}
catch (Exception e)
{
CommonHelper.OpenAndSetTips($"连接服务器失败,可点击进入离线模式按钮\n code:{responseData?.code}\n msg:{responseData?.msg}", () => { EventManager.Instance.FireNow(this, new InputNameFinishEventArgs(this._userData.username)); }, "进入离线模式");
this.isLogining = false;
this.Resume();
}
}
// async UniTask Login()
// {
// string url = "http://192.168.1.129:8787/api/user/login";
// WWWForm wwwForm = new WWWForm();
// wwwForm.AddField("username", this._userData.username);
// wwwForm.AddField("password", this._userData.password);
// using (UnityWebRequest request = UnityWebRequest.Post(url, wwwForm))
// {
// await request.SendWebRequest();
//
// // 处理响应
// if (request.result == UnityWebRequest.Result.Success)
// {
// Debug.Log("POST request successful!");
// var downloadHandlerText = request.downloadHandler.text;
// Debug.Log("Response: " + downloadHandlerText);
//
// var data = JsonConvert.DeserializeObject<ResponseData>(downloadHandlerText);
// if (data.code == "0")
// {
// Game.socketManager.SetHttpToken(downloadHandlerText);
// Game.socketManager.ConnectAsync();
// EventManager.Instance.FireNow(this, new InputNameFinishEventArgs(this._userData.username));
// }
// else
// this.isLogining = false;
// }
// else
// {
// Debug.LogError("POST request failed: " + request.error);
// this.isLogining = false;
// }
// }
// }
}
}