Files
RobustToolbox/Robust.Shared/Network/Messages/MsgScriptResponse.cs
T

58 lines
1.8 KiB
C#

using System.IO;
using Lidgren.Network;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Serialization;
using Robust.Shared.Utility;
#nullable disable
namespace Robust.Shared.Network.Messages
{
public sealed class MsgScriptResponse : NetMessage
{
public override MsgGroups MsgGroup => MsgGroups.Command;
public int ScriptSession { get; set; }
public bool WasComplete { get; set; }
// Echo of the entered code with syntax highlighting applied.
public FormattedMessage Echo;
public FormattedMessage Response;
public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
{
ScriptSession = buffer.ReadInt32();
WasComplete = buffer.ReadBoolean();
if (WasComplete)
{
buffer.ReadPadBits();
var length = buffer.ReadVariableInt32();
using var stream = RobustMemoryManager.GetMemoryStream(length);
buffer.ReadAlignedMemory(stream, length);
serializer.DeserializeDirect(stream, out Echo);
serializer.DeserializeDirect(stream, out Response);
}
}
public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
{
buffer.Write(ScriptSession);
buffer.Write(WasComplete);
if (WasComplete)
{
buffer.WritePadBits();
var memoryStream = new MemoryStream();
serializer.SerializeDirect(memoryStream, Echo);
serializer.SerializeDirect(memoryStream, Response);
buffer.WriteVariableInt32((int)memoryStream.Length);
buffer.Write(memoryStream.AsSpan());
}
}
}
}