| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | using System.Collections.Generic;using Common.Utility.CombatEvent;using Core.Utility;using Excel2Json;using Fort23.Core;using Fort23.UTool;using GameLogic.Combat.CombatTool;using GameLogic.Hero;namespace GameLogic.Combat.Hero{    /// <summary>    /// 法宝的管理    /// </summary>    public class MagicWeaponControl    {        public bool isAutoUse;        private BetterList<CombatMagicWeaponEntity> _allMagicWeapon = new BetterList<CombatMagicWeaponEntity>();        /// <summary>        /// 全局CD        /// </summary>        public float globalMagicWeaponCd;        public CombatMagicWeaponEntity[] AllMagicWeapon        {            get { return _allMagicWeapon.ToArray(true); }        }        public int MagicWeaponCount        {            get { return _allMagicWeapon.Count; }        }        // private CombatMagicWeaponEntity _currUserMagicWeapon;        public CombatHeroEntity combatHeroEntity;        public void AddMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity)        {            if (combatHeroEntity.isPlayer)            {                AddMagicWeaponHeroEntityEventData addMagicWeaponHeroEntityEventData =                    AddMagicWeaponHeroEntityEventData.Create();                addMagicWeaponHeroEntityEventData.CombatMagicWeaponEntity = combatMagicWeaponEntity;                CombatEventManager.Instance.Dispatch(CombatEventType.AddMagicWeaponHeroEntity,                    addMagicWeaponHeroEntityEventData);            }            _allMagicWeapon.Add(combatMagicWeaponEntity);        }        public void RemoveMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity)        {            _allMagicWeapon.Remove(combatMagicWeaponEntity);        }        public async CTask InitMagicWeapon(CombatHeroEntity combatHeroEntity, bool isPlayer)        {            isAutoUse = !isPlayer;            this.combatHeroEntity = combatHeroEntity;            CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();            List<FaBaoInfo> MagicWeaponID = combatHeroEntity.CurrCombatHeroInfo.MagicWeaponID;            for (int i = 0; i < MagicWeaponID.Count; i++)            {                if (MagicWeaponID[i] == null)                {                    continue;                }                CombatMagicWeaponEntity heroEntity = new CombatMagicWeaponEntity();                heroEntity.IsEnemy = combatHeroEntity.IsEnemy;                heroEntity.number = i;                AddMagicWeapon(heroEntity);                cTaskAwaitBuffer.AddTask(heroEntity.Init(this, MagicWeaponID[i],                    delegate(CombatMagicWeaponEntity entity)                    {                                               float bl = (entity.number + 1) * 0.25f;                        entity.cd = entity.cd * bl;                    }));            }            await cTaskAwaitBuffer.WaitAll();            cTaskAwaitBuffer.Dispose();        }        public void UseMagicWeapon(CombatMagicWeaponEntity combatMagicWeaponEntity)        {            combatMagicWeaponEntity.isMagicWeaponTreasureBook = false;            globalMagicWeaponCd = 2;            UseMagicWeaponEventData useMagicWeaponEventData = UseMagicWeaponEventData.Create();            useMagicWeaponEventData.combatHeroEntity = combatHeroEntity;            useMagicWeaponEventData.combatMagicWeaponEntity = combatMagicWeaponEntity;            CombatEventManager.Instance.Dispatch(CombatEventType.UseMagicWeapon, useMagicWeaponEventData);            // CombatEventManager.Instance.AddEventListener(CombatEventType.UseMagicWeapon,            CombatController.currActiveCombat.MagicWeaponCombatSence.AddMagicWeaponToSence(combatMagicWeaponEntity);        }        public void ReduceMagicCd(float cdBl)        {            for (int i = 0; i < _allMagicWeapon.Count; i++)            {                CombatMagicWeaponEntity combatMagicWeaponEntity = _allMagicWeapon[i];                float v = combatMagicWeaponEntity.MaxCd * cdBl * 0.01f;                combatMagicWeaponEntity.cd -= v;            }        }        public void Update(float t)        {            if (globalMagicWeaponCd > 0)            {                globalMagicWeaponCd -= t;            }            for (int i = 0; i < _allMagicWeapon.Count; i++)            {                _allMagicWeapon[i].Update(t);            }        }    }}
 |