68 lines
2.2 KiB
C#
68 lines
2.2 KiB
C#
using BoneSync.Sync;
|
|
using BoneSync.Sync.Components;
|
|
using StressLevelZero.Interaction;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BoneSync.Networking.Messages
|
|
{
|
|
|
|
public struct PlugSyncMessageData
|
|
{
|
|
public ushort plugSyncId;
|
|
public byte plugIndex;
|
|
public ushort socketSyncId;
|
|
public byte socketIndex;
|
|
}
|
|
|
|
[PacketType(PacketType.PlugSync), PacketReliability(PacketReliability.ReliableFast)]
|
|
internal class PlugSyncMessage : NetworkMessage
|
|
{
|
|
private PlugSyncMessageData messageData;
|
|
public PlugSyncMessage(PlugSyncMessageData plugSyncMessageData)
|
|
{
|
|
this.messageData = plugSyncMessageData;
|
|
byteEncoder.WriteUShort(plugSyncMessageData.plugSyncId);
|
|
byteEncoder.WriteByte(plugSyncMessageData.plugIndex);
|
|
byteEncoder.WriteUShort(plugSyncMessageData.socketSyncId);
|
|
byteEncoder.WriteByte(plugSyncMessageData.socketIndex);
|
|
}
|
|
|
|
public PlugSyncMessage(Packet packet) {
|
|
byteEncoder.WriteBytes(packet.Data);
|
|
messageData.plugSyncId = byteEncoder.ReadUShort();
|
|
messageData.plugIndex = byteEncoder.ReadByte();
|
|
messageData.socketSyncId = byteEncoder.ReadUShort();
|
|
messageData.socketIndex = byteEncoder.ReadByte();
|
|
}
|
|
|
|
public override void Execute()
|
|
{
|
|
Syncable plugSyncable = ObjectSyncCache.GetSyncable(messageData.plugSyncId);
|
|
Syncable socketSyncable = ObjectSyncCache.GetSyncable(messageData.socketSyncId);
|
|
|
|
if (!plugSyncable || messageData.plugIndex == byte.MaxValue) { return; }
|
|
AlignPlug plug = (AlignPlug)plugSyncable.GetPlugFromId(messageData.plugIndex);
|
|
if (plug == null) { return; }
|
|
|
|
if (!socketSyncable || messageData.socketIndex == byte.MaxValue) {
|
|
plug.SafeEject();
|
|
return;
|
|
}
|
|
|
|
Socket socket = socketSyncable.GetSocketFromId(messageData.socketIndex);
|
|
if (socket == null)
|
|
{
|
|
plug.SafeEject();
|
|
return;
|
|
}
|
|
|
|
plug.SafeInsert(socket);
|
|
}
|
|
|
|
}
|
|
}
|