Exemple #1
0
        //todo 这个触发结构不好 后期优化重构
        public bool TriggerMultiple(ISkill skill, List <int> actionIds, int identifyId)
        {
            if (skill == null)
            {
                SkillUtil.LogError("skill is nullptr");
                return(false);
            }

            var result = true;

            foreach (var actionId in actionIds)
            {
                skill.AddSkillAction(actionId, identifyId);
            }

            foreach (var actionId in actionIds)
            {
                if (!Internal_TriggerAction(skill, actionId, identifyId, false, false))
                {
                    result = false;
                }
            }

            return(result);
        }
Exemple #2
0
        private bool Internal_TriggerAction(ISkill skill, int actionId, int identifyId, bool isBuff,
                                            bool addSkillAction = true)
        {
            SkillActionData data = null;

            if (!IsValid(skill, actionId, identifyId, isBuff, ref data))
            {
                return(false);
            }

            var param = skill.GetParam(identifyId, isBuff);

            if (map.ContainsKey(data.ActionType))
            {
                //  SkillUtil.Log(string.Format("  Trigger Type-> {0}", (SkillActionType) data.ActionType));
                if (addSkillAction && !isBuff)
                {
                    skill.AddSkillAction(actionId, identifyId);
                }
                map[data.ActionType].Action(skill, data, param);
            }
            else
            {
                SkillUtil.LogError(SkillUtil.GetSkillDebugDes(skill) + "  Ation Type" + data.ActionType + " 未注册");
            }
            return(true);
        }