ModernUO/Projects/UOContent/Misc/SerializationExt.cs
Kamron Batman e6d30fef0f
fix: Reverts GetAccount to use IAccount. Adds IAccount to serialization. (#1565)
### Summary

- Fixes usernames not being `Intern`ed
- Reverts methods related to getting accounts from returning `Account` to `IAccount`.
- Makes `IAccount` also `ISerializable`
- Adds `IGenericReader.ReadAccount()` and `IGenericWriter.Write(IAccount)` -> The read method supports the original serialization of username, and using `IAccount.Serial`. The write method only serializes the `Serial`.
- Exposes `ReadStringRaw()` to allow some advanced scenarios.
2023-10-25 19:17:57 -07:00

29 lines
648 B
C#

using Server.Accounting;
namespace Server.Misc;
public static class SerializationExt
{
public static IAccount ReadAccount(this IGenericReader reader)
{
return reader.ReadByte() switch
{
0 => null,
1 => Accounts.GetAccount(reader.ReadStringRaw()),
2 => Accounts.FindAccount(reader.ReadSerial())
};
}
public static void Write(this IGenericWriter writer, IAccount acct)
{
if (acct == null)
{
writer.Write((byte)0);
}
else
{
writer.Write((byte)2);
writer.Write(acct.Serial);
}
}
}