CLre/CLre_server/API/Synergy/Tweaks/SerializedCLreTerrainModifyRejection.cs

76 lines
2.1 KiB
C#
Raw Normal View History

using System;
using System.IO;
using System.Runtime.CompilerServices;
using Game.Handhelds;
using NetworkFramework.Shared;
using UnityEngine;
namespace CLre_server.API.Synergy.Tweaks
{
public struct SerializedCLreTerrainModifyRejection: ISerializedNetData
{
public RejectionFlag Flags;
public uint resourceId;
public Vector3 hit;
public string toolKey;
public ToolModeType toolMode;
public byte[] Serialize()
{
using (MemoryStream stream = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write((byte)Flags);
writer.Write(resourceId);
writer.Write(hit.x);
writer.Write(hit.y);
writer.Write(hit.z);
writer.Write(toolKey);
writer.Write((byte)toolMode);
return stream.ToArray();
}
}
}
public void Deserialize(byte[] data)
{
using (MemoryStream stream = new MemoryStream(data))
{
using (BinaryReader reader = new BinaryReader(stream))
{
Flags = (RejectionFlag)reader.ReadByte();
resourceId = reader.ReadUInt32();
float x = reader.ReadSingle();
float y = reader.ReadSingle();
float z = reader.ReadSingle();
hit = new Vector3(x, y, z);
toolKey = reader.ReadString();
toolMode = (ToolModeType)reader.ReadByte();
}
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Ok()
{
return (Flags & RejectionFlag.Rejection) == RejectionFlag.None;
}
}
[Flags]
public enum RejectionFlag : byte
{
None = 0,
Rejection = 1,
Proximity = 1 << 1,
Permission = 1 << 2,
AccountNotFound = 1 << 3,
InitError = 1 << 4,
}
}