SelectFaBaoPanel.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747
  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. PlayerManager.Instance.BagController.AddItem(keyValuePair.Value);
  140. }
  141. RewardsPanel.OpenPanel(itemInfo);
  142. selectedFaBaoInfo.FaBaoData.level = 1;
  143. selectedFaBaoInfo.CustomInit(selectedFaBaoInfo.FaBaoData);
  144. AccountFileInfo.Instance.SavePlayerData();
  145. UpdateCurrentFaBaoWidget();
  146. UpadaFabaoBag();
  147. UpdateUI(selectedFaBaoInfo);
  148. UpdataGradeUI(true);
  149. });
  150. }
  151. private void UpGrade()
  152. {
  153. if (selectedFaBaoInfo != null)
  154. {
  155. if (selectedFaBaoInfo.FabaoPowerupConfig.ID >=
  156. ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().Length)
  157. {
  158. TipMessagePanel.OpenTipMessagePanel(10338);
  159. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  160. return;
  161. }
  162. if (PlayerManager.Instance.myHero.powerUpConfig.ID < selectedFaBaoInfo.FabaoPowerupConfig.NeedLv)
  163. {
  164. HeroPowerUpConfig heroPowerUpConfig =
  165. ConfigComponent.Instance.Get<HeroPowerUpConfig>(selectedFaBaoInfo.FabaoPowerupConfig.NeedLv);
  166. string jingjie =
  167. LanguageManager.Instance.Text(heroPowerUpConfig
  168. .jingjieLanIDs[0]) +
  169. LanguageManager.Instance.Text(heroPowerUpConfig
  170. .jingjieLanIDs[1]) +
  171. LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2]);
  172. TipMessagePanel.OpenTipMessagePanel(LanguageManager.Instance.Text(10337, jingjie));
  173. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  174. return;
  175. }
  176. for (var i = 0; i < selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)
  177. {
  178. if (!PlayerManager.Instance.BagController.IsEnough(
  179. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],
  180. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]))
  181. {
  182. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  183. ItemSourcePanel.OpenPanel(selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i]);
  184. // TipMessagePanel.OpenTipMessagePanel("道具不足");
  185. return;
  186. }
  187. }
  188. ItemConfig itemConfig =
  189. ConfigComponent.Instance.Get<ItemConfig>(selectedFaBaoInfo.FabaoConfig.ItemID);
  190. ItemConfig itemConfig2 = ConfigComponent.Instance.Get<ItemConfig>(itemConfig.associateVlaue[0]);
  191. if (selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&
  192. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)
  193. {
  194. if (!PlayerManager.Instance.BagController.IsEnough(itemConfig.associateVlaue[0],
  195. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]))
  196. {
  197. ItemSourcePanel.OpenPanel(itemConfig.associateVlaue[0]);
  198. AudioManager.Instance.PlayAudio("ui_chaozuoshibai.wav");
  199. return;
  200. }
  201. }
  202. for (var i = 0; i < selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)
  203. {
  204. PlayerManager.Instance.BagController.DeductItem(
  205. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],
  206. selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]);
  207. }
  208. if (selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&
  209. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)
  210. {
  211. PlayerManager.Instance.BagController.DeductItem(itemConfig.associateVlaue[0],
  212. selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]);
  213. }
  214. selectedFaBaoInfo.UpGrade();
  215. PlayerManager.Instance.myHero.ComputeHeroInfo();
  216. fx_ui_fabao_shengji.gameObject.SetActive(true);
  217. fx_ui_fabao_shengji.Play();
  218. UpdateCurrentFaBaoWidget();
  219. UpadaFabaoBag();
  220. UpdateUI(selectedFaBaoInfo);
  221. UpdataGradeUI(true);
  222. foreach (var faBaoSkillWidget in faBaoSkillWidgets)
  223. {
  224. if (selectedFaBaoInfo.FabaoPowerupConfig.ID ==
  225. faBaoSkillWidget._faBaoInfo.FabaoPowerupConfig.ID)
  226. {
  227. faBaoSkillWidget.fx_ui_fabao_tiaomu.gameObject.SetActive(true);
  228. faBaoSkillWidget.fx_ui_fabao_tiaomu.Play();
  229. }
  230. }
  231. AudioManager.Instance.PlayAudio("ui_fbgfsj.wav");
  232. }
  233. }
  234. public async override CTask<bool> AsyncInit(object[] uiData)
  235. {
  236. // await UpadaFabaoBag();
  237. return await base.AsyncInit(uiData);
  238. }
  239. private void UpdataGradeUI(bool isStartUpGrade)
  240. {
  241. if (isStartUpGrade)
  242. {
  243. AccountFileInfo.FaBaoData faBaoData = new AccountFileInfo.FaBaoData();
  244. faBaoData.id = selectedFaBaoInfo.FaBaoData.id;
  245. faBaoData.level = selectedFaBaoInfo.FaBaoData.level + 1;
  246. FaBaoInfo nextFabaoInfo = new FaBaoInfo(faBaoData);
  247. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  248. {
  249. faBaoAttributeWidget.StartUpGrad(nextFabaoInfo);
  250. }
  251. Text_NextLv.text = "+1";
  252. Text_NextPower.text = "+" + (nextFabaoInfo.qiangDu - selectedFaBaoInfo.qiangDu).ToStringEx();
  253. Text_NextLv.color = new Color32(15, 241, 150, 255);
  254. Text_NextPower.color = new Color32(15, 241, 150, 255);
  255. Text_NextLv.gameObject.SetActive(true);
  256. Text_NextPower.gameObject.SetActive(true);
  257. }
  258. else
  259. {
  260. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  261. {
  262. faBaoAttributeWidget.EndUpGrade();
  263. }
  264. Text_NextLv.gameObject.SetActive(false);
  265. Text_NextPower.gameObject.SetActive(false);
  266. }
  267. }
  268. private void UpdateBjUI(bool isBj)
  269. {
  270. if (isBj)
  271. {
  272. if (currentFaBaoInfo != selectedFaBaoInfo && selectedFaBaoInfo != null && currentFaBaoInfo != null)
  273. {
  274. if (currentFaBaoInfo == null ||
  275. selectedFaBaoInfo.FabaoPowerupConfig.ID > currentFaBaoInfo.FabaoPowerupConfig.ID)
  276. {
  277. Text_NextLv.gameObject.SetActive(true);
  278. Text_NextLv.text =
  279. $"+{(selectedFaBaoInfo.FabaoPowerupConfig.ID - currentFaBaoInfo.FabaoPowerupConfig.ID).ToStringEx()}";
  280. Text_NextLv.color = new Color32(15, 241, 150, 255);
  281. // Icon_LvBj.icon_name = "dec_fbjia";
  282. }
  283. else if (selectedFaBaoInfo.FabaoPowerupConfig.ID < currentFaBaoInfo.FabaoPowerupConfig.ID)
  284. {
  285. Text_NextLv.text =
  286. $"{(selectedFaBaoInfo.FabaoPowerupConfig.ID - currentFaBaoInfo.FabaoPowerupConfig.ID).ToStringEx()}";
  287. Text_NextLv.color = new Color32(235, 110, 109, 255);
  288. Text_NextLv.gameObject.SetActive(true);
  289. // Icon_LvBj.icon_name = "dec_fbjian";
  290. }
  291. else
  292. {
  293. Text_NextLv.gameObject.SetActive(false);
  294. }
  295. if (currentFaBaoInfo == null || selectedFaBaoInfo.qiangDu > currentFaBaoInfo.qiangDu)
  296. {
  297. Text_NextPower.text = $"+{(selectedFaBaoInfo.qiangDu - currentFaBaoInfo.qiangDu).ToStringEx()}";
  298. Text_NextPower.color = new Color32(15, 241, 150, 255);
  299. Text_NextPower.gameObject.SetActive(true);
  300. // Icon_PowrBj.icon_name = "dec_bjia";
  301. }
  302. else if (selectedFaBaoInfo.qiangDu < currentFaBaoInfo.qiangDu)
  303. {
  304. Text_NextPower.text = $"{(selectedFaBaoInfo.qiangDu - currentFaBaoInfo.qiangDu).ToStringEx()}";
  305. Text_NextPower.color = new Color32(235, 110, 109, 255);
  306. Text_NextPower.gameObject.SetActive(true);
  307. // Icon_PowrBj.icon_name = "dec_fbjian";
  308. }
  309. else
  310. {
  311. Text_NextPower.gameObject.SetActive(false);
  312. }
  313. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  314. {
  315. faBaoAttributeWidget.StartBj(currentFaBaoInfo);
  316. }
  317. }
  318. else
  319. {
  320. Text_NextPower.gameObject.SetActive(false);
  321. Text_NextLv.gameObject.SetActive(false);
  322. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  323. {
  324. faBaoAttributeWidget.EndBj();
  325. }
  326. }
  327. }
  328. else
  329. {
  330. Icon_LvBj.gameObject.SetActive(false);
  331. Icon_PowrBj.gameObject.SetActive(false);
  332. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  333. {
  334. faBaoAttributeWidget.EndBj();
  335. }
  336. }
  337. }
  338. private async CTask UpadaFabaoBag()
  339. {
  340. foreach (var faBaoAttributeWidget in faBaoWidgets)
  341. {
  342. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  343. }
  344. faBaoWidgets.Clear();
  345. shownFaBaoInfos = PlayerManager.Instance.FaBaoControl.myAllFaBao.ToList();
  346. shownFaBaoInfos.Sort((l, r) =>
  347. {
  348. if (l.FaBaoData.useIndex == -1 && r.FaBaoData.useIndex > -1)
  349. {
  350. return -1;
  351. }
  352. if (l.FaBaoData.useIndex > -1 && r.FaBaoData.useIndex == 1)
  353. {
  354. return 1;
  355. }
  356. return r.FabaoPowerupConfig.ID.CompareTo(l.FabaoPowerupConfig.ID);
  357. });
  358. if (shownFaBaoInfos.Count > 0)
  359. {
  360. for (var i = 0; i < shownFaBaoInfos.Count; i++)
  361. {
  362. if (shownFaBaoInfos[i] == currentFaBaoInfo)
  363. {
  364. continue;
  365. }
  366. FaBaoWidget faBaoWidget = await UIManager.Instance.CreateGComponent<FaBaoWidget>(null, Content);
  367. faBaoWidget.CustomInit(shownFaBaoInfos[i], true);
  368. faBaoWidget.OnClick = OnClick;
  369. faBaoWidgets.Add(faBaoWidget);
  370. }
  371. NoFaBagRoot.gameObject.SetActive(false);
  372. }
  373. else
  374. {
  375. NoFaBagRoot.gameObject.SetActive(true);
  376. }
  377. }
  378. private async void OnClick(ItemWidgetBasic obj)
  379. {
  380. FaBaoWidget faBao = obj as FaBaoWidget;
  381. selectedFaBaoInfo = faBao.faoInfo;
  382. Btn_Change.gameObject.SetActive(true);
  383. Btn_PeiYang.gameObject.SetActive(true);
  384. await UpdateUI(selectedFaBaoInfo);
  385. FaBaoInfoRoot.SetActive(true);
  386. Text_NoFabaoTips.gameObject.gameObject.SetActive(false);
  387. if (!isUpGrade)
  388. {
  389. UpdateBjUI(true);
  390. }
  391. SetSelectIcon(faBao.SelectRoot);
  392. RedDotComType01.CustomInit(10, selectedFaBaoInfo);
  393. }
  394. private void SetSelectIcon(Transform root)
  395. {
  396. if (root != null)
  397. {
  398. Icon_Select.transform.SetParent(root.transform, false);
  399. Icon_Select.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
  400. Icon_Select.gameObject.SetActive(true);
  401. }
  402. else
  403. {
  404. Icon_Select.transform.SetParent(transform, false);
  405. Icon_Select.gameObject.SetActive(false);
  406. }
  407. }
  408. public async void CustomInit(int selectIndex)
  409. {
  410. this.selectIndex = selectIndex;
  411. BtnUpGradeRoot.SetActive(false);
  412. BtnChangeRoot.SetActive(true);
  413. currentFaBaoInfo = PlayerManager.Instance.FaBaoControl.FightFaBao[selectIndex];
  414. selectedFaBaoInfo = currentFaBaoInfo;
  415. UpdateUI(selectedFaBaoInfo);
  416. UpadaFabaoBag();
  417. await UpdateCurrentFaBaoWidget();
  418. if (currentFaBaoWidget != null)
  419. SetSelectIcon(currentFaBaoWidget.SelectRoot);
  420. RedDotComType01.CustomInit(10, selectedFaBaoInfo);
  421. }
  422. private async CTask UpdateCurrentFaBaoWidget()
  423. {
  424. if (currentFaBaoInfo != null)
  425. {
  426. if (currentFaBaoWidget == null)
  427. currentFaBaoWidget = await UIManager.Instance.CreateGComponent<FaBaoWidget>(null, CurrentFaBaoRoot);
  428. currentFaBaoWidget.OnClick = OnClick;
  429. currentFaBaoWidget.CustomInit(currentFaBaoInfo, false);
  430. equipTipsRoot.gameObject.SetActive(true);
  431. }
  432. else
  433. {
  434. UIManager.Instance.DormancyGComponent(currentFaBaoWidget);
  435. equipTipsRoot.gameObject.SetActive(false);
  436. }
  437. }
  438. private async CTask UpdateUI(FaBaoInfo faBaoInfo)
  439. {
  440. Btn_Rest.gameObject.SetActive(faBaoInfo != null && faBaoInfo.FaBaoData.level > 1);
  441. if (faBaoInfo != null)
  442. {
  443. FaBaoInfoRoot.SetActive(true);
  444. Text_NoFabaoTips.gameObject.gameObject.SetActive(false);
  445. if (faBaoInfo.FaBaoData.useIndex != -1)
  446. {
  447. Btn_Change.gameObject.SetActive(false);
  448. // Btn_Change.transform.Gray(true);
  449. }
  450. else
  451. {
  452. Btn_Change.gameObject.SetActive(true);
  453. // Btn_Change.transform.RecoverColor();
  454. }
  455. Btn_PeiYang.gameObject.SetActive(true);
  456. //Btn_Change.gameObject.SetActive(true);
  457. await UpdateFaBaoUI(faBaoInfo);
  458. }
  459. else
  460. {
  461. FaBaoInfoRoot.SetActive(false);
  462. Text_NoFabaoTips.gameObject.gameObject.SetActive(true);
  463. Btn_Change.gameObject.SetActive(false);
  464. Btn_PeiYang.gameObject.SetActive(false);
  465. }
  466. }
  467. private async CTask UpdateFaBaoUI(FaBaoInfo faBaoInfo)
  468. {
  469. using (CTaskAwaitBuffer cts = new CTaskAwaitBuffer())
  470. {
  471. Text_FaBaoName.text = LanguageManager.Instance.Text(faBaoInfo.FabaoConfig.name) + " Lv." +
  472. faBaoInfo.FabaoPowerupConfig.ID;
  473. Text_Power.text = $"{LanguageManager.Instance.Text(10197)}:{faBaoInfo.qiangDu.ToStringEx()}";
  474. Text_Desc.text = UtilTools.GetString(LanguageManager.Instance.Text(faBaoInfo.SkillConfig.dec),
  475. faBaoInfo.effectValue);
  476. if (faBaoInfo.FabaoPowerupConfig.ID >= ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().Length)
  477. {
  478. Text_UpGrade.gameObject.SetActive(false);
  479. ItemRoot.gameObject.SetActive(false);
  480. Text_ManTips.gameObject.SetActive(true);
  481. }
  482. else
  483. {
  484. AccountFileInfo.FaBaoData _faBaoData = new AccountFileInfo.FaBaoData();
  485. _faBaoData.id = faBaoInfo.FaBaoData.id;
  486. _faBaoData.level = faBaoInfo.FabaoPowerupConfig.ID + 1;
  487. FaBaoInfo _nextFaBaoInfo = new FaBaoInfo(_faBaoData);
  488. cts.AddTask(CreatItemWidgetType1(faBaoInfo));
  489. //tupo
  490. if (_nextFaBaoInfo.FabaoPowerupConfig.SkillLevel != selectedFaBaoInfo.FabaoPowerupConfig.SkillLevel)
  491. {
  492. Text_UpGrade.text = LanguageManager.Instance.Text(10205);
  493. }
  494. else
  495. {
  496. Text_UpGrade.text = LanguageManager.Instance.Text(10203);
  497. }
  498. Text_UpGrade.gameObject.SetActive(true);
  499. ItemRoot.gameObject.SetActive(true);
  500. Text_ManTips.gameObject.SetActive(false);
  501. }
  502. Icon_FaBaoIcon.icon_name = faBaoInfo.SkillConfig.icon;
  503. switch (faBaoInfo.FabaoConfig.magicAttribute)
  504. {
  505. case 1:
  506. Icon_Attribute.icon_name = "dec_jin2";
  507. break;
  508. case 2:
  509. Icon_Attribute.icon_name = "dec_mu2";
  510. break;
  511. case 4:
  512. Icon_Attribute.icon_name = "dec_shui2";
  513. break;
  514. case 8:
  515. Icon_Attribute.icon_name = "dec_huo2";
  516. break;
  517. case 16:
  518. Icon_Attribute.icon_name = "dec_tu2";
  519. break;
  520. }
  521. cts.AddTask(CreatFaBaoSkillWidget(faBaoInfo));
  522. cts.AddTask(CreatFaBaoAttributeWidget(faBaoInfo));
  523. await cts.WaitAll();
  524. }
  525. }
  526. private async CTask CreatItemWidgetType1(FaBaoInfo faBaoInfo)
  527. {
  528. foreach (var itemWidgetType1 in itemWidgetType1s)
  529. {
  530. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  531. }
  532. itemWidgetType1s.Clear();
  533. for (var i = 0; i < faBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)
  534. {
  535. ItemWidgetType1 itemWidgetType1 =
  536. await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Game, null,
  537. ItemRoot, isInstance: true);
  538. itemWidgetType1.CustomInit(faBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],
  539. faBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]);
  540. itemWidgetType1s.Add(itemWidgetType1);
  541. }
  542. ItemConfig itemConfig =
  543. ConfigComponent.Instance.Get<ItemConfig>(selectedFaBaoInfo.FabaoConfig.ItemID);
  544. ItemConfig itemConfig2 = ConfigComponent.Instance.Get<ItemConfig>(itemConfig.associateVlaue[0]);
  545. //大突破需要消耗对应的法宝碎片
  546. if (faBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&
  547. faBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)
  548. {
  549. ItemWidgetType1 itemWidgetType1 =
  550. await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Game, null,
  551. ItemRoot, isInstance: true);
  552. itemWidgetType1.CustomInit(itemConfig.associateVlaue[0],
  553. faBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]);
  554. itemWidgetType1s.Add(itemWidgetType1);
  555. }
  556. LayoutRebuilder.ForceRebuildLayoutImmediate(ItemRoot);
  557. }
  558. private async CTask CreatFaBaoSkillWidget(FaBaoInfo faBaoInfo)
  559. {
  560. foreach (var faBaoSkillWidget in faBaoSkillWidgets)
  561. {
  562. UIManager.Instance.DormancyGComponent(faBaoSkillWidget);
  563. }
  564. faBaoSkillWidgets.Clear();
  565. List<FabaoPowerupConfig> fabaoPowerupConfigs =
  566. ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().ToList();
  567. var fanappower = fabaoPowerupConfigs.GroupBy(f => f.SkillLevel)
  568. .Select(g => new { config = g.OrderBy(f => f.ID).FirstOrDefault() }).ToList();
  569. foreach (var powerupConfigse in fanappower)
  570. {
  571. if (powerupConfigse.config.ID == 1)
  572. {
  573. continue;
  574. }
  575. AccountFileInfo.FaBaoData faBaoData = new AccountFileInfo.FaBaoData();
  576. faBaoData.id = selectedFaBaoInfo.FaBaoData.id;
  577. faBaoData.level = powerupConfigse.config.ID;
  578. FaBaoInfo _faBaoInfo = new FaBaoInfo(faBaoData);
  579. FaBaoSkillWidget faBaoSkillWidget =
  580. await UIManager.Instance.CreateGComponent<FaBaoSkillWidget>(null, SkillContent);
  581. faBaoSkillWidget.CustomInit(selectedFaBaoInfo, _faBaoInfo);
  582. faBaoSkillWidgets.Add(faBaoSkillWidget);
  583. }
  584. }
  585. private async CTask CreatFaBaoAttributeWidget(FaBaoInfo faBaoInfo)
  586. {
  587. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  588. {
  589. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  590. }
  591. faBaoAttributeWidgets.Clear();
  592. foreach (var keyValuePair in faBaoInfo.attriButedIC)
  593. {
  594. FaBaoAttributeWidget faBaoAttributeWidget =
  595. await UIManager.Instance.CreateGComponent<FaBaoAttributeWidget>(null, FaBaoAttributeWidgetRoot);
  596. faBaoAttributeWidget.CusomtInit(selectedFaBaoInfo, keyValuePair.Key);
  597. faBaoAttributeWidgets.Add(faBaoAttributeWidget);
  598. }
  599. }
  600. public async static CTask<SelectFaBaoPanel> OpenPanel(int selectIndex)
  601. {
  602. SelectFaBaoPanel selectFaBaoPanel = await UIManager.Instance.LoadAndOpenPanel<SelectFaBaoPanel>(null);
  603. selectFaBaoPanel.CustomInit(selectIndex);
  604. return selectFaBaoPanel;
  605. }
  606. public async override CTask Close()
  607. {
  608. foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)
  609. {
  610. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  611. }
  612. faBaoAttributeWidgets.Clear();
  613. foreach (var faBaoAttributeWidget in faBaoWidgets)
  614. {
  615. UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);
  616. }
  617. faBaoWidgets.Clear();
  618. foreach (var faBaoSkillWidget in faBaoSkillWidgets)
  619. {
  620. UIManager.Instance.DormancyGComponent(faBaoSkillWidget);
  621. }
  622. faBaoSkillWidgets.Clear();
  623. foreach (var itemWidgetType1 in itemWidgetType1s)
  624. {
  625. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  626. }
  627. itemWidgetType1s.Clear();
  628. fx_ui_fabao_shengji.gameObject.SetActive(false);
  629. UIManager.Instance.DormancyGComponent(currentFaBaoWidget);
  630. UpdataGradeUI(false);
  631. UpdateBjUI(false);
  632. currentFaBaoWidget = null;
  633. BtnUpGradeRoot.SetActive(false);
  634. BtnChangeRoot.SetActive(true);
  635. currentFaBaoInfo = null;
  636. selectedFaBaoInfo = null;
  637. SetSelectIcon(null);
  638. await base.Close();
  639. }
  640. }
  641. }