private static GamelogicEngineCoil GuessCoilDeviceItem(IGamelogicEngineDeviceItem engineCoil, ICoilDeviceComponent device) { // if only one device item available, it's the one. if (device.AvailableCoils.Count() == 1 && string.IsNullOrEmpty(engineCoil.DeviceItemHint)) { return(device.AvailableCoils.First()); } // no hint, no guess.. if (string.IsNullOrEmpty(engineCoil.DeviceItemHint)) { return(null); } // match by regex if hint provided foreach (var deviceCoil in device.AvailableCoils) { var regex = new Regex(engineCoil.DeviceItemHint, RegexOptions.IgnoreCase); if (regex.Match(deviceCoil.Id).Success) { return(deviceCoil); } } return(null); }
private static IEnumerable <ICoilDeviceComponent> GuessCoilDevices(IEnumerable <ICoilDeviceComponent> coilDevices, IGamelogicEngineDeviceItem engineCoil) { List <ICoilDeviceComponent> devices = new List <ICoilDeviceComponent>(); foreach (var device in coilDevices) { if (string.Equals(device.name, engineCoil.Id, StringComparison.OrdinalIgnoreCase)) { devices.Add(device); } else if (!string.IsNullOrEmpty(engineCoil.DeviceHint)) { var regex = new Regex(engineCoil.DeviceHint, RegexOptions.IgnoreCase); if (regex.Match(device.name).Success) { devices.Add(device); } } if (devices.Count() >= engineCoil.NumMatches) { return(devices); } } return(devices); }