public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 4:
case 3:
case 2:
{
BookContent content = this.DefaultContent;
SaveFlags flags = (SaveFlags) reader.ReadByte();
if ( (flags & SaveFlags.Title) != 0 )
m_Title = Utility.Intern( reader.ReadString() );
else if ( content != null )
m_Title = content.Title;
if ( (flags & SaveFlags.Author) != 0 )
m_Author = reader.ReadString();
else if ( content != null )
m_Author = content.Author;
m_Writable = ( flags & SaveFlags.Writable ) != 0;
if ( (flags & SaveFlags.Content) != 0 )
{
m_Pages = new BookPageInfo[reader.ReadEncodedInt()];
for ( int i = 0; i < m_Pages.Length; ++i )
m_Pages[i] = new BookPageInfo( reader );
}
else
{
if ( content != null )
m_Pages = content.Copy();
else
m_Pages = new BookPageInfo[0];
}
break;
}
case 1:
case 0:
{
m_Title = reader.ReadString();
m_Author = reader.ReadString();
m_Writable = reader.ReadBool();
if ( version == 0 || reader.ReadBool() )
{
m_Pages = new BookPageInfo[reader.ReadInt()];
for ( int i = 0; i < m_Pages.Length; ++i )
m_Pages[i] = new BookPageInfo( reader );
}
else
{
BookContent content = this.DefaultContent;
if ( content != null )
m_Pages = content.Copy();
else
m_Pages = new BookPageInfo[0];
}
break;
}
}
if ( version < 3 && ( Weight == 1 || Weight == 2 ) )
Weight = -1;
}