Ejemplo n.º 1
0
 public void onAnimatedHitBoxCreated(MonoAnimatedHitboxDetect hitBox, ConfigEntityAttackPattern attackPattern)
 {
     if (this.onAnimatedHitBoxCreatedCallBack != null)
     {
         this.onAnimatedHitBoxCreatedCallBack(hitBox, attackPattern);
     }
 }
 private void onAnimatedHitBoxCreated(MonoAnimatedHitboxDetect hitBox, ConfigEntityAttackPattern attackPattern)
 {
     if ((attackPattern is AnimatedColliderDetect) || (attackPattern is TargetLockedAnimatedColliderDetect))
     {
         if (attackPattern is AnimatedColliderDetect)
         {
             AnimatedColliderDetect detect = attackPattern as AnimatedColliderDetect;
             if (!detect.brokenEnemyDragged)
             {
                 return;
             }
         }
         else if (attackPattern is TargetLockedAnimatedColliderDetect)
         {
             TargetLockedAnimatedColliderDetect detect2 = attackPattern as TargetLockedAnimatedColliderDetect;
             if (!detect2.brokenEnemyDragged)
             {
                 return;
             }
         }
         if (hitBox.entryName == this.config.ColliderEntryName)
         {
             hitBox.enemyEnterCallback = (Action <MonoAnimatedHitboxDetect, Collider>)Delegate.Combine(hitBox.enemyEnterCallback, new Action <MonoAnimatedHitboxDetect, Collider>(this.HitBoxTriggerEnterCallback));
             hitBox.destroyCallback    = (Action <MonoAnimatedHitboxDetect>)Delegate.Combine(hitBox.destroyCallback, new Action <MonoAnimatedHitboxDetect>(this.onAnimatedHitBoxDestroy));
             this._draggedEnemyList.Add(new Tuple <MonoAnimatedHitboxDetect, HashSet <BaseAbilityActor> >(hitBox, new HashSet <BaseAbilityActor>()));
             this._touchedEnemyList.Add(new Tuple <MonoAnimatedHitboxDetect, HashSet <uint> >(hitBox, new HashSet <uint>()));
         }
     }
 }
 private void SetAdditiveVelocity(BaseAbilityActor enemyActor, MonoAnimatedHitboxDetect hitbox)
 {
     if (((enemyActor != null) && (enemyActor.isAlive != 0)) && (enemyActor.entity != null))
     {
         Vector3 additiveVelocity = hitbox.collideCenterTransform.position - enemyActor.entity.XZPosition;
         additiveVelocity.y = 0f;
         additiveVelocity.Normalize();
         this.DoSetAdditiveVelocity(enemyActor, hitbox, additiveVelocity);
     }
 }
        private void HitBoxTriggerEnterCallback(MonoAnimatedHitboxDetect hitbox, Collider other)
        {
            if (hitbox.entryName == this.config.ColliderEntryName)
            {
                BaseMonoEntity   componentInParent = other.GetComponentInParent <BaseMonoEntity>();
                BaseAbilityActor actor             = Singleton <EventManager> .Instance.GetActor <BaseAbilityActor>(componentInParent.GetRuntimeID());

                if (actor != null)
                {
                    switch (Singleton <RuntimeIDManager> .Instance.ParseCategory(componentInParent.GetRuntimeID()))
                    {
                    case 3:
                    case 4:
                    {
                        HashSet <BaseAbilityActor> set = new HashSet <BaseAbilityActor>(Singleton <EventManager> .Instance.GetEnemyActorsOf <BaseAbilityActor>(actor));
                        if (set.Contains(base.actor))
                        {
                            bool flag = false;
                            foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <BaseAbilityActor> > tuple in this._draggedEnemyList)
                            {
                                if (tuple.Item1 == hitbox)
                                {
                                    flag = true;
                                    break;
                                }
                            }
                            if (flag)
                            {
                                HashSet <uint> set2 = null;
                                foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <uint> > tuple2 in this._touchedEnemyList)
                                {
                                    if (tuple2.Item1 == hitbox)
                                    {
                                        set2 = tuple2.Item2;
                                        if (tuple2.Item2.Contains(actor.runtimeID))
                                        {
                                            return;
                                        }
                                    }
                                }
                                if (set2 != null)
                                {
                                    set2.Add(actor.runtimeID);
                                }
                            }
                        }
                        break;
                    }
                    }
                }
            }
        }
 private void RemoveAdditiveVelocity(BaseAbilityActor targetActor, MonoAnimatedHitboxDetect hitbox)
 {
     if (((targetActor != null) && (targetActor.isAlive != 0)) && (targetActor.entity != null))
     {
         Tuple <MonoAnimatedHitboxDetect, BaseAbilityActor> key = new Tuple <MonoAnimatedHitboxDetect, BaseAbilityActor>(hitbox, targetActor);
         if (this._addedVelocityActorsAndIndexDic.ContainsKey(key))
         {
             int index = this._addedVelocityActorsAndIndexDic[key];
             targetActor.entity.SetAdditiveVelocityOfIndex(Vector3.zero, index);
             targetActor.entity.SetHasAdditiveVelocity(false);
             this._addedVelocityActorsAndIndexDic.Remove(key);
         }
     }
 }
        private bool OnAttackLandedOther(EvtAttackLanded evt)
        {
            MonoAnimatedHitboxDetect hitbox = null;
            bool flag = false;

            foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <uint> > tuple in this._touchedEnemyList)
            {
                if ((tuple.Item1 != null) && tuple.Item2.Contains(evt.attackeeID))
                {
                    hitbox = tuple.Item1;
                    flag   = true;
                    break;
                }
            }
            if (!flag)
            {
                return(false);
            }
            if (evt.attackResult.hitEffect <= AttackResult.AnimatorHitEffect.Light)
            {
                return(false);
            }
            BaseAbilityActor item = Singleton <EventManager> .Instance.GetActor <BaseAbilityActor>(evt.attackeeID);

            if (item == null)
            {
                return(false);
            }
            HashSet <BaseAbilityActor> set = null;

            foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <BaseAbilityActor> > tuple2 in this._draggedEnemyList)
            {
                if (tuple2.Item1 == hitbox)
                {
                    set = tuple2.Item2;
                    if (tuple2.Item2.Contains(item))
                    {
                        return(false);
                    }
                }
            }
            if (set != null)
            {
                set.Add(item);
                this.SetAdditiveVelocity(item, hitbox);
            }
            return(true);
        }
 private void DoSetAdditiveVelocity(BaseAbilityActor targetActor, MonoAnimatedHitboxDetect hitbox, Vector3 additiveVelocity)
 {
     if (targetActor != null)
     {
         Tuple <MonoAnimatedHitboxDetect, BaseAbilityActor> key = new Tuple <MonoAnimatedHitboxDetect, BaseAbilityActor>(hitbox, targetActor);
         if (!this._addedVelocityActorsAndIndexDic.ContainsKey(key))
         {
             targetActor.entity.SetHasAdditiveVelocity(true);
             int num = targetActor.entity.AddAdditiveVelocity((Vector3)(additiveVelocity * this._pullVelocity));
             this._addedVelocityActorsAndIndexDic.Add(key, num);
         }
         else
         {
             targetActor.entity.SetHasAdditiveVelocity(true);
             int index = this._addedVelocityActorsAndIndexDic[key];
             targetActor.entity.SetAdditiveVelocityOfIndex((Vector3)(additiveVelocity * this._pullVelocity), index);
         }
     }
 }
        private void onAnimatedHitBoxDestroy(MonoAnimatedHitboxDetect hitbox)
        {
            List <Tuple <MonoAnimatedHitboxDetect, HashSet <BaseAbilityActor> > > list = new List <Tuple <MonoAnimatedHitboxDetect, HashSet <BaseAbilityActor> > >();

            foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <BaseAbilityActor> > tuple in this._draggedEnemyList)
            {
                if (tuple.Item1 == hitbox)
                {
                    list.Add(tuple);
                    foreach (BaseAbilityActor actor in tuple.Item2)
                    {
                        this.RemoveAdditiveVelocity(actor, hitbox);
                    }
                }
            }
            foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <BaseAbilityActor> > tuple2 in list)
            {
                this._draggedEnemyList.Remove(tuple2);
            }
            List <Tuple <MonoAnimatedHitboxDetect, HashSet <uint> > > list2 = new List <Tuple <MonoAnimatedHitboxDetect, HashSet <uint> > >();

            foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <uint> > tuple3 in this._touchedEnemyList)
            {
                if (tuple3.Item1 == hitbox)
                {
                    list2.Add(tuple3);
                }
            }
            foreach (Tuple <MonoAnimatedHitboxDetect, HashSet <uint> > tuple4 in list2)
            {
                this._touchedEnemyList.Remove(tuple4);
            }
            List <Tuple <MonoAnimatedHitboxDetect, BaseAbilityActor> > list3 = new List <Tuple <MonoAnimatedHitboxDetect, BaseAbilityActor> >();

            foreach (Tuple <MonoAnimatedHitboxDetect, BaseAbilityActor> tuple5 in this._addedVelocityActorsAndIndexDic.Keys)
            {
                if (tuple5.Item1 == hitbox)
                {
                    list3.Add(tuple5);
                }
            }
        }