示例#1
0
        /// <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);
        }
示例#2
0
 /// <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));
     }
 }
示例#3
0
 /// <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());
 }