QDJHGameManagerInit.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  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 void InitSDK()
  30. {
  31. JHGameSDKHandler eventHandler = GameObject.Find("JHGameSDKGameObject")?.GetComponent<JHGameSDKHandler>();
  32. if (eventHandler == null)
  33. {
  34. GameObject gameObject = new GameObject("JHGameSDKGameObject");
  35. gameObject.AddComponent<JHGameSDKHandler>();
  36. GameObject.DontDestroyOnLoad(gameObject);
  37. }
  38. }
  39. // 调用JS函数的通用方法
  40. private void CallJSFunction(string functionName, Dictionary<string, object> parameters)
  41. {
  42. // 将参数字典转换为JSON字符串
  43. string jsonParams = JsonConvert.SerializeObject(parameters);
  44. // 调用JS函数
  45. Application.ExternalCall(functionName, jsonParams);
  46. }
  47. /// <summary>
  48. /// 支付相关
  49. /// </summary>
  50. /// <param name="amount">充值金额 单位为分</param>
  51. /// <param name="cpProductId">商品 ID</param>
  52. /// <param name="productName">游戏货币名(如元宝,金币)</param>
  53. /// <param name="notifyUrl">充值回调地址</param>
  54. /// <param name="serverId">用户角色所在服 id</param>
  55. /// <param name="serverName">用户角色所在服务器名</param>
  56. /// <param name="roleName">角色名字</param>
  57. /// <param name="roleId">角色 id</param>
  58. /// <param name="roleLevel">角色等级</param>
  59. /// <param name="vipLevel">Vip 等级</param>
  60. /// <param name="cpOrderId">研发订单号</param>
  61. /// <param name="balance">玩家余额</param>
  62. /// <param name="extra">透传参数字段(原样返回)</param>
  63. /// <param name="fighting">战力</param>
  64. public void Recharge(int amount, string cpProductId, string productName, string notifyUrl, string serverId,
  65. string serverName, string roleName, string roleId, string roleLevel,
  66. string vipLevel, string cpOrderId, string balance, string extra = "",
  67. string fighting = "")
  68. {
  69. // 构建支付参数
  70. var parameters = new Dictionary<string, object>
  71. {
  72. { "amount", amount },
  73. { "cpProductId", cpProductId },
  74. { "productName", productName },
  75. { "notifyUrl", notifyUrl },
  76. { "serverId", serverId },
  77. { "serverName", serverName },
  78. { "roleName", roleName },
  79. { "roleId", roleId },
  80. { "roleLevel", roleLevel },
  81. { "vipLevel", vipLevel },
  82. { "cpOrderId", cpOrderId },
  83. { "balance", balance },
  84. { "extra", extra },
  85. { "fighting", fighting }
  86. };
  87. // 调用JS的JHRecharge函数
  88. CallJSFunction("JHRecharge", parameters);
  89. }
  90. /// <summary>
  91. /// 创建角色
  92. /// </summary>
  93. /// <param name="roleId">角色 id</param>
  94. /// <param name="roleName">角色名</param>
  95. /// <param name="roleLevel">角色等级</param>
  96. /// <param name="serverId">角色所在服 id</param>
  97. /// <param name="serverName">角色所在服名</param>
  98. /// <param name="vipLevel">角色 vip 等级</param>
  99. /// <param name="fighting">战力值 (若无传””)</param>
  100. /// <param name="balance">玩家余额</param>
  101. /// <param name="roleCTime">创角时间</param>
  102. public void CreateRole(string roleId, string roleName, int roleLevel, string serverId,
  103. string serverName, int vipLevel, string fighting, string balance,
  104. string roleCTime = "")
  105. {
  106. // 构建角色创建参数
  107. var parameters = new Dictionary<string, object>
  108. {
  109. { "roleId", roleId },
  110. { "roleName", roleName },
  111. { "roleLevel", roleLevel },
  112. { "serverId", serverId },
  113. { "serverName", serverName },
  114. { "vipLevel", vipLevel },
  115. { "fighting", fighting },
  116. { "balance", balance },
  117. { "roleCTime", roleCTime }
  118. };
  119. // 调用JS的JHCreateRole函数
  120. CallJSFunction("JHCreateRole", parameters);
  121. }
  122. // 角色登录
  123. public void LoginRole(string roleId, string roleName, int roleLevel, string serverId,
  124. string serverName, int vipLevel, string fighting, string balance,
  125. string roleCTime = "")
  126. {
  127. // 构建角色登录参数
  128. var parameters = new Dictionary<string, object>
  129. {
  130. { "roleId", roleId },
  131. { "roleName", roleName },
  132. { "roleLevel", roleLevel },
  133. { "serverId", serverId },
  134. { "serverName", serverName },
  135. { "vipLevel", vipLevel },
  136. { "fighting", fighting },
  137. { "balance", balance },
  138. { "roleCTime", roleCTime }
  139. };
  140. // 调用JS的JHLoginRole函数
  141. CallJSFunction("JHLoginRole", parameters);
  142. }
  143. // 角色升级
  144. public void UpgradeRole(string roleId, string roleName, int roleLevel, string serverId,
  145. string serverName, int vipLevel, string fighting, string balance,
  146. string roleCTime = "")
  147. {
  148. // 构建角色升级参数
  149. var parameters = new Dictionary<string, object>
  150. {
  151. { "roleId", roleId },
  152. { "roleName", roleName },
  153. { "roleLevel", roleLevel },
  154. { "serverId", serverId },
  155. { "serverName", serverName },
  156. { "vipLevel", vipLevel },
  157. { "fighting", fighting },
  158. { "balance", balance },
  159. { "roleCTime", roleCTime }
  160. };
  161. // 调用JS的JHUpgradeRole函数
  162. CallJSFunction("JHUpgradeRole", parameters);
  163. }
  164. // 顶号处理
  165. public void RepeatLogin()
  166. {
  167. // 调用JS的JHRepeatLogin函数
  168. CallJSFunction("JHRepeatLogin", new Dictionary<string, object>());
  169. }
  170. // 备案跳转
  171. public void CallIcpBeian()
  172. {
  173. // 调用JS的JHCallIcpBeian函数
  174. CallJSFunction("JHCallIcpBeian", new Dictionary<string, object>());
  175. }
  176. public class JHGameSDKHandler : AbJHGameSDKHandler
  177. {
  178. /// <summary>
  179. /// 测试消息
  180. /// </summary>
  181. /// <param name="message"></param>
  182. public override void ReceiveMessageAb(string message)
  183. {
  184. Debug.Log($"ReceiveMessageAb:{message}");
  185. }
  186. //通知Unity准备支付
  187. public override void OnRechargeStartAb(string message)
  188. {
  189. Debug.Log($"OnRechargeStartAb:{message}");
  190. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeStartAb(message);
  191. }
  192. //支付完成后通知Unity
  193. public override void OnRechargeCompleteAb(string message)
  194. {
  195. Debug.Log($"OnRechargeCompleteAb:{message}");
  196. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeCompleteAb(message);
  197. }
  198. //支付错误
  199. public override void OnRechargeErrorAb(string message)
  200. {
  201. Debug.Log($"OnRechargeErrorAb:{message}");
  202. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRechargeErrorAb(message);
  203. }
  204. //创建角色实例化完成
  205. public override void OnCreateRoleStartAb(string message)
  206. {
  207. Debug.Log($"OnCreateRoleStartAb:{message}");
  208. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleStartAb(message);
  209. }
  210. //创建角色结果
  211. public override void OnCreateRoleCompleteAb(string message)
  212. {
  213. Debug.Log($"OnCreateRoleCompleteAb:{message}");
  214. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleCompleteAb(message);
  215. }
  216. //创建角色错误
  217. public override void OnCreateRoleErrorAb(string message)
  218. {
  219. Debug.Log($"OnCreateRoleErrorAb:{message}");
  220. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCreateRoleErrorAb(message);
  221. }
  222. //角色登录实例化完成
  223. public override void OnLoginRoleStartAb(string message)
  224. {
  225. Debug.Log($"OnLoginRoleStartAb:{message}");
  226. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleStartAb(message);
  227. }
  228. //角色登录结果
  229. public override void OnLoginRoleCompleteAb(string message)
  230. {
  231. Debug.Log($"OnLoginRoleCompleteAb:{message}");
  232. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleCompleteAb(message);
  233. }
  234. //角色登录错误
  235. public override void OnLoginRoleErrorAb(string message)
  236. {
  237. Debug.Log($"OnLoginRoleErrorAb:{message}");
  238. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnLoginRoleErrorAb(message);
  239. }
  240. //角色升级回调实例化完成
  241. public override void OnUpgradeRoleStartAb(string message)
  242. {
  243. Debug.Log($"OnUpgradeRoleStartAb:{message}");
  244. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleStartAb(message);
  245. }
  246. public override void OnUpgradeRoleCompleteAb(string message)
  247. {
  248. Debug.Log($"OnUpgradeRoleCompleteAb:{message}");
  249. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleCompleteAb(message);
  250. }
  251. public override void OnUpgradeRoleErrorAb(string message)
  252. {
  253. Debug.Log($"OnUpgradeRoleErrorAb:{message}");
  254. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnUpgradeRoleErrorAb(message);
  255. }
  256. //顶号
  257. public override void OnRepeatLoginStartAb(string message)
  258. {
  259. Debug.Log($"OnRepeatLoginStartAb:{message}");
  260. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginStartAb(message);
  261. }
  262. public override void OnRepeatLoginCompleteAb(string message)
  263. {
  264. Debug.Log($"OnRepeatLoginCompleteAb:{message}");
  265. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginCompleteAb(message);
  266. }
  267. public override void OnRepeatLoginErrorAb(string message)
  268. {
  269. Debug.Log($"OnRepeatLoginErrorAb:{message}");
  270. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnRepeatLoginErrorAb(message);
  271. }
  272. public override void OnCallIcpBeianStartAb(string message)
  273. {
  274. Debug.Log($"OnCallIcpBeianStartAb:{message}");
  275. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianStartAb(message);
  276. }
  277. public override void OnCallIcpBeianCompleteAb(string message)
  278. {
  279. Debug.Log($"OnCallIcpBeianCompleteAb:{message}");
  280. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianCompleteAb(message);
  281. }
  282. public override void OnCallIcpBeianErrorAb(string message)
  283. {
  284. Debug.Log($"OnCallIcpBeianErrorAb:{message}");
  285. QDJHGameManagerInit.Instance._jhGameSDKListener?.OnCallIcpBeianErrorAb(message);
  286. }
  287. }
  288. }
  289. /// <summary>
  290. /// 场景(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)
  291. /// </summary>
  292. public enum DouYouRoleLogReportType
  293. {
  294. /// <summary>
  295. /// 进入游戏
  296. /// </summary>
  297. EnterGame = 1,
  298. /// <summary>
  299. /// 创建角色
  300. /// </summary>
  301. CreateRole = 2,
  302. /// <summary>
  303. /// 角色升级
  304. /// </summary>
  305. LevelUp = 3,
  306. /// <summary>
  307. /// 退出
  308. /// </summary>
  309. ExitGame = 4,
  310. /// <summary>
  311. /// 充值
  312. /// </summary>
  313. Pay = 5
  314. }
  315. }