| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | using System;using System.Collections.Generic;using Common.Utility.CombatEvent;using Excel2Json;using Fort23.Core;using Fort23.UTool;using GameLogic.Combat.CombatTool;using GameLogic.Combat.Skill;using GameLogic.Hero;using UnityEngine;namespace GameLogic.Combat.Hero{    public class CombatHeroSkillControlBasic : IDisposable    {        public BetterList<SkillBasic> allSkill = new BetterList<SkillBasic>();        protected CombatHeroEntity _combatHeroEntity;        /// <summary>        /// 当前显示跑CD的技能        /// </summary>        public SkillBasic currCdSkill;        public T This<T>() where T : class        {            return this as T;        }        public async CTask Init(CombatHeroEntity combatHeroEntity)        {            _combatHeroEntity = combatHeroEntity;            await ProInit();        }        protected virtual async CTask ProInit()        {        }        public T GetSkillBasic<T>() where T : SkillBasic        {            for (int i = 0; i < allSkill.Count; i++)            {                if (allSkill[i] is T)                {                    return (T)allSkill[i];                }            }            return null;        }        public SkillBasic GetSkillBasic(int skillGroupId)        {            for (int i = 0; i < allSkill.Count; i++)            {                if (allSkill[i].SelfSkillConfig.IDGroup == skillGroupId)                {                    return allSkill[i];                }            }            return null;        }        public virtual async CTask SetNewSkill(SkillInfo[] allSkill)        {        }        public SkillBasic AddSkill(SkillInfo skillInfo)        {            if (string.IsNullOrEmpty(skillInfo.skillConfig.scriptName))            {                return null;            }            SkillBasic skillBasic = SkillScriptManager.Instance.CreateSkillBasic(skillInfo.skillConfig);            if (skillBasic == null)            {                return null;            }            skillBasic.InitSkillConfig(_combatHeroEntity, skillInfo);            // skillBasic.InitSkill(_combatHeroEntity);            allSkill.Add(skillBasic);            return skillBasic;        }        public void Update(float t)        {            for (int i = 0; i < allSkill.Count; i++)            {                allSkill[i].CombatUpdate(t);            }            ProUpdate(t);        }        protected virtual void ProUpdate(float t)        {        }        public virtual void Dispose()        {            for (int i = 0; i < allSkill.size; i++)            {                SkillBasic skillBasic = allSkill[i];                CObjectPool.Instance.Recycle(skillBasic);            }            allSkill.Clear();            _combatHeroEntity = null;        }        public virtual void ProDormancyObj()        {            for (int i = 0; i < allSkill.size; i++)            {                SkillBasic skillBasic = allSkill[i];                CObjectPool.Instance.Recycle(skillBasic);            }            allSkill.Clear();        }    }}
 |