/// <summary> /// Returns a FileID for a rogue file (file that isn't archived). /// </summary> /// <param name="Entry">The entry generated for the file.</param> /// <returns>A FileID (see RogueFileIDs enum in Database.cs)</returns> public static uint GetFileID(Far3Entry Entry) { try { string Filename = Path.GetFileName(Entry.Filename); Filename = Filename.Replace("-", "_"); Filename = Filename.Substring(0, Filename.IndexOf(".")); return((uint)Enum.Parse(typeof(RogueFileIDs), Filename)); } catch (ArgumentException) { return((uint)Entry.GetHashCode()); } }
/// <summary> /// Returns a FileID for a rogue file (file that isn't archived). /// </summary> /// <param name="Entry">The entry generated for the file.</param> /// <returns>A FileID (see RogueFileIDs enum in Database.cs)</returns> public static uint GetFileID(Far3Entry Entry) { try { string[] Dirs = Path.GetDirectoryName(Entry.Filename).Split("\\".ToCharArray()); string Filename = Dirs[1] + "_" + Path.GetFileName(Entry.Filename); Filename = Filename.Replace("-", "_"); Filename = Filename.Substring(0, Filename.IndexOf(".")); return((uint)Enum.Parse(typeof(RogueFileIDs), Filename)); } catch (ArgumentException) { return((uint)Entry.GetHashCode()); } }
/// <summary> /// Adds files from a specified directory to a dictionary of entries. /// </summary> /// <param name="EntryDir">The directory to scan for entries.</param> /// <param name="Filetype">A fully qualified lowercase filetype to scan for (can be empty).</param> /// <param name="Entries">The Dictionary to add entries to.</param> private static void AddFilesFromDir(string EntryDir, string Filetype, ref Dictionary<Far3Entry, string> Entries) { string[] Dirs = Directory.GetDirectories(EntryDir); foreach(string Dir in Dirs) { if (Filetype != "") { if (Dir.Contains(Filetype)) { string[] Files = Directory.GetFiles(Dir); string[] SubDirs = Directory.GetDirectories(Dir); foreach (string Fle in Files) { if (Fle.Contains(".dat")) { FAR3Archive Archive = new FAR3Archive(Fle); foreach (Far3Entry Entry in Archive.GetAllFAR3Entries()) Entries.Add(Entry, Fle.Replace(GlobalSettings.Default.StartupPath, "")); } else { Far3Entry Entry = new Far3Entry(); Entry.Filename = Fle.Replace(GlobalSettings.Default.StartupPath, ""); Entry.FileID = HelperFuncs.GetFileID(Entry); Entry.TypeID = HelperFuncs.GetTypeID(Path.GetExtension(Fle)); HelperFuncs.CheckCollision(Entry.FileID, Entries); //Ignore fonts to minimize the risk of ID collisions. if (!Entry.Filename.Contains(".ttf")) { if (!Entry.Filename.Contains(".ffn")) Entries.Add(Entry, Entry.Filename); } } } foreach (string SubDir in SubDirs) { Files = Directory.GetFiles(SubDir); foreach (string SubFle in Files) { if (SubFle.Contains(".dat")) { FAR3Archive Archive = new FAR3Archive(SubFle); foreach (Far3Entry Entry in Archive.GetAllFAR3Entries()) Entries.Add(Entry, SubFle.Replace(GlobalSettings.Default.StartupPath, "")); } else { Far3Entry Entry = new Far3Entry(); Entry.Filename = SubFle.Replace(GlobalSettings.Default.StartupPath, ""); Entry.FileID = HelperFuncs.GetFileID(Entry); Entry.TypeID = HelperFuncs.GetTypeID(Path.GetExtension(SubFle)); HelperFuncs.CheckCollision(Entry.FileID, Entries); //Ignore fonts to minimize the risk of ID collisions. if (!Entry.Filename.Contains(".ttf")) { if (!Entry.Filename.Contains(".ffn")) Entries.Add(Entry, Entry.Filename); } } } } } } else //Filetype was empty, so just add all filetypes found... { string[] Files = Directory.GetFiles(Dir); string[] SubDirs = Directory.GetDirectories(Dir); foreach (string Fle in Files) { if (Fle.Contains(".dat")) { FAR3Archive Archive = new FAR3Archive(Fle); foreach (Far3Entry Entry in Archive.GetAllFAR3Entries()) Entries.Add(Entry, Fle.Replace(GlobalSettings.Default.StartupPath, "")); } else { Far3Entry Entry = new Far3Entry(); Entry.Filename = Fle.Replace(GlobalSettings.Default.StartupPath, ""); Entry.FileID = HelperFuncs.GetFileID(Entry); Entry.TypeID = HelperFuncs.GetTypeID(Path.GetExtension(Fle)); HelperFuncs.CheckCollision((ulong)(((ulong)Entry.FileID) << 32 | ((ulong)(Entry.TypeID >> 32))), Entries); //Ignore fonts to minimize the risk of ID collisions. if (!Entry.Filename.Contains(".ttf")) { if(!Entry.Filename.Contains(".ffn")) Entries.Add(Entry, Entry.Filename); } } } foreach (string SubDir in SubDirs) { Files = Directory.GetFiles(SubDir); foreach (string SubFle in Files) { if (SubFle.Contains(".dat")) { FAR3Archive Archive = new FAR3Archive(SubFle); foreach (Far3Entry Entry in Archive.GetAllFAR3Entries()) Entries.Add(Entry, SubFle.Replace(GlobalSettings.Default.StartupPath, "")); } else { Far3Entry Entry = new Far3Entry(); Entry.Filename = SubFle.Replace(GlobalSettings.Default.StartupPath, ""); Entry.FileID = HelperFuncs.GetFileID(Entry); Entry.TypeID = HelperFuncs.GetTypeID(Path.GetExtension(SubFle)); HelperFuncs.CheckCollision((ulong)(((ulong)Entry.FileID) << 32 | ((ulong)(Entry.TypeID >> 32))), Entries); //Ignore fonts to minimize the risk of ID collisions. if (!Entry.Filename.Contains(".ttf")) { if (!Entry.Filename.Contains(".ffn")) Entries.Add(Entry, Entry.Filename); } } } } } } }