/// <summary> /// Überprüft, ob diese Datei gültig ist und lädt diese gegebenfalls. Diese wird unter <see cref="AddOnLoader.RegistredFiles"/> /// gleich mit angebunden. /// </summary> /// <param name="file">Die Zieldatei</param> /// <returns>Gibt ein Zeiger auf die Datei zurück.</returns> public AddOnFile SearchSingleFile(FileInfo file) { var name = file.Name; bool allowed = false; foreach (var ext in SupportedExtensions) { if (name.EndsWith(ext)) { allowed = true; } } if (!allowed) { return(null); } if (SupportedFileCheck != null) { if (!SupportedFileCheck(file)) { return(null); } } if (RegistredFiles.Exists((aof) => aof.FileInfo == file)) { return(null); } var f = new AddOnFile(file, this); RegistredFiles.Add(f); return(f); }
/// <summary> /// Durchsucht den folgenden Ordner nach allen gültigen Dateien. Diese werden nur <see cref="AddOnLoader.RegistredFiles"/> angefügt, geladen /// werden diese noch nicht. Zuerst werden alle gefundenen Dateien auf eine gültige Endung (unter <seealso cref="AddOnLoader.SupportedExtensions"/>) /// überprüft, danach erfolgt erst eine Überprüfung mittels <see cref="AddOnLoader.RegistredFiles"/>. Doppelte Einträge in /// <see cref="AddOnLoader.RegistredFiles"/> werden gelöscht. /// </summary> /// <param name="directory">Bestimmt den Ordner, in dem gesucht werden soll.</param> /// <param name="inSubDirectoriesToo">Gibt an, ob auch alle Unterordner mit durchsucht werden sollen.</param> public void SearchAllFiles(DirectoryInfo directory, bool inSubDirectoriesToo = false) { LastDirectory = directory.FullName; if (inSubDirectoriesToo) { foreach (var d in directory.GetDirectories()) { SearchAllFiles(d, inSubDirectoriesToo); } } foreach (var f in directory.GetFiles()) { var name = f.Name; bool allowed = false; foreach (var ext in SupportedExtensions) { if (name.EndsWith(ext)) { allowed = true; } } if (!allowed) { continue; } if (SupportedFileCheck != null) { if (!SupportedFileCheck(f)) { continue; } } if (RegistredFiles.Exists((aof) => aof.FileInfo == f)) { continue; } RegistredFiles.Add(new AddOnFile(f, this)); } }
/// <summary> /// Durchsucht die Datei nach allen Typen, welche in <see cref="Loader.AddOnTypes"/> registriert wurden. /// Diese werden in <see cref="AddOnTypes"/> registriert. /// </summary> /// <exception cref="NotSupportedException"/> public void DetectTypes() { RegistredFiles.ForEach((f) => f.DetectTypes()); }