public static List <Vessel> GetTargets(this Vessel vessel, ETargetType targetTypes, bool considerAircrafts) { bool findSurf = (targetTypes & ETargetType.SURF) > 0; bool findSub = (targetTypes & ETargetType.SUB) > 0; bool findAir = (targetTypes & ETargetType.AIR) > 0; List <Vessel> result = new List <Vessel>(); if (findSurf || findSub) { foreach (Vessel v in BattleManager.instance.sides[1 - vessel.side]) { if (v.isAlive == false) { continue; } if (v.vesselType == EVesselType.SS && findSub) { if (vessel.CheckWeapon(v, considerAircrafts) == true) { result.Add(v); } } else if (v.vesselType != EVesselType.SS && findSurf) { if (vessel.CheckWeapon(v, considerAircrafts) == true) { result.Add(v); } } } } if (findAir && BattleManager.instance.sidesAC.Count > (1 - vessel.side)) { foreach (Aircraft a in BattleManager.instance.sidesAC[1 - vessel.side]) { if (a.isAlive == false) { continue; } if (vessel.CheckWeapon(a, considerAircrafts) == true) { result.Add(a); } } } return(result); }