### 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.
29 lines
648 B
C#
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);
|
|
}
|
|
}
|
|
}
|