コード例 #1
0
    public virtual void AttackDamage(EntityBase entity, int skillID)
    {
        SkillCfg skillData      = resSvc.GetSkillCfg(skillID);
        var      skillActionLst = skillData.skillActionLst;

        int sum = 0;

        for (int i = 0; i < skillActionLst.Count; i++)
        {
            SkillActionCfg skillActionCfg = resSvc.GetSkillActionCfg(skillActionLst[i]);
            sum += skillActionCfg.delayTime;
            int index = i;
            if (sum > 0)
            {
                int actid = timerSvc.AddTimeTask((int tid) =>
                {
                    if (entity != null)
                    {
                        SkillAction(entity, skillData, index);
                        entity.RemoveActionCB(tid);
                    }
                }, sum);
                entity.skActCBLst.Add(actid);
            }
            else
            {
                //瞬时技能
                SkillAction(entity, skillData, index);
            }
        }
    }
コード例 #2
0
ファイル: SkillMgr.cs プロジェクト: wangzeping1998/-
    //技能计时、判断和伤害
    public void AttackDamage(EntityBase entity, int skillId)
    {
        SkillCfg   skillData      = resSvc.GetSkillCfg(skillId);
        List <int> skillActionLst = skillData.skillActionLst;

        long timeSum = 0;

        //计算多段伤害
        for (int i = 0; i < skillActionLst.Count; i++)
        {
            SkillActionCfg sac   = resSvc.GetSkillActionCfg(skillActionLst[i]);
            int            index = i;
            timeSum += sac.delayTime;
            if (sac.delayTime > 0)
            {
                //有延迟
                int taskId = timerSvc.AddTimeTask((id) =>
                {
                    AttackAction(entity, skillData, index);
                    entity.RemoveActionTask(id);
                }, timeSum /*延迟时间*/);
                entity.AddActionTask(taskId);
            }
            else
            {
                //无延迟
                AttackAction(entity, skillData, index);
            }
        }
    }
コード例 #3
0
ファイル: SkillMgr.cs プロジェクト: yoyo-sincerely/DarkGod
    /// <summary>
    /// 技能伤害数值
    /// </summary>
    public void AttackDamage(EntityBase entity, int skillID)
    {
        SkillCfg   skillData = resSvc.GetSkillCfg(skillID);
        List <int> actonLst  = skillData.skillActionLst;
        int        sum       = 0; // 总伤害

        for (int i = 0; i < actonLst.Count; i++)
        {
            SkillActionCfg skillAction = resSvc.GetSkillActionCfg(actonLst[i]);
            sum += skillAction.delayTime;
            int index = i;
            if (sum > 0)
            {
                int actID = timeSvc.AddTimeTask((int tid) => {
                    if (entity != null)
                    {
                        SkillAction(entity, skillData, index);
                        entity.RmvActionCB(tid); // 移除技能伤害的回调 ID
                    }
                }, sum);
                // 添加技能伤害的回调 ID
                entity.skActionCBLst.Add(actID);
            }
            else   // 瞬时技能,不需要延迟
            {
                SkillAction(entity, skillData, index);
            }
        }
    }
コード例 #4
0
    /// <summary>
    /// 计算技能伤害
    /// </summary>
    /// <param name="entity"></param>
    /// <param name="skillID"></param>
    public void AttackDamage(EntityBase entity, int skillID)
    {
        SkillCfg   skillData  = resSvc.GetSkillCfg(skillID);
        List <int> actionList = skillData.skillActionList;

        int sumDelayTime = 0;

        for (int i = 0; i < actionList.Count; i++)
        {
            SkillActionCfg skillAction = resSvc.GetSkillActionCfg(actionList[i]);

            sumDelayTime += skillAction.delayTime;
            int index = i;
            if (sumDelayTime > 0)
            {
                int dmgID = timeSvc.AddTimeTask((int tid) =>
                {
                    SkillAction(entity, skillData, index);
                    entity.RemoveActionCB(tid);
                }, sumDelayTime);
                entity.skillActionCBList.Add(dmgID);
            }
            else
            {
                //瞬时技能
                SkillAction(entity, skillData, index);
            }
        }
    }
コード例 #5
0
    public void AttackDamage(EntityBase entity, int skillId)
    {
        entity._listSkillDamageCallback.Clear();
        entity._listSkillMoveCallback.Clear();

        SkillDataCfg skillData       = resSvc.GetSkillCfg(skillId);
        List <int>   listSkillAction = skillData.skillActionList;
        int          accumulate      = 0;

        for (int idx = 0; idx < listSkillAction.Count; idx++)
        {
            SkillActionCfg actionCfg = resSvc.GetSkillActionCfg(listSkillAction[idx]);
            accumulate += actionCfg.delayTime;
            int skillIdx = idx;
            if (accumulate > 0)
            {
                int actionId = -1;
                actionId = timeSvc.AddTimeTask((int tid) =>
                {
                    if (entity != null)
                    {
                        SelectDamageObj(entity, skillData, skillIdx);
                        entity.RemoveDamageCallbackID(actionId);
                    }
                }, accumulate);
                entity._listSkillDamageCallback.Add(actionId);
            }
            else
            {
                SelectDamageObj(entity, skillData, skillIdx);
            }
        }
    }
コード例 #6
0
    /// <summary>
    /// 技能伤害计算
    /// </summary>
    /// <param name="entity"></param>
    /// <param name="skillID"></param>
    public void AttackDamage(EntityBase entity, int skillID)
    {
        //Debug.Log(GetType()+ "/AttackDamage()/ " );

        SkillCfg   skillCfg  = resSvc.GetSkillCfg(skillID);
        List <int> actionLst = skillCfg.skillActionLst;
        int        sum       = 0;

        for (int i = 0; i < actionLst.Count; i++)
        {
            SkillActionCfg skillActionCfg = resSvc.GetSkillActionCfg(actionLst[i]);
            sum += skillActionCfg.delayTime;
            int index = i;
            if (sum > 0)
            {
                int actid = timerSvc.AddTimeTask((tid) =>
                {
                    if (entity != null)
                    {
                        SkillAction(entity, skillCfg, index);
                        entity.RmvActionCB(tid);
                    }
                }, sum);
                entity.skActionCBLst.Add(actid);
            }
            else
            {
                SkillAction(entity, skillCfg, index);
            }
        }
    }