/// <summary> /// Index all files of specified library type. /// </summary> /// <param name="FilePaths">Array of absolute paths to files.</param> /// <param name="Type">Library type.</param> /// <returns></returns> private bool IndexLibrary(ref string[] FilePaths, LibraryTypes Type) { // Create file name arrays switch (Type) { case LibraryTypes.Texture: TextureFileNames = new string[(FilePaths.Length - Arena2.TextureFile.UnsupportedFilenames.Length)]; break; case LibraryTypes.Img: ImgFileNames = new string[(FilePaths.Length - Arena2.TextureFile.UnsupportedFilenames.Length)]; break; case LibraryTypes.Cif: CifFileNames = new string[FilePaths.Length]; break; case LibraryTypes.Rci: RciFileNames = new string[FilePaths.Length]; break; case LibraryTypes.Sky: SkyFileNames = new string[FilePaths.Length]; break; } // Index and hash files int Index = 0; TextureFile TextureFile = new TextureFile(); ImgFile ImgFile = new ImgFile(); foreach (string FilePath in FilePaths) { // Get filename only string FileName = Path.GetFileName(FilePath); // Handle unsupported TEXTURE files if (LibraryTypes.Texture == Type) { if (!TextureFile.IsFilenameSupported(FileName)) { continue; } } // Handle unsupported IMG files if (LibraryTypes.Img == Type) { if (!ImgFile.IsFilenameSupported(FileName)) { continue; } } // Store file name in array switch (Type) { case LibraryTypes.Texture: TextureFileNames[Index] = FileName; break; case LibraryTypes.Img: ImgFileNames[Index] = FileName; break; case LibraryTypes.Cif: CifFileNames[Index] = FileName; break; case LibraryTypes.Rci: RciFileNames[Index] = FileName; break; case LibraryTypes.Sky: SkyFileNames[Index] = FileName; break; } // Create file item ImageFileItem Item = new ImageFileItem(); Item.FileName = FileName; Item.LibraryType = Type; Item.ImageFile = null; // Add file item based on type switch (Type) { case LibraryTypes.Texture: TextureFileItems.Add(Item); break; case LibraryTypes.Img: ImgFileItems.Add(Item); break; case LibraryTypes.Cif: CifFileItems.Add(Item); break; case LibraryTypes.Rci: RciFileItems.Add(Item); break; case LibraryTypes.Sky: SkyFileItems.Add(Item); break; } // Hash file index based on type switch (Type) { case LibraryTypes.Texture: TextureHashtable.Add(FileName, Index); break; case LibraryTypes.Img: ImgHashtable.Add(FileName, Index); break; case LibraryTypes.Cif: CifHashtable.Add(FileName, Index); break; case LibraryTypes.Rci: RciHashtable.Add(FileName, Index); break; case LibraryTypes.Sky: SkyHashtable.Add(FileName, Index); break; } // Increment index Index++; } return(true); }