public void Write(Stream stream) { // Game length stream.WriteInt(LengthInSeconds); // Game version, 8 bytes, ASCII stream.WriteString(GameVersion, 8, Encoding.ASCII); // Date and time, 8 bytes stream.WriteLong(DateAndTime.ToBinary()); // SawCompletion, 1 byte stream.WriteBool(SawCompletion); // Number of players, 1 byte stream.WriteByte(Convert.ToByte(GetPlayerCount())); // Average FPS, 4 bytes stream.WriteInt(AverageFPS); // Map name, 128 bytes (64 chars), Unicode stream.WriteString(MapName, 128); // Game mode, 64 bytes (32 chars), Unicode stream.WriteString(GameMode, 64); // Unique game ID, 4 bytes stream.WriteInt(GameID); // Whether game options were valid for earning a star, 1 byte stream.WriteBool(IsValidForStar); // Write player info for (int i = 0; i < GetPlayerCount(); i++) { PlayerStatistics ps = GetPlayer(i); ps.Write(stream); } }