SelectFaBaoPanel.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Core.Audio;
  4. using Core.Language;
  5. using Excel2Json;
  6. using Fort23.Core;
  7. using Fort23.UTool;
  8. using GameLogic.Bag;
  9. using GameLogic.Hero;
  10. using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
  11. using UnityEngine;
  12. using UnityEngine.UI;
  13. using Utility;
  14. namespace Fort23.Mono
  15. {
  16. [UIBinding(prefab = "SelectFaBaoPanel")]
  17. public partial class SelectFaBaoPanel : UIPanel
  18. {
  19. List<FaBaoSkillWidget> faBaoSkillWidgets = new List<FaBaoSkillWidget>();
  20. List<FaBaoAttributeWidget> faBaoAttributeWidgets = new List<FaBaoAttributeWidget>();
  21. List<ItemWidgetType1> itemWidgetType1s = new List<ItemWidgetType1>();
  22. List<FaBaoWidget> faBaoWidgets = new List<FaBaoWidget>();
  23. FaBaoWidget currentFaBaoWidget = null;
  24. FaBaoInfo currentFaBaoInfo;
  25. FaBaoInfo selectedFaBaoInfo;
  26. int selectIndex;
  27. private bool isUpGrade = false;
  28. private List<FaBaoInfo> shownFaBaoInfos;
  29. private void Init()
  30. {
  31. isAddStack = true;
  32. IsShowAppBar = false;
  33. }
  34. public async override CTask GetFocus()
  35. {
  36. TitlePanel.ClosePanel();
  37. // await AppBarPanel.OpenPanel(this);
  38. base.GetFocus();
  39. }
  40. protected override void AddEvent()
  41. {
  42. }
  43. protected override void DelEvent()
  44. {
  45. }
  46. public override void AddButtonEvent()
  47. {
  48. Btn_Close.onClick.AddListener(() =>
  49. {
  50. UIManager.Instance.HideUIUIPanel(this);
  51. AudioManager.Instance.PlayAudio("ui_fanhui.wav");
  52. });
  53. Btn_Change.onClick.AddListener(() =>
  54. {
  55. if (selectedFaBaoInfo.FaBaoData.useIndex != -1)
  56. {
  57. TipMessagePanel.OpenTipMessagePanel("当前法宝已经被装备");
  58. return;
  59. }
  60. PlayerManager.Instance.FaBaoControl.ChangeUseFaBao(selectIndex, selectedFaBaoInfo);
  61. currentFaBaoInfo = selectedFaBaoInfo;
  62. selectedFaBaoInfo = null;
  63. CustomInit(selectIndex);
  64. UpdateBjUI(false);
  65. AudioManager.Instance.PlayAudio("ui_zbfbcg.wav");
  66. SetSelectIcon(currentFaBaoWidget.SelectRoot);
  67. });
  68. Btn_UpGrade.onClick.AddListener(() => { UpGrade(); });
  69. Btn_UpGradeLongPress.longPress = () => { UpGrade(); };
  70. Btn_PeiYang.onClick.AddListener(() =>
  71. {
  72. isUpGrade = true;
  73. BtnUpGradeRoot.SetActive(true);
  74. BtnChangeRoot.SetActive(false);
  75. UpdataGradeUI(true);
  76. UpdateBjUI(false);
  77. foreach (var itemWidgetType1 in itemWidgetType1s)
  78. {
  79. LayoutRebuilder.ForceRebuildLayoutImmediate(
  80. itemWidgetType1.Text_Count.GetComponent<RectTransform>());
  81. LayoutRebuilder.ForceRebuildLayoutImmediate(itemWidgetType1.transform);
  82. }
  83. LayoutRebuilder.ForceRebuildLayoutImmediate(ItemRoot);
  84. });
  85. Btn_Cancel.onClick.AddListener(() =>
  86. {
  87. isUpGrade = false;
  88. BtnUpGradeRoot.SetActive(false);
  89. BtnChangeRoot.SetActive(true);
  90. UpdataGradeUI(false);
  91. UpdateBjUI(true);
  92. });
  93. Btn_Rest.onClick.AddListener(async () =>
  94. {
  95. if (selectedFaBaoInfo.FaBaoData.level == 1)
  96. {
  97. return;
  98. }
  99. bool isOk = await TipsPanle.OpenPnael(10815);
  100. if (!isOk)
  101. return;
  102. Dictionary<int, ItemInfo> itemInfo = new Dictionary<int, ItemInfo>();
  103. for (int i = 1; i < selectedFaBaoInfo.FabaoPowerupConfig.ID; i++)
  104. {
  105. FabaoPowerupConfig fabaoPowerupConfig = ConfigComponent.Instance.Get<FabaoPowerupConfig>(i);
  106. for (var j = 0; j < fabaoPowerupConfig.PowerupItemIDs.Length; j++)
  107. {
  108. if (itemInfo.ContainsKey(fabaoPowerupConfig.PowerupItemIDs[j]))
  109. {
  110. itemInfo[fabaoPowerupConfig.PowerupItemIDs[j]].count += fabaoPowerupConfig.PowerupItemCosts[j];
  111. }
  112. else
  113. {
  114. itemInfo.Add(fabaoPowerupConfig.PowerupItemIDs[j], new ItemInfo(
  115. fabaoPowerupConfig.PowerupItemIDs[j],
  116. fabaoPowerupConfig.PowerupItemCosts[j]));
  117. }
  118. }
  119. ItemConfig itemConfig =
  120. ConfigComponent.Instance.Get<ItemConfig>(selectedFaBaoInfo.FabaoConfig.ItemID);
  121. ItemConfig itemConfig2 = ConfigComponent.Instance.Get<ItemConfig>(itemConfig.associateVlaue[0]);
  122. if (fabaoPowerupConfig.PromotePieceNum != null &&
  123. fabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)
  124. {
  125. if (itemInfo.ContainsKey(itemConfig.associateVlaue[0]))
  126. {
  127. itemInfo[itemConfig.associateVlaue[0]].count += fabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1];
  128. }
  129. else
  130. {
  131. itemInfo.Add(itemConfig.associateVlaue[0], new ItemInfo(
  132. itemConfig.associateVlaue[0],
  133. fabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]));
  134. }
  135. }
  136. }
  137. foreach (var keyValuePair in itemInfo)
  138. {
  139. //TODO 法宝重置
  140. PlayerManager.Instance.BagController.AddItem(keyValuePair.Value);
  141. }
  142. RewardsPanel.OpenPanel(itemInfo);
  143. selectedFaBaoInfo.FaBaoData.level = 1;
  144. selectedFaBaoInfo.CustomInit(selectedFaBaoInfo.FaBaoData);
  145. AccountFileInfo.Instance.SavePlayerData();
  146. UpdateCurrentFaBaoWidget();
  147. UpadaFabaoBag();
  148. UpdateUI(selectedFaBaoInfo);
  149. UpdataGradeUI(true);
  150. });
  151. }
  152. private void UpGrade()
  153. {
  154. if (selectedFaBaoInfo != null)
  155. {
  156. if (selectedFaBaoInfo.FabaoPowerupConfig.ID >=
  157. ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().Length)
  158. {
  159. TipMessagePanel.OpenTipMessagePanel(10338);
  160. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  161. return;
  162. }
  163. if (PlayerManager.Instance.myHero.powerUpConfig.ID < selectedFaBaoInfo.FabaoPowerupConfig.NeedLv)
  164. {
  165. HeroPowerUpConfig heroPowerUpConfig =
  166. ConfigComponent.Instance.Get<HeroPowerUpConfig>(selectedFaBaoInfo.FabaoPowerupConfig.NeedLv);
  167. string jingjie =
  168. LanguageManager.Instance.Text(heroPowerUpConfig
  169. .jingjieLanIDs[0]) +
  170. LanguageManager.Instance.Text(heroPowerUpConfig
  171. .jingjieLanIDs[1]) +
  172. LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2]);
  173. TipMessagePanel.OpenTipMessagePanel(LanguageManager.Instance.Text(10337, jingjie));
  174. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  175. return;
  176. }
  177. for (var i = 0; i < selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)
  178. {
  179. if (!PlayerManager.Instance.BagController.IsEnough(
  180. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],
  181. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]))
  182. {
  183. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  184. ItemSourcePanel.OpenPanel(selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i]);
  185. // TipMessagePanel.OpenTipMessagePanel("道具不足");
  186. return;
  187. }
  188. }
  189. ItemConfig itemConfig =
  190. ConfigComponent.Instance.Get<ItemConfig>(selectedFaBaoInfo.FabaoConfig.ItemID);
  191. ItemConfig itemConfig2 = ConfigComponent.Instance.Get<ItemConfig>(itemConfig.associateVlaue[0]);
  192. if (selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&
  193. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)
  194. {
  195. if (!PlayerManager.Instance.BagController.IsEnough(itemConfig.associateVlaue[0],
  196. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]))
  197. {
  198. ItemSourcePanel.OpenPanel(itemConfig.associateVlaue[0]);
  199. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  200. return;
  201. }
  202. }
  203. for (var i = 0; i < selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)
  204. {
  205. //TODO 消耗:法宝升级
  206. PlayerManager.Instance.BagController.DeductItem(
  207. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],
  208. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]);
  209. }
  210. if (selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&
  211. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)
  212. {
  213. //TODO 消耗:法宝突破
  214. PlayerManager.Instance.BagController.DeductItem(itemConfig.associateVlaue[0],
  215. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]);
  216. }
  217. selectedFaBaoInfo.UpGrade();
  218. PlayerManager.Instance.myHero.ComputeHeroInfo();
  219. fx_ui_fabao_shengji.gameObject.SetActive(true);
  220. fx_ui_fabao_shengji.Play();
  221. UpdateCurrentFaBaoWidget();
  222. UpadaFabaoBag();
  223. UpdateUI(selectedFaBaoInfo);
  224. UpdataGradeUI(true);
  225. foreach (var faBaoSkillWidget in faBaoSkillWidgets)
  226. {
  227. if (selectedFaBaoInfo.FabaoPowerupConfig.ID ==
  228. faBaoSkillWidget._faBaoInfo.FabaoPowerupConfig.ID)
  229. {
  230. faBaoSkillWidget.fx_ui_fabao_tiaomu.gameObject.SetActive(true);
  231. faBaoSkillWidget.fx_ui_fabao_tiaomu.Play();
  232. }
  233. }
  234. AudioManager.Instance.PlayAudio("ui_fbgfsj.wav");
  235. }
  236. }
  237. public async override CTask<bool> AsyncInit(object[] uiData)
  238. {
  239. // await UpadaFabaoBag();
  240. return await base.AsyncInit(uiData);
  241. }
  242. private void UpdataGradeUI(bool isStartUpGrade)
  243. {
  244. if (isStartUpGrade)
  245. {
  246. AccountFileInfo.FaBaoData faBaoData = new AccountFileInfo.FaBaoData();
  247. faBaoData.id = selectedFaBaoInfo.FaBaoData.id;
  248. faBaoData.level = selectedFaBaoInfo.FaBaoData.level + 1;
  249. FaBaoInfo nextFabaoInfo = new FaBaoInfo(faBaoData);
  250. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  251. {
  252. faBaoAttributeWidget.StartUpGrad(nextFabaoInfo);
  253. }
  254. Text_NextLv.text = "+1";
  255. Text_NextPower.text = "+" + (nextFabaoInfo.qiangDu - selectedFaBaoInfo.qiangDu).ToStringEx();
  256. Text_NextLv.color = new Color32(15, 241, 150, 255);
  257. Text_NextPower.color = new Color32(15, 241, 150, 255);
  258. Text_NextLv.gameObject.SetActive(true);
  259. Text_NextPower.gameObject.SetActive(true);
  260. }
  261. else
  262. {
  263. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  264. {
  265. faBaoAttributeWidget.EndUpGrade();
  266. }
  267. Text_NextLv.gameObject.SetActive(false);
  268. Text_NextPower.gameObject.SetActive(false);
  269. }
  270. }
  271. private void UpdateBjUI(bool isBj)
  272. {
  273. if (isBj)
  274. {
  275. if (currentFaBaoInfo != selectedFaBaoInfo && selectedFaBaoInfo != null && currentFaBaoInfo != null)
  276. {
  277. if (currentFaBaoInfo == null ||
  278. selectedFaBaoInfo.FabaoPowerupConfig.ID > currentFaBaoInfo.FabaoPowerupConfig.ID)
  279. {
  280. Text_NextLv.gameObject.SetActive(true);
  281. Text_NextLv.text =
  282. $"+{(selectedFaBaoInfo.FabaoPowerupConfig.ID - currentFaBaoInfo.FabaoPowerupConfig.ID).ToStringEx()}";
  283. Text_NextLv.color = new Color32(15, 241, 150, 255);
  284. // Icon_LvBj.icon_name = "dec_fbjia";
  285. }
  286. else if (selectedFaBaoInfo.FabaoPowerupConfig.ID < currentFaBaoInfo.FabaoPowerupConfig.ID)
  287. {
  288. Text_NextLv.text =
  289. $"{(selectedFaBaoInfo.FabaoPowerupConfig.ID - currentFaBaoInfo.FabaoPowerupConfig.ID).ToStringEx()}";
  290. Text_NextLv.color = new Color32(235, 110, 109, 255);
  291. Text_NextLv.gameObject.SetActive(true);
  292. // Icon_LvBj.icon_name = "dec_fbjian";
  293. }
  294. else
  295. {
  296. Text_NextLv.gameObject.SetActive(false);
  297. }
  298. if (currentFaBaoInfo == null || selectedFaBaoInfo.qiangDu > currentFaBaoInfo.qiangDu)
  299. {
  300. Text_NextPower.text = $"+{(selectedFaBaoInfo.qiangDu - currentFaBaoInfo.qiangDu).ToStringEx()}";
  301. Text_NextPower.color = new Color32(15, 241, 150, 255);
  302. Text_NextPower.gameObject.SetActive(true);
  303. // Icon_PowrBj.icon_name = "dec_bjia";
  304. }
  305. else if (selectedFaBaoInfo.qiangDu < currentFaBaoInfo.qiangDu)
  306. {
  307. Text_NextPower.text = $"{(selectedFaBaoInfo.qiangDu - currentFaBaoInfo.qiangDu).ToStringEx()}";
  308. Text_NextPower.color = new Color32(235, 110, 109, 255);
  309. Text_NextPower.gameObject.SetActive(true);
  310. // Icon_PowrBj.icon_name = "dec_fbjian";
  311. }
  312. else
  313. {
  314. Text_NextPower.gameObject.SetActive(false);
  315. }
  316. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  317. {
  318. faBaoAttributeWidget.StartBj(currentFaBaoInfo);
  319. }
  320. }
  321. else
  322. {
  323. Text_NextPower.gameObject.SetActive(false);
  324. Text_NextLv.gameObject.SetActive(false);
  325. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  326. {
  327. faBaoAttributeWidget.EndBj();
  328. }
  329. }
  330. }
  331. else
  332. {
  333. Icon_LvBj.gameObject.SetActive(false);
  334. Icon_PowrBj.gameObject.SetActive(false);
  335. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  336. {
  337. faBaoAttributeWidget.EndBj();
  338. }
  339. }
  340. }
  341. private async CTask UpadaFabaoBag()
  342. {
  343. foreach (var faBaoAttributeWidget in faBaoWidgets)
  344. {
  345. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  346. }
  347. faBaoWidgets.Clear();
  348. shownFaBaoInfos = PlayerManager.Instance.FaBaoControl.myAllFaBao.ToList();
  349. shownFaBaoInfos.Sort((l, r) =>
  350. {
  351. if (l.FaBaoData.useIndex == -1 && r.FaBaoData.useIndex > -1)
  352. {
  353. return -1;
  354. }
  355. if (l.FaBaoData.useIndex > -1 && r.FaBaoData.useIndex == 1)
  356. {
  357. return 1;
  358. }
  359. return r.FabaoPowerupConfig.ID.CompareTo(l.FabaoPowerupConfig.ID);
  360. });
  361. if (shownFaBaoInfos.Count > 0)
  362. {
  363. for (var i = 0; i < shownFaBaoInfos.Count; i++)
  364. {
  365. if (shownFaBaoInfos[i] == currentFaBaoInfo)
  366. {
  367. continue;
  368. }
  369. FaBaoWidget faBaoWidget = await UIManager.Instance.CreateGComponent<FaBaoWidget>(null, Content);
  370. faBaoWidget.CustomInit(shownFaBaoInfos[i], true);
  371. faBaoWidget.OnClick = OnClick;
  372. faBaoWidgets.Add(faBaoWidget);
  373. }
  374. NoFaBagRoot.gameObject.SetActive(false);
  375. }
  376. else
  377. {
  378. NoFaBagRoot.gameObject.SetActive(true);
  379. }
  380. }
  381. private async void OnClick(ItemWidgetBasic obj)
  382. {
  383. FaBaoWidget faBao = obj as FaBaoWidget;
  384. selectedFaBaoInfo = faBao.faoInfo;
  385. Btn_Change.gameObject.SetActive(true);
  386. Btn_PeiYang.gameObject.SetActive(true);
  387. await UpdateUI(selectedFaBaoInfo);
  388. FaBaoInfoRoot.SetActive(true);
  389. Text_NoFabaoTips.gameObject.gameObject.SetActive(false);
  390. if (!isUpGrade)
  391. {
  392. UpdateBjUI(true);
  393. }
  394. SetSelectIcon(faBao.SelectRoot);
  395. RedDotComType01.CustomInit(10, selectedFaBaoInfo);
  396. }
  397. private void SetSelectIcon(Transform root)
  398. {
  399. if (root != null)
  400. {
  401. Icon_Select.transform.SetParent(root.transform, false);
  402. Icon_Select.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
  403. Icon_Select.gameObject.SetActive(true);
  404. }
  405. else
  406. {
  407. Icon_Select.transform.SetParent(transform, false);
  408. Icon_Select.gameObject.SetActive(false);
  409. }
  410. }
  411. public async void CustomInit(int selectIndex)
  412. {
  413. this.selectIndex = selectIndex;
  414. BtnUpGradeRoot.SetActive(false);
  415. BtnChangeRoot.SetActive(true);
  416. currentFaBaoInfo = PlayerManager.Instance.FaBaoControl.FightFaBao[selectIndex];
  417. selectedFaBaoInfo = currentFaBaoInfo;
  418. UpdateUI(selectedFaBaoInfo);
  419. UpadaFabaoBag();
  420. await UpdateCurrentFaBaoWidget();
  421. if (currentFaBaoWidget != null)
  422. SetSelectIcon(currentFaBaoWidget.SelectRoot);
  423. RedDotComType01.CustomInit(10, selectedFaBaoInfo);
  424. }
  425. private async CTask UpdateCurrentFaBaoWidget()
  426. {
  427. if (currentFaBaoInfo != null)
  428. {
  429. if (currentFaBaoWidget == null)
  430. currentFaBaoWidget = await UIManager.Instance.CreateGComponent<FaBaoWidget>(null, CurrentFaBaoRoot);
  431. currentFaBaoWidget.OnClick = OnClick;
  432. currentFaBaoWidget.CustomInit(currentFaBaoInfo, false);
  433. equipTipsRoot.gameObject.SetActive(true);
  434. }
  435. else
  436. {
  437. UIManager.Instance.DormancyGComponent(currentFaBaoWidget);
  438. equipTipsRoot.gameObject.SetActive(false);
  439. }
  440. }
  441. private async CTask UpdateUI(FaBaoInfo faBaoInfo)
  442. {
  443. Btn_Rest.gameObject.SetActive(faBaoInfo != null && faBaoInfo.FaBaoData.level > 1);
  444. if (faBaoInfo != null)
  445. {
  446. FaBaoInfoRoot.SetActive(true);
  447. Text_NoFabaoTips.gameObject.gameObject.SetActive(false);
  448. if (faBaoInfo.FaBaoData.useIndex != -1)
  449. {
  450. Btn_Change.gameObject.SetActive(false);
  451. // Btn_Change.transform.Gray(true);
  452. }
  453. else
  454. {
  455. Btn_Change.gameObject.SetActive(true);
  456. // Btn_Change.transform.RecoverColor();
  457. }
  458. Btn_PeiYang.gameObject.SetActive(true);
  459. //Btn_Change.gameObject.SetActive(true);
  460. await UpdateFaBaoUI(faBaoInfo);
  461. }
  462. else
  463. {
  464. FaBaoInfoRoot.SetActive(false);
  465. Text_NoFabaoTips.gameObject.gameObject.SetActive(true);
  466. Btn_Change.gameObject.SetActive(false);
  467. Btn_PeiYang.gameObject.SetActive(false);
  468. }
  469. }
  470. private async CTask UpdateFaBaoUI(FaBaoInfo faBaoInfo)
  471. {
  472. using (CTaskAwaitBuffer cts = new CTaskAwaitBuffer())
  473. {
  474. Text_FaBaoName.text = LanguageManager.Instance.Text(faBaoInfo.FabaoConfig.name) + " Lv." +
  475. faBaoInfo.FabaoPowerupConfig.ID;
  476. Text_Power.text = $"{LanguageManager.Instance.Text(10197)}:{faBaoInfo.qiangDu.ToStringEx()}";
  477. Text_Desc.text = UtilTools.GetString(LanguageManager.Instance.Text(faBaoInfo.SkillConfig.dec),
  478. faBaoInfo.effectValue);
  479. if (faBaoInfo.FabaoPowerupConfig.ID >= ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().Length)
  480. {
  481. Text_UpGrade.gameObject.SetActive(false);
  482. ItemRoot.gameObject.SetActive(false);
  483. Text_ManTips.gameObject.SetActive(true);
  484. }
  485. else
  486. {
  487. AccountFileInfo.FaBaoData _faBaoData = new AccountFileInfo.FaBaoData();
  488. _faBaoData.id = faBaoInfo.FaBaoData.id;
  489. _faBaoData.level = faBaoInfo.FabaoPowerupConfig.ID + 1;
  490. FaBaoInfo _nextFaBaoInfo = new FaBaoInfo(_faBaoData);
  491. cts.AddTask(CreatItemWidgetType1(faBaoInfo));
  492. //tupo
  493. if (_nextFaBaoInfo.FabaoPowerupConfig.SkillLevel != selectedFaBaoInfo.FabaoPowerupConfig.SkillLevel)
  494. {
  495. Text_UpGrade.text = LanguageManager.Instance.Text(10205);
  496. }
  497. else
  498. {
  499. Text_UpGrade.text = LanguageManager.Instance.Text(10203);
  500. }
  501. Text_UpGrade.gameObject.SetActive(true);
  502. ItemRoot.gameObject.SetActive(true);
  503. Text_ManTips.gameObject.SetActive(false);
  504. }
  505. Icon_FaBaoIcon.icon_name = faBaoInfo.SkillConfig.icon;
  506. switch (faBaoInfo.FabaoConfig.magicAttribute)
  507. {
  508. case 1:
  509. Icon_Attribute.icon_name = "dec_jin2";
  510. break;
  511. case 2:
  512. Icon_Attribute.icon_name = "dec_mu2";
  513. break;
  514. case 4:
  515. Icon_Attribute.icon_name = "dec_shui2";
  516. break;
  517. case 8:
  518. Icon_Attribute.icon_name = "dec_huo2";
  519. break;
  520. case 16:
  521. Icon_Attribute.icon_name = "dec_tu2";
  522. break;
  523. }
  524. cts.AddTask(CreatFaBaoSkillWidget(faBaoInfo));
  525. cts.AddTask(CreatFaBaoAttributeWidget(faBaoInfo));
  526. await cts.WaitAll();
  527. }
  528. }
  529. private async CTask CreatItemWidgetType1(FaBaoInfo faBaoInfo)
  530. {
  531. foreach (var itemWidgetType1 in itemWidgetType1s)
  532. {
  533. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  534. }
  535. itemWidgetType1s.Clear();
  536. for (var i = 0; i < faBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)
  537. {
  538. ItemWidgetType1 itemWidgetType1 =
  539. await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Game, null,
  540. ItemRoot, isInstance: true);
  541. itemWidgetType1.CustomInit(faBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],
  542. faBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]);
  543. itemWidgetType1s.Add(itemWidgetType1);
  544. }
  545. ItemConfig itemConfig =
  546. ConfigComponent.Instance.Get<ItemConfig>(selectedFaBaoInfo.FabaoConfig.ItemID);
  547. ItemConfig itemConfig2 = ConfigComponent.Instance.Get<ItemConfig>(itemConfig.associateVlaue[0]);
  548. //大突破需要消耗对应的法宝碎片
  549. if (faBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&
  550. faBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)
  551. {
  552. ItemWidgetType1 itemWidgetType1 =
  553. await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Game, null,
  554. ItemRoot, isInstance: true);
  555. itemWidgetType1.CustomInit(itemConfig.associateVlaue[0],
  556. faBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]);
  557. itemWidgetType1s.Add(itemWidgetType1);
  558. }
  559. LayoutRebuilder.ForceRebuildLayoutImmediate(ItemRoot);
  560. }
  561. private async CTask CreatFaBaoSkillWidget(FaBaoInfo faBaoInfo)
  562. {
  563. foreach (var faBaoSkillWidget in faBaoSkillWidgets)
  564. {
  565. UIManager.Instance.DormancyGComponent(faBaoSkillWidget);
  566. }
  567. faBaoSkillWidgets.Clear();
  568. List<FabaoPowerupConfig> fabaoPowerupConfigs =
  569. ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().ToList();
  570. var fanappower = fabaoPowerupConfigs.GroupBy(f => f.SkillLevel)
  571. .Select(g => new { config = g.OrderBy(f => f.ID).FirstOrDefault() }).ToList();
  572. foreach (var powerupConfigse in fanappower)
  573. {
  574. if (powerupConfigse.config.ID == 1)
  575. {
  576. continue;
  577. }
  578. AccountFileInfo.FaBaoData faBaoData = new AccountFileInfo.FaBaoData();
  579. faBaoData.id = selectedFaBaoInfo.FaBaoData.id;
  580. faBaoData.level = powerupConfigse.config.ID;
  581. FaBaoInfo _faBaoInfo = new FaBaoInfo(faBaoData);
  582. FaBaoSkillWidget faBaoSkillWidget =
  583. await UIManager.Instance.CreateGComponent<FaBaoSkillWidget>(null, SkillContent);
  584. faBaoSkillWidget.CustomInit(selectedFaBaoInfo, _faBaoInfo);
  585. faBaoSkillWidgets.Add(faBaoSkillWidget);
  586. }
  587. }
  588. private async CTask CreatFaBaoAttributeWidget(FaBaoInfo faBaoInfo)
  589. {
  590. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  591. {
  592. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  593. }
  594. faBaoAttributeWidgets.Clear();
  595. foreach (var keyValuePair in faBaoInfo.attriButedIC)
  596. {
  597. FaBaoAttributeWidget faBaoAttributeWidget =
  598. await UIManager.Instance.CreateGComponent<FaBaoAttributeWidget>(null, FaBaoAttributeWidgetRoot);
  599. faBaoAttributeWidget.CusomtInit(selectedFaBaoInfo, keyValuePair.Key);
  600. faBaoAttributeWidgets.Add(faBaoAttributeWidget);
  601. }
  602. }
  603. public async static CTask<SelectFaBaoPanel> OpenPanel(int selectIndex)
  604. {
  605. SelectFaBaoPanel selectFaBaoPanel = await UIManager.Instance.LoadAndOpenPanel<SelectFaBaoPanel>(null);
  606. selectFaBaoPanel.CustomInit(selectIndex);
  607. return selectFaBaoPanel;
  608. }
  609. public async override CTask Close()
  610. {
  611. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  612. {
  613. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  614. }
  615. faBaoAttributeWidgets.Clear();
  616. foreach (var faBaoAttributeWidget in faBaoWidgets)
  617. {
  618. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  619. }
  620. faBaoWidgets.Clear();
  621. foreach (var faBaoSkillWidget in faBaoSkillWidgets)
  622. {
  623. UIManager.Instance.DormancyGComponent(faBaoSkillWidget);
  624. }
  625. faBaoSkillWidgets.Clear();
  626. foreach (var itemWidgetType1 in itemWidgetType1s)
  627. {
  628. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  629. }
  630. itemWidgetType1s.Clear();
  631. fx_ui_fabao_shengji.gameObject.SetActive(false);
  632. UIManager.Instance.DormancyGComponent(currentFaBaoWidget);
  633. UpdataGradeUI(false);
  634. UpdateBjUI(false);
  635. currentFaBaoWidget = null;
  636. BtnUpGradeRoot.SetActive(false);
  637. BtnChangeRoot.SetActive(true);
  638. currentFaBaoInfo = null;
  639. selectedFaBaoInfo = null;
  640. SetSelectIcon(null);
  641. await base.Close();
  642. }
  643. }
  644. }