QDJHGameManagerInit.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. using System.Collections.Generic;
  2. using JHGameSDK;
  3. using Unity.Plastic.Newtonsoft.Json;
  4. using UnityEngine;
  5. namespace GFGGame.Launcher
  6. {
  7. #region MyRegion
  8. // // 辅助类:可序列化的字典
  9. // [System.Serializable]
  10. // public class SerializableDictionary
  11. // {
  12. // public List<string> keys = new List<string>();
  13. // public List<object> values = new List<object>();
  14. //
  15. // public SerializableDictionary(Dictionary<string, object> dict)
  16. // {
  17. // foreach (var pair in dict)
  18. // {
  19. // keys.Add(pair.Key);
  20. // values.Add(pair.Value);
  21. // }
  22. // }
  23. // }
  24. #endregion
  25. public class QDJHGameManagerInit : SingletonBase<QDJHGameManagerInit>
  26. {
  27. public IJHGameSDKListener _jhGameSDKListener;
  28. // SDK 参数
  29. public static string UserId { get; private set; }
  30. public static string UserName { get; private set; }
  31. public static string Uuid { get; private set; }
  32. public static string Sign { get; private set; }
  33. public static string Timestamp { get; private set; }
  34. public static string CpExt { get; private set; }
  35. public void InitSDK()
  36. {
  37. JHGameSDKHandler eventHandler = GameObject.Find("JHGameSDKGameObject")?.GetComponent<JHGameSDKHandler>();
  38. if (eventHandler == null)
  39. {
  40. GameObject gameObject = new GameObject("JHGameSDKGameObject");
  41. gameObject.AddComponent<JHGameSDKHandler>();
  42. GameObject.DontDestroyOnLoad(gameObject);
  43. }
  44. }
  45. // 调用JS函数的通用方法
  46. private void CallJSFunction(string functionName, Dictionary<string, object> parameters)
  47. {
  48. // 将参数字典转换为JSON字符串
  49. string jsonParams = JsonConvert.SerializeObject(parameters);
  50. // 调用JS函数
  51. Application.ExternalCall(functionName, jsonParams);
  52. }
  53. // 从URL获取SDK参数并初始化
  54. public void InitializeSDKParams(Dictionary<string, object> paramsDict)
  55. {
  56. if (paramsDict.ContainsKey("user_id")) UserId = paramsDict["user_id"].ToString();
  57. if (paramsDict.ContainsKey("user_name")) UserName = paramsDict["user_name"].ToString();
  58. if (paramsDict.ContainsKey("uuid")) Uuid = paramsDict["uuid"].ToString();
  59. if (paramsDict.ContainsKey("sign")) Sign = paramsDict["sign"].ToString();
  60. if (paramsDict.ContainsKey("timestamp")) Timestamp = paramsDict["timestamp"].ToString();
  61. if (paramsDict.ContainsKey("cp_ext")) CpExt = paramsDict["cp_ext"].ToString();
  62. Debug.Log("SDK参数初始化完成");
  63. Debug.Log($"UserID: {UserId}, UserName: {UserName}, Uuid: {Uuid}, CpExt:{CpExt}");
  64. }
  65. // 支付相关
  66. public void Recharge(int amount, string productName, string notifyUrl, string serverId,
  67. string serverName, string roleName, string roleId, string roleLevel,
  68. string vipLevel, string cpOrderId, string balance, string extra = "",
  69. string fighting = "")
  70. {
  71. // 构建支付参数
  72. var parameters = new Dictionary<string, object>
  73. {
  74. { "amount", amount },
  75. { "productName", productName },
  76. { "notifyUrl", notifyUrl },
  77. { "serverId", serverId },
  78. { "serverName", serverName },
  79. { "roleName", roleName },
  80. { "roleId", roleId },
  81. { "roleLevel", roleLevel },
  82. { "vipLevel", vipLevel },
  83. { "cpOrderId", cpOrderId },
  84. { "balance", balance },
  85. { "extra", extra },
  86. { "fighting", fighting }
  87. };
  88. // 调用JS的JHRecharge函数
  89. CallJSFunction("JHRecharge", parameters);
  90. }
  91. // 创建角色
  92. public void CreateRole(string roleId, string roleName, int roleLevel, string serverId,
  93. string serverName, int vipLevel, string fighting, string balance,
  94. string roleCTime = "")
  95. {
  96. // 构建角色创建参数
  97. var parameters = new Dictionary<string, object>
  98. {
  99. { "roleId", roleId },
  100. { "roleName", roleName },
  101. { "roleLevel", roleLevel },
  102. { "serverId", serverId },
  103. { "serverName", serverName },
  104. { "vipLevel", vipLevel },
  105. { "fighting", fighting },
  106. { "balance", balance },
  107. { "roleCTime", roleCTime }
  108. };
  109. // 调用JS的JHCreateRole函数
  110. CallJSFunction("JHCreateRole", parameters);
  111. }
  112. // 角色登录
  113. public void LoginRole(string roleId, string roleName, int roleLevel, string serverId,
  114. string serverName, int vipLevel, string fighting, string balance,
  115. string roleCTime = "")
  116. {
  117. // 构建角色登录参数
  118. var parameters = new Dictionary<string, object>
  119. {
  120. { "roleId", roleId },
  121. { "roleName", roleName },
  122. { "roleLevel", roleLevel },
  123. { "serverId", serverId },
  124. { "serverName", serverName },
  125. { "vipLevel", vipLevel },
  126. { "fighting", fighting },
  127. { "balance", balance },
  128. { "roleCTime", roleCTime }
  129. };
  130. // 调用JS的JHLoginRole函数
  131. CallJSFunction("JHLoginRole", parameters);
  132. }
  133. // 角色升级
  134. public void UpgradeRole(string roleId, string roleName, int roleLevel, string serverId,
  135. string serverName, int vipLevel, string fighting, string balance,
  136. string roleCTime = "")
  137. {
  138. // 构建角色升级参数
  139. var parameters = new Dictionary<string, object>
  140. {
  141. { "roleId", roleId },
  142. { "roleName", roleName },
  143. { "roleLevel", roleLevel },
  144. { "serverId", serverId },
  145. { "serverName", serverName },
  146. { "vipLevel", vipLevel },
  147. { "fighting", fighting },
  148. { "balance", balance },
  149. { "roleCTime", roleCTime }
  150. };
  151. // 调用JS的JHUpgradeRole函数
  152. CallJSFunction("JHUpgradeRole", parameters);
  153. }
  154. // 顶号处理
  155. public void RepeatLogin()
  156. {
  157. // 调用JS的JHRepeatLogin函数
  158. CallJSFunction("JHRepeatLogin", new Dictionary<string, object>());
  159. }
  160. // 备案跳转
  161. public void CallIcpBeian()
  162. {
  163. // 调用JS的JHCallIcpBeian函数
  164. CallJSFunction("JHCallIcpBeian", new Dictionary<string, object>());
  165. }
  166. public class JHGameSDKHandler : AbJHGameSDKHandler
  167. {
  168. /// <summary>
  169. /// 测试消息
  170. /// </summary>
  171. /// <param name="message"></param>
  172. public override void ReceiveMessageAb(string message)
  173. {
  174. Debug.Log($"ReceiveMessageAb:{message}");
  175. }
  176. //通知Unity准备支付
  177. public override void OnRechargeStartAb(string message)
  178. {
  179. Debug.Log($"OnRechargeStartAb:{message}");
  180. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeStartAb(message);
  181. }
  182. //支付完成后通知Unity
  183. public override void OnRechargeCompleteAb(string message)
  184. {
  185. Debug.Log($"OnRechargeCompleteAb:{message}");
  186. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeCompleteAb(message);
  187. }
  188. //支付错误
  189. public override void OnRechargeErrorAb(string message)
  190. {
  191. Debug.Log($"OnRechargeErrorAb:{message}");
  192. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeErrorAb(message);
  193. }
  194. //创建角色实例化完成
  195. public override void OnCreateRoleStartAb(string message)
  196. {
  197. Debug.Log($"OnCreateRoleStartAb:{message}");
  198. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleStartAb(message);
  199. }
  200. //创建角色结果
  201. public override void OnCreateRoleCompleteAb(string message)
  202. {
  203. Debug.Log($"OnCreateRoleCompleteAb:{message}");
  204. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleCompleteAb(message);
  205. }
  206. //创建角色错误
  207. public override void OnCreateRoleErrorAb(string message)
  208. {
  209. Debug.Log($"OnCreateRoleErrorAb:{message}");
  210. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleErrorAb(message);
  211. }
  212. //角色登录实例化完成
  213. public override void OnLoginRoleStartAb(string message)
  214. {
  215. Debug.Log($"OnLoginRoleStartAb:{message}");
  216. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleStartAb(message);
  217. }
  218. //角色登录结果
  219. public override void OnLoginRoleCompleteAb(string message)
  220. {
  221. Debug.Log($"OnLoginRoleCompleteAb:{message}");
  222. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleCompleteAb(message);
  223. }
  224. //角色登录错误
  225. public override void OnLoginRoleErrorAb(string message)
  226. {
  227. Debug.Log($"OnLoginRoleErrorAb:{message}");
  228. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleErrorAb(message);
  229. }
  230. //角色升级回调实例化完成
  231. public override void OnUpgradeRoleStartAb(string message)
  232. {
  233. Debug.Log($"OnUpgradeRoleStartAb:{message}");
  234. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleStartAb(message);
  235. }
  236. public override void OnUpgradeRoleCompleteAb(string message)
  237. {
  238. Debug.Log($"OnUpgradeRoleCompleteAb:{message}");
  239. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleCompleteAb(message);
  240. }
  241. public override void OnUpgradeRoleErrorAb(string message)
  242. {
  243. Debug.Log($"OnUpgradeRoleErrorAb:{message}");
  244. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleErrorAb(message);
  245. }
  246. //顶号
  247. public override void OnRepeatLoginStartAb(string message)
  248. {
  249. Debug.Log($"OnRepeatLoginStartAb:{message}");
  250. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginStartAb(message);
  251. }
  252. public override void OnRepeatLoginCompleteAb(string message)
  253. {
  254. Debug.Log($"OnRepeatLoginCompleteAb:{message}");
  255. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginCompleteAb(message);
  256. }
  257. public override void OnRepeatLoginErrorAb(string message)
  258. {
  259. Debug.Log($"OnRepeatLoginErrorAb:{message}");
  260. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginErrorAb(message);
  261. }
  262. public override void OnCallIcpBeianStartAb(string message)
  263. {
  264. Debug.Log($"OnCallIcpBeianStartAb:{message}");
  265. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianStartAb(message);
  266. }
  267. public override void OnCallIcpBeianCompleteAb(string message)
  268. {
  269. Debug.Log($"OnCallIcpBeianCompleteAb:{message}");
  270. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianCompleteAb(message);
  271. }
  272. public override void OnCallIcpBeianErrorAb(string message)
  273. {
  274. Debug.Log($"OnCallIcpBeianErrorAb:{message}");
  275. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianErrorAb(message);
  276. }
  277. }
  278. }
  279. /// <summary>
  280. /// 场景(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)
  281. /// </summary>
  282. public enum DouYouRoleLogReportType
  283. {
  284. /// <summary>
  285. /// 进入游戏
  286. /// </summary>
  287. EnterGame = 1,
  288. /// <summary>
  289. /// 创建角色
  290. /// </summary>
  291. CreateRole = 2,
  292. /// <summary>
  293. /// 角色升级
  294. /// </summary>
  295. LevelUp = 3,
  296. /// <summary>
  297. /// 退出
  298. /// </summary>
  299. ExitGame = 4,
  300. /// <summary>
  301. /// 充值
  302. /// </summary>
  303. Pay = 5
  304. }
  305. }