Files
OldThink/Content.Shared/Chat/MsgChatMessage.cs

64 lines
2.0 KiB
C#
Raw Normal View History

using JetBrains.Annotations;
using Lidgren.Network;
using Robust.Shared.Network;
using Robust.Shared.Serialization;
2022-11-23 00:52:19 +13:00
using Robust.Shared.Utility;
using System.IO;
namespace Content.Shared.Chat
{
2022-11-23 00:52:19 +13:00
[Serializable, NetSerializable]
public sealed class ChatMessage
{
public ChatChannel Channel;
public string Message;
public string WrappedMessage;
public EntityUid SenderEntity;
public bool HideChat;
public Color? MessageColorOverride;
public string? AudioPath;
public float AudioVolume;
2022-11-23 00:52:19 +13:00
[NonSerialized]
public bool Read;
public ChatMessage(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat = false, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0)
2022-11-23 00:52:19 +13:00
{
Channel = channel;
Message = message;
WrappedMessage = wrappedMessage;
SenderEntity = source;
HideChat = hideChat;
MessageColorOverride = colorOverride;
AudioPath = audioPath;
AudioVolume = audioVolume;
2022-11-23 00:52:19 +13:00
}
}
/// <summary>
/// Sent from server to client to notify the client about a new chat message.
/// </summary>
[UsedImplicitly]
public sealed class MsgChatMessage : NetMessage
{
public override MsgGroups MsgGroup => MsgGroups.Command;
2022-11-23 00:52:19 +13:00
public ChatMessage Message = default!;
public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
{
2022-11-23 00:52:19 +13:00
var length = buffer.ReadVariableInt32();
using var stream = buffer.ReadAlignedMemory(length);
serializer.DeserializeDirect(stream, out Message);
}
public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
{
2022-11-23 00:52:19 +13:00
var stream = new MemoryStream();
serializer.SerializeDirect(stream, Message);
buffer.WriteVariableInt32((int) stream.Length);
buffer.Write(stream.AsSpan());
}
}
}