Example #1
0
        /// <summary>
        /// Filter a list of stations with parameters
        /// </summary>
        /// <param name="stations">List of stations to filter through</param>
        /// <param name="filter">Filter configuration</param>
        /// <returns>True, if atleast one station matching the filters was found</returns>
        public static bool Filter(this IEnumerable <Station> stations, StationSearchFilter filter, out List <Station> result)
        {
            result = new List <Station>(stations);
            List <Station> remove = new List <Station>();

            if (filter.Type != null)
            {
                remove.AddRange(result.Where(station => station.Type != filter.Type.Value));
                result.RemoveClear(result);
            }
            if (filter.Facility != null)
            {
                remove.AddRange(result.Where(station => !station.HasFacility(filter.Facility.Value)));
                result.RemoveClear(result);
            }
            if (filter.MinPadSize != null)
            {
                remove.AddRange(result.Where(station => !station.CanLand(filter.MinPadSize.Value)));
                result.RemoveClear(result);
            }
            return(result.Count > 0);
        }
Example #2
0
 /// <summary>
 /// Filters stations in a list of systems
 /// </summary>
 /// <param name="systems">Enumerable to filter through</param>
 /// <param name="systemFilter">system filter to apply</param>
 /// <param name="stationFilter">station filter to apply</param>
 /// <param name="result">a resulting new List with all stations</param>
 /// <returns></returns>
 public static bool FilterStations(this IEnumerable <StarSystem> systems, SystemSearchFilter systemFilter, StationSearchFilter stationFilter, out List <Station> result)
 {
     result = new List <Station>();
     if (systems.Filter(systemFilter, out var validSystems))
     {
         foreach (StarSystem system in validSystems)
         {
             if (system.FilterStations(stationFilter, out List <Station> stations))
             {
                 result.AddRange(stations);
             }
         }
         return(result.Count > 0);
     }
     else
     {
         return(false);
     }
 }