public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 6:
{
m_MobilesSeekHome = reader.ReadBool();
m_UsesSpawnerHome = reader.ReadBool();
goto case 5;
}
case 5:
{
m_SpawnArea = reader.ReadRect2D();
m_UsesSpawnerHome = reader.ReadBool();
goto case 4;
}
case 4:
{
m_WalkingRange = reader.ReadInt();
goto case 3;
}
case 3:
case 2:
{
m_WayPoint = reader.ReadItem() as WayPoint;
goto case 1;
}
case 1:
{
m_Group = reader.ReadBool();
goto case 0;
}
case 0:
{
m_MinDelay = reader.ReadTimeSpan();
m_MaxDelay = reader.ReadTimeSpan();
m_Count = reader.ReadInt();
m_Team = reader.ReadInt();
m_HomeRange = reader.ReadInt();
m_Running = reader.ReadBool();
TimeSpan ts = TimeSpan.Zero;
if ( m_Running )
ts = reader.ReadDeltaTime() - DateTime.Now;
int size = reader.ReadInt();
m_SpawnNames = new List<string>( size );
for ( int i = 0; i < size; ++i )
{
string creatureString = reader.ReadString();
m_SpawnNames.Add( creatureString );
string typeName = ParseType( creatureString );
if ( ScriptCompiler.FindTypeByName( typeName ) == null )
{
if ( m_WarnTimer == null )
m_WarnTimer = new WarnTimer();
m_WarnTimer.Add( Location, Map, typeName );
}
}
int count = reader.ReadInt();
m_Spawned = new List<ISpawnable>(count);
for ( int i = 0; i < count; ++i )
{
ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable;
if (e != null)
{
e.Spawner = this;
m_Spawned.Add(e);
}
}
if ( m_Running )
DoTimer( ts );
break;
}
}
if ( version < 3 && Weight == 0 )
Weight = -1;
}