ModernUO/Scripts/Regions/Spawning/SpawnPersistence.cs
Kamron Batman 1030bb7675
Upgrades spawners to have parameters/properties and optimized timers (#6)
Upgrades spawners to have:
- [X] Parameter support
- [X] Property support
- [X] Optimized timers
- [X] Support for Proximity Spawners
- [X] Probabilities
2018-02-20 22:33:25 -08:00

70 lines
1.5 KiB
C#

using System;
using System.Collections;
using Server;
namespace Server.Regions
{
[TypeAlias( "Server.Regions.SpawnPersistance" )]
public class SpawnPersistence : Item
{
private static SpawnPersistence m_Instance;
public SpawnPersistence Instance{ get{ return m_Instance; } }
public static void EnsureExistence()
{
if ( m_Instance == null )
m_Instance = new SpawnPersistence();
}
public override string DefaultName
{
get { return "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 );
}
}
}
}