public void ReadFromStream(OsuReader o)
 {
     try
     {
         Version         = o.ReadInt32();
         FolderCount     = o.ReadInt32();
         AccountUnlocked = o.ReadBoolean();
         UnlockDate      = o.ReadDateTime();
         PlayerName      = o.ReadString();
         int numberOfBeatmaps = o.ReadInt32();
         Beatmaps = new List <Beatmap>();
         for (int i = 0; i < numberOfBeatmaps; i++)
         {
             Beatmaps.Add(new Beatmap(o, Version));
         }
         o.AssertInt(4, "OsuDb: Unknown is not 4");
     }
     catch (Exception e)
     {
         if (e.GetType() == typeof(InvalidDataException))
         {
             throw;
         }
         else
         {
             throw new InvalidDataException("Invalid data", e);
         }
     }
 }
 public void ReadFromStream(OsuReader o)
 {
     Mode              = (Mode)o.ReadByte();
     Version           = o.ReadInt32();
     BeatmapMD5        = o.ReadString();
     PlayerName        = o.ReadString();
     ReplayMD5         = o.ReadString();
     NumberOfHitValue1 = o.ReadInt16();
     NumberOfHitValue2 = o.ReadInt16();
     NumberOfHitValue3 = o.ReadInt16();
     NumberOfHitValue4 = o.ReadInt16();
     NumberOfHitValue5 = o.ReadInt16();
     NumberOfMisses    = o.ReadInt16();
     ReplayScore       = o.ReadInt32();
     MaxCombo          = o.ReadInt16();
     PerfectCombo      = o.ReadBoolean();
     Mods              = (Mods)o.ReadInt32();
     // string: should always be empty
     o.AssertStringIsNullOrEmpty("Score: String isn't null or empty");
     Timestamp = o.ReadInt64();
     // int Constant, should always be 0xffffffff (-1)
     o.AssertInt(-1, "Score: int is not -1");
     OnlineScoreID = o.ReadInt64();
 }