CombatPanel.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using System;
  2. using System.Collections.Generic;
  3. using Common.Utility.CombatEvent;
  4. using Excel2Json;
  5. using Fort23.Core;
  6. using GameLogic.Bag;
  7. using GameLogic.Combat;
  8. using GameLogic.Combat.CombatTool;
  9. using GameLogic.Combat.CombatType;
  10. using GameLogic.Combat.Hero;
  11. using GameLogic.Combat.Skill;
  12. using OfficeOpenXml.FormulaParsing.Utilities;
  13. using UnityEngine;
  14. namespace Fort23.Mono
  15. {
  16. [UIBinding(prefab = "CombatPanel")]
  17. public partial class CombatPanel : UIPanel
  18. {
  19. private ZhuanPanPanel zhuanPanLogic;
  20. private HeroHpWidget playerHeroHpWidget;
  21. public List<MagicWeaponWidget> magicWeapons = new List<MagicWeaponWidget>();
  22. public static async CTask OpenCombatPanel()
  23. {
  24. CombatPanel combatPanel = await UIManager.Instance.LoadAndOpenPanel<CombatPanel>(null, UILayer.Middle);
  25. await combatPanel.ShowPanel();
  26. }
  27. protected override async CTask ProOpen()
  28. {
  29. zhuanPanLogic =
  30. await UIManager.Instance.CreateGComponentForObject<ZhuanPanPanel>(ZhuanPanPanel, null, null);
  31. await zhuanPanLogic.ShowPanel();
  32. }
  33. public override CTask GetFocus()
  34. {
  35. if (CombatDrive.Instance.CombatController.CombatTypeBasic is LevelBattleCombatType)
  36. {
  37. LevelBattleCombatType levelBattleCombatType =
  38. CombatDrive.Instance.CombatController.CombatTypeBasic as LevelBattleCombatType;
  39. if (levelBattleCombatType.levelbattleConfig.ID == 10001)
  40. {
  41. if (PlayerGuideManager.Instance.GuideIsCanDo(9))
  42. {
  43. PlayerGuideManager.Instance.SetGuid(9);
  44. }
  45. }
  46. }
  47. return base.GetFocus();
  48. }
  49. private void Init()
  50. {
  51. isAddStack = true;
  52. IsShowAppBar = false;
  53. }
  54. public override void Hide()
  55. {
  56. base.Hide();
  57. UIManager.Instance.DormancyGComponent(zhuanPanLogic);
  58. zhuanPanLogic = null;
  59. UIManager.Instance.DormancyAllGComponent<BossHpWidget>();
  60. UIManager.Instance.DormancyGComponent(playerHeroHpWidget);
  61. playerHeroHpWidget = null;
  62. UIManager.Instance.DormancyAllGComponent<MagicWeaponWidget>();
  63. magicWeapons.Clear();
  64. }
  65. protected override void AddEvent()
  66. {
  67. // CombatEventManager.Instance.AddEventListener(CombatEventType.AddMagicWeaponHeroEntity,
  68. // AddMagicWeaponHeroEntity);
  69. // CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  70. CombatEventManager.Instance.AddEventListener(CombatEventType.ShowUseMagicWeaponName, UseMagicWeapon);
  71. StaticUpdater.Instance.AddLateUpdateCallBack(Update);
  72. // CameraSelect.value = 0.7f;
  73. }
  74. protected override void DelEvent()
  75. {
  76. // CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddMagicWeaponHeroEntity,
  77. // AddMagicWeaponHeroEntity);
  78. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ShowUseMagicWeaponName, UseMagicWeapon);
  79. StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
  80. }
  81. private async void UseMagicWeapon(IEventData ieveData)
  82. {
  83. UseMagicWeaponEventData eventData = ieveData as UseMagicWeaponEventData;
  84. CombatMagicWeaponEntity combatMagicWeaponEntity = eventData.combatMagicWeaponEntity;
  85. CombatHeroEntity combatHeroEntity = eventData.combatHeroEntity;
  86. FaBaoSkillNameWidget faBaoSkillNameWidget =
  87. await UIManager.Instance.CreateGComponentForObject<FaBaoSkillNameWidget>(FaBaoSkillNameWidget, null,
  88. FaBaoSkillDec, isInstance: true);
  89. Vector3 pos = Vector3.zero;
  90. if (combatMagicWeaponEntity.IsEnemy)
  91. {
  92. pos = combatMagicWeaponEntity.GameObject.transform.TransformPoint(new Vector3(-1, 2, 0));
  93. }
  94. else
  95. {
  96. pos = combatMagicWeaponEntity.GameObject.transform.TransformPoint(new Vector3(-0.5f, 0.5f, 0));
  97. }
  98. // combatHeroEntity.dotPos+
  99. faBaoSkillNameWidget.ShowWidget(combatMagicWeaponEntity.FaBaoInfo.FabaoConfig.name, pos);
  100. // useQuqueSkill.transform.SetAsLastSibling();
  101. }
  102. // private async void AddUseGongFa(IEventData ieveData)
  103. // {
  104. // AddUseGongFaEventData eventData = ieveData as AddUseGongFaEventData;
  105. // SkillBasic skillBasic = eventData.SkillBasic;
  106. // if (skillBasic.CombatHeroEntity.IsEnemy)
  107. // {
  108. // return;
  109. // }
  110. //
  111. // UseQuqueSkill useQuqueSkill =
  112. // await UIManager.Instance.CreateGComponentForObject<UseQuqueSkill>(UseQuqueSkill, null,
  113. // UseQuqueSkillRoot, isInstance: true);
  114. // useQuqueSkill.ShowWidget(skillBasic);
  115. // useQuqueSkill.transform.SetAsLastSibling();
  116. // }
  117. private async void AddMagicWeaponHeroEntity()
  118. {
  119. CombatMagicWeaponEntity[] magicWeaponEntities = CombatController.currActiveCombat
  120. .playerHeroEntity.heroMagicWeaponControl.AllMagicWeapon;
  121. int count = CombatController.currActiveCombat.playerHeroEntity.heroMagicWeaponControl
  122. .MagicWeaponCount;
  123. for (int i = 0; i < count; i++)
  124. {
  125. CombatMagicWeaponEntity weaponEntity = magicWeaponEntities[i];
  126. MagicWeaponWidget shengShiEventWidget =
  127. await UIManager.Instance.CreateGComponentForObject<MagicWeaponWidget>(MagicWeaponWidget, null,
  128. MagicWeapon,
  129. isInstance: true);
  130. magicWeapons.Add(shengShiEventWidget);
  131. shengShiEventWidget.InitWidget(weaponEntity);
  132. }
  133. // shengShiEventWidget.InitShengShiEventWidget(configId);
  134. }
  135. public async CTask ShowPanel()
  136. {
  137. playerHeroHpWidget =
  138. await UIManager.Instance.CreateGComponentForObject<HeroHpWidget>(PlayerHpWidget, null);
  139. playerHeroHpWidget.size = 250;
  140. playerHeroHpWidget.shieldSize = 100;
  141. playerHeroHpWidget.isFollowTarget = false;
  142. playerHeroHpWidget.Init(CombatController.currActiveCombat.playerHeroEntity);
  143. CombatHeroEntity[] allEnemy =
  144. CombatController.currActiveCombat.CombatHeroController.GetHero(true, out int maxCount);
  145. for (int i = 0; i < maxCount; i++)
  146. {
  147. CombatHeroEntity enemy = allEnemy[i];
  148. if (enemy.isCreateHeroHp)
  149. {
  150. continue;
  151. }
  152. BossHpWidget bossHpWidget =
  153. await UIManager.Instance.CreateGComponentForObject<BossHpWidget>(BossHpWidget, null, BossHpRoot,
  154. isInstance: true);
  155. bossHpWidget.ShowWidget(enemy);
  156. }
  157. AddMagicWeaponHeroEntity();
  158. }
  159. public override void AddButtonEvent()
  160. {
  161. CameraSelect.onValueChanged.AddListener(CameraSelect_onValueChanged);
  162. AutoUse.isOn=CombatController.currActiveCombat.playerHeroEntity.heroMagicWeaponControl.isAutoUse;
  163. AutoUse.onValueChanged.AddListener((x) =>
  164. {
  165. AccountFileInfo.Instance.playerData.isAutoCombat = x;
  166. CombatController.currActiveCombat.playerHeroEntity.heroMagicWeaponControl.isAutoUse =
  167. x;
  168. });
  169. ZhanTing.onClick.AddListener(() =>
  170. {
  171. CombatController.currActiveCombat.isUpdate = false;
  172. CombatPuasePanel.OpenCombatPuasePanel(ZhanTing_onClick);
  173. });
  174. }
  175. private void ZhanTing_onClick(bool isOk)
  176. {
  177. CombatController.currActiveCombat.isUpdate = true;
  178. if (isOk)
  179. {
  180. CombatController.currActiveCombat.GameOver(false);
  181. }
  182. }
  183. private void CameraSelect_onValueChanged(float value)
  184. {
  185. if (CombatController.currActiveCombat == null ||
  186. CombatController.currActiveCombat.CombatCameraControllder == null)
  187. {
  188. return;
  189. }
  190. CombatController.currActiveCombat.CombatCameraControllder.CameraSelect_onValueChanged(value);
  191. }
  192. public void Update()
  193. {
  194. }
  195. }
  196. }