ModernUO/Scripts/Engines/MLQuests/MLQuestPersistence.cs
2018-09-14 08:46:14 -07:00

63 lines
1.5 KiB
C#

namespace Server.Engines.MLQuests
{
public class MLQuestPersistence : Item
{
private static MLQuestPersistence m_Instance;
public static void EnsureExistence()
{
if ( m_Instance == null )
m_Instance = new MLQuestPersistence();
}
public override string DefaultName => "ML quests persistence - Internal";
private MLQuestPersistence()
: base( 1 )
{
Movable = false;
}
public MLQuestPersistence( Serial serial ) : base( serial )
{
m_Instance = this;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 2 ); // version
writer.Write( MLQuestSystem.Contexts.Count );
foreach ( MLQuestContext context in MLQuestSystem.Contexts.Values )
context.Serialize( writer );
writer.Write( MLQuestSystem.Quests.Count );
foreach ( MLQuest quest in MLQuestSystem.Quests.Values )
MLQuest.Serialize( writer, quest );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
int contexts = reader.ReadInt();
for ( int i = 0; i < contexts; ++i )
{
MLQuestContext context = new MLQuestContext( reader, version );
if ( context.Owner != null )
MLQuestSystem.Contexts[context.Owner] = context;
}
int quests = reader.ReadInt();
for ( int i = 0; i < quests; ++i )
MLQuest.Deserialize( reader, version );
}
}
}