| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 | 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)            {                isChargedFinish = false;                isForewarn = false;                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<ParticleSystemPool>("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<b_1008>();                if (b1008 != null)                {                    return;                }                combatMagicWeaponEntity.UseMagicWeapon();            });        }        public void InitWidget(CombatMagicWeaponEntity combatMagicWeaponEntity)        {            noshifang = null;            chargedFinish = null;            // feng.SetActive(false);            this.combatMagicWeaponEntity = combatMagicWeaponEntity;            icon.icon_name = combatMagicWeaponEntity.FaBaoInfo.SkillConfig.icon;            icon_hui.icon_name = combatMagicWeaponEntity.FaBaoInfo.SkillConfig.icon;        }        private void Update()        {            if (combatMagicWeaponEntity == null)            {                return;            }            float d =                (combatMagicWeaponEntity.cd + combatMagicWeaponEntity.RootMagicWeaponControl.globalMagicWeaponCd) /                (combatMagicWeaponEntity.MaxCd);            float max = 140;            float spMax = 80;            float a = (max - spMax) / 2 / max;            float startA = 1 - a;            float fa = 1 - ((startA - d) / (startA - a));            float y = icon_hui.imageH;            icon_hui.fillAmount = fa;            bg_hui.fillAmount = d;            // bg_.fillAmount = d;            if (combatMagicWeaponEntity.cd < 1 && !isForewarn)            {                isForewarn = true;                GObjectPool.Instance.FetchAsync<ParticleSystemPool>("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<ParticleSystemPool>("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;                    });            }        }    }}
 |