Remove StoredChatMessage (#12623)

This commit is contained in:
Leon Friedrich
2022-11-23 00:52:19 +13:00
committed by GitHub
parent 3dc6e2bb79
commit 6af331c9ff
11 changed files with 131 additions and 212 deletions

View File

@@ -2,9 +2,35 @@ using JetBrains.Annotations;
using Lidgren.Network;
using Robust.Shared.Network;
using Robust.Shared.Serialization;
using Robust.Shared.Utility;
using System.IO;
namespace Content.Shared.Chat
{
[Serializable, NetSerializable]
public sealed class ChatMessage
{
public ChatChannel Channel;
public string Message;
public string WrappedMessage;
public EntityUid SenderEntity;
public bool HideChat;
public Color? MessageColorOverride;
[NonSerialized]
public bool Read;
public ChatMessage(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat = false, Color? colorOverride = null)
{
Channel = channel;
Message = message;
WrappedMessage = wrappedMessage;
SenderEntity = source;
HideChat = hideChat;
MessageColorOverride = colorOverride;
}
}
/// <summary>
/// Sent from server to client to notify the client about a new chat message.
/// </summary>
@@ -13,73 +39,21 @@ namespace Content.Shared.Chat
{
public override MsgGroups MsgGroup => MsgGroups.Command;
/// <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; } = string.Empty;
/// <summary>
/// Modified message with some wrapping text. E.g. 'Joe says: "HELP!"'
/// </summary>
public string WrappedMessage { get; set; } = string.Empty;
/// <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 bool HideChat { get; set; }
public ChatMessage Message = default!;
public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
{
Channel = (ChatChannel) buffer.ReadInt16();
Message = buffer.ReadString();
WrappedMessage = buffer.ReadString();
switch (Channel)
{
case ChatChannel.Local:
case ChatChannel.Whisper:
case ChatChannel.Dead:
case ChatChannel.Admin:
case ChatChannel.Emotes:
SenderEntity = buffer.ReadEntityUid();
break;
}
MessageColorOverride = buffer.ReadColor();
HideChat = buffer.ReadBoolean();
var length = buffer.ReadVariableInt32();
using var stream = buffer.ReadAlignedMemory(length);
serializer.DeserializeDirect(stream, out Message);
}
public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
{
buffer.Write((short)Channel);
buffer.Write(Message);
buffer.Write(WrappedMessage);
switch (Channel)
{
case ChatChannel.Local:
case ChatChannel.Whisper:
case ChatChannel.Dead:
case ChatChannel.Admin:
case ChatChannel.Emotes:
buffer.Write(SenderEntity);
break;
}
buffer.Write(MessageColorOverride);
buffer.Write(HideChat);
var stream = new MemoryStream();
serializer.SerializeDirect(stream, Message);
buffer.WriteVariableInt32((int) stream.Length);
buffer.Write(stream.AsSpan());
}
}
}