private List <string> GetTargetFileList(Ommel loader) { if (TargetFile == null && TargetFiles == null && TargetPattern == null) { return(new List <string> { "{datapath}" }); } if (TargetFile != null) { return new List <string> { TargetFile } } ; if (TargetFiles != null) { return(TargetFiles); } var l = new List <string>(); var s = new HashSet <string>(); var regex = new Regex(TargetPattern); Logger.Debug($"Target Pattern: {TargetPattern}"); var target_ents = Directory.GetFiles(loader.NoitaPath, "*.*", SearchOption.AllDirectories); for (var i = 0; i < target_ents.Length; i++) { var start_idx = loader.NoitaPath.Length + 1; var data_ent = target_ents[i].Substring(start_idx).Replace("\\", "/"); if (!regex.IsMatch(data_ent)) { continue; } var skip = false; if (TargetExceptionRules != null) { for (var j = 0; j < TargetExceptionRules.Count; j++) { if (TargetExceptionRules[j].IsMatch(data_ent)) { Logger.Debug($" Match (target, rejected): {data_ent}"); skip = true; } } } if (skip) { continue; } Logger.Debug($" Match (target): {data_ent}"); loader.CheckDataEntry(data_ent); l.Add(data_ent); s.Add(data_ent); } var noita_ents = Directory.GetFiles(loader.NoitaPath, "*.*", SearchOption.AllDirectories); for (var i = 0; i < noita_ents.Length; i++) { var start_idx = loader.NoitaPath.Length + 1; var data_ent = noita_ents[i].Substring(start_idx); if (!regex.IsMatch(data_ent)) { continue; } var skip = false; if (TargetExceptionRules != null) { for (var j = 0; j < TargetExceptionRules.Count; j++) { if (TargetExceptionRules[j].IsMatch(data_ent)) { Logger.Debug($" Match (Noita, rejected): {data_ent}"); skip = true; } } } if (skip) { continue; } if (s.Contains(data_ent)) { Logger.Debug($" Ignored match: {data_ent}"); continue; } Logger.Debug($" Glob match (Noita): {data_ent}"); l.Add(data_ent); s.Add(data_ent); } return(l); }