BossInfoPanel.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. using System.Collections.Generic;
  2. using Animancer;
  3. using Core.Language;
  4. using Excel2Json;
  5. using Fort23.Core;
  6. using Fort23.UTool;
  7. using GameLogic.Hero;
  8. using UnityEngine;
  9. using UnityEngine.UI;
  10. using Utility;
  11. namespace Fort23.Mono
  12. {
  13. [UIBinding(prefab = "BossInfoPanel")]
  14. public partial class BossInfoPanel : UIPanel
  15. {
  16. private bool isOk;
  17. private LevelbattleConfig levelbattleConfig;
  18. private GroupConfig groupConfig;
  19. private HeroModelConfig heroModelConfig;
  20. private MonsterPowerUpConfig heroPowerUpConfig;
  21. private CombatHeroInfo combatHeroInfo;
  22. private void Init()
  23. {
  24. isAddStack = false;
  25. }
  26. protected override void AddEvent()
  27. {
  28. }
  29. protected override void DelEvent()
  30. {
  31. }
  32. public override void AddButtonEvent()
  33. {
  34. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  35. Btn_Ok.onClick.AddListener(() =>
  36. {
  37. isOk = true;
  38. UIManager.Instance.HideUIUIPanel(this);
  39. });
  40. Btn_Cancel.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  41. Btn_Player.onClick.AddListener(() => { UpdateInfo(1); });
  42. Btn_Boss.onClick.AddListener(() => { UpdateInfo(2); });
  43. }
  44. private CTask<bool> result;
  45. //List<SkillWidget> _skillWidgets = new List<SkillWidget>();
  46. List<GongFaWidgetType2> gongFaWidgetType2s = new List<GongFaWidgetType2>();
  47. public async override CTask<bool> AsyncInit(object[] uiData)
  48. {
  49. await CustomInit((int)uiData[0], uiData[1] as CTask<bool>);
  50. return await base.AsyncInit(uiData);
  51. }
  52. public async CTask CustomInit(int levebattleId, CTask<bool> result)
  53. {
  54. this.result = result;
  55. levelbattleConfig = ConfigComponent.Instance.Get<LevelbattleConfig>(levebattleId);
  56. groupConfig = ConfigComponent.Instance.Get<GroupConfig>(levelbattleConfig.Group[0]);
  57. heroModelConfig = ConfigComponent.Instance.Get<HeroModelConfig>(groupConfig.GroupMonster[0]);
  58. heroPowerUpConfig = ConfigComponent.Instance.Get<MonsterPowerUpConfig>(PlayerManager.Instance.myHero.level.Value);
  59. combatHeroInfo = new CombatHeroInfo();
  60. combatHeroInfo.InitMonster(heroModelConfig.ID, heroPowerUpConfig.ID);
  61. UpdateInfo(2);
  62. }
  63. public async void UpdateInfo(int type)
  64. {
  65. foreach (var gongFaWidgetType2 in gongFaWidgetType2s)
  66. {
  67. UIManager.Instance.DormancyGComponent(gongFaWidgetType2);
  68. }
  69. gongFaWidgetType2s.Clear();
  70. if (type == 1)
  71. {
  72. Icon_Select.transform.SetParent(Btn_Player.transform);
  73. Icon_Select.transform.SetAsFirstSibling();
  74. Icon_Select.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 0);
  75. Text_Name.text = "名称:" + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.modelConfig.name);
  76. Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie1) +
  77. LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie2) +
  78. LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie3);
  79. Text_Linggen.text = $"金:{PlayerManager.Instance.myHero.Metal_Injury} 木:{PlayerManager.Instance.myHero.Wood_Injury} 水:{PlayerManager.Instance.myHero.Water_Injury} 火:{PlayerManager.Instance.myHero.Fire_Injury} 土:{PlayerManager.Instance.myHero.Earth_Injury}";
  80. Text_Hp.text = PlayerManager.Instance.myHero.hp.Value.ToString();
  81. using (CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer())
  82. {
  83. foreach (var faBaoInfo in PlayerManager.Instance.FaBaoControl.FightFaBao)
  84. {
  85. if (faBaoInfo == null)
  86. continue;
  87. FaBaoInfo f = faBaoInfo;
  88. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((faBaoWidget) =>
  89. {
  90. faBaoWidget.CustomInit(f);
  91. faBaoWidget.OnClick = FaBaoWidgetOnClick;
  92. gongFaWidgetType2s.Add(faBaoWidget);
  93. }, FabaoRoot));
  94. }
  95. foreach (var skillInfo in PlayerManager.Instance.GongFaControl.allUseSkill)
  96. {
  97. if (skillInfo == null)
  98. continue;
  99. SkillInfo s = skillInfo;
  100. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((skillWidget) =>
  101. {
  102. skillWidget.CustomInit(s);
  103. skillWidget.OnClick = FaBaoWidgetOnClick;
  104. gongFaWidgetType2s.Add(skillWidget);
  105. }, GongfaRoot));
  106. }
  107. await cTaskAwaitBuffer.WaitAll();
  108. }
  109. }
  110. else
  111. {
  112. Icon_Select.transform.SetParent(Btn_Boss.transform);
  113. Icon_Select.transform.SetAsFirstSibling();
  114. Icon_Select.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 0);
  115. Text_Name.text = "名称:" + LanguageManager.Instance.Text(combatHeroInfo.modelConfig.name);
  116. Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie1) +
  117. LanguageManager.Instance.Text(heroPowerUpConfig.jingjie2) +
  118. LanguageManager.Instance.Text(heroPowerUpConfig.jingjie3);
  119. using (CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer())
  120. {
  121. for (var i = 0; i < combatHeroInfo.modelConfig.fa_bao_id.Length; i++)
  122. {
  123. if (combatHeroInfo.modelConfig.fa_bao_id[i] != -1)
  124. {
  125. int index = i;
  126. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((faBaoWidget) =>
  127. {
  128. faBaoWidget.CustomInit(new FaBaoInfo(combatHeroInfo.modelConfig.fa_bao_id[index], heroPowerUpConfig.FabaoLv, 1));
  129. faBaoWidget.OnClick = FaBaoWidgetOnClick;
  130. gongFaWidgetType2s.Add(faBaoWidget);
  131. }, FabaoRoot));
  132. }
  133. }
  134. for (var i = 0; i < combatHeroInfo.modelConfig.skillID.Length; i++)
  135. {
  136. if (combatHeroInfo.modelConfig.skillID[i] != -1)
  137. {
  138. int index = i;
  139. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((skillWidget) =>
  140. {
  141. skillWidget.CustomInit(new SkillInfo(combatHeroInfo.modelConfig.skillID[index], heroPowerUpConfig.GongfaLv, heroPowerUpConfig.GongfaStar));
  142. skillWidget.OnClick = FaBaoWidgetOnClick;
  143. gongFaWidgetType2s.Add(skillWidget);
  144. }, GongfaRoot));
  145. }
  146. }
  147. await cTaskAwaitBuffer.WaitAll();
  148. }
  149. Text_Linggen.text = $"金:{combatHeroInfo.Metal_Injury} 木:{combatHeroInfo.Wood_Injury} 水:{combatHeroInfo.Water_Injury} 火:{combatHeroInfo.Fire_Injury} 土:{combatHeroInfo.Earth_Injury}";
  150. Text_Hp.text = combatHeroInfo.hp.Value.ToString();
  151. }
  152. }
  153. private void FaBaoWidgetOnClick(ItemWidgetBasic obj)
  154. {
  155. GongFaWidgetType2 faBaoWidget = obj as GongFaWidgetType2;
  156. if (faBaoWidget.faBaoInfo != null)
  157. {
  158. SkillInfopanel.OpenPanle(faBaoWidget.faBaoInfo);
  159. }
  160. else if (faBaoWidget.skillInfo != null)
  161. {
  162. SkillInfopanel.OpenPanle(faBaoWidget.skillInfo);
  163. }
  164. //SkillMassgePanel.OpenSkillSelectPanel(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.name), UtilTools.GetString(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.dec), faBaoWidget.faoInfo.SkillConfig.effectValue));
  165. }
  166. public override void Close()
  167. {
  168. foreach (var faBaoWidget in gongFaWidgetType2s)
  169. {
  170. UIManager.Instance.DormancyGComponent(faBaoWidget);
  171. }
  172. gongFaWidgetType2s.Clear();
  173. result?.SetResult(isOk);
  174. base.Close();
  175. }
  176. public async static CTask<bool> OpenPanel(int levebattleId)
  177. {
  178. CTask<bool> result = CTask<bool>.Create();
  179. BossInfoPanel bossInfoPanel = await UIManager.Instance.LoadAndOpenPanel<BossInfoPanel>(null, UILayer.Top, uiData: new object[] { levebattleId, result });
  180. // bossInfoPanel.CustomInit(levebattleId, result);
  181. return await result;
  182. }
  183. }
  184. }