GameFramework.EntityController.TrackSendImpact C# (CSharp) Method

TrackSendImpact() private method

private TrackSendImpact ( int targetId, int impactId, int seq, int impactToTarget, object>.Dictionary args ) : ImpactInfo
targetId int
impactId int
seq int
impactToTarget int
args object>.Dictionary
return ImpactInfo
        internal ImpactInfo TrackSendImpact(int targetId, int impactId, int seq, int impactToTarget, Dictionary<string, object> args)
        {
            EntityViewModel view = GetEntityViewById(targetId);
            if (null != view && null != view.Entity && null != view.Actor && !view.Entity.IsDeadSkillCasting()) {
                EntityInfo npc = view.Entity;
                ImpactInfo trackImpactInfo = npc.GetSkillStateInfo().GetImpactInfoBySeq(seq);
                if (null != trackImpactInfo && impactId == trackImpactInfo.ImpactId) {
                    ImpactInfo impactInfo = null;
                    if (impactToTarget <= 0 || impactToTarget >= SkillInstance.c_FirstInnerHitSkillId) {
                        impactToTarget = PredefinedSkill.c_HitSkillId;
                        impactInfo = new ImpactInfo(PredefinedSkill.Instance.HitSkillCfg);
                    }
                    var addArgs = new Dictionary<string, object>();
                    if (null == impactInfo) {
                        impactInfo = new ImpactInfo(impactId);
                    }
                    impactInfo.StartTime = TimeUtility.GetLocalMilliseconds();
                    impactInfo.ImpactSenderId = trackImpactInfo.ImpactSenderId;
                    impactInfo.SenderPosition = trackImpactInfo.SenderPosition;
                    impactInfo.SkillId = trackImpactInfo.SkillId;
                    impactInfo.DurationTime = trackImpactInfo.DurationTime > 0 ? trackImpactInfo.DurationTime : impactInfo.ConfigData.duration;
                    impactInfo.TargetType = trackImpactInfo.TargetType;
                    impactInfo.DamageData.CopyFrom(trackImpactInfo.DamageData);
                    impactInfo.DamageData.Merge(impactInfo.ConfigData.damageData);
                    if (impactInfo.ConfigData.type == (int)SkillOrImpactType.Buff) {
                        ImpactInfo oldImpactInfo = npc.GetSkillStateInfo().FindImpactInfoById(impactInfo.ImpactId);
                        if (null != oldImpactInfo) {
                            oldImpactInfo.DurationTime += impactInfo.DurationTime;
                            return oldImpactInfo;
                        }
                    }
                    npc.GetSkillStateInfo().AddImpact(impactInfo);
                    GfxSkillSystem.Instance.StartSkill(targetId, impactInfo.ConfigData, impactInfo.Seq, args, addArgs);
                    return impactInfo;
                }
            }
            return null;
        }

Usage Example

コード例 #1
0
 static public int TrackSendImpact(IntPtr l)
 {
     try {
         GameFramework.EntityController self = (GameFramework.EntityController)checkSelf(l);
         System.Int32 a1;
         checkType(l, 2, out a1);
         System.Int32 a2;
         checkType(l, 3, out a2);
         System.Int32 a3;
         checkType(l, 4, out a3);
         System.Int32 a4;
         checkType(l, 5, out a4);
         System.Collections.Generic.Dictionary <System.String, System.Object> a5;
         checkType(l, 6, out a5);
         var ret = self.TrackSendImpact(a1, a2, a3, a4, a5);
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }