Files
abysmal-isle/Scripts/Services/Help/HelpPersistence.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

97 lines
2.1 KiB
C#

#region References
using System.IO;
#endregion
namespace Server.Engines.Help
{
public static class HelpPersistence
{
private static readonly string _FilePath = Path.Combine("Saves", "Help", "Pages.bin");
[CallPriority(900)]
public static void Configure()
{
EventSink.WorldSave += OnSave;
EventSink.WorldLoad += OnLoad;
}
private static void OnSave(WorldSaveEventArgs e)
{
Persistence.Serialize(
_FilePath,
writer =>
{
writer.Write(1); // version
writer.Write(ResponseEntry.Entries.Count);
foreach (var entry in ResponseEntry.Entries)
entry.Serialize(writer);
writer.Write(PageQueue.List.Count);
foreach (PageEntry pe in PageQueue.List)
{
writer.Write(pe.Sender);
writer.Write(pe.Message);
writer.Write((int)pe.Type);
writer.Write(pe.Handler);
writer.Write(pe.Sent);
writer.Write(pe.PageLocation);
writer.Write(pe.PageMap);
}
});
}
private static void OnLoad()
{
Persistence.Deserialize(
_FilePath,
reader =>
{
var version = reader.ReadInt();
switch (version)
{
case 1:
{
var c = reader.ReadInt();
for (var i = 0; i < c; ++i)
{
new ResponseEntry(reader);
}
}
goto case 0;
case 0:
{
var count = reader.ReadInt();
for (var i = 0; i < count; ++i)
{
var sender = reader.ReadMobile();
var message = reader.ReadString();
var type = (PageType)reader.ReadInt();
PageEntry pe = new PageEntry(sender, message, type)
{
Handler = reader.ReadMobile(),
Sent = reader.ReadDateTime(),
PageLocation = reader.ReadPoint3D(),
PageMap = reader.ReadMap()
};
pe.Stop();
PageQueue.Enqueue(pe);
}
}
break;
}
});
}
}
}