Munashedov

Untitled

Apr 29th, 2022 (edited)
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.22 KB | None | 0 0
  1.     public MyDetectedEntityInfo SelectTarget()
  2.     {
  3.         MyDetectedEntityInfo currentTarget= api.GetAiFocus(Me.CubeGrid.EntityId);
  4.         if (currentTarget != null) return currentTarget;
  5.  
  6.         double maxexposure = 0, maxsize = 0, maxthreat = 0, maxcd = 0;
  7.         double minexposure = 0, minsize = 0, minthreat = 0, mincd = 0;
  8.         bool first = true;
  9.         foreach(var target in vals)
  10.         {
  11.             if(first)
  12.             {
  13.                 maxexposure = target.Item1; minexposure = target.Item1;
  14.                 maxsize = target.Item2; minsize = target.Item2;
  15.                 maxthreat = target.Item3; minthreat = target.Item3;
  16.                 maxcd = target.Item4; mincd = target.Item4;
  17.                
  18.                 first = false;
  19.             }
  20.             else
  21.             {
  22.                 if (target.Item1 > maxexposure)
  23.                     maxexposure = target.Item1;
  24.                 if (target.Item2 > maxsize)
  25.                     maxsize = target.Item2;
  26.                 if (target.Item3 > maxthreat)
  27.                     maxthreat = target.Item3;
  28.                 if (target.Item4 > maxcd)
  29.                     maxcd = target.Item4;
  30.  
  31.                 if (target.Item1 < minexposure)
  32.                     minexposure = target.Item1;
  33.                 if (target.Item2 < minsize)
  34.                     minsize = target.Item2;
  35.                 if (target.Item3 < minthreat)
  36.                     minthreat = target.Item3;
  37.                 if (target.Item4 < mincd)
  38.                     mincd = target.Item4;
  39.             }
  40.         }
  41.         double bestValue = -1;
  42.         MyDetectedEntityInfo bestTarget = api.GetAiFocus(Me.CubeGrid.EntityId);
  43.         foreach(var target in vals)
  44.         {
  45.             double value =
  46.                 Scale(minexposure, maxexposure, target.Item1) * KExposure +
  47.                 Scale(minsize, maxsize, target.Item2) * KSize +
  48.                 Scale(minthreat, maxthreat, target.Item3) * KThreat +
  49.                 Scale(mincd, maxcd, target.Item4) * KCd;
  50.             //Program.Echo(target.Item5.Name + " : " + value);
  51.             if(value > bestValue)
  52.             {
  53.                 bestValue = value;
  54.                 bestTarget = target.Item5;
  55.             }
  56.         }
  57.         return bestTarget;
  58.     }
Add Comment
Please, Sign In to add comment