BossInfoPanel.cs 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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. Text_Name.text = "名称:" + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.modelConfig.name);
  73. Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie1) +
  74. LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie2) +
  75. LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie3);
  76. 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}";
  77. Text_Hp.text = PlayerManager.Instance.myHero.hp.Value.ToString();
  78. using (CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer())
  79. {
  80. foreach (var faBaoInfo in PlayerManager.Instance.FaBaoControl.FightFaBao)
  81. {
  82. if (faBaoInfo == null)
  83. continue;
  84. FaBaoInfo f = faBaoInfo;
  85. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((faBaoWidget) =>
  86. {
  87. faBaoWidget.CustomInit(f);
  88. faBaoWidget.OnClick = FaBaoWidgetOnClick;
  89. gongFaWidgetType2s.Add(faBaoWidget);
  90. }, FabaoRoot));
  91. }
  92. foreach (var skillInfo in PlayerManager.Instance.GongFaControl.allUseSkill)
  93. {
  94. if (skillInfo == null)
  95. continue;
  96. SkillInfo s = skillInfo;
  97. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((skillWidget) =>
  98. {
  99. skillWidget.CustomInit(s);
  100. skillWidget.OnClick = FaBaoWidgetOnClick;
  101. gongFaWidgetType2s.Add(skillWidget);
  102. }, GongfaRoot));
  103. }
  104. await cTaskAwaitBuffer.WaitAll();
  105. }
  106. }
  107. else
  108. {
  109. Text_Name.text = "名称:" + LanguageManager.Instance.Text(combatHeroInfo.modelConfig.name);
  110. Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie1) +
  111. LanguageManager.Instance.Text(heroPowerUpConfig.jingjie2) +
  112. LanguageManager.Instance.Text(heroPowerUpConfig.jingjie3);
  113. using (CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer())
  114. {
  115. for (var i = 0; i < combatHeroInfo.modelConfig.fa_bao_id.Length; i++)
  116. {
  117. if (combatHeroInfo.modelConfig.fa_bao_id[i] != -1)
  118. {
  119. int index = i;
  120. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((faBaoWidget) =>
  121. {
  122. faBaoWidget.CustomInit(new FaBaoInfo(combatHeroInfo.modelConfig.fa_bao_id[index], heroPowerUpConfig.FabaoLv, 1));
  123. faBaoWidget.OnClick = FaBaoWidgetOnClick;
  124. gongFaWidgetType2s.Add(faBaoWidget);
  125. }, FabaoRoot));
  126. }
  127. }
  128. for (var i = 0; i < combatHeroInfo.modelConfig.skillID.Length; i++)
  129. {
  130. if (combatHeroInfo.modelConfig.skillID[i] != -1)
  131. {
  132. int index = i;
  133. cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent<GongFaWidgetType2>((skillWidget) =>
  134. {
  135. skillWidget.CustomInit(new SkillInfo(combatHeroInfo.modelConfig.skillID[index], heroPowerUpConfig.GongfaLv, heroPowerUpConfig.GongfaStar));
  136. skillWidget.OnClick = FaBaoWidgetOnClick;
  137. gongFaWidgetType2s.Add(skillWidget);
  138. }, GongfaRoot));
  139. }
  140. }
  141. await cTaskAwaitBuffer.WaitAll();
  142. }
  143. Text_Linggen.text = $"金:{combatHeroInfo.Metal_Injury} 木:{combatHeroInfo.Wood_Injury} 水:{combatHeroInfo.Water_Injury} 火:{combatHeroInfo.Fire_Injury} 土:{combatHeroInfo.Earth_Injury}";
  144. Text_Hp.text = combatHeroInfo.hp.Value.ToString();
  145. }
  146. }
  147. private void FaBaoWidgetOnClick(ItemWidgetBasic obj)
  148. {
  149. GongFaWidgetType2 faBaoWidget = obj as GongFaWidgetType2;
  150. if (faBaoWidget.faBaoInfo != null)
  151. {
  152. SkillInfopanel.OpenPanle(faBaoWidget.faBaoInfo);
  153. }
  154. else if (faBaoWidget.skillInfo != null)
  155. {
  156. SkillInfopanel.OpenPanle(faBaoWidget.skillInfo);
  157. }
  158. //SkillMassgePanel.OpenSkillSelectPanel(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.name), UtilTools.GetString(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.dec), faBaoWidget.faoInfo.SkillConfig.effectValue));
  159. }
  160. public override void Close()
  161. {
  162. foreach (var faBaoWidget in gongFaWidgetType2s)
  163. {
  164. UIManager.Instance.DormancyGComponent(faBaoWidget);
  165. }
  166. gongFaWidgetType2s.Clear();
  167. result?.SetResult(isOk);
  168. base.Close();
  169. }
  170. public async static CTask<bool> OpenPanel(int levebattleId)
  171. {
  172. CTask<bool> result = CTask<bool>.Create();
  173. BossInfoPanel bossInfoPanel = await UIManager.Instance.LoadAndOpenPanel<BossInfoPanel>(null, UILayer.Top, uiData: new object[] { levebattleId, result });
  174. // bossInfoPanel.CustomInit(levebattleId, result);
  175. return await result;
  176. }
  177. }
  178. }