| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | using Animancer;using Common.Utility.CombatEvent;using Excel2Json;using Fort23.Core;using Fort23.UTool;using GameLogic.Combat.Buff;using GameLogic.Combat.CombatTool;using GameLogic.Combat.Hero.State;using GameLogic.Combat.Skill;using GameLogic.Hero;using GameLogic.Player;using UnityEngine;using UnityEngine.AI;namespace GameLogic.Combat.Hero{    /// <summary>    /// 法宝对象    /// </summary>    public class CombatMagicWeaponEntity : CombatHeroEntity    {        public int MagicWeaponCollisionId = -1;        protected FabaoConfig _magicWeaponConfig;        public float cd = 2;        public WuXingType WuXingType;        /// <summary>        /// 是否拥有法宝宝典        /// </summary>        public bool isMagicWeaponTreasureBook = false;        public FaBaoInfo FaBaoInfo        {            get { return _faBaoInfo; }        }        private FaBaoInfo _faBaoInfo;        public float HpBl        {            get { return _HpBl; }            set { _HpBl = value; }        }        private float _HpBl = 100;        public int useIndex;        /// <summary>        /// 是否进入战斗状态        /// </summary>        public bool isCombatState;        private MagicWeaponControl _rootMagicWeaponControl;        public MagicWeaponControl RootMagicWeaponControl        {            get { return _rootMagicWeaponControl; }        }        private BetterList<SkillBasic> allSkill = new BetterList<SkillBasic>();        public float MaxCd        {            get { return magicWeaponConfig.cd; }        }        private FabaoConfig magicWeaponConfig;        public void MagicWeaponDie()        {            {                HeroDieEventData heroDieEventData = HeroDieEventData.Create();                heroDieEventData.combatHeroEntity = this;                CombatEventManager.Instance.Dispatch(CombatEventType.MagicWeaponDie,                    heroDieEventData);                CombatAIBasic.ChangeState(CombatHeroStateType.dile);            }        }        public async CTask<CombatMagicWeaponEntity> Init(MagicWeaponControl magicWeaponControl,            FaBaoInfo faBaoInfo,            System.Action<CombatMagicWeaponEntity> callBack = null)        {            this._faBaoInfo = faBaoInfo;            this.magicWeaponConfig = faBaoInfo.FabaoConfig;            this._rootMagicWeaponControl = magicWeaponControl;            string modelName = magicWeaponConfig.model;            cd = magicWeaponConfig.cd;            // GameTimeLineParticleFactory            CombatHeroGameObjectPool poolInterface =                await GObjectPool.Instance.FetchAsync<CombatHeroGameObjectPool>(modelName + ".prefab", null);#if !COMBAT_SERVER            if (poolInterface == null || poolInterface.own == null)            {                return null;            }            poolInterface.own.transform.position = Vector3.one;            poolInterface.own.SetActive(false);            combatHeroTimeLineControl = new CombatHeroTimeLineControl();            combatHeroTimeLineControl.Init(this);            AssetHandle assetHandle =                await AssetBundleLoadManager.Instance.LoadAssetAsyncTask<TextAsset>(                    modelName + "_TD.txt");            if (assetHandle != null)            {                TextAsset textAsset = assetHandle.AssetObject<TextAsset>();                TimeLienData timeLienData = JsonManager.FromJson<TimeLienData>(textAsset.text);                timeLienData.DeserializeData();                assetHandle.Release();                combatHeroTimeLineControl.AddTimeLienData(timeLienData);            }            combatHeroGameObject = new CombatHeroGameObject();            combatHeroGameObject.Init(this, poolInterface);            CombatHeroSkillControl = new CombatHeroSkillControlBasic();            CombatHeroSkillControl.Init(this);            int id = magicWeaponConfig.SkillGroupID * 10 + 1;            // SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(id);            SkillInfo skillInfo = new SkillInfo(id, 1);            CombatHeroSkillControl.AddSkill(skillInfo);            BuffControl = new BuffControl();            BuffControl.Init(this);            if (CombatAIBasic == null)            {                CombatAIBasic = new MagicWeaponAi();            }            HeroEntityMono heroEntityMono = poolInterface.own.GetComponent<HeroEntityMono>();            if (heroEntityMono == null)            {                heroEntityMono = poolInterface.own.AddComponent<HeroEntityMono>();            }            heroEntityMono.combatHeroEntity = this;            CombatAIBasic.Init(this);            // AnimancerComponent animancerComponent = poolInterface.own.GetComponentInChildren<AnimancerComponent>();            combatHeroAnimtion = new CombatHeroAnimtion();            poolInterface.own.SetActive(true);            combatHeroAnimtion.Init(this);            CombatAIBasic.ChangeState(CombatHeroStateType.XiuMian);#endif            callBack?.Invoke(this);            return this;        }        public override float GetAttSpeed()        {            return 1;        }        public void UseMagicWeapon()        {            if (cd > 0 || _rootMagicWeaponControl.combatHeroEntity.CombatAIBasic.currFocusTarget == null)            {                return;            }            _HpBl = _faBaoInfo.FabaoPowerupConfig.Power;            cd = magicWeaponConfig.cd;            _rootMagicWeaponControl.UseMagicWeapon(this);        }        public override void Update(float t)        {            combatHeroTimeLineControl.Update(t);            CombatAIBasic?.Update(t);            CombatHeroSkillControl?.Update(t);            BuffControl?.Update(t);            if (CombatAIBasic.CurrState.GetType() == typeof(MagicWeapomDormancyState))            {                b_1008 b1008 = BuffControl.GetBuffBasicForType<b_1008>();                if (b1008 == null)                {                    cd -= t;                    if (_rootMagicWeaponControl.isAutoUse)                    {                        UseMagicWeapon();                    }                }            }        }    }}
 |