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("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(); } } }