Server.Items.BaseBook.Deserialize C# (CSharp) 메소드

Deserialize() 공개 메소드

public Deserialize ( Server.GenericReader reader ) : void
reader Server.GenericReader
리턴 void
		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;
		}