FriendSProxy.cs 18 KB

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