namespace ZooMatch { 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) { Debug.Log($"barry attribution: {SuperApplication.Instance.attribution}"); 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); 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(); if (timerTask == null) { // Debug.Log("$ timer task fuzhi---------"); timerTask = TimerHelper.UnscaleGeneral.AddLoopTimer(60, (timer) => { RequestHeart(); }); } NetworkDispatcher.Instance.Dispatch(NetworkMsg.GetPlayData); MaxADKit.SetUserID(loginData.uid.ToString()); var reqData = new RespLoginFunnelData { type = "loginRecv", payload = "success" }; NetworkKit.PostFunnelLogin(reqData); // if (loginData.new_player) // { // AdjustEvent adjustEvent = new AdjustEvent("sasxod"); // Adjust.TrackEvent(adjustEvent); // } } else { var reqData = new RespLoginFunnelData { type = "loginRecv", payload = "fail" }; NetworkKit.PostFunnelLogin(reqData); UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.NetLoadingUI_Close); float times = loginCount == 0 ? 0 : 5f; DOVirtual.DelayedCall(times,()=>{ if (loginCount < 5) { loginCount++; RequestLogin(); } else { loginCount = 0; Action _OnFail = () => { NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login); }; UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TipsViewUI_Open, _OnFail); } }); } }); } private void RequestHeart() { NetworkKit.PostWithHeader("user/health"); // Debug.Log($"barry 心跳: ---------"); } public override void Dispose() { base.Dispose(); RemoveListener(); } } }