mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-16 15:22:27 +02:00
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
99 lines
3.7 KiB
C#
99 lines
3.7 KiB
C#
using System;
|
|
using Lidgren.Network;
|
|
using Robust.Shared.Enums;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.Map;
|
|
using Robust.Shared.Maths;
|
|
|
|
#nullable disable
|
|
|
|
namespace Robust.Shared.Network.Messages
|
|
{
|
|
public sealed class MsgPlacement : NetMessage
|
|
{
|
|
public override MsgGroups MsgGroup => MsgGroups.Command;
|
|
|
|
public PlacementManagerMessage PlaceType { get; set; }
|
|
public string Align { get; set; }
|
|
public bool IsTile { get; set; }
|
|
public ushort TileType { get; set; }
|
|
public string EntityTemplateName { get; set; }
|
|
public EntityCoordinates EntityCoordinates { get; set; }
|
|
public Direction DirRcv { get; set; }
|
|
public EntityUid EntityUid { get; set; }
|
|
|
|
public int Range { get; set; }
|
|
public string ObjType { get; set; }
|
|
public string AlignOption { get; set; }
|
|
public Vector2 RectSize { get; set; }
|
|
|
|
public override void ReadFromBuffer(NetIncomingMessage buffer)
|
|
{
|
|
PlaceType = (PlacementManagerMessage) buffer.ReadByte();
|
|
switch (PlaceType)
|
|
{
|
|
case PlacementManagerMessage.RequestPlacement:
|
|
Align = buffer.ReadString();
|
|
IsTile = buffer.ReadBoolean();
|
|
|
|
if (IsTile) TileType = buffer.ReadUInt16();
|
|
else EntityTemplateName = buffer.ReadString();
|
|
|
|
EntityCoordinates = buffer.ReadEntityCoordinates();
|
|
DirRcv = (Direction)buffer.ReadByte();
|
|
break;
|
|
case PlacementManagerMessage.StartPlacement:
|
|
Range = buffer.ReadInt32();
|
|
IsTile = buffer.ReadBoolean();
|
|
ObjType = buffer.ReadString();
|
|
AlignOption = buffer.ReadString();
|
|
break;
|
|
case PlacementManagerMessage.CancelPlacement:
|
|
case PlacementManagerMessage.PlacementFailed:
|
|
throw new NotImplementedException();
|
|
case PlacementManagerMessage.RequestEntRemove:
|
|
EntityUid = new EntityUid(buffer.ReadInt32());
|
|
break;
|
|
case PlacementManagerMessage.RequestRectRemove:
|
|
EntityCoordinates = buffer.ReadEntityCoordinates();
|
|
RectSize = buffer.ReadVector2();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public override void WriteToBuffer(NetOutgoingMessage buffer)
|
|
{
|
|
buffer.Write((byte)PlaceType);
|
|
switch (PlaceType)
|
|
{
|
|
case PlacementManagerMessage.RequestPlacement:
|
|
buffer.Write(Align);
|
|
buffer.Write(IsTile);
|
|
|
|
if(IsTile) buffer.Write(TileType);
|
|
else buffer.Write(EntityTemplateName);
|
|
|
|
buffer.Write(EntityCoordinates);
|
|
buffer.Write((byte)DirRcv);
|
|
break;
|
|
case PlacementManagerMessage.StartPlacement:
|
|
buffer.Write(Range);
|
|
buffer.Write(IsTile);
|
|
buffer.Write(ObjType);
|
|
buffer.Write(AlignOption);
|
|
break;
|
|
case PlacementManagerMessage.CancelPlacement:
|
|
case PlacementManagerMessage.PlacementFailed:
|
|
throw new NotImplementedException();
|
|
case PlacementManagerMessage.RequestEntRemove:
|
|
buffer.Write((int)EntityUid);
|
|
break;
|
|
case PlacementManagerMessage.RequestRectRemove:
|
|
buffer.Write(EntityCoordinates);
|
|
buffer.Write(RectSize);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|