Files
BingoGrassland/Assets/BingoSun/Scripts/LoginSystem.cs
T

206 lines
6.3 KiB
C#
Raw Normal View History

2026-04-20 13:49:36 +08:00
using UnityEngine;
using Newtonsoft.Json;
using BingoBrain.Core;
using BingoBrain;
using DG.Tweening;
using BingoBrain.HotFix;
using DontConfuse;
using System;
public class LoginSystem : BaseSystem
{
//is debug test (LoginCountLimit 应该为 5 测试改为2)
private const int LoginCountLimit = 5;
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()
{
2026-05-08 18:23:49 +08:00
NetworkDispatcher.Instance.AddListener(NetworkMsg.Login, OnRequestLogin);
// NetworkDispatcher.Instance.AddListener(NetworkMsg.Reconnect, OnResponseReconnect);
2026-04-20 13:49:36 +08:00
}
private void RemoveListener()
{
2026-05-08 18:23:49 +08:00
NetworkDispatcher.Instance.RemoveListener(NetworkMsg.Login, OnRequestLogin);
2026-04-20 13:49:36 +08:00
2026-05-08 18:23:49 +08:00
// NetworkDispatcher.Instance.RemoveListener(NetworkMsg.Reconnect, OnResponseReconnect);
2026-04-20 13:49:36 +08:00
}
private void RequestLogin()
{
2026-05-08 18:23:49 +08:00
2026-04-20 13:49:36 +08:00
var requestLoginData = new RequestLoginData
{
device_id = SystemInfo.deviceUniqueIdentifier,
2026-05-08 18:23:49 +08:00
// device_id ="E742FE8B-C32E-56A7-8F8A-6B3BC0F3169",
2026-04-20 13:49:36 +08:00
pack_name = NetworkMsg.Identifier,
app_version = Application.version,
channel = BingoBea.Instance.attribution,
sim = WebviewManager.haveSimCard
};
2026-05-08 18:23:49 +08:00
Debug.Log(JsonConvert.SerializeObject(requestLoginData));
2026-04-20 13:49:36 +08:00
Debug.Log(SystemInfo.deviceUniqueIdentifier);
GameHelper.PostFunnelLogin("loginSend");
Debug.Log(JsonConvert.SerializeObject(requestLoginData));
2026-05-08 18:23:49 +08:00
NetworkKit.Post<LoginModel>("login", requestLoginData, (isSuccess, loginData) =>
{
if (isSuccess)
{
2026-05-09 14:47:38 +08:00
Debug.Log("Login" + "-------------------" + JsonConvert.SerializeObject(loginData));
2026-05-08 18:23:49 +08:00
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.is_magic = loginData.is_magic;
loginModel.invite_code = loginData.invite_code;
loginModel.invite_url = loginData.invite_url;
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.debug_log = loginData.debug_log;
loginModel.enwp = loginData.enwp;
loginModel.preferences = new Preferences();
NetworkKit.CDNUrl = $"{loginData.cdn_url}/";
NetworkKit.SetCacheToken(loginData.token);
//RequestHeart();
DateTimeBoardk.Instance.SetServerCurrTimestamp(loginData.login_time);
Sequence mLoopSequence = DOTween.Sequence();
mLoopSequence.AppendCallback(() =>
{
RequestHeart();
}).AppendInterval(60).SetLoops(-1);
//TimerHelper.UnscaleGeneral.AddLoopTimer(60, (timer) => { RequestHeart(); });
2026-05-09 14:47:38 +08:00
NetworkDispatcher.Instance.Dispatch(NetworkMsg.GetPlayData);
2026-05-08 18:23:49 +08:00
//UICtrlDispatcher.Instance.Dispatch(SkinInfo.EnterBingoUI_Open);
2026-05-09 14:47:38 +08:00
2026-05-08 18:23:49 +08:00
PreferencesMgr.Instance.PlayerName = loginData.invite_code;
NetworkDispatcher.Instance.Dispatch(ExternalInfo.GetConfig);
MaxADKit.Init();
GameHelper.PostFunnelLogin("loginRecv", true);
2026-05-09 16:04:34 +08:00
// if (GameHelper.IsGiftSwitch())
// {
// // GameObject.Find("MainCameraRoot").SetActive(false);
// }
2026-05-09 14:47:38 +08:00
2026-05-08 18:23:49 +08:00
}
else
{
Debug.Log(JsonConvert.SerializeObject(loginData));
//UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.NetLoadingUI_Close);
Debug.Log("登陆请求失败");
GameHelper.PostFunnelLogin("loginRecv", false);
float times = loginCount == 0 ? 0 : 5f;
DOVirtual.DelayedCall(times, () =>
{
if (loginCount < LoginCountLimit)
{
loginCount++;
RequestLogin();
}
else
{
loginCount = 0;
Action _OnFail = () =>
{
NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
};
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TipsViewUI_Open, _OnFail);
}
});
}
});
2026-04-20 13:49:36 +08:00
}
private void RequestHeart()
{
NetworkKit.PostWithHeader("user/health");
}
private void OnRequestLogin(object obj = null)
{
RequestLogin();
}
private void OnResponseReconnect(object obj)
{
}
public override void Dispose()
{
base.Dispose();
RemoveListener();
}
}
public partial class NetworkMsg
{
private static uint MsgRootLogic = 100000;
public static uint GetConfig = ++MsgRootLogic;
public static uint Reconnect = ++MsgRootLogic;
public static uint Login = ++MsgRootLogic;
public static uint SavePlayData = ++MsgRootLogic;
public static uint GetPlayData = ++MsgRootLogic;
public static uint SendInviteCode = ++MsgRootLogic;
public static uint GetInviteData = ++MsgRootLogic;
public static uint UpdateCheckInviteData = ++MsgRootLogic;
2026-05-08 18:23:49 +08:00
public static string Identifier = "com.interactivegames.bingotornado";
2026-04-20 13:49:36 +08:00
public static uint Start = ++MsgRootLogic;
public static uint NotNetwork = ++MsgRootLogic;
}
public class RequestLoginData
{
public string device_id;
public string pack_name;
public string app_version;
public string channel;
public bool sim;
}