Files
RedHotRoast-ios/Assets/Scripts/System/Network/LoginSystem.cs
T
2026-04-22 09:52:55 +08:00

168 lines
6.0 KiB
C#

namespace FlowerPower
{
using System;
using DG.Tweening;
using UnityEngine;
public class LoginSystem : BaseSystem
{
private int loginCount = 0;
public LoginSystem(bool isAutoInit = true)
{
if (isAutoInit)
{
Init();
}
}
public sealed override void Init()
{
base.Init();
InitData();
AddListener();
}
private void InitData()
{
}
private void AddListener()
{
NetworkDispatcher.Instance.AddListener(NetworkMsg.Login, RequestLogin);
}
private void RemoveListener()
{
NetworkDispatcher.Instance.RemoveListener(NetworkMsg.Login, RequestLogin);
}
private TimerTask timerTask = null;
private void RequestLogin(object obj = null)
{
var requestLoginData = new RequestLoginData
{
device_id = SystemInfo.deviceUniqueIdentifier,
pack_name = NetworkManager.identifier,
app_version = Application.version,
//is debug test--------
channel = SuperApplication.Instance.attribution,
sim = NetworkManager.haveSimCard
};
var reqData = new RespLoginFunnelData
{
type = "loginSend",
payload = ""
};
NetworkKit.PostFunnelLogin(reqData);
Debug.Log("haveSimCard-----login-" + requestLoginData.sim );
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.LoginloadingUI_Open);
NetworkKit.Post<LoginModel>("login", requestLoginData, (isSuccess, loginData) =>
{
if (isSuccess)
{
var loginModel = GameHelper.GetLoginModel();
loginModel.cdn_url = loginData.cdn_url;
loginModel.setting = loginData.setting;
loginModel.play_data = loginData.play_data;
loginModel.token = loginData.token;
loginModel.uid = loginData.uid;
loginModel.country = loginData.country;
loginModel.expires_at = loginData.expires_at;
loginModel.invite_code = loginData.invite_code;
loginModel.invite_url = loginData.invite_url;
loginModel.is_magic = loginData.is_magic;
loginModel.last_login_time = loginData.last_login_time;
loginModel.login_time = loginData.login_time;
loginModel.reg_time = loginData.reg_time;
loginModel.new_player = loginData.new_player;
loginModel.play_data_ver = loginData.play_data_ver;
loginModel.enwp = loginData.enwp;
loginModel.debug_log = loginData.debug_log;
loginModel.preferences = new Preferences();
NetworkKit.CDNUrl = $"{loginData.cdn_url}/";
NetworkKit.userId = loginData.uid;
NetworkKit.SetCacheToken(loginData.token);
DateTimeManager.Instance.SetServerCurrTimestamp(loginData.login_time);
RequestHeart();
Debug.Log("haveSimCard-----is_magic-" + loginModel.is_magic);
if (timerTask == null)
{
// Debug.Log("$ timer task fuzhi---------");
timerTask = TimerHelper.UnscaleGeneral.AddLoopTimer(60, (timer) => { RequestHeart(); });
}
GameDispatcher.Instance.Dispatch(GameMsg.netLoading_close);
NetworkDispatcher.Instance.Dispatch(NetworkMsg.GetPlayData);
var reqData = new RespLoginFunnelData
{
type = "loginRecv",
payload = "success"
};
NetworkKit.PostFunnelLogin(reqData);
}
else
{
// if (!GameHelper.IsConnect())
// {
// loginCount = 0;
// Action _OnFail = () =>
// {
// NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
// };
// UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TipsViewUI_Open, _OnFail);
// return;
// }
var reqData = new RespLoginFunnelData
{
type = "loginRecv",
payload = "fail"
};
NetworkKit.PostFunnelLogin(reqData);
float times = loginCount == 0 ? 0.1f : 5f;
Debug.Log("dddddd");
DOVirtual.DelayedCall(times, () =>
{
Debug.Log("ssssss");
if (loginCount < 5)
{
loginCount++;
RequestLogin();
}
else
{
loginCount = 0;
Action _OnFail = () =>
{
NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
};
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TipsViewUI_Open, _OnFail);
GameDispatcher.Instance.Dispatch(GameMsg.netLoading_close);
}
});
}
});
}
private void RequestHeart()
{
NetworkKit.PostWithHeader("user/health");
// Debug.Log($"barry 心跳: ---------");
}
public override void Dispose()
{
base.Dispose();
RemoveListener();
}
}
}