57 lines
1.5 KiB
C#
57 lines
1.5 KiB
C#
namespace Server.Engines.MLQuests
|
|
{
|
|
public class MLQuestPersistence : Item
|
|
{
|
|
private static MLQuestPersistence m_Instance;
|
|
|
|
private MLQuestPersistence()
|
|
: base(1) =>
|
|
Movable = false;
|
|
|
|
public MLQuestPersistence(Serial serial) : base(serial) => m_Instance = this;
|
|
|
|
public override string DefaultName => "ML quests persistence - Internal";
|
|
|
|
public static void EnsureExistence()
|
|
{
|
|
m_Instance ??= new MLQuestPersistence();
|
|
}
|
|
|
|
public override void Serialize(IGenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.Write(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(IGenericReader 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);
|
|
}
|
|
}
|
|
}
|