11using ENet ;
2+ using System ;
23using System . IO ;
34
45namespace 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}
0 commit comments