Files
tbd-station-14/Content.Shared/Chat/MsgChatMessage.cs
Leo a3d0e3f6a7 OOC sent by an admin will have a different color (#3117)
* Admin OOC is sent with a different color than regular OOC

- Also adds the OOC color to the database

* Command to set the color

* Ooc -> OOC

* Change default color to Red (`#ff0000`)

* Outdated namespace
2021-02-14 15:59:56 +01:00

87 lines
2.7 KiB
C#

using JetBrains.Annotations;
using Lidgren.Network;
using Robust.Shared.GameObjects;
using Robust.Shared.Maths;
using Robust.Shared.Network;
namespace Content.Shared.Chat
{
/// <summary>
/// Sent from server to client to notify the client about a new chat message.
/// </summary>
[UsedImplicitly]
public sealed class MsgChatMessage : NetMessage
{
#region REQUIRED
public const MsgGroups GROUP = MsgGroups.Command;
public const string NAME = nameof(MsgChatMessage);
public MsgChatMessage(INetChannel channel) : base(NAME, GROUP) { }
#endregion
/// <summary>
/// The channel the message is on. This can also change whether certain params are used.
/// </summary>
public ChatChannel Channel { get; set; }
/// <summary>
/// The actual message contents.
/// </summary>
public string Message { get; set; }
/// <summary>
/// What to "wrap" the message contents with. Example is stuff like 'Joe says: "{0}"'
/// </summary>
public string MessageWrap { get; set; }
/// <summary>
/// The sending entity.
/// Only applies to <see cref="ChatChannel.Local"/>, <see cref="ChatChannel.Dead"/> and <see cref="ChatChannel.Emotes"/>.
/// </summary>
public EntityUid SenderEntity { get; set; }
/// <summary>
/// The override color of the message
/// </summary>
public Color MessageColorOverride { get; set; } = Color.Transparent;
public override void ReadFromBuffer(NetIncomingMessage buffer)
{
Channel = (ChatChannel) buffer.ReadInt16();
Message = buffer.ReadString();
MessageWrap = buffer.ReadString();
switch (Channel)
{
case ChatChannel.Local:
case ChatChannel.Dead:
case ChatChannel.AdminChat:
case ChatChannel.Emotes:
SenderEntity = buffer.ReadEntityUid();
break;
}
MessageColorOverride = buffer.ReadColor();
}
public override void WriteToBuffer(NetOutgoingMessage buffer)
{
buffer.Write((short)Channel);
buffer.Write(Message);
buffer.Write(MessageWrap);
switch (Channel)
{
case ChatChannel.Local:
case ChatChannel.Dead:
case ChatChannel.AdminChat:
case ChatChannel.Emotes:
buffer.Write(SenderEntity);
break;
}
buffer.Write(MessageColorOverride);
}
}
}