mirror of
https://github.com/Wincent01/InfectedRose.git
synced 2025-12-21 12:09:45 -06:00
58 lines
1.2 KiB
C#
58 lines
1.2 KiB
C#
using System.Text;
|
|
using InfectedRose.Core;
|
|
using RakDotNet.IO;
|
|
|
|
namespace InfectedRose.Database.Fdb
|
|
{
|
|
internal class FdbString : IConstruct
|
|
{
|
|
public string Value { get; set; }
|
|
|
|
public static implicit operator string(FdbString s)
|
|
{
|
|
return s.Value;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return Value;
|
|
}
|
|
|
|
public void Serialize(BitWriter writer)
|
|
{
|
|
foreach (var character in Value)
|
|
{
|
|
writer.Write((byte) character);
|
|
}
|
|
|
|
writer.Write<byte>(0);
|
|
}
|
|
|
|
public override bool Equals(object o)
|
|
{
|
|
if (o is FdbString str)
|
|
{
|
|
return str.Value == Value;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public void Deserialize(BitReader reader)
|
|
{
|
|
var builder = new StringBuilder();
|
|
|
|
using (new DatabaseScope(reader))
|
|
{
|
|
while (true)
|
|
{
|
|
var c = reader.Read<byte>();
|
|
if (c == 0) break;
|
|
builder.Append((char) c);
|
|
}
|
|
}
|
|
|
|
Value = builder.ToString();
|
|
}
|
|
}
|
|
} |