Beispiel #1
0
        private void method_4()
        {
            if (Stream260 == null)
            {
                Stream260 = new Stream26(File.Open(String0, FileMode.Open, FileAccess.Read, FileShare.Read));
            }
            Class3180 = ((String1 != null) ? new ZzPakNode2(String1, false) : this);
            if (Stream260.Length == 0L)
            {
                throw new Exception("Pak File is empty!");
            }
            var num  = 0;
            var num2 = Stream260.ReadInt();

            Stream260.ReverseEndianness = (Bool2 = (!QbSongClass1.ContainsKey(num2) ||
                                                    !QbSongClass1.GetDictString(num2).StartsWith(".")));
            var @enum = (Enum35)Stream260.ReadIntAt(28);

            Bool1 = ((@enum & Enum35.Flag3) == Enum35.Flag0);
            Int0  = Stream260.ReadIntAt(Bool1 ? 12 : 16,
                                        Bool2 && (@enum & Enum35.Flag4) == Enum35.Flag0 && (@enum & Enum35.Flag5) == Enum35.Flag0);
            if (Bool4 && String0 != null)
            {
                var text = KeyGenerator.GetFileName(String0);
                if (text.Contains("_song"))
                {
                    QbSongClass1.GenerateSongTrackStuff(text.Substring(0, text.LastIndexOf("_song.pak")).ToLower());
                }
                else if (!Bool1)
                {
                    QbSongClass1.GenerateSongTrackStuff(text.Substring(0, text.LastIndexOf(".pak")).ToLower());
                }
            }
            while (true)
            {
                var enum2 = (Enum35)Stream260.ReadIntAt(num + 28);
                var flag  = Bool2 && (enum2 & Enum35.Flag4) == Enum35.Flag0 && (enum2 & Enum35.Flag5) == Enum35.Flag0;
                var int_  = Stream260.ReadIntAt(num, flag);
                if (QbSongClass1.ContainsKey(int_))
                {
                    if (QbSongClass1.GetDictString(int_).Equals(".last"))
                    {
                        return;
                    }
                    if (QbSongClass1.GetDictString(int_).Equals("last"))
                    {
                        break;
                    }
                }
                var int2 = Stream260.ReadInt(flag) + num;
                var int3 = Stream260.ReadInt(flag);
                var num3 = Stream260.ReadIntAt(num + (Bool1 ? 16 : 12), flag);
                var num4 = Stream260.ReadIntAt(num + 20, flag);
                var int4 = Stream260.ReadInt(flag);
                Stream260.Position += 4L;
                if ((enum2 & Enum35.Flag3) != Enum35.Flag0)
                {
                    Bool1 = false;
                    var text2 = Stream260.ReadString(160);
                    var num5  = text2.IndexOf('\0');
                    if (num5 >= 0)
                    {
                        text2 = text2.Substring(0, num5);
                    }
                    if (QbSongClass1.ContainsKey(int_) && !QbSongClass1.GetDictString(int_).EndsWith(".qb.ngc") &&
                        !QbSongClass1.GetDictString(int_).EndsWith(".qb.ps2"))
                    {
                        if (!Bool2)
                        {
                            if (num3 == KeyGenerator.GetQbKey(text2 = text2.Replace("/", "\\").Replace(".ps2", ""),
                                                              true))
                            {
                                QbSongClass1.AddKeyToDictionary(text2);
                            }
                            else if (num3 == KeyGenerator.GetQbKey(text2 = text2.Replace("/", "\\").Replace(".qb", ""),
                                                                   true))
                            {
                                QbSongClass1.AddKeyToDictionary(text2);
                            }
                        }
                        else if (num3 == KeyGenerator.GetQbKey(text2 = text2.Replace("/", "\\").Replace(".ngc", ""),
                                                               true))
                        {
                            QbSongClass1.AddKeyToDictionary(text2);
                        }
                        else if (num3 == KeyGenerator.GetQbKey(text2 = text2.Replace("/", "\\").Replace(".qb", ""),
                                                               true))
                        {
                            QbSongClass1.AddKeyToDictionary(text2);
                        }
                    }
                    else
                    {
                        var text3 = "abcdefghijklmnopqrstuvwxyz";
                        for (var i = 0; i < text3.Length; i++)
                        {
                            var c = text3[i];
                            if (num3 == KeyGenerator.GetQbKey(c + text2, true))
                            {
                                QbSongClass1.AddKeyToDictionary(c + text2);
                            }
                        }
                    }
                    if (num4 == KeyGenerator.GetQbKey(text2 = KeyGenerator.GetFileNameNoExt(text2), true))
                    {
                        QbSongClass1.AddKeyToDictionary(text2);
                    }
                }
                TreeNode treeNode;
                if (QbSongClass1.ContainsKey(int_) && QbSongClass1.GetDictString(int_).Contains("qb"))
                {
                    treeNode = new Class309(int_, int2, int3, num3, num4, int4, enum2);
                }
                else if (QbSongClass1.ContainsKey(int_) && QbSongClass1.GetDictString(int_).Contains("qs"))
                {
                    treeNode = new Class328(int_, int2, int3, num3, num4, int4, enum2);
                }
                else
                {
                    treeNode = new ZzCocoaNode12(int_, int2, int3, num3, num4, int4, enum2);
                }
                if (Bool4)
                {
                    if (QbSongClass1.ContainsKey(num3))
                    {
                        method_1(QbSongClass1.GetDictString(num3), treeNode);
                    }
                    else
                    {
                        method_5(num3, (INterface12)treeNode);
                    }
                }
                else
                {
                    List0.Add((INterface12)treeNode);
                }
                num += (((enum2 & Enum35.Flag3) != Enum35.Flag0) ? 192 : 32);
            }
        }