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); } } }
//技能计时、判断和伤害 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); } } }
/// <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); } } }
/// <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); } } }
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); } } }
/// <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); } } }