67 lines
1.4 KiB
C#
67 lines
1.4 KiB
C#
using ProtoBuf;
|
|
using Sandbox.Engine.Networking;
|
|
using Sandbox.Game.World;
|
|
using Sandbox.ModAPI;
|
|
using SeamlessClientPlugin.Utilities;
|
|
|
|
namespace SeamlessClientPlugin.Messages;
|
|
|
|
public enum ClientMessageType
|
|
{
|
|
FirstJoin,
|
|
TransferServer,
|
|
OnlinePlayers
|
|
}
|
|
|
|
[ProtoContract]
|
|
public class ClientMessage
|
|
{
|
|
[ProtoMember(1)] public ClientMessageType MessageType;
|
|
|
|
[ProtoMember(2)] public byte[] MessageData;
|
|
|
|
[ProtoMember(3)] public long IdentityId;
|
|
|
|
[ProtoMember(4)] public ulong SteamId;
|
|
|
|
[ProtoMember(5)] public string PluginVersion = "0";
|
|
|
|
[ProtoMember(6)] public string NexusVersion;
|
|
|
|
public ClientMessage(ClientMessageType type)
|
|
{
|
|
MessageType = type;
|
|
|
|
IdentityId = MySession.Static?.LocalHumanPlayer?.Identity?.IdentityId ?? 0;
|
|
SteamId = MyGameService.UserId;
|
|
PluginVersion = SeamlessClient.Version;
|
|
}
|
|
|
|
public ClientMessage()
|
|
{
|
|
}
|
|
|
|
public void SerializeData<T>(T data)
|
|
{
|
|
MessageData = Utility.Serialize(data);
|
|
}
|
|
|
|
|
|
public Transfer GetTransferData()
|
|
{
|
|
if (MessageData == null)
|
|
return null;
|
|
|
|
return Utility.Deserialize<Transfer>(MessageData);
|
|
}
|
|
|
|
public OnlinePlayersMessage GetOnlinePlayers()
|
|
{
|
|
if (MessageData == null)
|
|
return null;
|
|
|
|
|
|
var msg = Utility.Deserialize<OnlinePlayersMessage>(MessageData);
|
|
return msg;
|
|
}
|
|
} |