private void AddFile(string pkg, D3RootEntry e) { string name; switch (e.Type) { case 0: SNOInfo sno1 = tocParser.GetSNO(e.SNO); name = string.Format("{0}\\{1}{2}", sno1.GroupId, sno1.Name, sno1.Ext); break; case 1: SNOInfo sno2 = tocParser.GetSNO(e.SNO); name = string.Format("{0}\\{1}\\{2:D4}", sno2.GroupId, sno2.Name, e.FileIndex); string ext = pkgParser.GetExtension(name); if (ext != null) { name += ext; } else { CountUnknown++; name += ".xxx"; } break; case 2: name = e.Name; break; default: name = "Unknown"; break; } RootEntry entry = new RootEntry(); entry.MD5 = e.MD5; LocaleFlags locale; entry.Block = new RootBlock(); if (Enum.TryParse(pkg, out locale)) { entry.Block.LocaleFlags = locale; } else { entry.Block.LocaleFlags = LocaleFlags.All; } ulong fileHash = Hasher.ComputeHash(name); CASCFile.FileNames[fileHash] = name; RootData.Add(fileHash, entry); }