using System; using System.Collections.Generic; using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; using GameLogic.Combat.Hero.Turntable; using GameLogic.Combat.Skill; using UnityEngine; namespace Fort23.Mono { [UIBinding(prefab = "ZhuanPanPanel")] public partial class ZhuanPanPanel : UIPanel { private List _gfWidgets = new List(); public static async CTask OpenZhuanPanPanel() { await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Bottom); } private void Init() { } protected override void AddEvent() { StaticUpdater.Instance.AddLateUpdateCallBack(Update); CombatEventManager.Instance.AddEventListener(CombatEventType.ExercisesAlter, ExercisesAlter); CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa); CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate); } protected override void DelEvent() { StaticUpdater.Instance.RemoveLateUpdateCallBack(Update); CombatEventManager.Instance.RemoveEventListener(CombatEventType.ExercisesAlter, ExercisesAlter); CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa); CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate); } public override void AddButtonEvent() { lanLiang_button.onClick.AddListener(() => { SkillSelectPanel.OpenSkillSelectPanel(); }); } private void AddUseGongFa(IEventData iEventData) { CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController .playerHeroEntity.CurrCombatHeroInfo; jin_shangshi.text = "伤势:"+combatHeroInfo.Metal_Injury; mu_shangshi.text = "伤势:"+combatHeroInfo.Wood_Injury; shui_shangshi.text = "伤势:"+combatHeroInfo.Water_Injury; huo_shangshi.text = "伤势:"+combatHeroInfo.Fire_Injury; tu_shangshi.text = "伤势:"+combatHeroInfo.Earth_Injury; } private void HeroHpUpdate(IEventData iEventData) { CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController .playerHeroEntity.CurrCombatHeroInfo; jin_shangshi.text = "伤势:"+combatHeroInfo.Metal_Injury; mu_shangshi.text = "伤势:"+combatHeroInfo.Wood_Injury; shui_shangshi.text = "伤势:"+combatHeroInfo.Water_Injury; huo_shangshi.text = "伤势:"+combatHeroInfo.Fire_Injury; tu_shangshi.text = "伤势:"+combatHeroInfo.Earth_Injury; } private async void ExercisesAlter(IEventData iEventData) { _gfWidgets.Clear(); UIManager.Instance.DormancyAllGComponent(); CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController .playerHeroEntity.CombatHeroSkillControl .This(); for (int i = 0; i < combatHeroSkillControl.SkillTurntable.allSkillSlots.Count; i++) { SkillSlots skillBasic = combatHeroSkillControl.SkillTurntable.allSkillSlots[i]; if (skillBasic == null) { continue; } gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject(this.gf_widget, null, Gf_root, isInstance: true); gfWidget.SkillBasic = skillBasic; gfWidget.InitWidget(skillBasic); _gfWidgets.Add(gfWidget); } } public void Update() { if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatHeroController == null || CombatController.currActiveCombat.CombatHeroController.playerHeroEntity == null || CombatController .currActiveCombat.CombatHeroController.playerHeroEntity.CombatHeroSkillControl == null) { return; } CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController .playerHeroEntity.CombatHeroSkillControl .This(); // lanLiang.fillAmount = combatHeroSkillControl.addChongNeng / 150f; // lanLiang.color = !combatHeroSkillControl.isKuoLiQuanKai // ? new Color(1f, 0.96f, 0f) // : new Color(0.96f, 0f, 1f); for (int i = 0; i < _gfWidgets.Count; i++) { gf_widget gfWidget = _gfWidgets[i]; // gfWidget.SkillBasic.angle += 1; // float jd = gfWidget.SkillBasic.angle % 360; // if (jd > gfWidget.SkillBasic.useAngle && gfWidget.SkillBasic.angle > gfWidget.SkillBasic.lasetAngle) // { // gfWidget.SkillBasic.lasetAngle += 360; // Debug.Log("旋转一圈"); // } if (gfWidget.useCount != gfWidget.SkillBasic.useCount) { gfWidget.useCount = gfWidget.SkillBasic.useCount; switch (gfWidget.SkillBasic.useTriggerType) { case 0: jin.Play("show", false); break; case 1: mu.Play("show", false); break; case 2: shui.Play("show", false); break; case 3: huo.Play("show", false); break; case 4: tu.Play("show", false); break; } } double hd = gfWidget.SkillBasic.angle * Math.PI / 180f; double a = Math.Cos(hd); double b = -Math.Sin(hd); double c = Math.Sin(hd); double d = a; double x = a * 0 + b * 60; double y = c * 0 + d * 60; gfWidget.transform.anchoredPosition = new Vector2((float)x, (float)y); } } } }