Beispiel #1
0
        protected override void ImportData(AwesomeReader ar)
        {
            int count = ar.ReadInt32();

            ar.ReadInt32(); // Offset to entries (Always 4)

            for (int i = 0; i < count; i++)
            {
                // Reads each entry
                Catalog2Entry entry = new Catalog2Entry();
                entry.ImportData(ar);
                Entries.Add(entry);
            }
        }
Beispiel #2
0
        internal override void ReadData(AwesomeReader ar)
        {
            Entries.Clear();

            int entryCount = ar.ReadInt32();

            ar.BaseStream.Position += 4; // Should be 4

            while (entryCount > 0)
            {
                Catalog2Entry entry = new Catalog2Entry();

                // 280 bytes
                entry.Identifier        = ar.ReadUInt64();
                entry.SongType          = ar.ReadInt32();
                ar.BaseStream.Position += 4; // Should be 0

                entry.Title       = ar.ReadUInt64();
                entry.Artist      = ar.ReadUInt64();
                entry.Album       = ar.ReadUInt64();
                entry.Description = ar.ReadUInt64();
                entry.LegendTag   = ar.ReadUInt64();

                entry.SongLength      = ar.ReadSingle();
                entry.GuitarIntensity = ar.ReadSingle();
                entry.BassIntensity   = ar.ReadSingle();
                entry.VoxIntensity    = ar.ReadSingle();

                entry.EraTag            = ar.ReadUInt64();
                entry.Year              = ar.ReadInt32();
                ar.BaseStream.Position += 4; // Should be 0

                entry.LeadGuitarTuning   = InstrumentTuning.ReadData(ar);
                entry.RhythmGuitarTuning = InstrumentTuning.ReadData(ar);
                entry.BassTuning         = InstrumentTuning.ReadData(ar);

                // Reads labels
                int  count            = ar.ReadInt32();
                int  offset           = ar.ReadInt32();
                long previousPosition = ar.BaseStream.Position;

                ar.BaseStream.Position += offset - 4;
                for (int i = 0; i < count; i++)
                {
                    entry.Labels.Add(ar.ReadUInt64());
                }
                ar.BaseStream.Position = previousPosition;

                entry.SongPath    = ar.ReadUInt64();
                entry.TexturePath = ar.ReadUInt64();
                entry.PreviewPath = ar.ReadUInt64();

                // Reads metadata tags
                count            = ar.ReadInt32();
                offset           = ar.ReadInt32();
                previousPosition = ar.BaseStream.Position;

                ar.BaseStream.Position += offset - 4;
                for (int i = 0; i < count; i++)
                {
                    entry.MetadataTags.Add(ar.ReadUInt64());
                }
                ar.BaseStream.Position = previousPosition;

                // Reads genre tags
                count            = ar.ReadInt32();
                offset           = ar.ReadInt32();
                previousPosition = ar.BaseStream.Position;

                ar.BaseStream.Position += offset - 4;
                for (int i = 0; i < count; i++)
                {
                    entry.GenreTags.Add(ar.ReadUInt64());
                }

                ar.BaseStream.Position = previousPosition;

                int unknown = ar.ReadInt32();
                entry.Unknown1          = (byte)((unknown & 0xFF000000) >> 24);
                entry.Unknown2          = (byte)((unknown & 0x00FF0000) >> 16);
                entry.Unknown3          = ar.ReadInt32();
                entry.Unknown4          = ar.ReadInt32();
                entry.Unknown5          = ar.ReadInt32();
                ar.BaseStream.Position += 8; // Should be 0

                Entries.Add(entry);
                entryCount--;
            }
        }