using Common.Utility.CombatEvent; using Core.Language; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Combat.Buff; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; using UnityEngine; namespace Fort23.Mono { [UIBinding(prefab = "MagicWeaponWidget")] public partial class MagicWeaponWidget : UIComponent { private CombatMagicWeaponEntity combatMagicWeaponEntity; private bool isChargedFinish; private bool isForewarn; private ParticleSystemPool noshifang; private ParticleSystemPool chargedFinish; // private ParticleSystemPool chargedFinish; private void Init() { } public override void AddEvent() { StaticUpdater.Instance.AddLateUpdateCallBack(Update); CombatEventManager.Instance.AddEventListener(CombatEventType.AddBuff, AddBuff); CombatEventManager.Instance.AddEventListener(CombatEventType.UseMagicWeapon, UseMagicWeapon); CombatEventManager.Instance.AddEventListener(CombatEventType.RemoveBuff, RemoveBuff); } public override void DelEvent() { StaticUpdater.Instance.RemoveLateUpdateCallBack(Update); CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddBuff, AddBuff); CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseMagicWeapon, UseMagicWeapon); CombatEventManager.Instance.RemoveEventListener(CombatEventType.RemoveBuff, RemoveBuff); } private void UseMagicWeapon(IEventData iEventData) { UseMagicWeaponEventData useMagicWeaponEventData = iEventData as UseMagicWeaponEventData; if (useMagicWeaponEventData.combatMagicWeaponEntity == combatMagicWeaponEntity) { GObjectPool.Instance.Recycle(chargedFinish); chargedFinish = null; } } private void AddBuff(IEventData iEventData) { BuffEventData buffEventData = iEventData as BuffEventData; if (buffEventData.target == combatMagicWeaponEntity) { if (buffEventData.BuffBasic is b_1008) { GObjectPool.Instance.FetchAsync("fx_ui_fb_Noshifang", delegate(ParticleSystemPool pool) { pool.transform.SetParent(transform); pool.transform.localPosition = new Vector3(0, 0, 0); pool.transform.SetAsLastSibling(); noshifang = pool; }); // feng.SetActive(true); } } } private void RemoveBuff(IEventData iEventData) { BuffEventData buffEventData = iEventData as BuffEventData; if (buffEventData.target == combatMagicWeaponEntity) { if (buffEventData.BuffBasic is b_1008) { GObjectPool.Instance.Recycle(noshifang); noshifang = null; } } } public override void AddButtonEvent() { myButton.onClick.AddListener(() => { if (combatMagicWeaponEntity.IsEnemy) { // SkillConfig skillConfig = SkillBasic.SelfSkillConfig; CombatController.currActiveCombat.isUpdate = false; SkillMassgePanel.OpenSkillSelectPanel( LanguageManager.Instance.Text(combatMagicWeaponEntity.FaBaoInfo.FabaoConfig.name), LanguageManager.Instance.Text(combatMagicWeaponEntity.FaBaoInfo.FabaoConfig.model), delegate() { CombatController.currActiveCombat.isUpdate = true; }); return; } if (combatMagicWeaponEntity == null || !combatMagicWeaponEntity.IsCanUse()) { return; } b_1008 b1008 = combatMagicWeaponEntity.BuffControl.GetBuffBasicForType(); if (b1008 != null) { return; } combatMagicWeaponEntity.UseMagicWeapon(); }); } public void InitWidget(CombatMagicWeaponEntity combatMagicWeaponEntity) { noshifang = null; chargedFinish = null; // feng.SetActive(false); this.combatMagicWeaponEntity = combatMagicWeaponEntity; } private void Update() { if (combatMagicWeaponEntity == null) { return; } float d = (combatMagicWeaponEntity.cd + combatMagicWeaponEntity.RootMagicWeaponControl.globalMagicWeaponCd) / (combatMagicWeaponEntity.MaxCd); cd.fillAmount = d; if (combatMagicWeaponEntity.cd < 1 && !isForewarn) { isForewarn = true; GObjectPool.Instance.FetchAsync("fx_ui_fb_gw_Starshifang", delegate(ParticleSystemPool pool) { pool.transform.SetParent(transform); pool.transform.localPosition = new Vector3(0, 0, 0); pool.transform.SetAsLastSibling(); }); } if (!isChargedFinish && combatMagicWeaponEntity.cd <= 0) { isChargedFinish = true; GObjectPool.Instance.FetchAsync("fx_ui_fb_shifang", delegate(ParticleSystemPool pool) { pool.transform.SetParent(transform); pool.transform.localPosition = new Vector3(0, 0, 0); pool.transform.SetSiblingIndex(3); chargedFinish= pool; }); } } } }