FieldWorkSproxy.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. using System;
  2. using System.Collections.Generic;
  3. using ET;
  4. namespace GFGGame
  5. {
  6. public class NoticeFieldWorkChange : AMHandler<SC_RankChange>
  7. {
  8. protected override async ETTask Run(Session session, SC_RankChange message)
  9. {
  10. await ETTask.CompletedTask;
  11. }
  12. }
  13. public static class FieldWorkSproxy
  14. {
  15. //获取爬塔信息
  16. public static async ETTask ReqFieldWorkInfos()
  17. {
  18. S2C_GetGetCimbingTowerInfo response = null;
  19. response = (S2C_GetGetCimbingTowerInfo)await MessageHelper.SendToServer(new C2S_GetCimbingTowerInfo());
  20. if (response != null)
  21. {
  22. if (response.Error == ErrorCode.ERR_Success)
  23. {
  24. FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
  25. FieldWorkDataManager.Instance.Tag = response.WeekTags ;
  26. FieldWorkDataManager.Instance.DressupList.Clear();
  27. FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;
  28. FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
  29. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Clear();
  30. foreach (var item in response.CimbingTowerLevelInfoList)
  31. {
  32. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId,item);
  33. }
  34. AddDressup(response.EquipAIds, 0, 0);
  35. AddDressup(response.EquipBIds, 0, 1);
  36. AddDressup(response.EquipCIds, 0, 2);
  37. EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
  38. }
  39. }
  40. }
  41. public static void AddDressup(List<int> itemList,int scoreType,int i)
  42. {
  43. FightData roleData = GetFightRoleData(itemList, FieldWorkDataManager.Instance.roleInfo, scoreType);
  44. roleData.leagueSkillScore = FieldWorkDataManager.Instance.GetAllSkillScore(scoreType);
  45. FightDataManager.Instance.SetItemScoreList(roleData);
  46. ArenaDataManager.Instance.SetMineFightAttr(roleData, scoreType);
  47. ScoreSystemData.Instance.SetEquipScoresWithPartId(roleData);
  48. FieldWorkDataManager.Instance.DressupList.Add(roleData);
  49. }
  50. //更换搭配
  51. public static async ETTask<bool> ReqChangeFieldWorkDressup()
  52. {
  53. List<List<int>> dress = new List<List<int>>();
  54. dress = FieldWorkDataManager.Instance.GetDressAndCard();
  55. S2C_CimbingTowerSaveCollocation response = null;
  56. response = (S2C_CimbingTowerSaveCollocation)await MessageHelper.SendToServer(new C2S_CimbingTowerSaveCollocation()
  57. {
  58. EquipAIds = dress[0],
  59. EquipBIds = dress[1],
  60. EquipCIds = dress[2],
  61. }) ;
  62. if (response != null)
  63. {
  64. if (response.Error == ErrorCode.ERR_Success)
  65. {
  66. return true;
  67. }
  68. }
  69. return false;
  70. }
  71. //更换单个搭配
  72. public static async ETTask<bool> ReqChangeFieldWorkDressupOne(int index,int cardId ,List<int> dressList)
  73. {
  74. List<int> dress = new List<int>();
  75. dress = dressList;
  76. dress.Add(cardId);
  77. List<List<int>> dressAll = new List<List<int>>();
  78. dressAll = FieldWorkDataManager.Instance.GetDressAndCard();
  79. dressAll[index] = dress;
  80. S2C_CimbingTowerSaveCollocation response = null;
  81. response = (S2C_CimbingTowerSaveCollocation)await MessageHelper.SendToServer(new C2S_CimbingTowerSaveCollocation()
  82. {
  83. EquipAIds = dressAll[0],
  84. EquipBIds = dressAll[1],
  85. EquipCIds = dressAll[2],
  86. });
  87. if (response != null)
  88. {
  89. if (response.Error == ErrorCode.ERR_Success)
  90. {
  91. return true;
  92. }
  93. }
  94. return false;
  95. }
  96. //关卡挑战
  97. public static async ETTask<bool> ReqFieldWorkFight(int levelId)
  98. {
  99. List<List<int>> dress = new List<List<int>>();
  100. dress = FieldWorkDataManager.Instance.GetDressAndCard();
  101. S2C_CimbingTowerFightLevel response = null;
  102. response = (S2C_CimbingTowerFightLevel)await MessageHelper.SendToServer(new C2S_CimbingTowerFightLevel()
  103. {
  104. LevelId = levelId,
  105. FightScoreList = FieldWorkDataManager.Instance.myScore,
  106. EquipAIds = dress[0],
  107. EquipBIds = dress[1],
  108. EquipCIds = dress[2],
  109. }) ;
  110. if (response != null)
  111. {
  112. FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
  113. if (response.Error == ErrorCode.ERR_Success)
  114. {
  115. FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
  116. FieldWorkDataManager.Instance.HistoryDressupList = response.WeekUserItems;
  117. if (response.CimbingTowerLevelInfo.IsPass)
  118. {
  119. if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
  120. {
  121. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;
  122. }
  123. else
  124. {
  125. //PromptController.Instance.ShowFloatTextPrompt("已通过,自动清除搭配!");
  126. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(response.CimbingTowerLevelInfo.LevelId, response.CimbingTowerLevelInfo);
  127. }
  128. int limit = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
  129. bool isDelete = false;
  130. for(int i=0;i<FieldWorkDataManager.Instance.DressupList.Count;i++)
  131. {
  132. FieldWorkDataManager.Instance.DressupList[i].itemList.Clear();
  133. FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
  134. isDelete = true;
  135. }
  136. FieldWorkDataManager.Instance.BonusList = response.BonusList;
  137. EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
  138. return true;
  139. }
  140. else
  141. {
  142. if (response.CimbingTowerLevelInfo != null)
  143. {
  144. if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
  145. {
  146. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;
  147. }
  148. else
  149. {
  150. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(response.CimbingTowerLevelInfo.LevelId, response.CimbingTowerLevelInfo);
  151. }
  152. }
  153. int limit = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
  154. bool isDelete = false;
  155. for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
  156. {
  157. foreach (var item in FieldWorkDataManager.Instance.CardAbrasionInfoList)
  158. {
  159. if (item.Card == FieldWorkDataManager.Instance.DressupList[i].cardId)
  160. {
  161. if (item.UseNum >= limit)
  162. {
  163. FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
  164. isDelete = true;
  165. }
  166. }
  167. }
  168. }
  169. if (isDelete)
  170. {
  171. PromptController.Instance.ShowFloatTextPrompt("词牌磨损率过高已自动解除佩戴!");
  172. EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
  173. }
  174. return false;
  175. }
  176. }
  177. else
  178. {
  179. if (response.CimbingTowerLevelInfo != null)
  180. {
  181. if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(response.CimbingTowerLevelInfo.LevelId))
  182. {
  183. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[response.CimbingTowerLevelInfo.LevelId] = response.CimbingTowerLevelInfo;
  184. }
  185. else
  186. {
  187. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(response.CimbingTowerLevelInfo.LevelId, response.CimbingTowerLevelInfo);
  188. }
  189. }
  190. int limit = CimbingTowerCfgArray.Instance.dataArray[0].UseLimit;
  191. bool isDelete = false;
  192. for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
  193. {
  194. foreach (var item in FieldWorkDataManager.Instance.CardAbrasionInfoList)
  195. {
  196. if (item.Card == FieldWorkDataManager.Instance.DressupList[i].cardId)
  197. {
  198. if (item.UseNum >= limit)
  199. {
  200. FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
  201. isDelete = true;
  202. }
  203. }
  204. }
  205. }
  206. if (isDelete)
  207. {
  208. PromptController.Instance.ShowFloatTextPrompt("词牌磨损率过高已自动解除佩戴!");
  209. EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
  210. }
  211. return false;
  212. }
  213. }
  214. return false;
  215. }
  216. //一键跳过
  217. public static async ETTask<bool> ReqFieldWorkOneClickPass()
  218. {
  219. S2C_CimbingTowerOneClickPass response = null;
  220. response = (S2C_CimbingTowerOneClickPass)await MessageHelper.SendToServer(new C2S_CimbingTowerOneClickPass(){ });
  221. if (response != null)
  222. {
  223. if (response.Error == ErrorCode.ERR_Success)
  224. {
  225. FieldWorkDataManager.Instance.MaxLevelId = response.MaxLevelId;
  226. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Clear();
  227. foreach (var item in response.CimbingTowerLevelInfoList)
  228. {
  229. if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(item.LevelId))
  230. {
  231. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[item.LevelId] = item;
  232. }
  233. else
  234. {
  235. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId, item);
  236. }
  237. }
  238. BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
  239. EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
  240. return true;
  241. }
  242. }
  243. return false;
  244. }
  245. //重置
  246. public static async ETTask<bool> ReqFieldWorkReset()
  247. {
  248. S2C_CimbingTowerResetLevel response = null;
  249. response = (S2C_CimbingTowerResetLevel)await MessageHelper.SendToServer(new C2S_CimbingTowerResetLevel(){});
  250. if (response != null)
  251. {
  252. if (response.Error == ErrorCode.ERR_Success)
  253. {
  254. FieldWorkDataManager.Instance.HistoryDressupList.Clear();
  255. FieldWorkDataManager.Instance.CardAbrasionInfoList = response.CardAbrasionInfoList;
  256. foreach (var item in response.CimbingTowerLevelInfoList)
  257. {
  258. if (FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.ContainsKey(item.LevelId))
  259. {
  260. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList[item.LevelId] = item;
  261. }
  262. else
  263. {
  264. FieldWorkDataManager.Instance.CimbingTowerLevelInfoList.Add(item.LevelId, item);
  265. }
  266. }
  267. for (int i = 0; i < FieldWorkDataManager.Instance.DressupList.Count; i++)
  268. {
  269. FieldWorkDataManager.Instance.DressupList[i].itemList.Clear();
  270. FieldWorkDataManager.Instance.DressupList[i].cardId = 0;
  271. }
  272. EventAgent.DispatchEvent(ConstMessage.FieldWork_StateCHANGE);
  273. return true;
  274. }
  275. }
  276. return false;
  277. }
  278. private static FightData GetFightRoleData(List<int> dressupProto, OtherRoleInfoData roleInfo, int scoreType)
  279. {
  280. FightData fightData = new FightData();
  281. fightData.name = roleInfo.roleName;
  282. fightData.scoreType = scoreType;
  283. fightData.baseScore = RoleLevelCfgArray.Instance.GetCfg(roleInfo.roleLv).baseScore;
  284. fightData.tags = FieldWorkDataManager.Instance.Tag.ToArray();
  285. fightData.type = FightTargetType.PLAYER;
  286. fightData.headId = roleInfo.headId;
  287. List<int> dressList = new List<int>();
  288. foreach(var item in dressupProto)
  289. {
  290. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(item);
  291. if(itemCfg != null && itemCfg.itemType == ConstItemType.DRESS_UP)
  292. {
  293. dressList.Add(item);
  294. }
  295. else if(itemCfg != null && itemCfg.itemType == ConstItemType.CARD)
  296. {
  297. fightData.cardId = item;
  298. }
  299. }
  300. fightData.itemList = dressList;
  301. return fightData;
  302. }
  303. }
  304. }