RunUO/Scripts/Engines/MLQuests/MLQuestPersistence.cs

71 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using Server;
using Server.Mobiles;
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
{
get { return "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 );
}
}
}