63 lines
1.5 KiB
C#
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 );
|
|
}
|
|
}
|
|
}
|