public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
int count;
switch ( version )
{
case 15:
{
goto case 14;
}
case 14:
{
m_RelativeBanLocation = reader.ReadPoint3D();
goto case 13;
}
case 13: // removed ban location serialization
case 12:
{
m_InternalizedVendors = reader.ReadMobileList();
int inventoryCount = reader.ReadEncodedInt();
for ( int i = 0; i < inventoryCount; i++ )
{
VendorInventory inventory = new VendorInventory( this, reader );
m_VendorInventories.Add( inventory );
}
goto case 11;
}
case 11:
{
m_LastRefreshed = reader.ReadDateTime();
m_RestrictDecay = reader.ReadBool();
goto case 10;
}
case 10: // just a signal for updates
case 9:
{
m_Visits = reader.ReadInt();
goto case 8;
}
case 8:
{
m_Price = reader.ReadInt();
goto case 7;
}
case 7:
{
m_Access = reader.ReadMobileList();
goto case 6;
}
case 6:
{
m_BuiltOn = reader.ReadDateTime();
goto case 5;
}
case 5: // just removed fields
case 4:
{
m_Addons = reader.ReadItemList();
goto case 3;
}
case 3:
case 2:
{
m_Public = reader.ReadBool();
goto case 1;
}
case 1:
{
if ( version < 13 )
reader.ReadPoint3D(); // house ban location
goto case 0;
}
case 0:
{
if ( version < 14 )
m_RelativeBanLocation = this.BaseBanLocation;
if ( version < 12 )
{
m_InternalizedVendors = new ArrayList();
}
if ( version < 4 )
m_Addons = new ArrayList();
if ( version < 7 )
m_Access = new ArrayList();
if ( version < 8 )
m_Price = DefaultPrice;
m_Owner = reader.ReadMobile();
if ( version < 5 )
{
count = reader.ReadInt();
for(int i=0;i<count;i++)
reader.ReadRect2D();
}
UpdateRegion();
m_CoOwners = reader.ReadMobileList();
m_Friends = reader.ReadMobileList();
m_Bans = reader.ReadMobileList();
m_Sign = reader.ReadItem() as HouseSign;
m_Trash = reader.ReadItem() as TrashBarrel;
m_Doors = reader.ReadItemList();
m_LockDowns = reader.ReadItemList();
for ( int i = 0; i < m_LockDowns.Count; ++i )
((Item)m_LockDowns[i]).IsLockedDown = true;
m_Secures = reader.ReadItemList();
for (int i = 0; i < m_Secures.Count; ++i)
((Item)m_Secures[i]).IsSecure = true;
m_MaxLockDowns = reader.ReadInt();
m_MaxSecures = reader.ReadInt();
if ( (Map == null || Map == Map.Internal) && Location == Point3D.Zero )
Delete();
if ( m_Owner != null )
{
List<BaseHouse> list = null;
m_Table.TryGetValue( m_Owner, out list );
if ( list == null )
m_Table[m_Owner] = list = new List<BaseHouse>();
list.Add( this );
}
break;
}
}
if ( version <= 1 )
ChangeSignType( 0xBD2 );//private house, plain brass sign
if ( version < 10 )
{
/* NOTE: This can exceed the house lockdown limit. It must be this way, because
* we do not want players' items to decay without them knowing. Or not even
* having a chance to fix it themselves.
*/
Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixLockdowns_Sandbox ) );
}
if ( version < 11 )
m_LastRefreshed = DateTime.Now + TimeSpan.FromHours( 24 * Utility.RandomDouble() );
if ( !CheckDecay() )
{
if ( m_Owner == null && m_Friends.Count == 0 && m_CoOwners.Count == 0 )
Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerCallback( Delete ) );
}
}