コード例 #1
0
ファイル: Weapon.cs プロジェクト: Juansero29/SFDScripts
 public static void PreWeaponTrackingUpdate()
 {
     string[] argArray = new string[WeaponItemNames.Count];
     WeaponItemNames.Values.CopyTo(argArray, 0);
     IObject[] list = GlobalGame.GetObjectsByName(argArray);
     for (int i = 0; i < list.Length; i++)
     {
         IObject obj   = list[i];
         bool    found = false;
         for (int j = 0; j < WeaponTrackingList.Count; j++)
         {
             if (WeaponTrackingList[j].Object == obj)
             {
                 found = true;
                 break;
             }
         }
         if (found)
         {
             continue;
         }
         TWeapon weapon = PlayerDropWeaponUpdate(obj.GetWorldPosition(), ((IObjectWeaponItem)obj).WeaponItem);
         if (weapon == null)
         {
             weapon = new TWeapon(((IObjectWeaponItem)obj).WeaponItem);
         }
         weapon.Object = obj;
         WeaponTrackingList.Add(weapon);
     }
 }
コード例 #2
0
ファイル: Weapon.cs プロジェクト: Juansero29/SFDScripts
        public static TWeapon PlayerPickUpWeaponUpdate(Vector2 pos, WeaponItem id)
        {
            if (WeaponTrackingList.Count == 0)
            {
                return(null);
            }
            float   dist   = 16;
            TWeapon weapon = null;
            int     index  = 0;

            for (int i = 0; i < WeaponTrackingList.Count; i++)
            {
                if (!WeaponTrackingList[i].Object.RemovalInitiated)
                {
                    continue;
                }
                float currentDist = (pos - WeaponTrackingList[i].Position).Length();
                if (WeaponTrackingList[i].Weapon == id && currentDist <= dist)
                {
                    weapon = WeaponTrackingList[i];
                    dist   = currentDist;
                    index  = i;
                }
            }
            if (weapon == null)
            {
                return(null);
            }
            WeaponTrackingList.RemoveAt(index);
            return(weapon);
        }
コード例 #3
0
ファイル: Weapon.cs プロジェクト: Juansero29/SFDScripts
 public void RemoveWeapons()
 {
     for (int i = 0; i < WeaponTrackingList.Count; i++)
     {
         WeaponTrackingList[i].Remove();
     }
     WeaponTrackingList.Clear();
 }
コード例 #4
0
ファイル: Weapon.cs プロジェクト: Juansero29/SFDScripts
 public static void PostWeaponTrackingUpdate()
 {
     for (int i = 0; i < WeaponTrackingList.Count; i++)
     {
         if (WeaponTrackingList[i].Object == null || WeaponTrackingList[i].Object.RemovalInitiated)
         {
             WeaponTrackingList.RemoveAt(i);
             i--;
         }
         else
         {
             WeaponTrackingList[i].Position = WeaponTrackingList[i].Object.GetWorldPosition();
             WeaponTrackingList[i].Update();
         }
     }
 }