Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
96
Scripts/Services/Help/HelpPersistence.cs
Normal file
96
Scripts/Services/Help/HelpPersistence.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
#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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user