예제 #1
0
        public static RhsFile Deserialize(BinaryReader reader)
        {
            var file = new RhsFile();

            file.version = reader.ReadByte();

            RhsEntryType type;

            while ((type = (RhsEntryType)reader.ReadByte()) != RhsEntryType.EndOfEntry)
            {
                switch (type)
                {
                case RhsEntryType.Rhs:
                    file.rhsGuid = reader.ReadRhGuid();
                    break;

                case RhsEntryType.Internal:
                    file.internalGuid = reader.ReadRhGuid();
                    break;

                case RhsEntryType.Ogg:
                    file.oggGuid = reader.ReadRhGuid();
                    break;

                case RhsEntryType.SongTitle:
                    file.songTitle = reader.ReadShortPrefixedString();
                    break;

                case RhsEntryType.TimingData:
                    file.timingData = TimingData.Deserialize(reader);
                    break;

                case RhsEntryType.PreviewStart:
                    file.previewStart = reader.ReadSingle();
                    break;

                case RhsEntryType.PreviewLength:
                    file.previewLength = reader.ReadSingle();
                    break;

                case RhsEntryType.SongLengthOverride:
                    file.songLengthOverride = reader.ReadSingle();
                    break;

                case RhsEntryType.Png:
                    file.pngGuid = reader.ReadRhGuid();
                    break;

                case RhsEntryType.Artists:
                    file.artists.Add(Artist.Deserialize(reader));
                    break;

                default:
                    throw new Exception("Unknown song entry type: " + type);
                }
            }

            return(file);
        }
예제 #2
0
        public static RhprojFile Deserialize(BinaryReader reader)
        {
            var file = new RhprojFile();

            file.version  = reader.ReadByte();
            file.unknown1 = reader.ReadByte();             // Always 0?

            file.rhcFile  = RhcFile.Deserialize(reader);
            file.unknown2 = reader.ReadBytes(8);
            file.rhsFile  = RhsFile.Deserialize(reader);
            file.unknown3 = reader.ReadBytes(16);

            return(file);
        }
예제 #3
0
 public RhsSynchronizer(CacheFile cacheFile, RhsFile rhsFile) : base(cacheFile)
 {
     this.rhsFile = rhsFile;
 }