ModernUO/Projects/Scripts/Engines/MLQuests/MLQuestPersistence.cs
2019-08-02 18:16:11 -07:00

63 lines
No EOL
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()
{
if (m_Instance == null)
m_Instance = new MLQuestPersistence();
}
public override void Serialize(GenericWriter 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(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);
}
}
}