Files
SeamlessClient/Messages/WorldRequest.cs
zznty aa323f1ff6
Some checks failed
Build / Compute Version (push) Successful in 6s
Build / Build Nuget package (push) Failing after 6s
fixes for nexus v3
2025-07-28 03:58:25 +07:00

55 lines
1.5 KiB
C#

using System.Reflection;
using NLog;
using ProtoBuf;
using Sandbox.Engine.Multiplayer;
using VRage.Game;
using VRage.ObjectBuilders.Private;
namespace SeamlessClientPlugin.Messages;
[ProtoContract]
public class WorldRequest
{
private static readonly Logger Log = LogManager.GetCurrentClassLogger();
[ProtoMember(5)] public MyObjectBuilder_Gps GpsCollection;
[ProtoMember(2)] public long IdentityId;
[ProtoMember(1)] public ulong PlayerId;
[ProtoMember(3)] public string PlayerName;
[ProtoMember(4)] public byte[] WorldData;
public WorldRequest(ulong playerId, long playerIdentity, string name)
{
this.PlayerId = playerId;
PlayerName = name;
IdentityId = playerIdentity;
}
public WorldRequest()
{
}
public void SerializeWorldData(MyObjectBuilder_World worldData)
{
MyMultiplayerServerBase.CleanUpData(worldData, PlayerId, IdentityId);
using var memoryStream = new MemoryStream();
MyObjectBuilderSerializerKeen.SerializeXML(memoryStream, worldData,
MyObjectBuilderSerializerKeen.XmlCompression.Gzip);
WorldData = memoryStream.ToArray();
Log.Warn("Successfully Converted World");
}
public MyObjectBuilder_World DeserializeWorldData()
{
MyObjectBuilderSerializerKeen.DeserializeGZippedXML<MyObjectBuilder_World>(new MemoryStream(WorldData),
out var objectBuilder);
objectBuilder.Checkpoint.Gps.Dictionary.Add(IdentityId, GpsCollection);
return objectBuilder;
}
}