// skill instances management //============================ public static SkInst StartSkill(SkEntity caster, SkEntity target, int skId, ISkPara para = null, bool bStartImm = true) { SkData skData = null; if (!SkData.s_SkillTbl.TryGetValue(skId, out skData)) { Debug.LogError("[SkInst]:Invalid skill id:" + skId); return(null); } #if DBG_COL_ATK //if(!SkDebug.IsDebuggingID(skId)) return null; #endif // cool check SkCoolInfo cinfo = GetSkillCoolingInfo(caster, skData); if (cinfo != null && cinfo._fLeftTime > 0) { //Debug.LogError("[SkInst]:Skill id:" + skId +" in cooling.."); return(null); } SkInst inst = new SkInst(); SkInstPool.Instance._skInsts.Add(inst); inst._skData = skData; inst._para = para; inst._caster = caster; inst._target = target; inst._coroutine = bStartImm ? new CoroutineStoppable(caster, inst.Exec()) : null; return(inst); }
public void StartSkill(SkEntity target, int id, ISkPara para = null, bool bStartImm = true) { if (m_SkEntity != null) { if (m_PeSkEntity != null) { m_PeSkEntity.DispatchTargetSkill(m_SkEntity); } m_SkEntity.StartSkill(target, id, para, bStartImm); } }
public virtual SkInst StartSkill(SkEntity target, int id, ISkPara para = null, bool bStartImm = true) { SkInst inst = SkInst.StartSkill(this, target, id, para, bStartImm); if (inst != null) { if (IsController()) { if (para is ISkParaNet) { SendStartSkill(target, id, ((ISkParaNet)para).ToFloatArray()); } else if (para == null) { SendStartSkill(target, id); } else { Debug.LogError("error skill para"); } } } return(inst); }
/// <summary> 获取武器对象 </summary> public VCPWeapon GetWeapon(ISkPara para) { return(_weapons[(para as SkCarrierCanonPara)._idxCanon]); }
/// <summary> 发动技能(武器) </summary> public void StartSkill(int skillId, ISkPara para) { _creationSkEntity.StartSkill(attackTargetEntity, skillId, para); }
/// <summary> 获取炮弹数据块 </summary> public IProjectileData GetProjectileData(ISkPara param) { return(_weapons[(param as SkCarrierCanonPara)._idxCanon]); }