using ET; using TapTap.Bootstrap; using TapTap.Common; using TapTap.TapDB; using Plugins.AntiAddictionUIKit; using System; using System.Threading.Tasks; using UnityEngine; namespace GFGGame { public class QDTapTapManager : SingletonBase { private readonly string ClientID = "K7bDyPGYlVx2AAtk6q"; public void InitSDK() { Log.Debug($"tap InitSDK"); if (!QDManager.IsTaptap) { return; } var config = new TapConfig.Builder() .ClientID(ClientID) .ClientToken("fjwWBtibB4Dj3UjyRQxK2tZ3f8fGNgg14tcRW38D") .ServerURL("https://k7bdypgy.cloud.tds1.tapapis.cn") .RegionType(RegionType.CN) .TapDBConfig(true, "tap", null, true) .ConfigBuilder(); TapBootstrap.Init(config); EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_INITED, true); } public async Task Login() { Log.Debug($"tap login"); if (!QDManager.IsTaptap) { EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, null); return; } ViewManager.Show("登录中..."); TDSUser tdsUser = await TDSUser.GetCurrent(); if (null != tdsUser) { EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, tdsUser.ObjectId); InitAntiAddiction(tdsUser.ObjectId); return; } try { tdsUser = await TDSUser.LoginWithTapTap(); Log.Debug($"tap login Success:{tdsUser}"); EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, tdsUser.ObjectId); InitAntiAddiction(tdsUser.ObjectId); } catch (Exception e) { if (e is TapException tapError) { if (tapError.code == (int)TapErrorCode.ERROR_CODE_BIND_CANCEL) // 取消登录 { Log.Debug("登录取消"); ViewManager.Hide(); return; } else { Log.Error($"Login Error:{tapError.code} message:{tapError.message}"); PromptController.Instance.ShowFloatTextPrompt(tapError.message); } } else { Log.Error($"Login Error:{e}"); PromptController.Instance.ShowFloatTextPrompt("登录异常"); } EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, null); } } public void InitAntiAddiction(string objectId) { Log.Debug($"tap InitAntiAddiction objectId {objectId}"); ViewManager.Show("登录中..."); string gameIdentifier = ClientID; // 是否启用时长限制功能 bool useTimeLimit = true; // 是否启用消费限制功能 bool usePaymentLimit = false; // 是否显示切换账号按钮 bool showSwitchAccount = true; AntiAddictionUIKit.Init(gameIdentifier, useTimeLimit, usePaymentLimit, showSwitchAccount, (antiAddictionCallbackData) => { int code = antiAddictionCallbackData.code; MsgExtraParams extras = antiAddictionCallbackData.extras; Log.Debug($"tap antiAddictionCallbackData code {code} extras title \n{extras?.title} description \n{extras?.description}"); ViewManager.Hide(); // 根据 code 不同提示玩家不同信息,详见下面的说明 if (code == 500) { ET.Log.Debug("玩家登录后判断当前玩家可以进行游戏"); } else if(code == 1030) { ET.Log.Debug("未成年玩家当前无法进行游戏"); } else if (code == 1095) { ET.Log.Debug("未成年允许游戏弹窗"); } else if (code == 1000) { ET.Log.Debug("退出账号"); } else if (code == 9002) { ET.Log.Debug("实名过程中点击了关闭实名窗"); AntiAddictionUIKit.Startup(true, objectId); } else if (code == 1001) { ET.Log.Debug("点击切换账号按钮(v1.0.2 新增)"); GameController.QuitToLoginView(true); } }, (exception) => { // 处理异常 Log.Debug($"tap exception {exception.ToString()}"); } ); AntiAddictionUIKit.Startup(true, objectId); } public void OnEnterGame() { Log.Debug($"tap OnEnterGame"); if (!QDManager.IsTaptap) { return; } // 开始计时 AntiAddictionUIKit.EnterGame(); var serverInfosComponent = GameGlobal.zoneScene.GetComponent(); var accountInfoComponent = GameGlobal.zoneScene.GetComponent(); var roleInfosComponent = GameGlobal.zoneScene.GetComponent(); var currentRole = roleInfosComponent.GetCurrentRole(); TapDB.SetUser(accountInfoComponent.Account); TapDB.SetName(currentRole.Name); TapDB.SetLevel(RoleDataManager.lvl); TapDB.SetServer(serverInfosComponent.GetCurrentServerInfo().ServerName); Log.Debug($"tap TapDB \nSetUser {accountInfoComponent.Account} \nSetName {currentRole.Name} \nSetLevel {RoleDataManager.lvl} \nSetServer {serverInfosComponent.GetCurrentServerInfo().ServerName}"); } //回到登录界面,不退出账号 public void OnQuitToLoginView() { Log.Debug($"tap OnQuitGame"); TapDB.ClearUser(); AntiAddictionUIKit.LeaveGame(); } public void Logout() { TDSUser.Logout(); AntiAddictionUIKit.Logout(); } } }