HeroBreakthroughPanel.cs 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. using System.Collections.Generic;
  2. using Core.Audio;
  3. using Core.Language;
  4. using Excel2Json;
  5. using Fort23.Core;
  6. using Fort23.UTool;
  7. using GameLogic.Combat;
  8. using GameLogic.Combat.CombatTool;
  9. using GameLogic.Hero;
  10. using UnityEngine;
  11. using UnityEngine.UI;
  12. namespace Fort23.Mono
  13. {
  14. [UIBinding(prefab = "HeroBreakthroughPanel")]
  15. public partial class HeroBreakthroughPanel : UIPanel
  16. {
  17. HeroPowerUpConfig heroPowerUpConfig;
  18. List<BreakthroughItemWidget> breakthroughItemWidgets = new List<BreakthroughItemWidget>();
  19. private HeroInfo nextHeroInfo = new HeroInfo();
  20. /// <summary>
  21. /// 1.正常渡劫 2.渡劫预览
  22. /// </summary>
  23. private int type;
  24. private void Init()
  25. {
  26. IsShowAppBar = false;
  27. isAddStack = true;
  28. }
  29. protected override void AddEvent()
  30. {
  31. EventManager.Instance.AddEventListener(CustomEventType.RefenceBreakthrough, RefenceBreakthrough);
  32. }
  33. private void RefenceBreakthrough(IEventData e)
  34. {
  35. RefenceSuccessProbability(PlayerManager.Instance.myHero);
  36. }
  37. protected override void DelEvent()
  38. {
  39. EventManager.Instance.RemoveEventListener(CustomEventType.RefenceBreakthrough, RefenceBreakthrough);
  40. }
  41. public override void AddButtonEvent()
  42. {
  43. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  44. Btn_Cancel.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  45. Btn_Affirm.onClick.AddListener(async () =>
  46. {
  47. if (type == 2)
  48. {
  49. TipMessagePanel.OpenTipMessagePanel("修为等级还未达到,暂不可预览");
  50. return;
  51. }
  52. if (PlayerManager.Instance.myHero.heroData.exp + HeroHerlp.GetHeroExp() < PlayerManager.Instance.myHero.powerUpConfig.levelUpExp)
  53. {
  54. return;
  55. }
  56. if (heroPowerUpConfig.DujieLevelbattleID != -1 && !PlayerManager.Instance.myHero.heroData.isCombat)
  57. {
  58. TipMessagePanel tipMessage = await TipMessagePanel.OpenTipMessagePanel("没有破除心魔");
  59. return;
  60. }
  61. for (var i = 0; i < PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs.Length; i++)
  62. {
  63. bool isHave = false;
  64. for (var i1 = 1; i1 < breakthroughItemWidgets.Count; i1++)
  65. {
  66. if (breakthroughItemWidgets[i1].itemInfo != null && PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs[i] == breakthroughItemWidgets[i1].itemInfo.itemID)
  67. {
  68. isHave = true;
  69. }
  70. }
  71. if (!isHave)
  72. {
  73. ItemConfig itemConfig = ConfigComponent.Instance.Get<ItemConfig>(PlayerManager.Instance.myHero.powerUpConfig.DujieMustItemIDs[i]);
  74. string tips = "缺少" + LanguageManager.Instance.Text(itemConfig.itemName);
  75. TipMessagePanel tipMessage = await TipMessagePanel.OpenTipMessagePanel(tips);
  76. return;
  77. }
  78. }
  79. //扣除道具
  80. foreach (var breakthroughItemWidget in breakthroughItemWidgets)
  81. {
  82. if (breakthroughItemWidget.itemInfo != null)
  83. {
  84. if (!PlayerManager.Instance.BagController.DeductItem(breakthroughItemWidget.itemInfo.itemID, 1))
  85. {
  86. TipMessagePanel tipMessage = await TipMessagePanel.OpenTipMessagePanel("道具不足!");
  87. return;
  88. }
  89. }
  90. }
  91. var list = GetBl();
  92. int ramdomValue = Random.Range(1, 101);
  93. int type1 = 2;
  94. //突破成功
  95. if (ramdomValue < list[0])
  96. {
  97. bool isTuPoSuccess = true;
  98. if (PlayerManager.Instance.myHero.powerUpConfig.jingjie1 != nextHeroInfo.powerUpConfig.jingjie1)
  99. {
  100. if (PlayerManager.Instance.myHero.powerUpConfig.LeijieDamages != null && PlayerManager.Instance.myHero.powerUpConfig.LeijieDamages.Length > 1)
  101. {
  102. type1 = 3;
  103. ramdomValue = Random.Range(PlayerManager.Instance.myHero.powerUpConfig.LeijieDamages[0], PlayerManager.Instance.myHero.powerUpConfig.LeijieDamages[1]);
  104. //渡劫失败
  105. if (ramdomValue >= PlayerManager.Instance.myHero.hp.Value)
  106. {
  107. isTuPoSuccess = false;
  108. RemoveHeroItem(list[1]);
  109. HeroBreakthroughFailPanel heroBreakthroughFailPanel = await HeroBreakthroughFailPanel.OpenPanel(3, list[1]);
  110. await heroBreakthroughFailPanel.UIClosed();
  111. // TipMessagePanel tipMessage = await TipMessagePanel.OpenTipMessagePanel("雷劫失败");
  112. // await tipMessage.UIClosed();
  113. }
  114. }
  115. }
  116. if (isTuPoSuccess)
  117. {
  118. AudioManager.Instance.PlayAudio("ui_tupo.wav");
  119. await UpHero(type1);
  120. }
  121. }
  122. //失败
  123. else
  124. {
  125. RemoveHeroItem(list[1]);
  126. AudioManager.Instance.PlayAudio("ui_tuposhiba.wav");
  127. HeroBreakthroughFailPanel heroBreakthroughFailPanel = await HeroBreakthroughFailPanel.OpenPanel(2, list[1]);
  128. await heroBreakthroughFailPanel.UIClosed();
  129. }
  130. UIManager.Instance.HideUIUIPanel(this);
  131. });
  132. Btn_StartCombat.onClick.AddListener(() =>
  133. {
  134. if (type == 2)
  135. return;
  136. if (PlayerManager.Instance.myHero.heroData.isCombat)
  137. return;
  138. // UIManager.Instance.HindCurrAllShowPanel();
  139. CombatDrive.Instance.LoadLevelBattleCombat(heroPowerUpConfig.DujieLevelbattleID, true, -1,
  140. delegate(bool isWin)
  141. {
  142. LogTool.Log("战斗完成" + isWin);
  143. if (isWin)
  144. {
  145. PlayerManager.Instance.myHero.heroData.isCombat = true;
  146. AccountFileInfo.Instance.SavePlayerData();
  147. Btn_StartCombat.gameObject.SetActive(false);
  148. CombatTrue.gameObject.SetActive(true);
  149. Text_Combat.text = "已破除";
  150. RefenceSuccessProbability(PlayerManager.Instance.myHero);
  151. // UIManager.Instance.ShowLastHindAllShowPanel();
  152. }
  153. CombatDrive.Instance.CombatController.ChangeState(CombatController.update);
  154. });
  155. });
  156. }
  157. private void RemoveHeroItem(int failBl)
  158. {
  159. //扣除失败后的经验
  160. float failbl = failBl == 0 ? PlayerManager.Instance.myHero.powerUpConfig.FailureExpReduce : (float)(PlayerManager.Instance.myHero.powerUpConfig.FailureExpReduce * failBl * 0.01f);
  161. int failXw = (int)(PlayerManager.Instance.myHero.powerUpConfig.levelUpExp * failbl * 0.01f);
  162. float allexp = HeroHerlp.GetHeroExp();
  163. PlayerManager.Instance.myHero.heroData.exp += allexp;
  164. PlayerManager.Instance.myHero.heroData.exp -= failXw;
  165. PlayerManager.Instance.myHero.heroData.upTime = TimeHelper.ClientNow();
  166. // PlayerManager.Instance.myHero.heroData.isCombat = false;
  167. AccountFileInfo.Instance.SavePlayerData();
  168. }
  169. private async CTask UpHero(int type)
  170. {
  171. List<HeroAttributeData> heroAttributData = null;
  172. //小突破
  173. if (type == 1)
  174. {
  175. heroAttributData = HeroHerlp.GetHeroChageHeroAttributeData1(PlayerManager.Instance.myHero, nextHeroInfo);
  176. }
  177. //大突破
  178. else if (type == 2)
  179. {
  180. heroAttributData = HeroHerlp.GetHeroChageHeroAttributeData(PlayerManager.Instance.myHero, nextHeroInfo);
  181. }
  182. //渡劫
  183. else if (type == 3)
  184. {
  185. heroAttributData = HeroHerlp.GetHeroChageHeroAttributeData(PlayerManager.Instance.myHero, nextHeroInfo);
  186. }
  187. PlayerManager.Instance.myHero.Upgrade();
  188. HeroBreakthroughSuccessPanel heroBreakthroughSuccessPanel = await HeroBreakthroughSuccessPanel.OpenPanel(type, heroAttributData);
  189. await heroBreakthroughSuccessPanel.UIClosed();
  190. }
  191. public async CTask CustomInit()
  192. {
  193. type = 1;
  194. heroPowerUpConfig = PlayerManager.Instance.myHero.powerUpConfig;
  195. nextHeroInfo = PlayerManager.Instance.myHero.CopyHero();
  196. nextHeroInfo.InitHero(PlayerManager.Instance.myHero.heroData.heroModelId, PlayerManager.Instance.myHero.heroData.heroPowerId + 1);
  197. Text_CurrrentJIngjie.text = LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) +
  198. LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) +
  199. LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2]);
  200. Text_NextJinfjie.text = LanguageManager.Instance.Text(nextHeroInfo.powerUpConfig.jingjieLanIDs[0]) +
  201. LanguageManager.Instance.Text(nextHeroInfo.powerUpConfig.jingjieLanIDs[1]) +
  202. LanguageManager.Instance.Text(nextHeroInfo.powerUpConfig.jingjieLanIDs[2]);
  203. LevelbattleConfig levelbattleConfig = ConfigComponent.Instance.Get<LevelbattleConfig>(heroPowerUpConfig.DujieLevelbattleID);
  204. GroupConfig groupConfig = ConfigComponent.Instance.Get<GroupConfig>(levelbattleConfig.Group[0]);
  205. HeroModelConfig heroModelConfig = ConfigComponent.Instance.Get<HeroModelConfig>(groupConfig.GroupMonster[0]);
  206. MonsterPowerUpConfig monsterPowerUpConfig = ConfigComponent.Instance.Get<MonsterPowerUpConfig>(PlayerManager.Instance.myHero.level.Value);
  207. Text_CombatTitle.text = $"{LanguageManager.Instance.Text(heroModelConfig.name)} {LanguageManager.Instance.Text(monsterPowerUpConfig.jingjie1) }{ LanguageManager.Instance.Text(monsterPowerUpConfig.jingjie2) }{LanguageManager.Instance.Text(monsterPowerUpConfig.jingjie3)}";
  208. if (heroPowerUpConfig.jingjie1 != nextHeroInfo.powerUpConfig.jingjie1)
  209. {
  210. Text_TitleName.text = "渡<size=94>劫</size>";
  211. Text_Affirm.text = "逆天而行";
  212. Text_AffirmTips.text = "是否确认渡劫";
  213. if (heroPowerUpConfig.LeijieDamages != null && heroPowerUpConfig.LeijieDamages.Length > 1)
  214. {
  215. LeiJieRooot.gameObject.SetActive(true);
  216. Text_LeiJieHarm.text = $"{heroPowerUpConfig.LeijieDamages[0]}-{heroPowerUpConfig.LeijieDamages[1]}";
  217. Text_HeroHp.text = PlayerManager.Instance.myHero.hp.Value.ToString();
  218. if (PlayerManager.Instance.myHero.hp.Value < heroPowerUpConfig.LeijieDamages[0])
  219. {
  220. Text_HeroHp.color = Color.red;
  221. }
  222. else
  223. {
  224. Text_HeroHp.color = Color.black;
  225. }
  226. }
  227. else
  228. {
  229. LeiJieRooot.gameObject.SetActive(false);
  230. }
  231. }
  232. else
  233. {
  234. Text_AffirmTips.text = "是否确认突破";
  235. Text_Affirm.text = "突破";
  236. Text_TitleName.text = "突<size=94>破</size>";
  237. LeiJieRooot.gameObject.SetActive(false);
  238. }
  239. if (heroPowerUpConfig.DujieLevelbattleID != -1)
  240. {
  241. CombatRoot.gameObject.SetActive(true);
  242. if (PlayerManager.Instance.myHero.heroData.isCombat)
  243. {
  244. Btn_StartCombat.gameObject.SetActive(false);
  245. CombatTrue.gameObject.SetActive(true);
  246. Text_Combat.text = "已破除";
  247. }
  248. else
  249. {
  250. Btn_StartCombat.gameObject.SetActive(true);
  251. CombatTrue.gameObject.SetActive(false);
  252. Text_Combat.text = "破除";
  253. }
  254. }
  255. else
  256. {
  257. CombatRoot.gameObject.SetActive(false);
  258. }
  259. RefenceSuccessProbability(PlayerManager.Instance.myHero);
  260. Btn_Affirm.transform.RecoverColor();
  261. using (CTaskAwaitBuffer<BreakthroughItemWidget> cTaskAwaitBuffer = new CTaskAwaitBuffer<BreakthroughItemWidget>())
  262. {
  263. for (int i = 0; i < 1 + heroPowerUpConfig.DujieMustItemIDs.Length + heroPowerUpConfig.DujieItemIDs.Length; i++)
  264. {
  265. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<BreakthroughItemWidget>(null, Content));
  266. }
  267. breakthroughItemWidgets = await cTaskAwaitBuffer.WaitAll();
  268. breakthroughItemWidgets[0].CustomInit(1, 0,false);
  269. //必选道具
  270. for (var i = 0; i < heroPowerUpConfig.DujieMustItemIDs.Length; i++)
  271. {
  272. breakthroughItemWidgets[i + 1].CustomInit(2, heroPowerUpConfig.DujieMustItemIDs[i],true);
  273. }
  274. //可选道具
  275. for (var i = 0; i < heroPowerUpConfig.DujieItemIDs.Length; i++)
  276. {
  277. breakthroughItemWidgets[i + heroPowerUpConfig.DujieMustItemIDs.Length + 1].CustomInit(2, heroPowerUpConfig.DujieItemIDs[i],false);
  278. }
  279. for (var i = 0; i < breakthroughItemWidgets.Count; i++)
  280. {
  281. breakthroughItemWidgets[i].transform.anchoredPosition = new Vector2((breakthroughItemWidgets[i].transform.sizeDelta.x + 0.22f) * i, 0);
  282. }
  283. Content.sizeDelta = new Vector2((breakthroughItemWidgets[0].transform.sizeDelta.x + 0.22f) * breakthroughItemWidgets.Count, 200);
  284. }
  285. }
  286. private void RefenceSuccessProbability(HeroInfo hero)
  287. {
  288. bool isCan = true;
  289. if (heroPowerUpConfig.DujieLevelbattleID != -1 && !hero.heroData.isCombat)
  290. {
  291. isCan = false;
  292. }
  293. for (var i = 0; i < hero.powerUpConfig.DujieMustItemIDs.Length; i++)
  294. {
  295. bool isHave = false;
  296. for (var i1 = 1; i1 < breakthroughItemWidgets.Count; i1++)
  297. {
  298. if (breakthroughItemWidgets[i1].itemInfo != null && hero.powerUpConfig.DujieMustItemIDs[i] == breakthroughItemWidgets[i1].itemInfo.itemID)
  299. {
  300. isHave = true;
  301. }
  302. }
  303. if (!isHave)
  304. {
  305. isCan = false;
  306. break;
  307. }
  308. }
  309. int failXw = 0;
  310. float failbl = 0;
  311. int successBl = 0;
  312. var list = GetBl();
  313. failbl = list[1] == 0 ? hero.powerUpConfig.FailureExpReduce : (float)(hero.powerUpConfig.FailureExpReduce * list[1] * 0.01f);
  314. successBl = list[0];
  315. if (isCan)
  316. {
  317. // var list = GetBl();
  318. //
  319. // failbl = list[1] == 0 ? PlayerManager.Instance.myHero.powerUpConfig.FailureExpReduce : (float)(PlayerManager.Instance.myHero.powerUpConfig.FailureExpReduce * list[1] * 0.01f);
  320. // successBl = list[0];
  321. if (hero.powerUpConfig.jingjie1 != nextHeroInfo.powerUpConfig.jingjie1)
  322. {
  323. Text_AffirmTips.text = "是否确认渡劫";
  324. }
  325. else
  326. {
  327. Text_AffirmTips.text = "是否确认突破";
  328. }
  329. }
  330. else
  331. {
  332. //提示需要什么道具
  333. string tips = "需要 破除心魔 ";
  334. foreach (var dujieMustItemID in hero.powerUpConfig.DujieMustItemIDs)
  335. {
  336. ItemConfig itemConfig = ConfigComponent.Instance.Get<ItemConfig>(dujieMustItemID);
  337. tips += " " + LanguageManager.Instance.Text(itemConfig.itemName);
  338. }
  339. if (hero.powerUpConfig.jingjie1 != nextHeroInfo.powerUpConfig.jingjie1)
  340. {
  341. Text_AffirmTips.text = tips;
  342. }
  343. else
  344. {
  345. Text_AffirmTips.text = tips;
  346. }
  347. //
  348. // failbl = PlayerManager.Instance.myHero.powerUpConfig.FailureExpReduce;
  349. // successBl = 0;
  350. }
  351. failXw = (int)(hero.powerUpConfig.levelUpExp * failbl * 0.01f);
  352. Text_FailDesc.text = $"失败损失修为:{failXw}修为";
  353. Text_SucceedDesc.text = $"成功几率:{successBl}%";
  354. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_AffirmTips.GetComponent<RectTransform>());
  355. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_AffirmTips.transform.parent.GetComponent<RectTransform>());
  356. }
  357. private List<int> GetBl()
  358. {
  359. int succesAllBl = 0;
  360. int failAllBl = 0;
  361. if (heroPowerUpConfig.DujieLevelbattleID != -1 && PlayerManager.Instance.myHero.heroData.isCombat)
  362. {
  363. succesAllBl += heroPowerUpConfig.DujieRateviaBattle;
  364. }
  365. foreach (var breakthroughItemWidget in breakthroughItemWidgets)
  366. {
  367. if (breakthroughItemWidget.itemInfo != null)
  368. {
  369. if (breakthroughItemWidget.itemInfo.config.itemTag == 3)
  370. {
  371. succesAllBl += breakthroughItemWidget.itemInfo.config.associateVlaue[2];
  372. failAllBl += breakthroughItemWidget.itemInfo.config.associateVlaue[3];
  373. }
  374. else
  375. {
  376. succesAllBl += breakthroughItemWidget.itemInfo.config.associateVlaue[2];
  377. }
  378. }
  379. }
  380. return new List<int> { succesAllBl, failAllBl };
  381. }
  382. public async static CTask<HeroBreakthroughPanel> OpenPanel()
  383. {
  384. HeroBreakthroughPanel heroBreakthroughPanel = await UIManager.Instance.LoadAndOpenPanel<HeroBreakthroughPanel>(null, UILayer.Top, isShowBG: true);
  385. heroBreakthroughPanel.CustomInit();
  386. return heroBreakthroughPanel;
  387. }
  388. //渡劫预览
  389. public async static CTask<HeroBreakthroughPanel> OpenPanel1(HeroInfo heroInfo1)
  390. {
  391. HeroBreakthroughPanel heroBreakthroughPanel = await UIManager.Instance.LoadAndOpenPanel<HeroBreakthroughPanel>(null, UILayer.Top, isShowBG: true);
  392. heroBreakthroughPanel.CustomInit(heroInfo1);
  393. return heroBreakthroughPanel;
  394. }
  395. public async CTask CustomInit(HeroInfo heroInfo1)
  396. {
  397. type = 2;
  398. heroPowerUpConfig = heroInfo1.powerUpConfig;
  399. nextHeroInfo = PlayerManager.Instance.myHero.CopyHero();
  400. nextHeroInfo.InitHero(PlayerManager.Instance.myHero.heroData.heroModelId, heroInfo1.heroData.heroPowerId + 1);
  401. Text_CurrrentJIngjie.text = LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) +
  402. LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) +
  403. LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2]);
  404. Text_NextJinfjie.text = LanguageManager.Instance.Text(nextHeroInfo.powerUpConfig.jingjieLanIDs[0]) +
  405. LanguageManager.Instance.Text(nextHeroInfo.powerUpConfig.jingjieLanIDs[1]) +
  406. LanguageManager.Instance.Text(nextHeroInfo.powerUpConfig.jingjieLanIDs[2]);
  407. if (heroPowerUpConfig.jingjie1 != nextHeroInfo.powerUpConfig.jingjie1)
  408. {
  409. Text_TitleName.text = "渡劫预览";
  410. Text_Affirm.text = "逆天而行";
  411. Text_AffirmTips.text = "是否确认渡劫";
  412. if (heroPowerUpConfig.LeijieDamages != null && heroPowerUpConfig.LeijieDamages.Length > 1)
  413. {
  414. LeiJieRooot.gameObject.SetActive(true);
  415. Text_LeiJieHarm.text = $"{heroPowerUpConfig.LeijieDamages[0]}-{heroPowerUpConfig.LeijieDamages[1]}";
  416. Text_HeroHp.text = PlayerManager.Instance.myHero.hp.Value.ToString();
  417. if (PlayerManager.Instance.myHero.hp.Value < heroPowerUpConfig.LeijieDamages[0])
  418. {
  419. Text_HeroHp.color = Color.red;
  420. }
  421. else
  422. {
  423. Text_HeroHp.color = new Color32(249, 240, 204, 255);
  424. }
  425. }
  426. else
  427. {
  428. LeiJieRooot.gameObject.SetActive(false);
  429. }
  430. }
  431. else
  432. {
  433. Text_AffirmTips.text = "是否确认突破";
  434. Text_Affirm.text = "突破";
  435. Text_TitleName.text = "突破";
  436. LeiJieRooot.gameObject.SetActive(false);
  437. }
  438. if (heroPowerUpConfig.DujieLevelbattleID != -1)
  439. {
  440. CombatRoot.gameObject.SetActive(true);
  441. if (heroInfo1.heroData.isCombat)
  442. {
  443. Btn_StartCombat.gameObject.SetActive(false);
  444. CombatTrue.gameObject.SetActive(true);
  445. Text_Combat.text = "已破除";
  446. }
  447. else
  448. {
  449. Btn_StartCombat.gameObject.SetActive(true);
  450. CombatTrue.gameObject.SetActive(false);
  451. Text_Combat.text = "破除";
  452. }
  453. }
  454. else
  455. {
  456. CombatRoot.gameObject.SetActive(false);
  457. }
  458. RefenceSuccessProbability(heroInfo1);
  459. Btn_Affirm.transform.Gray(false);
  460. using (CTaskAwaitBuffer<BreakthroughItemWidget> cTaskAwaitBuffer = new CTaskAwaitBuffer<BreakthroughItemWidget>())
  461. {
  462. for (int i = 0; i < 1 + heroPowerUpConfig.DujieMustItemIDs.Length + heroPowerUpConfig.DujieItemIDs.Length; i++)
  463. {
  464. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<BreakthroughItemWidget>(null, Content));
  465. }
  466. breakthroughItemWidgets = await cTaskAwaitBuffer.WaitAll();
  467. breakthroughItemWidgets[0].CustomInit(1, 0,false);
  468. //必选道具
  469. for (var i = 0; i < heroPowerUpConfig.DujieMustItemIDs.Length; i++)
  470. {
  471. breakthroughItemWidgets[i + 1].CustomInit(2, heroPowerUpConfig.DujieMustItemIDs[i],true);
  472. }
  473. //可选道具
  474. for (var i = 0; i < heroPowerUpConfig.DujieItemIDs.Length; i++)
  475. {
  476. breakthroughItemWidgets[i + heroPowerUpConfig.DujieMustItemIDs.Length + 1].CustomInit(2, heroPowerUpConfig.DujieItemIDs[i],false);
  477. }
  478. for (var i = 0; i < breakthroughItemWidgets.Count; i++)
  479. {
  480. breakthroughItemWidgets[i].transform.anchoredPosition = new Vector2((breakthroughItemWidgets[i].transform.sizeDelta.x + 0.22f) * i, 0);
  481. }
  482. Content.sizeDelta = new Vector2((breakthroughItemWidgets[0].transform.sizeDelta.x + 0.22f) * breakthroughItemWidgets.Count, 200);
  483. }
  484. }
  485. public override void Close()
  486. {
  487. foreach (var breakthroughItemWidget in breakthroughItemWidgets)
  488. {
  489. UIManager.Instance.DormancyGComponent(breakthroughItemWidget);
  490. }
  491. breakthroughItemWidgets.Clear();
  492. heroPowerUpConfig = default;
  493. type = 0;
  494. base.Close();
  495. }
  496. }
  497. }