Skip to content
This repository was archived by the owner on Sep 15, 2024. It is now read-only.

Commit e482902

Browse files
Fix #50
1 parent 1f1d697 commit e482902

12 files changed

Lines changed: 74 additions & 29 deletions

LuaModdingTest.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Godot.NET.Sdk/3.3.0">
22
<PropertyGroup>
33
<TargetFramework>net472</TargetFramework>
4+
<LangVersion>10</LangVersion>
45
</PropertyGroup>
56
<ItemGroup>
67
<PackageReference Include="MoonSharp" Version="2.0.0" />

Scripts/Netcode/Common/CPacketLobbyChatMessage.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using GodotModules.Netcode.Server;
2+
using System.IO;
23

34
namespace GodotModules.Netcode
45
{

Scripts/Netcode/Common/CPacketPlayerPosition.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ public override void Handle(ENet.Peer peer)
2626
{
2727
GameServer.Players[peer.ID].Position = Position;
2828

29-
foreach (var pair in GameServer.Players)
29+
/*foreach (var pair in GameServer.Players)
3030
{
3131
GameServer.Send(ServerPacketOpcode.PlayerPositions, new SPacketPlayerPositions {
3232
PlayerPositions = GameServer.Players.Where(x => x.Key != pair.Key).ToDictionary(x => x.Key, x => x.Value.Position)
3333
}, GameServer.Peers[pair.Key]);
34-
}
34+
}*/
3535
}
3636
}
3737
}

Scripts/Netcode/Common/Core/ClientPacket.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ public ClientPacket(byte opcode, PacketFlags flags, APacket writable = null)
1111
writer.Write(opcode);
1212
if (writable != null) writable.Write(writer);
1313

14-
var stream = writer.GetStream();
15-
Data = stream.ToArray();
16-
Size = stream.Length;
14+
Data = writer.Stream.ToArray();
15+
Size = writer.Stream.Length;
1716
}
1817

1918
PacketFlags = flags;
Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,42 @@
11
using ENet;
2+
using System;
23
using System.IO;
34

45
namespace GodotModules.Netcode
56
{
6-
public class PacketReader : BinaryReader
7+
public class PacketReader : IDisposable
78
{
8-
private static readonly byte[] ReadBuffer = new byte[GamePacket.MaxSize];
9+
private MemoryStream Stream { get; set; }
10+
private BinaryReader Reader { get; set; }
11+
private readonly byte[] ReadBuffer = new byte[GamePacket.MaxSize];
912

10-
public PacketReader(Packet packet) : base(new MemoryStream(ReadBuffer))
13+
public PacketReader(Packet packet)
1114
{
12-
BaseStream.Position = 0;
15+
Stream = new MemoryStream(ReadBuffer);
16+
Reader = new BinaryReader(Stream);
1317
packet.CopyTo(ReadBuffer);
1418
packet.Dispose();
1519
}
1620

17-
public bool ReadBool() => base.ReadBoolean();
21+
public byte ReadByte() => Reader.ReadByte();
22+
public sbyte ReadSByte() => Reader.ReadSByte();
23+
public char ReadChar() => Reader.ReadChar();
24+
public string ReadString() => Reader.ReadString();
25+
public bool ReadBool() => Reader.ReadBoolean();
26+
public short ReadShort() => Reader.ReadInt16();
27+
public ushort ReadUShort() => Reader.ReadUInt16();
28+
public int ReadInt() => Reader.ReadInt32();
29+
public uint ReadUInt() => Reader.ReadUInt32();
30+
public float ReadFloat() => Reader.ReadSingle();
31+
public double ReadDouble() => Reader.ReadDouble();
32+
public long ReadLong() => Reader.ReadInt64();
33+
public ulong ReadULong() => Reader.ReadUInt64();
34+
public byte[] ReadBytes(int count) => Reader.ReadBytes(count);
1835

19-
public sbyte ReadInt8() => base.ReadSByte();
20-
21-
public byte ReadUInt8() => base.ReadByte();
22-
23-
public float ReadFloat() => base.ReadSingle();
36+
public void Dispose()
37+
{
38+
Stream.Dispose();
39+
Reader.Dispose();
40+
}
2441
}
2542
}
Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,38 @@
1+
using System;
12
using System.IO;
23

34
namespace GodotModules.Netcode
45
{
5-
public class PacketWriter : BinaryWriter
6+
public class PacketWriter : IDisposable
67
{
7-
private static MemoryStream stream;
8+
public MemoryStream Stream { get; set; }
9+
public BinaryWriter Writer { get; set; }
810

9-
public PacketWriter() : base(stream = new MemoryStream())
11+
public PacketWriter()
1012
{
13+
Stream = new MemoryStream();
14+
Writer = new BinaryWriter(Stream);
1115
}
1216

13-
public MemoryStream GetStream() => stream;
17+
public void Write(byte v) => Writer.Write(v);
18+
public void Write(sbyte v) => Writer.Write(v);
19+
public void Write(char v) => Writer.Write(v);
20+
public void Write(string v) => Writer.Write(v);
21+
public void Write(bool v) => Writer.Write(v);
22+
public void Write(short v) => Writer.Write(v);
23+
public void Write(ushort v) => Writer.Write(v);
24+
public void Write(int v) => Writer.Write(v);
25+
public void Write(uint v) => Writer.Write(v);
26+
public void Write(float v) => Writer.Write(v);
27+
public void Write(double v) => Writer.Write(v);
28+
public void Write(long v) => Writer.Write(v);
29+
public void Write(ulong v) => Writer.Write(v);
30+
public void Write(byte[] v) => Writer.Write(v);
31+
32+
public void Dispose()
33+
{
34+
Stream.Dispose();
35+
Writer.Dispose();
36+
}
1437
}
1538
}

Scripts/Netcode/Common/Core/ServerPacket.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using ENet;
2+
using System.IO;
23

34
namespace GodotModules.Netcode
45
{
@@ -13,9 +14,8 @@ public ServerPacket(byte opcode, PacketFlags packetFlags, APacket writable = nul
1314
writer.Write(opcode);
1415
if (writable != null) writable.Write(writer);
1516

16-
var stream = writer.GetStream();
17-
Data = stream.ToArray();
18-
Size = stream.Length;
17+
Data = writer.Stream.ToArray();
18+
Size = writer.Stream.Length;
1919
}
2020

2121
Opcode = opcode;

Scripts/Netcode/Common/Packet/APacket.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.IO;
2+
13
namespace GodotModules.Netcode
24
{
35
public abstract class APacket
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
using System.IO;
2+
13
namespace GodotModules.Netcode
24
{
35
public abstract class APacketServerPeerId : APacketServer
46
{
57
public uint Id { get; set; }
68

79
public override void Write(PacketWriter writer) => writer.Write((ushort)Id);
8-
public override void Read(PacketReader reader) => Id = reader.ReadUInt16();
10+
public override void Read(PacketReader reader) => Id = reader.ReadUShort();
911
}
1012
}

Scripts/Netcode/Common/SPacketLobbyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ public override void Read(PacketReader reader)
2626
{
2727
base.Read(reader);
2828
IsHost = reader.ReadBool();
29-
var count = reader.ReadUInt16();
29+
var count = reader.ReadUShort();
3030
Players = new Dictionary<uint, DataPlayer>();
3131
for (int i = 0; i < count; i++)
3232
{
33-
var id = reader.ReadUInt16();
33+
var id = reader.ReadUShort();
3434
var name = reader.ReadString();
3535

3636
Players.Add(id, new DataPlayer {

0 commit comments

Comments
 (0)