FriendSProxy.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. using System.Collections.Generic;
  2. using GFGGame;
  3. using ET;
  4. using UnityEditor.VersionControl;
  5. namespace ET
  6. {
  7. //推送好友每日重置
  8. public class NoticeFriendDailyReset : AMHandler<S2C_NoticeFriendDailyReset>
  9. {
  10. protected override async ETTask Run(Session session, S2C_NoticeFriendDailyReset message)
  11. {
  12. FriendSProxy.ReqAllFriendInfos().Coroutine();
  13. await ETTask.CompletedTask;
  14. }
  15. }
  16. //推送其他玩家信息变化
  17. public class NoticeRoleInfoChanged : AMHandler<S2C_NoticeFriendInfo>
  18. {
  19. protected override async ETTask Run(Session session, S2C_NoticeFriendInfo message)
  20. {
  21. OtherRoleInfoData roleInfo = new OtherRoleInfoData();
  22. roleInfo.roleId = message.RoleInfo.RoleId;
  23. roleInfo.roleLv = message.RoleInfo.RoleLvl;
  24. roleInfo.roleName = message.RoleInfo.RoleName;
  25. roleInfo.offlineTimeSec = message.RoleInfo.OfflineTimeSec;
  26. FriendDataManager.Instance.ChangeFriendInfo(roleInfo);
  27. EventAgent.DispatchEvent(ConstMessage.FRIEND_REFRESH);
  28. await ETTask.CompletedTask;
  29. }
  30. }
  31. //推送申请添加好友信息
  32. public class NoticeApplyForFriend : AMHandler<S2C_NoticeApplyForFriend>
  33. {
  34. protected override async ETTask Run(Session session, S2C_NoticeApplyForFriend message)
  35. {
  36. if(FriendDataManager.Instance.CheckInApplyList(message.FriendInfo.RoleInfo.RoleId))
  37. {
  38. return;
  39. }
  40. OtherRoleInfoData roleInfo = new OtherRoleInfoData();
  41. roleInfo.roleId = message.FriendInfo.RoleInfo.RoleId;
  42. roleInfo.roleName = message.FriendInfo.RoleInfo.RoleName;
  43. roleInfo.roleLv = message.FriendInfo.RoleInfo.RoleLvl;
  44. roleInfo.offlineTimeSec = message.FriendInfo.RoleInfo.OfflineTimeSec;
  45. roleInfo.headId = message.FriendInfo.RoleInfo.HeadItemId;
  46. roleInfo.headBorderId = message.FriendInfo.RoleInfo.HeadBorderItemId;
  47. FriendInfoData friendInfo = new FriendInfoData();
  48. friendInfo.roleInfo = roleInfo;
  49. friendInfo.type = message.FriendInfo.Type;
  50. friendInfo.giveGiftState = message.FriendInfo.GiveGiftState;
  51. friendInfo.takeGiftState = message.FriendInfo.TakeGiftState;
  52. FriendDataManager.Instance.AddApplyData(friendInfo);
  53. EventAgent.DispatchEvent(ConstMessage.FRIEND_APPLY_CHANGE);
  54. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  55. await ETTask.CompletedTask;
  56. }
  57. }
  58. //推送新增好友
  59. public class NoticeAddFriends : AMHandler<S2C_NoticeAddFriends>
  60. {
  61. protected override async ETTask Run(Session session, S2C_NoticeAddFriends message)
  62. {
  63. for (int i = 0; i < message.FriendList.Count; i++)
  64. {
  65. OtherRoleInfoData roleInfo = new OtherRoleInfoData();
  66. roleInfo.roleId = message.FriendList[i].RoleInfo.RoleId;
  67. roleInfo.roleName = message.FriendList[i].RoleInfo.RoleName;
  68. roleInfo.roleLv = message.FriendList[i].RoleInfo.RoleLvl;
  69. roleInfo.offlineTimeSec = message.FriendList[i].RoleInfo.OfflineTimeSec;
  70. roleInfo.headId = message.FriendList[i].RoleInfo.HeadItemId;
  71. roleInfo.headBorderId = message.FriendList[i].RoleInfo.HeadBorderItemId;
  72. FriendInfoData friendInfo = new FriendInfoData();
  73. friendInfo.roleInfo = roleInfo;
  74. friendInfo.type = message.FriendList[i].Type;
  75. friendInfo.giveGiftState = message.FriendList[i].GiveGiftState;
  76. friendInfo.takeGiftState = message.FriendList[i].TakeGiftState;
  77. FriendDataManager.Instance.AddFriend(friendInfo);
  78. FriendDataManager.Instance.RemoveApplyData(message.FriendList[i].RoleInfo.RoleId);
  79. }
  80. EventAgent.DispatchEvent(ConstMessage.FRIEND_ADD);
  81. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  82. await ETTask.CompletedTask;
  83. }
  84. }
  85. //推送删除好友
  86. public class NoticeDeleteFriend : AMHandler<S2C_NoticeDeleteFriend>
  87. {
  88. protected override async ETTask Run(Session session, S2C_NoticeDeleteFriend message)
  89. {
  90. FriendDataManager.Instance.RemoveFriend(message.FriendId);
  91. EventAgent.DispatchEvent(ConstMessage.FRIEND_REMOVE);
  92. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  93. await ETTask.CompletedTask;
  94. }
  95. }
  96. //推送领取赠送状态
  97. public class NoticeTakeGiftStates : AMHandler<S2C_NoticeTakeGiftStates>
  98. {
  99. protected override async ETTask Run(Session session, S2C_NoticeTakeGiftStates message)
  100. {
  101. FriendDataManager.Instance.ChangeTakeGiftStates(message.FriendId, message.TakeGiftState);
  102. EventAgent.DispatchEvent(ConstMessage.FRIEND_REFRESH);
  103. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  104. await ETTask.CompletedTask;
  105. }
  106. }
  107. }
  108. namespace GFGGame
  109. {
  110. public static class FriendSProxy
  111. {
  112. //请求所有好友信息
  113. public static async ETTask<bool> ReqAllFriendInfos()
  114. {
  115. S2C_GetAllFriendInfos response = null;
  116. response = (S2C_GetAllFriendInfos)await MessageHelper.SendToServer(new C2S_GetAllFriendInfos());
  117. if (response != null)
  118. {
  119. if (response.Error == ErrorCode.ERR_Success)
  120. {
  121. FriendDataManager.Instance.ClearAddFriend();
  122. for (int i = 0; i < response.FriendList.Count; i++)
  123. {
  124. OtherRoleInfoData roleInfo = new OtherRoleInfoData();
  125. roleInfo.roleId = response.FriendList[i].RoleInfo.RoleId;
  126. roleInfo.roleName = response.FriendList[i].RoleInfo.RoleName;
  127. roleInfo.roleLv = response.FriendList[i].RoleInfo.RoleLvl;
  128. roleInfo.offlineTimeSec = response.FriendList[i].RoleInfo.OfflineTimeSec;
  129. roleInfo.headId = response.FriendList[i].RoleInfo.HeadItemId;
  130. roleInfo.headBorderId = response.FriendList[i].RoleInfo.HeadBorderItemId;
  131. FriendInfoData friendInfo = new FriendInfoData();
  132. friendInfo.roleInfo = roleInfo;
  133. friendInfo.type = response.FriendList[i].Type;
  134. friendInfo.giveGiftState = response.FriendList[i].GiveGiftState;
  135. friendInfo.takeGiftState = response.FriendList[i].TakeGiftState;
  136. if (response.FriendList[i].Type == FriendType.Good)
  137. {
  138. FriendDataManager.Instance.AddFriend(friendInfo);
  139. }
  140. else if (response.FriendList[i].Type == FriendType.Apply)
  141. {
  142. if (!FriendDataManager.Instance.CheckInApplyList(friendInfo.roleInfo.roleId))
  143. {
  144. FriendDataManager.Instance.AddApplyData(friendInfo);
  145. }
  146. }
  147. }
  148. EventAgent.DispatchEvent(ConstMessage.FRIEND_ADD);
  149. return true;
  150. }
  151. }
  152. return false;
  153. }
  154. //赠送
  155. public static async ETTask<bool> ReqGiveGiftToFriend(long friendId)
  156. {
  157. S2C_GiveGiftToFriend response = null;
  158. response = (S2C_GiveGiftToFriend)await MessageHelper.SendToServer(new C2S_GiveGiftToFriend() { FriendId = friendId });
  159. if (response != null)
  160. {
  161. if (response.Error == ErrorCode.ERR_Success)
  162. {
  163. FriendDataManager.Instance.ChangeGiveGiftStates(response.FriendId, response.GiveGiftState);
  164. PromptController.Instance.ShowFloatTextPrompt(string.Format("赠送好友体力*{0}", GlobalCfgArray.globalCfg.onceGivePowerCount));
  165. EventAgent.DispatchEvent(ConstMessage.FRIEND_REFRESH);
  166. return true;
  167. }
  168. }
  169. return false;
  170. }
  171. //一键赠送
  172. public static async ETTask<bool> ReqGiveGiftToAllFriend()
  173. {
  174. S2C_GiveGiftToAllFriends response = null;
  175. response = (S2C_GiveGiftToAllFriends)await MessageHelper.SendToServer(new C2S_GiveGiftToAllFriends());
  176. if (response != null)
  177. {
  178. if (response.Error == ErrorCode.ERR_Success)
  179. {
  180. for (int i = 0; i < response.FriendIds.Count; i++)
  181. {
  182. FriendDataManager.Instance.ChangeGiveGiftStates(response.FriendIds[i], response.GiveGiftStates[i]);
  183. }
  184. if (response.FriendIds.Count > 0)
  185. {
  186. PromptController.Instance.ShowFloatTextPrompt(string.Format("送出{0}份体力", response.FriendIds.Count));
  187. }
  188. else
  189. {
  190. PromptController.Instance.ShowFloatTextPrompt("无好友可赠送体力");
  191. }
  192. EventAgent.DispatchEvent(ConstMessage.FRIEND_REFRESH);
  193. return true;
  194. }
  195. }
  196. return false;
  197. }
  198. //领取并赠送赠送
  199. public static async ETTask<bool> ReqTakeGiftFromFriend(long friendId)
  200. {
  201. S2C_TakeGiftFromFriend response = null;
  202. response = (S2C_TakeGiftFromFriend)await MessageHelper.SendToServer(new C2S_TakeGiftFromFriend() { FriendId = friendId });
  203. if (response != null)
  204. {
  205. if (response.Error == ErrorCode.ERR_Success)
  206. {
  207. FriendDataManager.Instance.ChangeGiveTakeGiftStates(response.FriendId, response.GiveGiftState, response.TakeGiftState);
  208. PromptController.Instance.ShowFloatTextPrompt(string.Format("领取成功,获得体力*{0}", GlobalCfgArray.globalCfg.onceGivePowerCount));
  209. EventAgent.DispatchEvent(ConstMessage.FRIEND_REFRESH);
  210. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  211. return true;
  212. }
  213. }
  214. return false;
  215. }
  216. //一键领取并赠送
  217. public static async ETTask<bool> ReqTakeGiftFromAllFriend()
  218. {
  219. S2C_TakeGiftFromAllFriend response = null;
  220. response = (S2C_TakeGiftFromAllFriend)await MessageHelper.SendToServer(new C2S_TakeGiftFromAllFriend());
  221. if (response != null)
  222. {
  223. if (response.Error == ErrorCode.ERR_Success)
  224. {
  225. for (int i = 0; i < response.FriendIds.Count; i++)
  226. {
  227. FriendDataManager.Instance.ChangeGiveTakeGiftStates(response.FriendIds[i], response.GiveGiftStates[i], response.TakeGiftStates[i]);
  228. }
  229. if (FriendDataManager.Instance.Count >= FriendDataManager.Instance.maxGetPowerCount)
  230. {
  231. PromptController.Instance.ShowFloatTextPrompt("今日体力已全部领取");
  232. }
  233. else
  234. {
  235. PromptController.Instance.ShowFloatTextPrompt(string.Format("已领取{0}体力", response.FriendIds.Count * GlobalCfgArray.globalCfg.onceGivePowerCount));
  236. }
  237. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  238. EventAgent.DispatchEvent(ConstMessage.FRIEND_REFRESH);
  239. return true;
  240. }
  241. }
  242. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  243. return false;
  244. }
  245. //请求搜索其他玩家
  246. public static async ETTask<bool> ReqSearchRole(string roleName)
  247. {
  248. S2C_SearchRole response = null;
  249. response = (S2C_SearchRole)await MessageHelper.SendToServer(new C2S_SearchRole() { RoleName = roleName });
  250. if (response != null)
  251. {
  252. if (response.Error == ErrorCode.ERR_Success)
  253. {
  254. FriendDataManager.Instance.ClearSearchDatas();
  255. for (int i = 0; i < response.RoleList.Count; i++)
  256. {
  257. OtherRoleInfoData roleInfo = new OtherRoleInfoData();
  258. roleInfo.roleId = response.RoleList[i].RoleId;
  259. roleInfo.roleName = response.RoleList[i].RoleName;
  260. roleInfo.roleLv = response.RoleList[i].RoleLvl;
  261. roleInfo.offlineTimeSec = response.RoleList[i].OfflineTimeSec;
  262. roleInfo.headId = response.RoleList[i].HeadItemId;
  263. roleInfo.headBorderId = response.RoleList[i].HeadBorderItemId;
  264. FriendDataManager.Instance.AddSearchData(roleInfo);
  265. }
  266. return true;
  267. }
  268. }
  269. return false;
  270. }
  271. //请求推荐好友
  272. public static async ETTask<bool> ReqRecommendFriends()
  273. {
  274. S2C_GetRecommendFriends response = null;
  275. response = (S2C_GetRecommendFriends)await MessageHelper.SendToServer(new C2S_GetRecommendFriends());
  276. if (response != null)
  277. {
  278. if (response.Error == ErrorCode.ERR_Success)
  279. {
  280. FriendDataManager.Instance.ClearRecommendDatas();
  281. for (int i = 0; i < response.RoleList.Count; i++)
  282. {
  283. OtherRoleInfoData roleInfo = new OtherRoleInfoData();
  284. roleInfo.roleId = response.RoleList[i].RoleId;
  285. roleInfo.roleName = response.RoleList[i].RoleName;
  286. roleInfo.roleLv = response.RoleList[i].RoleLvl;
  287. roleInfo.offlineTimeSec = response.RoleList[i].OfflineTimeSec;
  288. roleInfo.headId = response.RoleList[i].HeadItemId;
  289. roleInfo.headBorderId = response.RoleList[i].HeadBorderItemId;
  290. FriendDataManager.Instance.AddRecommendData(roleInfo);
  291. }
  292. return true;
  293. }
  294. }
  295. return false;
  296. }
  297. //申请添加好友
  298. public static async ETTask<bool> ReqApplyForFriend(long friendId)
  299. {
  300. S2C_RequestApplyForFriend response = null;
  301. response = (S2C_RequestApplyForFriend)await MessageHelper.SendToServer(new C2S_RequestApplyForFriend() { FriendId = friendId });
  302. if (response != null)
  303. {
  304. if (response.Error == ErrorCode.ERR_Success)
  305. {
  306. return true;
  307. }
  308. }
  309. return false;
  310. }
  311. //同意添加好友
  312. public static async ETTask<bool> ReqAcceptApplyForFriend(long friendId)
  313. {
  314. S2C_AcceptApplyForFriend response = null;
  315. response = (S2C_AcceptApplyForFriend)await MessageHelper.SendToServer(new C2S_AcceptApplyForFriend() { FriendId = friendId });
  316. if (response != null)
  317. {
  318. if (response.Error == ErrorCode.ERR_Success)
  319. {
  320. // FriendDataManager.Instance.RemoveApplyData(roleId);
  321. return true;
  322. }
  323. }
  324. return false;
  325. }
  326. //拒绝添加好友
  327. public static async ETTask<bool> ReqRefuseApplyForFriend(long friendId)
  328. {
  329. S2C_RefuseApplyForFriend response = null;
  330. response = (S2C_RefuseApplyForFriend)await MessageHelper.SendToServer(new C2S_RefuseApplyForFriend() { FriendId = friendId });
  331. if (response != null)
  332. {
  333. if (response.Error == ErrorCode.ERR_Success)
  334. {
  335. FriendDataManager.Instance.RemoveApplyData(friendId);
  336. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  337. EventAgent.DispatchEvent(ConstMessage.FRIEND_APPLY_CHANGE);
  338. return true;
  339. }
  340. }
  341. return false;
  342. }
  343. //一键同意添加好友
  344. public static async ETTask<bool> ReqAcceptAllApplyForFriend()
  345. {
  346. S2C_AcceptAllApplyForFriend response = null;
  347. response = (S2C_AcceptAllApplyForFriend)await MessageHelper.SendToServer(new C2S_AcceptAllApplyForFriend());
  348. if (response != null)
  349. {
  350. if (response.Error == ErrorCode.ERR_Success)
  351. {
  352. return true;
  353. }
  354. }
  355. return false;
  356. }
  357. //一键拒绝添加好友
  358. public static async ETTask<bool> ReqRefuseAllApplyForFriend()
  359. {
  360. S2C_RefuseAllApplyForFriend response = null;
  361. response = (S2C_RefuseAllApplyForFriend)await MessageHelper.SendToServer(new C2S_RefuseAllApplyForFriend());
  362. if (response != null)
  363. {
  364. if (response.Error == ErrorCode.ERR_Success)
  365. {
  366. FriendDataManager.Instance.ClearApplyDatas();
  367. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  368. EventAgent.DispatchEvent(ConstMessage.FRIEND_APPLY_CHANGE);
  369. return true;
  370. }
  371. }
  372. return false;
  373. }
  374. //请求删除好友
  375. public static async ETTask<bool> ReqDeleteFriend(long friendId)
  376. {
  377. S2C_RequestDeleteFriend response = null;
  378. response = (S2C_RequestDeleteFriend)await MessageHelper.SendToServer(new C2S_RequestDeleteFriend() { FriendId = friendId });
  379. if (response != null)
  380. {
  381. if (response.Error == ErrorCode.ERR_Success)
  382. {
  383. FriendDataManager.Instance.RemoveFriend(response.FriendId);
  384. PromptController.Instance.ShowFloatTextPrompt("好友已删除");
  385. EventAgent.DispatchEvent(ConstMessage.FRIEND_REMOVE);
  386. return true;
  387. }
  388. }
  389. return false;
  390. }
  391. }
  392. }