using ET; using TapTap.Bootstrap; using TapTap.Common; using TapTap.TapDB; using Plugins.AntiAddictionUIKit; using System; using UnityEngine; namespace GFGGame { public class PlatformTapManager : SingletonBase { private readonly string ClientID = "K7bDyPGYlVx2AAtk6q"; public void InitSDK() { Log.Debug($"tap InitSDK"); if (!PlatformManager.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); } public async ETTask LoginCache() { Log.Debug($"tap LoginCache"); if (!PlatformManager.IsTaptap) { return false; } ViewManager.Show("登录中..."); TDSUser tdsUser = await TDSUser.GetCurrent(); if (null != tdsUser) { InitAntiAddiction(tdsUser.ObjectId); return true; } ViewManager.Hide(); return false; } public async ETTask Login() { Log.Debug($"tap login"); if (!PlatformManager.IsTaptap) { return false; } ViewManager.Show("登录中..."); try { var tdsUser = await TDSUser.LoginWithTapTap(); Log.Debug($"tap login Success:{tdsUser}"); InitAntiAddiction(tdsUser.ObjectId); return true; } catch (Exception e) { if (e is TapException tapError) { if (tapError.code == (int)TapErrorCode.ERROR_CODE_BIND_CANCEL) // 取消登录 { Log.Debug("登录取消"); } else { Log.Error($"Login Error:{tapError.code} message:{tapError.message}"); PromptController.Instance.ShowFloatTextPrompt(tapError.message); } } else { Log.Error($"Login Error:{e}"); PromptController.Instance.ShowFloatTextPrompt("登录异常"); } } ViewManager.Hide(); return false; } public void InitAntiAddiction(string objectId) { Log.Debug($"tap InitAntiAddiction objectId {objectId}"); 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}"); // 根据 code 不同提示玩家不同信息,详见下面的说明 if (code == 500) { ET.Log.Debug("玩家登录后判断当前玩家可以进行游戏"); // 开始计时 AntiAddictionUIKit.EnterGame(); LoginController.LoginTest(objectId).Coroutine(); } 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 (!PlatformManager.IsTaptap) { return; } 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 OnQuitGame() { Log.Debug($"tap OnQuitGame"); if (!PlatformManager.IsTaptap) { return; } TapDB.ClearUser(); AntiAddictionUIKit.LeaveGame(); AntiAddictionUIKit.Logout(); } } }