Example #1
0
        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);
        }