Quellcode durchsuchen

Merge branch 'main' of ssh://192.168.0.8:29418/xianjing into hy_dny

# Conflicts:
#	UserSettings/Layouts/default-2021.dwlt
gdl_123 vor 6 Monaten
Ursprung
Commit
47244817f4

+ 12 - 0
Assets/Lua/Managers/LuaGameMgr.lua

@@ -11,6 +11,7 @@ function LuaGameMgr:ctor()
     self:SdkPayFunc(self.SdkPayResult)
     self:SdkQuestionFunc(self.UrlQuestionRewardResult)
     self:SdkCanEnterServerJudgeFunc(self.SdkCanEnterServerJudgeResult)
+    self:SetSdkLoginFuncOtherArgLuaCB()
     self.newbieActors = nil
     self.IsCreateRole = false
     self.loadingPageOk = false
@@ -23,6 +24,7 @@ function LuaGameMgr:ctor()
     self.sdkLogined = Enum.ParamState.None
     self.token = ''
     self.openId = ''
+    self.SDKTimeSP = ''
     self.platform = ''
     self.channelName = ''
     self.phonelatform = 0
@@ -540,4 +542,14 @@ function LuaGameMgr:SdkCanEnterServerJudgeResult(value)
     self.canEnterServerState = (value == '1' and Enum.ParamState.Success or Enum.ParamState.Fail)
 end
 
+function LuaGameMgr:SetSdkLoginFuncOtherArgLuaCB()
+    if self.SdkLoginFuncOtherArg ~= nil then
+        self:SdkLoginFuncOtherArg(self.SetLoginFuncOtherArg) 
+    end
+end
+
+
+function LuaGameMgr:SetLoginFuncOtherArg(arg)
+    self.SDKTimeSP = arg
+end
 return LuaGameMgr

+ 3 - 2
Assets/Lua/Managers/NetManager.lua

@@ -224,8 +224,8 @@ function NetManager:SendConnectReq(crypt_pass)
 		-- LogError("----------LoadCommonUIAssets serverId-------------"..serverId)
 		local subplatform = ManagerContainer.LuaGameMgr.channelName
 		-- LogError("----------LoadCommonUIAssets subplatform-------------"..subplatform)
-
-		local loginData = {open_id = openid, platform_token = token, platform = pf, sub_platform = subplatform, game_version = gameVer, select_zone = serverId}
+		local timesp = ManagerContainer.LuaGameMgr.SDKTimeSP or ""
+		local loginData = {open_id = openid, platform_token = token, platform = pf, sub_platform = subplatform, crypt_pass = timesp ,game_version = gameVer, select_zone = serverId}
 		ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_LOGIN_REQ, loginData)
 		self.isConnectingGate = false;
 	else
@@ -233,6 +233,7 @@ function NetManager:SendConnectReq(crypt_pass)
 		local uid = tostring(ManagerContainer.DataMgr.UserData:GetUserId())
 		local token = ManagerContainer.LuaGameMgr.token
 		local pf = ManagerContainer.LuaGameMgr.platform
+		--local timesp = ManagerContainer.LuaGameMgr.SDKTimeSP or ""
 		-- 发送重连消息
 		ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_RECONNECT_REQ, {open_id = openid, platform_token = token, platform = pf, uid = uid})
 	end

+ 1 - 0
Assets/Plugins/SDK/DataTemplate.cs

@@ -50,6 +50,7 @@ public class UserInfo
     public string uid;
     public string userName;
     public string token;
+    public string timeSp;
 }
 public class OrderExtraInfo
 {

BIN
Assets/Plugins/x86/tolua.dll


BIN
Assets/Plugins/x86_64/tolua.dll


+ 17 - 0
Assets/Src/GameLogic/GameMgr.cs

@@ -1011,6 +1011,7 @@ public class GameMgr : SingletonMono<GameMgr>
     //private SDKMgr SdkManager = SDKMgr.Instance;
     private LuaFunction mSdkInitedLuaCB = null;
     private LuaFunction mSdkLoginedLuaCB = null;
+    private LuaFunction mSdkLoginFuncOtherArgLuaCB = null;
     private LuaFunction mSdkLogoutLuaCB = null;
     private LuaFunction mSdkPayLuaCB = null;
     private LuaFunction msdkQuestionLuaCB = null;
@@ -1028,6 +1029,19 @@ public class GameMgr : SingletonMono<GameMgr>
         mSdkLoginedLuaCB = func;
     }
 
+    public void SdkLoginFuncOtherArg(LuaFunction func)
+    {
+        mSdkLoginFuncOtherArgLuaCB = func;
+    }
+
+    private void CallSdkLoginFuncOtherArgLuaCB(string time)
+    {
+        if (mSdkLoginFuncOtherArgLuaCB != null)
+        {
+            mSdkLoginFuncOtherArgLuaCB.Call(this,time);
+        }
+    }
+
     public void SdkLogoutFunc(LuaFunction func)
     {
         mSdkLogoutLuaCB = func;
@@ -1149,6 +1163,7 @@ public class GameMgr : SingletonMono<GameMgr>
             if (obj != null)
             {
                 UserInfo userInfo = (UserInfo)obj;
+                CallSdkLoginFuncOtherArgLuaCB(userInfo.timeSp);
                 mSdkLoginedLuaCB.Call(this, true, userInfo.uid, userInfo.token, false);
                 SDKMgr.Instance.ReportIdentification(SDKMgr.Instance.GetInt64TimeStamp());
             }
@@ -1164,6 +1179,7 @@ public class GameMgr : SingletonMono<GameMgr>
         if (mSdkLoginedLuaCB != null)
         {
             UserInfo userInfo = (UserInfo)obj;
+            CallSdkLoginFuncOtherArgLuaCB(userInfo.timeSp);
             mSdkLoginedLuaCB.Call(this, false, userInfo.uid, userInfo.token, true);
         }
     }
@@ -1173,6 +1189,7 @@ public class GameMgr : SingletonMono<GameMgr>
         if (mSdkLoginedLuaCB != null)
         {
             UserInfo userInfo = (UserInfo)obj;
+            CallSdkLoginFuncOtherArgLuaCB(userInfo.timeSp);
             mSdkLoginedLuaCB.Call(this, true, userInfo.uid, userInfo.token, true);
         }
     }

+ 19 - 1
Assets/ToLua/Source/Generate/GameMgrWrap.cs

@@ -50,6 +50,7 @@ public class GameMgrWrap
 		L.RegFunction("DisableAntiAliasing", DisableAntiAliasing);
 		L.RegFunction("SdkInitFunc", SdkInitFunc);
 		L.RegFunction("SdkLoginFunc", SdkLoginFunc);
+		L.RegFunction("SdkLoginFuncOtherArg", SdkLoginFuncOtherArg);
 		L.RegFunction("SdkLogoutFunc", SdkLogoutFunc);
 		L.RegFunction("SdkPayFunc", SdkPayFunc);
 		L.RegFunction("SdkQuestionFunc", SdkQuestionFunc);
@@ -904,7 +905,24 @@ public class GameMgrWrap
 		}
 	}
 
-	[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+    [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+    static int SdkLoginFuncOtherArg(IntPtr L)
+    {
+        try
+        {
+            ToLua.CheckArgsCount(L, 2);
+            GameMgr obj = (GameMgr)ToLua.CheckObject<GameMgr>(L, 1);
+            LuaFunction arg0 = ToLua.CheckLuaFunction(L, 2);
+            obj.SdkLoginFuncOtherArg(arg0);
+            return 0;
+        }
+        catch (Exception e)
+        {
+            return LuaDLL.toluaL_exception(L, e);
+        }
+    }
+
+    [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
 	static int SdkLoginFunc(IntPtr L)
 	{
 		try

+ 153 - 0
Build/BuildDependenceResource/PackConfig.json

@@ -827,6 +827,111 @@
             "keyaliasName": "game",
             "keyaliasPass": "KlYX666Ro"
         },
+        {
+            "channelName": "勉游-炫游",
+            "appName": "东南亚测试服",
+            "distributeName": "測試服(东南亚)",
+            "channelUniqueId": "12002028",
+            "bundleId": "com.xjro.rutest",
+            "gameVersionCode": {
+                "major": 1,
+                "minor": 0,
+                "release": 0,
+                "patch": 6
+            },
+            "resVersionCode": {
+                "major": 0,
+                "minor": 1,
+                "release": 0,
+                "patch": 0
+            },
+            "iconRelativePath": "XinLiWuYu",
+            "defineSymbols": [
+                "USE_LUA",
+                "VUPLEX_CCU",
+                "FPS_DISABLE",
+                "GAME_DEBUG"
+            ],
+            "logo1RelativePath": "xlwy.png",
+            "loginRelativePath": "Default",
+            "gameAssetsPath": "Default",
+            "specialFuncShield": false,
+            "splashScreenRelativeFiles": [],
+            "obscureKey": "",
+            "obscureOffsetMin": 0,
+            "obscureOffsetValues": [],
+            "sdkVerifyUrl": "http://110.40.223.119:81//",
+            "serverListUrl": "http://110.40.223.119:81//serverlist",
+            "notifyUrl": "http://110.40.223.119:88/res/NoticeNew/",
+            "specialInfoUrl": "http://110.40.223.119:81//channel",
+            "customerServiceInfoUrl": "http://110.40.223.119:81//vipService",
+            "leBian_MainChId": "69423",
+            "leBian_ClientChId": "youyi_bt_jj",
+            "leBian_SECID": "dmcve6kq.c",
+            "plugins": [
+                "common",
+                "YOUYI_1.6.9"
+            ],
+            "sdkBridges": [
+                "dny_XuanYou_android"
+            ],
+            "keystoreName": "wenting.keystore",
+            "keystorePass": "n9P5j2b7blMm",
+            "keyaliasName": "game",
+            "keyaliasPass": "KlYX666Ro"
+        },
+        {
+            "channelName": "勉游-炫游",
+            "appName": "东南亚正式服",
+            "distributeName": "正式服(东南亚)",
+            "channelUniqueId": "12002029",
+            "bundleId": "com.xjro.rutest",
+            "gameVersionCode": {
+                "major": 1,
+                "minor": 0,
+                "release": 0,
+                "patch": 6
+            },
+            "resVersionCode": {
+                "major": 0,
+                "minor": 1,
+                "release": 0,
+                "patch": 0
+            },
+            "iconRelativePath": "XinLiWuYu",
+            "defineSymbols": [
+                "USE_LUA",
+                "VUPLEX_CCU",
+                "FPS_DISABLE"
+            ],
+            "logo1RelativePath": "xlwy.png",
+            "loginRelativePath": "Default",
+            "gameAssetsPath": "Default",
+            "specialFuncShield": false,
+            "splashScreenRelativeFiles": [],
+            "obscureKey": "",
+            "obscureOffsetMin": 0,
+            "obscureOffsetValues": [],
+            "sdkVerifyUrl": "http://43.156.13.116:81//",
+            "serverListUrl": "http://43.156.13.116:81//serverlist",
+            "notifyUrl": "http://43.156.13.116:88/res/NoticeNew/",
+            "specialInfoUrl": "http://43.156.13.116:81//channel",
+            "customerServiceInfoUrl": "http://43.156.13.116:81//vipService",
+            "leBian_MainChId": "69423",
+            "leBian_ClientChId": "youyi_bt_jj",
+            "leBian_SECID": "dmcve6kq.c",
+            "plugins": [
+                "common",
+                "YOUYI_1.6.9"
+            ],
+            "sdkBridges": [
+                "dny_XuanYou_android"
+            ],
+            "keystoreName": "wenting.keystore",
+            "keystorePass": "n9P5j2b7blMm",
+            "keyaliasName": "game",
+            "keyaliasPass": "KlYX666Ro"
+        },
         {
             "channelName": "游逸",
             "appName": "初心者:集结",
@@ -1387,6 +1492,54 @@
             "sdkBridges": [
                 "mianYou_IOS"
             ]
+        },
+        {
+            "channelName": "勉游-炫游",
+            "appName": "aaa",
+            "distributeName": "正式服(东南亚)",
+            "channelUniqueId": "22002012",
+            "bundleId": "com.qscq.joy",
+            "gameVersionCode": {
+                "major": 0,
+                "minor": 1,
+                "release": 0,
+                "patch": 0
+            },
+            "resVersionCode": {
+                "major": 0,
+                "minor": 1,
+                "release": 0,
+                "patch": 0
+            },
+            "iconRelativePath": "ChuXinZheDaMaoxianNew_IOS",
+            "defineSymbols": [
+                "USE_LUA",
+                "VUPLEX_CCU",
+                "FPS_DISABLE"
+            ],
+            "logo1RelativePath": "ntquick.png",
+            "loginRelativePath": "Default",
+            "gameAssetsPath": "Default",
+            "specialFuncShield": true,
+            "splashScreenRelativeFiles": [],
+            "obscureKey": "",
+            "obscureOffsetMin": 0,
+            "obscureOffsetValues": [],
+            "sdkVerifyUrl": "http://43.156.13.116:81//",
+            "serverListUrl": "http://43.156.13.116:81//serverlist",
+            "notifyUrl": "http://43.156.13.116:88/res/NoticeNew/",
+            "specialInfoUrl": "http://43.156.13.116:81//channel",
+            "customerServiceInfoUrl": "http://43.156.13.116:81//vipService",
+            "leBian_MainChId": "69031",
+            "leBian_ClientChId": "cxzjj_bt",
+            "leBian_SECID": "tx75web0.c",
+            "plugins": [
+                "common",
+                "MianYou_SDK_IOS"
+            ],
+            "sdkBridges": [
+                "mianYou_IOS"
+            ]
         }
     ],
     "pCs": [

+ 175 - 0
Build/BuildDependenceResource/Plugins/SDKBridge/dny_XuanYou_android/YouYiListener.cs

@@ -0,0 +1,175 @@
+using System.Collections;
+using System.Text;
+using UnityEngine;
+using UnityEngine.Networking;
+
+public class YouYiListener : MonoBehaviour
+{
+    private UnityWebRequest m_CheckLoginWebRequest;
+    private string m_Token = string.Empty;
+    private string m_Uid = string.Empty;
+    private string m_TimeSp = string.Empty;
+    private Coroutine m_CheckCoroutine = null;
+
+    public void OnInitSuccess()
+    {
+        SDKMgr.Instance.SetInited(true);
+        SDKEventUtil.SendMessage(SDKCBEnum.INIT_SUCCESS_CB);
+    }
+    
+    public void OnInitFailed()
+    {
+        SDKMgr.Instance.SetInited(false);
+        SDKEventUtil.SendMessage(SDKCBEnum.INIT_FAILED_CB);
+    }
+    
+    public void OnLoginSuccess(string token)
+    {
+        SDKMgr.Instance.SetLogined(true);
+        m_Token = token;
+        // StartCheckLogin();
+        UserInfo userInfo = new UserInfo()
+        {
+            uid = m_Uid,
+            userName = "",
+            token = m_Token,
+            timeSp = m_TimeSp,
+        };
+        SDKMgr.Instance.SetInited(true);
+        SDKEventUtil.SendMessage(SDKCBEnum.LOGIN_SUCCESS_CB , userInfo);
+    }
+
+    public void SetUserId(string data) 
+    {
+       string[] datas = data.Split("><");
+        if (datas.Length <= 0) return;
+        m_Uid = datas[0];
+        m_TimeSp = datas[1];
+    }
+
+    public void OnLoginFailed()
+    {
+        SDKEventUtil.SendMessage(SDKCBEnum.LOGIN_FAILED_CB);
+        StopCheckLogin();
+    }
+
+    public void OnLogoutSuccess()
+    {
+        m_Token = string.Empty;
+        SDKMgr.Instance.SetLogined(false);
+        SDKEventUtil.SendMessage(SDKCBEnum.LOGOUT_SUCCESS_CB);
+    }
+
+    public void OnExitSuccess()
+    {
+        SDKEventUtil.SendMessage(SDKCBEnum.EXIT_SUCCESS_CB);
+    }
+    
+    public void OnPaySuccess()
+    {
+        SDKEventUtil.SendMessage(SDKCBEnum.PAY_SUCCESS_CB);
+    }
+
+    public void OnPayFailed()
+    {
+        SDKEventUtil.SendMessage(SDKCBEnum.PAY_FAILED_CB);
+    }
+
+    public void OnCanEnterServerJudge(string args)
+    {
+        SDKEventUtil.SendMessage(SDKCBEnum.CAN_ENTER_SERVER_JUDGE_CB, args);
+    }
+
+    private void StopCheckLogin()
+    {
+        if (m_CheckCoroutine != null)
+        {
+            StopCoroutine(m_CheckCoroutine);
+            m_CheckCoroutine = null;
+        }
+        if (m_CheckLoginWebRequest != null)
+        {
+            m_CheckLoginWebRequest.Dispose();
+            m_CheckLoginWebRequest = null;
+        }
+    }
+
+    public void StartCheckLogin()
+    {
+        StopCheckLogin();
+        m_CheckCoroutine = StartCoroutine(CheckLogin());
+    }
+
+    private IEnumerator CheckLogin()
+    {
+        StringBuilder sb = new StringBuilder();
+        sb.Append(SDKMgr.Instance.httpCheckUrl);
+        sb.Append("sdkcheck?platform=");
+        if (SDKMgr.Instance.sdk != null)
+        {
+            sb.Append(SDKMgr.Instance.sdk.SDKName);
+            string subplatform = SDKMgr.Instance.GetChannelName();
+            if (!string.IsNullOrEmpty(subplatform))
+            {
+                sb.Append("&sub_platform=");
+                sb.Append(subplatform);
+            }
+        }
+        sb.Append("&sauthjson=");
+        sb.Append(m_Token);
+        m_CheckLoginWebRequest = UnityWebRequest.Get(sb.ToString());
+        yield return m_CheckLoginWebRequest.SendWebRequest();
+        if (!string.IsNullOrEmpty(m_CheckLoginWebRequest.error))
+        {
+            OnLoginFailed();
+            yield break;
+        }
+        var downloadHandler = m_CheckLoginWebRequest.downloadHandler;
+        if (downloadHandler == null)
+        {
+            OnLoginFailed();
+            yield break;
+        }
+        string text = downloadHandler.text;
+        try
+        {
+            var result = JsonUtility.FromJson<CheckLoginResult>(text);
+            if (result.code == 0 && !string.IsNullOrEmpty(result.userinfo))
+            {
+                var arr = result.userinfo.Split('.');
+                var userinfoStr = Encoding.UTF8.GetString(System.Convert.FromBase64String(arr[0]));
+                var userinfo = JsonUtility.FromJson<LoginResultUserInfo>(userinfoStr);
+                UserInfo userInfo = new UserInfo()
+                {
+                    uid = m_Uid,
+                    userName = "",
+                    token = m_Token,
+                };
+                SDKMgr.Instance.SetInited(true);
+                SDKEventUtil.SendMessage(SDKCBEnum.LOGIN_SUCCESS_CB , userInfo);
+            }
+            else
+            {
+                OnLoginFailed();
+                SDKMgr.Instance.Logout();
+            }
+        }
+        catch
+        {
+            OnLoginFailed();
+            Debug.LogWarning("CheckLogin Fail   " + sb.ToString());
+        }
+    }
+
+    private class CheckLoginResult
+    {
+        public int code = 0;
+        public string userinfo = string.Empty;
+        public string platform = string.Empty;
+    }
+
+    private class LoginResultUserInfo
+    {
+        public string aid = string.Empty;
+    }
+}

+ 11 - 0
Build/BuildDependenceResource/Plugins/SDKBridge/dny_XuanYou_android/YouYiListener.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 487a476c504f9f74da509ffeb5deb207
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 443 - 0
Build/BuildDependenceResource/Plugins/SDKBridge/dny_XuanYou_android/YouYiSDKAndroid.cs

@@ -0,0 +1,443 @@
+#if UNITY_ANDROID
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class YouYiSDKAndroid : SDKBase
+{
+    private AndroidJavaObject m_AJO;
+    private YouYiListener m_YouYiListener;
+    private SDKGameRoleInfo mSDKGameRoleInfo;
+    public YouYiSDKAndroid()
+    {
+        using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
+        {
+            m_AJO = ajc.GetStatic<AndroidJavaObject>("currentActivity");
+        }
+        m_YouYiListener = SDKMgr.Instance.gameObject.AddComponent<YouYiListener>();
+        SDKName = "MIAN_YOU_Android";
+    }
+
+    public override void Init()
+    {
+        base.Init();
+        if (m_AJO != null)
+        {
+            m_AJO.Call("init", "SDKMgr");
+        }
+        else
+        {
+            m_YouYiListener.OnInitFailed();
+        }
+    }
+
+
+    public override void Login()
+    {
+        if (m_AJO != null)
+        {
+            m_AJO.Call("login");
+        }
+        else
+        {
+            m_YouYiListener.OnLoginFailed();
+        }
+    }
+
+    public override void Logout()
+    {
+        if (m_AJO != null)
+        {
+            m_AJO.Call("switchAccountLogin");
+        }
+    }
+
+    public override void SwitchAccount()
+    {
+        if (m_AJO != null)
+        {
+            m_AJO.Call("switchAccountLogin");
+        }
+    }
+
+    public override void Pay(int goodsId, string goodsName, string goodsDesc, int count, float amount, string cpOrderId, string extrasParams)
+    {
+        if (m_AJO != null)
+        {
+            string gameRoleInfo = GetCurRoleInfo();
+            if (gameRoleInfo != null)
+            {
+
+                Dictionary<string, SDKMgr.ProductInfo> cfgs = SDKMgr.Instance.ProductInfos;
+
+                 int itemp = Mathf.FloorToInt(amount);
+                string pice = "";
+                if ((itemp + 0.005f) > amount)
+                {
+                    pice = itemp.ToString();
+                }
+                else
+                {
+                    pice = amount.ToString("F2");
+                }
+
+                Debug.Log("价格 = "+ pice);
+                if (cfgs.ContainsKey(pice))
+                {
+                    Debug.Log("有 价格 = " + pice);
+                    SDKMgr.ProductInfo productInfo = cfgs[pice];
+
+                    GameOrderInfo gameOrderInfo = new GameOrderInfo()
+                    {
+                        cpOrderId = cpOrderId,
+                        goodsId = productInfo.ID,
+                        goodsName = productInfo.Name,
+                        goodsDesc = goodsDesc,
+                        orderAmount = pice,
+                        goodsNum = count.ToString(),
+                        goinNum = "",
+                        cpExtra = extrasParams,
+                        callbackUrl = goodsName,
+                    };
+                    string gameOderString = JsonUtility.ToJson(gameOrderInfo);
+
+
+                    m_AJO.Call("pay", gameRoleInfo, gameOderString);
+                }
+                else
+                {
+                    Debug.Log("没有 价格 = " + pice);
+                    m_YouYiListener.OnPayFailed();
+                }
+            }
+            //m_AJO.Call("pay", cpOrderId, amount.ToString(), goodsId.ToString(), goodsName, gameRoleInfo.roleId.ToString(), gameRoleInfo.roleName, gameRoleInfo.serverId.ToString(), gameRoleInfo.serverName, gameRoleInfo.roleLv, extrasParams);
+            else
+                m_YouYiListener.OnPayFailed();
+        }
+        else
+        {
+            m_YouYiListener.OnPayFailed();
+        }
+    }
+
+    public override void CreateRole()
+    {
+        GameRoleInfo gameRoleInfo = SDKMgr.Instance.GetGameRoleInfo();
+        if (gameRoleInfo == null || !gameRoleInfo.Valid())
+        {
+            Debug.LogError("[YouYiSDK][CreateRole] GameRoleInfo is null or not valid !!!");
+            return;
+        }
+        if (m_AJO != null)
+        {
+            SetSDKGameRoleInfo(gameRoleInfo);
+            string data = JsonUtility.ToJson(mSDKGameRoleInfo);
+            m_AJO.Call("createRoleLog", data);
+            //m_AJO.Call("createRoleLog", gameRoleInfo.roleId.ToString(), gameRoleInfo.roleName, gameRoleInfo.serverId.ToString(), gameRoleInfo.serverName, gameRoleInfo.roleLv, gameRoleInfo.openServerTime.ToString());
+        }
+    }
+
+    public override void EnterGame()
+    {
+        GameRoleInfo gameRoleInfo = SDKMgr.Instance.GetGameRoleInfo();
+        if (gameRoleInfo == null || !gameRoleInfo.Valid())
+        {
+            Debug.LogError("[YouYiSDK][EnterGame] GameRoleInfo is null or not valid !!!");
+            return;
+        }
+        if (m_AJO != null)
+        {
+            SetSDKGameRoleInfo(gameRoleInfo);
+            string data = JsonUtility.ToJson(mSDKGameRoleInfo);
+            m_AJO.Call("loginRoleLog", data);
+            // m_AJO.Call("loginRoleLog", gameRoleInfo.roleId.ToString(), gameRoleInfo.roleName, gameRoleInfo.serverId.ToString(), gameRoleInfo.serverName, gameRoleInfo.roleLv, gameRoleInfo.openServerTime.ToString());
+        }
+    }
+
+    public override void UpdateRoleLv()
+    {
+        GameRoleInfo gameRoleInfo = SDKMgr.Instance.GetGameRoleInfo();
+        if (gameRoleInfo == null || !gameRoleInfo.Valid())
+        {
+            Debug.LogError("[YouYiSDK][UpdateRoleLv] GameRoleInfo is null or not valid !!!");
+            return;
+        }
+        if (m_AJO != null)
+        {
+            SetSDKGameRoleInfo(gameRoleInfo);
+            string data = JsonUtility.ToJson(mSDKGameRoleInfo);
+            m_AJO.Call("levelLog", data);
+            //m_AJO.Call("levelLog", gameRoleInfo.roleId.ToString(), gameRoleInfo.roleName, gameRoleInfo.serverId.ToString(), gameRoleInfo.serverName, gameRoleInfo.roleLv, gameRoleInfo.openServerTime.ToString());
+        }
+    }
+
+    public override void ExitGame()
+    {
+        m_AJO.Call("exit");
+    }
+
+    public override bool Exit()
+    {
+        return false;
+    }
+
+    public override bool Quit()
+    {
+        return false;
+    }
+
+    public override void CallInitSuccessCB()
+    {
+        m_YouYiListener.OnInitSuccess();
+    }
+
+    public override void CallLoginSuccessCB()
+    {
+        m_YouYiListener.StartCheckLogin();
+    }
+
+    public override bool CheckHasModul(SDKModulType needCheckModulType)
+    {
+        if (needCheckModulType == SDKModulType.EXIT_VIEW)
+        {
+            return true;
+        }
+        return base.CheckHasModul(needCheckModulType);
+    }
+
+    public override void OpenModul(SDKModulType sDKModulType)
+    {
+        if (sDKModulType == SDKModulType.EXIT_VIEW)
+        {
+            if (m_AJO != null)
+            {
+                m_AJO.Call("exit");
+            }
+            return;
+        }
+        base.OpenModul(sDKModulType);
+    }
+
+    public override bool IsReportAction() { return true; }
+
+    public override void ReportAction(Dictionary<object, object> datas)
+    {
+        base.ReportAction(datas);
+        if (m_AJO != null)
+        {
+            using (AndroidJavaObject hashMapAJO = DictionaryToJavaHashMap(datas))
+            {
+                m_AJO.Call("reportAction", hashMapAJO);
+            }
+        }
+    }
+
+    public override bool HasCanEnterServerJudge() { return true; }
+    public override void CanEnterServerJudge(string serverId, string serverName)
+    {
+        base.CanEnterServerJudge(serverId, serverName);
+        if (m_AJO != null)
+        {
+            m_AJO.Call("canEnterServerJudge", serverId, serverName);
+        }
+    }
+
+
+    private AndroidJavaObject DictionaryToJavaHashMap(Dictionary<object, object> datas)
+    {
+        AndroidJavaObject hashMapAJO = new AndroidJavaObject("java.util.HashMap");
+        object[] args = new object[2];
+        System.IntPtr putMethod = AndroidJNIHelper.GetMethodID(
+            hashMapAJO.GetRawClass(), "put",
+            "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
+        foreach (var data in datas)
+        {
+            AndroidJavaObject key = GetAndroidJavaObject(data.Key);
+            if (key == null) continue;
+            AndroidJavaObject value = GetAndroidJavaObject(data.Value);
+            if (value == null) continue;
+            args[0] = key;
+            args[1] = value;
+            AndroidJNI.CallObjectMethod(
+                hashMapAJO.GetRawObject(),
+                putMethod,
+                AndroidJNIHelper.CreateJNIArgArray(args));
+            key.Dispose();
+            value.Dispose();
+        }
+        return hashMapAJO;
+    }
+
+    private AndroidJavaObject GetAndroidJavaObject(object value)
+    {
+        System.Type type = value.GetType();
+        if (type.IsPrimitive)
+        {
+            if (type.Equals(typeof(int)))
+            {
+                return new AndroidJavaObject("java.lang.Integer", value);
+            }
+            if (type.Equals(typeof(bool)))
+            {
+                return new AndroidJavaObject("java.lang.Boolean", value);
+            }
+            if (type.Equals(typeof(byte)))
+            {
+                return new AndroidJavaObject("java.lang.Byte", value);
+            }
+            if (type.Equals(typeof(short)))
+            {
+                return new AndroidJavaObject("java.lang.Short", value);
+            }
+            if (type.Equals(typeof(long)))
+            {
+                return new AndroidJavaObject("java.lang.Long", value);
+            }
+            if (type.Equals(typeof(float)))
+            {
+                return new AndroidJavaObject("java.lang.Float", value);
+            }
+            if (type.Equals(typeof(double)))
+            {
+                double dVal = (double)value;
+                if (dVal > int.MinValue && dVal < int.MaxValue)
+                {
+                    int intVal = (int)dVal;
+                    if (intVal == dVal)
+                    {
+                        return new AndroidJavaObject("java.lang.Integer", intVal);
+                    }
+                }
+                return new AndroidJavaObject("java.lang.Double", value);
+            }
+            if (type.Equals(typeof(char)))
+            {
+                return new AndroidJavaObject("java.lang.Character", value);
+            }
+        }
+        else
+        {
+            if (type.Equals(typeof(string)))
+            {
+                return new AndroidJavaObject("java.lang.String", value);
+            }
+            else if (type.Equals(typeof(AndroidJavaObject)))
+            {
+                return value as AndroidJavaObject;
+            }
+        }
+        return null;
+    }
+
+    private string GetCurRoleInfo()
+    {
+        string ret = null;
+        SetSDKGameRoleInfo();
+        //GameRoleInfo gameRoleInfo = SDKMgr.Instance.GetGameRoleInfo();
+        if (mSDKGameRoleInfo != null)
+        {
+            ret = JsonUtility.ToJson(mSDKGameRoleInfo);
+        }
+
+        return ret;
+    }
+
+    private void SetSDKGameRoleInfo(GameRoleInfo gameRoleInfo = null)
+    {
+        if (gameRoleInfo == null)
+            gameRoleInfo = SDKMgr.Instance.GetGameRoleInfo();
+        if (gameRoleInfo == null) return;
+        if (mSDKGameRoleInfo == null)
+        {
+            mSDKGameRoleInfo = new SDKGameRoleInfo(gameRoleInfo);
+        }
+        else
+        {
+            mSDKGameRoleInfo.Set(gameRoleInfo);
+        }
+    }
+}
+
+
+public class GameOrderInfo
+{
+    public string cpOrderId;
+    public string goodsId;
+    public string goodsName;
+    public string goodsDesc;
+    public string orderAmount;
+    public string goodsNum;
+    public string goinNum;
+    public string cpExtra;
+    public string callbackUrl;
+}
+public class SDKGameRoleInfo
+{
+    // 必填参数
+    public String openId;
+    public int serverId;
+    public String serverName;
+    public String roleId;
+    public String roleName;
+
+    public int roleLv;
+    public long roleCreateTime;
+    public long roleUpLvTime;
+
+    // 非必填参数
+    public int vipLv;
+    public int gender;
+    public int jobId;
+    public String jobName;
+    public long guildId;
+    public String guildName;
+    public int fightPower;
+    public String balance;
+
+
+    // 其它参数
+    public long lastLogoutTime;
+    public long loginTime;
+    public long openServerTime;
+
+    public SDKGameRoleInfo()
+    {
+
+    }
+    public SDKGameRoleInfo(GameRoleInfo roleInfo)
+    {
+        Set(roleInfo);
+    }
+
+    public void Set(GameRoleInfo roleInfo)
+    {
+        // 必填参数
+        openId = roleInfo.openId;
+        serverId = roleInfo.serverId;
+        serverName = roleInfo.serverName;
+        roleId = roleInfo.roleId;
+        roleName = roleInfo.roleName;
+
+        roleLv = roleInfo.roleLv;
+        roleCreateTime = roleInfo.roleCreateTime;
+        roleUpLvTime = roleInfo.roleUpLvTime;
+
+        // 非必填参数
+        vipLv = roleInfo.vipLv;
+        gender = roleInfo.gender;
+        jobId = roleInfo.jobId;
+        jobName = roleInfo.jobName;
+        guildId = roleInfo.guildId;
+        guildName = roleInfo.guildName;
+        fightPower = roleInfo.fightPower;
+        balance = roleInfo.balance;
+
+
+        // 其它参数
+        lastLogoutTime = roleInfo.lastLogoutTime;
+        loginTime = roleInfo.loginTime;
+        openServerTime = roleInfo.openServerTime;
+    }
+}
+#endif

+ 11 - 0
Build/BuildDependenceResource/Plugins/SDKBridge/dny_XuanYou_android/YouYiSDKAndroid.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e7f8c4f237e05ee41a270d9e329ae034
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: