ModernUO/Scripts/Regions/Spawning/SpawnPersistence.cs
2018-09-14 08:46:14 -07:00

63 lines
1.4 KiB
C#

namespace Server.Regions
{
[TypeAlias( "Server.Regions.SpawnPersistance" )]
public class SpawnPersistence : Item
{
private static SpawnPersistence m_Instance;
public SpawnPersistence Instance => m_Instance;
public static void EnsureExistence()
{
if ( m_Instance == null )
m_Instance = new SpawnPersistence();
}
public override string DefaultName => "Region spawn persistence - Internal";
private SpawnPersistence() : base( 1 )
{
Movable = false;
}
public SpawnPersistence( Serial serial ) : base( serial )
{
m_Instance = this;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
writer.Write( (int) SpawnEntry.Table.Values.Count );
foreach ( SpawnEntry entry in SpawnEntry.Table.Values )
{
writer.Write( (int) entry.ID );
entry.Serialize( writer );
}
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
int count = reader.ReadInt();
for ( int i = 0; i < count; i++ )
{
int id = reader.ReadInt();
SpawnEntry entry = (SpawnEntry) SpawnEntry.Table[id];
if ( entry != null )
entry.Deserialize( reader, version );
else
SpawnEntry.Remove( reader, version );
}
}
}
}