Пример #1
0
        private static void FindMostViableTarget(LockOnHelper.LockOnMode context, ref int targetVar)
        {
            targetVar = -1;
            if (LockOnHelper.UseMode != context || !LockOnHelper.CanUseLockonSystem())
            {
                return;
            }
            List <int> t1_1 = new List <int>();
            int        t1_2 = -1;

            Utils.Swap <List <int> >(ref t1_1, ref LockOnHelper._targets);
            Utils.Swap <int>(ref t1_2, ref LockOnHelper._pickedTarget);
            LockOnHelper.RefreshTargets(Main.MouseWorld, 2000f);
            LockOnHelper.GetClosestTarget(Main.MouseWorld);
            Utils.Swap <List <int> >(ref t1_1, ref LockOnHelper._targets);
            Utils.Swap <int>(ref t1_2, ref LockOnHelper._pickedTarget);
            if (t1_2 >= 0)
            {
                targetVar = t1_1[t1_2];
            }
            t1_1.Clear();
        }
Пример #2
0
 public static void Update()
 {
     LockOnHelper._canLockOn = false;
     if (!LockOnHelper.CanUseLockonSystem())
     {
         LockOnHelper.SetActive(false);
     }
     else
     {
         if (--LockOnHelper._lifeTimeArrowDisplay < 0)
         {
             LockOnHelper._lifeTimeArrowDisplay = 0;
         }
         LockOnHelper.FindMostViableTarget(LockOnHelper.LockOnMode.ThreeDS, ref LockOnHelper._threeDSTarget);
         LockOnHelper.FindMostViableTarget(LockOnHelper.LockOnMode.TargetClosest, ref LockOnHelper._targetClosestTarget);
         if (PlayerInput.Triggers.JustPressed.LockOn && !PlayerInput.WritingText)
         {
             LockOnHelper._lifeTimeCounter      = 40;
             LockOnHelper._lifeTimeArrowDisplay = 30;
             LockOnHelper.HandlePressing();
         }
         if (!LockOnHelper._enabled)
         {
             return;
         }
         if (LockOnHelper.UseMode == LockOnHelper.LockOnMode.FocusTarget && PlayerInput.Triggers.Current.LockOn)
         {
             if (LockOnHelper._lifeTimeCounter <= 0)
             {
                 LockOnHelper.SetActive(false);
                 return;
             }
             --LockOnHelper._lifeTimeCounter;
         }
         NPC aimedTarget = LockOnHelper.AimedTarget;
         if (!LockOnHelper.ValidTarget(aimedTarget))
         {
             LockOnHelper.SetActive(false);
         }
         if (LockOnHelper.UseMode == LockOnHelper.LockOnMode.TargetClosest)
         {
             LockOnHelper.SetActive(false);
             LockOnHelper.SetActive(LockOnHelper.CanEnable());
         }
         if (!LockOnHelper._enabled)
         {
             return;
         }
         Player  p = Main.player[Main.myPlayer];
         Vector2 predictedPosition = LockOnHelper.PredictedPosition;
         bool    flag = false;
         if (LockOnHelper.ShouldLockOn(p) && (ItemID.Sets.LockOnIgnoresCollision[p.inventory[p.selectedItem].type] || Collision.CanHit(p.Center, 0, 0, predictedPosition, 0, 0) || (Collision.CanHitLine(p.Center, 0, 0, predictedPosition, 0, 0) || Collision.CanHit(p.Center, 0, 0, aimedTarget.Center, 0, 0)) || Collision.CanHitLine(p.Center, 0, 0, aimedTarget.Center, 0, 0)))
         {
             flag = true;
         }
         if (!flag)
         {
             return;
         }
         LockOnHelper._canLockOn = true;
     }
 }