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 ); } } }