Characters

This commit is contained in:
2025-10-05 18:21:16 +02:00
parent b52b3aa830
commit 174a399ee7
77 changed files with 14406 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
using System;
using System.IO;
using UnityEngine;
namespace MegaKoop.Game.Networking
{
public sealed class NetworkWriter : IDisposable
{
private readonly MemoryStream stream;
private readonly BinaryWriter writer;
public NetworkWriter(int capacity = 128)
{
stream = new MemoryStream(capacity);
writer = new BinaryWriter(stream);
}
public void Write(byte value) => writer.Write(value);
public void Write(int value) => writer.Write(value);
public void Write(uint value) => writer.Write(value);
public void Write(short value) => writer.Write(value);
public void Write(ushort value) => writer.Write(value);
public void Write(long value) => writer.Write(value);
public void Write(ulong value) => writer.Write(value);
public void Write(float value) => writer.Write(value);
public void Write(bool value) => writer.Write(value);
public void Write(Vector3 value)
{
writer.Write(value.x);
writer.Write(value.y);
writer.Write(value.z);
}
public void Write(Quaternion value)
{
writer.Write(value.x);
writer.Write(value.y);
writer.Write(value.z);
writer.Write(value.w);
}
public void Write(string value) => writer.Write(value ?? string.Empty);
public byte[] ToArray()
{
writer.Flush();
return stream.ToArray();
}
public void Dispose()
{
writer?.Dispose();
stream?.Dispose();
}
}
public sealed class NetworkReader : IDisposable
{
private readonly MemoryStream stream;
private readonly BinaryReader reader;
public NetworkReader(byte[] buffer)
{
stream = new MemoryStream(buffer ?? Array.Empty<byte>());
reader = new BinaryReader(stream);
}
public byte ReadByte() => reader.ReadByte();
public bool ReadBool() => reader.ReadBoolean();
public int ReadInt() => reader.ReadInt32();
public uint ReadUInt() => reader.ReadUInt32();
public short ReadShort() => reader.ReadInt16();
public ushort ReadUShort() => reader.ReadUInt16();
public long ReadLong() => reader.ReadInt64();
public ulong ReadULong() => reader.ReadUInt64();
public float ReadFloat() => reader.ReadSingle();
public Vector3 ReadVector3()
{
float x = reader.ReadSingle();
float y = reader.ReadSingle();
float z = reader.ReadSingle();
return new Vector3(x, y, z);
}
public Quaternion ReadQuaternion()
{
float x = reader.ReadSingle();
float y = reader.ReadSingle();
float z = reader.ReadSingle();
float w = reader.ReadSingle();
return new Quaternion(x, y, z, w);
}
public string ReadString() => reader.ReadString();
public bool TryReadBytes(int length, out byte[] bytes)
{
if (length <= 0 || reader.BaseStream.Position + length > reader.BaseStream.Length)
{
bytes = Array.Empty<byte>();
return false;
}
bytes = reader.ReadBytes(length);
return true;
}
public void Dispose()
{
reader?.Dispose();
stream?.Dispose();
}
}
}