PartnerEpiDetailInfoCtrl.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. /// #pkgName FGUI包名
  2. /// #panelName UIPanel名字
  3. /// #UIName = $"{#pkgName}{#panelName}" UIKey名字
  4. /// 该脚本由模板创建
  5. /// created by cb 2024
  6. using System.Collections.Generic;
  7. using FairyGUI;
  8. using FL.Data;
  9. using XGame;
  10. using XGame.Database;
  11. using XGame.Framework.UI;
  12. namespace FL.FGUI
  13. {
  14. public class PartnerEpiDetailInfoParam
  15. {
  16. public int EpigraphId;
  17. }
  18. /// <summary>
  19. /// UI逻辑处理类
  20. /// </summary>
  21. /// <typeparam name=""></typeparam>
  22. public partial class PartnerEpiDetailInfoCtrl : UIController<PartnerEpiDetailInfoVM>
  23. {
  24. #region 属性
  25. private int _mwId;
  26. #endregion
  27. protected override void OnEnable(object intent)
  28. {
  29. var param = intent as PartnerEpiDetailInfoParam;
  30. _mwId = param.EpigraphId;
  31. AddUIListenres();
  32. UpView();
  33. }
  34. protected override void OnDisable()
  35. {
  36. RemoveUIListenres();
  37. }
  38. #region UI事件
  39. private void AddUIListenres()
  40. {
  41. VM.UpBtn.onClick.Add(OnClickUpBtn);
  42. VM.DownBtn.onClick.Add(OnClickDownBtn);
  43. VM.GotoBtn.onClick.Add(OnClickGotoBtn);
  44. VM.RankUpBtn.onClick.Add(OnClickRankUpBtn);
  45. Context.AddListener(EventDefine.EpigraphUpStar, OnEpiUpdate);
  46. Context.AddListener(EventDefine.PartnerBinding, UpdateUpDownBtn);
  47. Context.AddListener(EventDefine.UpdataItemData, OnItemUpdate);
  48. }
  49. private void RemoveUIListenres()
  50. {
  51. VM.UpBtn.onClick.Remove(OnClickUpBtn);
  52. VM.DownBtn.onClick.Remove(OnClickDownBtn);
  53. VM.GotoBtn.onClick.Remove(OnClickGotoBtn);
  54. VM.RankUpBtn.onClick.Remove(OnClickRankUpBtn);
  55. Context.RemoveListener(EventDefine.EpigraphUpStar, OnEpiUpdate);
  56. Context.RemoveListener(EventDefine.PartnerBinding, UpdateUpDownBtn);
  57. Context.RemoveListener(EventDefine.UpdataItemData, OnItemUpdate);
  58. }
  59. private void OnItemUpdate(int eventId, object args)
  60. {
  61. UpProgressInfo();
  62. }
  63. private void OnEpiUpdate(int eventId, object args)
  64. {
  65. UpProgressInfo();
  66. UpSkillList();
  67. }
  68. private void OnClickDownBtn(EventContext eventContext)
  69. {
  70. var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
  71. if (info == null)
  72. {
  73. Log.Error($"铭文数据不存在tableId:{_mwId}");
  74. return;
  75. }
  76. //if (PartnersData.Instance.UsePlanId == _planId)
  77. //{
  78. EpigraphService.Instance.RequestEpiInset(info.PartnerId, 0);
  79. //}
  80. //else
  81. //{
  82. // if (!PartnersData.Instance.TryGetPlan(_planId, out var plan))
  83. // {
  84. // Context.ShowTips(StringDefine.PartnerPlanEmptyTips);
  85. // return;
  86. // }
  87. // var caoId = -1;
  88. // var sbId = 0;
  89. // foreach (var slot in plan.Slots)
  90. // {
  91. // if (slot.MwId == _mwId)
  92. // {
  93. // caoId = slot.CaoId;
  94. // sbId = slot.SbId;
  95. // break;
  96. // }
  97. // }
  98. // if (sbId == 0 || caoId < 0)
  99. // {
  100. // Context.ShowTips(StringDefine.EpigraphNotInPlanTips);
  101. // return;
  102. // }
  103. // PartnersService.Instance.RequestUpdatePlanMw(_planId, caoId, sbId, 0);
  104. //}
  105. Context.ClosePanel();
  106. }
  107. private void OnClickUpBtn(EventContext context)
  108. {
  109. //if (_planId == PartnersData.Instance.UsePlanId)
  110. //{
  111. if (!EpigraphData.Instance.TryGetEpigraphAttrByTableId(_mwId, out var attr))
  112. {
  113. Context.ShowTips(StringDefine.EpigraphEmptyTips);
  114. return;
  115. }
  116. if (attr.PartnerId > 0)
  117. {
  118. Context.ShowTips(StringDefine.EpigraphAlreadyUpTips);
  119. return;
  120. }
  121. //if (_partnerId > 0)
  122. //{
  123. // if (
  124. // !PartnersData.Instance.TryGetPartnerAttrByTableId(
  125. // _partnerId,
  126. // out var partnerAttr
  127. // )
  128. // )
  129. // {
  130. // Context.ShowTips(StringDefine.PartnerEmptyTips);
  131. // return;
  132. // }
  133. // EpigraphService.Instance.RequestEpiInset(_partnerId, _mwId);
  134. //}
  135. //else
  136. //{
  137. EpigraphService.Instance.OpenUpMode(_mwId);
  138. //}
  139. //}
  140. //else
  141. //{
  142. // if (!PartnersData.Instance.TryGetPlan(_planId, out var plan))
  143. // {
  144. // Context.ShowTips(StringDefine.PartnerPlanEmptyTips);
  145. // return;
  146. // }
  147. // PartnerPlanSlot curSlot = null;
  148. // foreach (var slot in plan.Slots)
  149. // {
  150. // if (slot.MwId == _mwId)
  151. // {
  152. // curSlot = slot;
  153. // break;
  154. // }
  155. // }
  156. // if (curSlot != null)
  157. // {
  158. // Context.ShowTips(StringDefine.EpigraphAlreadyUpTips);
  159. // return;
  160. // }
  161. // var targetSlot = PartnersData.Instance.GetPlanSlot(_planId, _slotId);
  162. // if (targetSlot == null || targetSlot.SbId == 0)
  163. // {
  164. // Context.ShowTips(StringDefine.PartnerCurSlotNoSbTips);
  165. // return;
  166. // }
  167. // PartnersService.Instance.RequestUpdatePlanMw(
  168. // _planId,
  169. // _slotId,
  170. // targetSlot.SbId,
  171. // _mwId
  172. // );
  173. //}
  174. Context.ClosePanel();
  175. }
  176. private void OnClickGotoBtn(EventContext context) { }
  177. private void OnClickRankUpBtn(EventContext context)
  178. {
  179. var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
  180. if (info == null)
  181. {
  182. Log.Error($"铭文数据不存在tableId:{_mwId}");
  183. return;
  184. }
  185. var table = epigraphUpTableRepo.GetEpiragphUp(_mwId, info.StarLv);
  186. if (table == null)
  187. {
  188. Log.Error($"铭文升星表不存在id:{_mwId}, starLv{info.StarLv}");
  189. return;
  190. }
  191. if (table.LevelUpCost > ItemData.Instance.GetItemNum(_mwId))
  192. {
  193. Context.ShowTips(StringDefine.epigraphUpUnenough);
  194. return;
  195. }
  196. EpigraphService.Instance.RequestEpiStarUp(_mwId);
  197. }
  198. #endregion
  199. #region 页面
  200. private void UpView()
  201. {
  202. UpDescInfo();
  203. UpProgressInfo();
  204. UpSkillList();
  205. }
  206. private void UpdateUpDownBtn(int eventId, object args)
  207. {
  208. ShowUpDownBtn();
  209. }
  210. private void ShowUpDownBtn()
  211. {
  212. //if (_planId == PartnersData.Instance.UsePlanId)
  213. //{
  214. if (!EpigraphData.Instance.TryGetEpigraphAttrByTableId(_mwId, out var epi))
  215. {
  216. Log.Error($"铭文数据不存在,id:{_mwId}");
  217. return;
  218. }
  219. VM.Up.selectedIndex = epi.PartnerId > 0 ? 1 : 0;
  220. //}
  221. //else
  222. //{
  223. // if (!PartnersData.Instance.TryGetPlan(_planId, out var plan))
  224. // {
  225. // Log.Error($"方案信息不存在,planId:{_planId}");
  226. // return;
  227. // }
  228. // var isFind = false;
  229. // foreach (var slot in plan.Slots)
  230. // {
  231. // if (slot.MwId == _mwId)
  232. // {
  233. // isFind = true;
  234. // break;
  235. // }
  236. // }
  237. // VM.Up.selectedIndex = isFind ? 1 : 0;
  238. //}
  239. }
  240. private void UpDescInfo()
  241. {
  242. var table = EpigraphTableRepo.Get(_mwId);
  243. if (table == null)
  244. {
  245. Log.Error($"铭文表不存在id:{_mwId}");
  246. }
  247. VM.EpiLabel.Ctrl.SetEpiIcon(_mwId, true);
  248. var initSkillId = table.Skill[0];
  249. var skillTable = SkillTableRepo.Get(initSkillId);
  250. if (skillTable == null)
  251. {
  252. Log.Error($"技能表不能存在,技能ID:{initSkillId}");
  253. return;
  254. }
  255. VM.DescLabel.text = skillTable.Desc;
  256. VM.NameLabel.text = table.Name;
  257. var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
  258. if (info != null)
  259. {
  260. ShowUpDownBtn();
  261. int nextLv = info.StarLv + 1;
  262. var nextUpTable = epigraphUpTableRepo.GetEpiragphUp(_mwId, nextLv);
  263. VM.HaveState.selectedIndex = nextUpTable != null ? 1 : 2;
  264. }
  265. else
  266. {
  267. VM.HaveState.selectedIndex = 0;
  268. }
  269. if (table.Element > 0)
  270. {
  271. VM.AttrIcon.visible = true;
  272. VM.AttrIcon.url = AddressableDefine.PartnerElementType(((int)table.Element));
  273. }
  274. else
  275. {
  276. VM.AttrIcon.visible = false;
  277. }
  278. VM.HaveAtrr.selectedIndex = table.Own_attr.Length > 0 ? 0 : 1;
  279. if (table.Own_attr.Length > 0)
  280. {
  281. string str = "";
  282. for (int i = 0; i < table.Own_attr.Length; i += 2)
  283. {
  284. var attrTable = AttrDescTableRepo.Get(table.Own_attr[i]);
  285. if (attrTable == null)
  286. continue;
  287. var attrValue = table.Own_attr[i + 1];
  288. var val =
  289. attrValue > 0 ? attrValue.ToRealFloat().ToString("F2") : "0";
  290. if (i > 0)
  291. str += ",";
  292. str += $"{attrTable.ShowName}{val}";
  293. }
  294. VM.AttrLabel.SetVar("attr", str).FlushVars();
  295. }
  296. }
  297. private void UpProgressInfo()
  298. {
  299. var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
  300. var curlv = info != null ? info.StarLv : 1;
  301. var table = epigraphUpTableRepo.GetEpiragphUp(_mwId, curlv);
  302. if (table == null)
  303. {
  304. Log.Error($"铭文升星表不存在id:{_mwId}, starLv:{curlv}");
  305. return;
  306. }
  307. VM.ChipPbar.max = table.LevelUpCost;
  308. VM.ChipPbar.value = ItemData.Instance.GetItemNum(table.PetId);
  309. }
  310. private void UpSkillList()
  311. {
  312. var list = new List<EpigraphSkillLimit>();
  313. var epiTable = EpigraphTableRepo.Get(_mwId);
  314. if (epiTable == null)
  315. {
  316. Log.Error($"铭文表不存在id:{_mwId}");
  317. return;
  318. }
  319. for (var i = 2; i < epiTable.Skill.Length; i = i + 2)
  320. {
  321. var skill = epiTable.Skill[i];
  322. var limit = epiTable.Skill[i + 1];
  323. var skillLimit = new EpigraphSkillLimit()
  324. {
  325. epiId = _mwId,
  326. limitLv = limit,
  327. skillId = skill,
  328. };
  329. list.Add(skillLimit);
  330. }
  331. VM.EffectList.BindDatas(list);
  332. }
  333. #endregion
  334. }
  335. }