Files
tbd-station-14/Content.Shared/Network/NetMessages/MsgUpdateAdminStatus.cs
2020-10-30 16:06:48 +01:00

74 lines
2.0 KiB
C#

using Content.Shared.Administration;
using Lidgren.Network;
using Robust.Shared.Interfaces.Network;
using Robust.Shared.Network;
namespace Content.Shared.Network.NetMessages
{
public sealed class MsgUpdateAdminStatus : NetMessage
{
#region REQUIRED
public const MsgGroups GROUP = MsgGroups.Command;
public const string NAME = nameof(MsgUpdateAdminStatus);
public MsgUpdateAdminStatus(INetChannel channel) : base(NAME, GROUP) { }
#endregion
public AdminData Admin;
public string[] AvailableCommands;
public override void ReadFromBuffer(NetIncomingMessage buffer)
{
var count = buffer.ReadVariableInt32();
AvailableCommands = new string[count];
for (var i = 0; i < count; i++)
{
AvailableCommands[i] = buffer.ReadString();
}
if (buffer.ReadBoolean())
{
var active = buffer.ReadBoolean();
buffer.ReadPadBits();
var flags = (AdminFlags) buffer.ReadUInt32();
var title = buffer.ReadString();
Admin = new AdminData
{
Active = active,
Title = title,
Flags = flags,
};
}
}
public override void WriteToBuffer(NetOutgoingMessage buffer)
{
buffer.WriteVariableInt32(AvailableCommands.Length);
foreach (var cmd in AvailableCommands)
{
buffer.Write(cmd);
}
var isAdmin = Admin != null;
buffer.Write(isAdmin);
if (isAdmin)
{
buffer.Write(Admin.Active);
buffer.WritePadBits();
buffer.Write((uint) Admin.Flags);
buffer.Write(Admin.Title);
}
}
public override NetDeliveryMethod DeliveryMethod => NetDeliveryMethod.ReliableOrdered;
}
}