FieldWorkSproxy.cs 15 KB

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