예제 #1
0
        public bool UseSkill <T>(T targetScript, KeyCode key, Hashtable arg = null) where T : MonoBehaviour, ISkillManager
        {
            int index = (int)key - 49;

            if (index < 0 || index >= skillBar.Length)
            {
                return(false);
            }

            if (skills.TryGetValue(skillBar[index], out Type type))
            {
                ISkillManager interfac = targetScript as ISkillManager;
                GameObject    go       = (targetScript as MonoBehaviour).gameObject;
                Skill.Skill   curSkill = interfac.GetCurSkill();
                if (curSkill != null)
                {
                    if (curSkill.GetType() == type)
                    {
                        return(false);
                    }

                    curSkill.SkillRemove();
                    UnityEngine.Object.Destroy(go.GetComponent(curSkill.GetType()));
                }

                Skill.Skill skill = go.AddComponent(type) as Skill.Skill;
                skill.SkillInit(arg);
                interfac.SetSkill(skill);
                return(true);
            }
            return(false);
        }
예제 #2
0
파일: BuffFactory.cs 프로젝트: x86chi/lib9c
        public static IList <Buff> GetBuffs(
            Skill.Skill skill,
            SkillBuffSheet skillBuffSheet,
            BuffSheet buffSheet)
        {
            var buffs = new List <Buff>();

            if (!skillBuffSheet.TryGetValue(skill.SkillRow.Id, out var skillBuffRow))
            {
                return(buffs);
            }

            foreach (var buffId in skillBuffRow.BuffIds)
            {
                if (!buffSheet.TryGetValue(buffId, out var buffRow))
                {
                    continue;
                }

                buffs.Add(Get(buffRow));
            }

            return(buffs);
        }