2020-09-28 20:40:09 -04:00
|
|
|
#region References
|
2016-01-20 09:06:16 +00:00
|
|
|
using System.IO;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
namespace Server.Engines.Help
|
|
|
|
|
{
|
2020-04-14 14:04:34 -04:00
|
|
|
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
|
2018-10-03 21:12:05 -07:00
|
|
|
|
|
|
|
|
writer.Write(ResponseEntry.Entries.Count);
|
|
|
|
|
|
2020-04-16 18:32:20 -04:00
|
|
|
foreach (ResponseEntry entry in ResponseEntry.Entries)
|
2018-10-03 21:12:05 -07:00
|
|
|
entry.Serialize(writer);
|
2016-01-20 09:06:16 +00:00
|
|
|
|
2020-04-14 14:04:34 -04:00
|
|
|
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 =>
|
|
|
|
|
{
|
2020-04-16 18:32:20 -04:00
|
|
|
int version = reader.ReadInt();
|
2020-04-14 14:04:34 -04:00
|
|
|
|
|
|
|
|
switch (version)
|
|
|
|
|
{
|
2018-10-03 21:12:05 -07:00
|
|
|
case 1:
|
|
|
|
|
{
|
2020-04-16 18:32:20 -04:00
|
|
|
int c = reader.ReadInt();
|
2018-10-03 21:12:05 -07:00
|
|
|
|
2020-04-16 18:32:20 -04:00
|
|
|
for (int i = 0; i < c; ++i)
|
2018-10-03 21:12:05 -07:00
|
|
|
{
|
|
|
|
|
new ResponseEntry(reader);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
goto case 0;
|
2020-04-14 14:04:34 -04:00
|
|
|
case 0:
|
|
|
|
|
{
|
2020-04-16 18:32:20 -04:00
|
|
|
int count = reader.ReadInt();
|
2018-10-03 21:12:05 -07:00
|
|
|
|
2020-04-16 18:32:20 -04:00
|
|
|
for (int i = 0; i < count; ++i)
|
2020-04-14 14:04:34 -04:00
|
|
|
{
|
2020-04-16 18:32:20 -04:00
|
|
|
Mobile sender = reader.ReadMobile();
|
|
|
|
|
string message = reader.ReadString();
|
|
|
|
|
PageType type = (PageType)reader.ReadInt();
|
2020-04-14 14:04:34 -04:00
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
2016-01-20 09:06:16 +00:00
|
|
|
}
|