diff options
Diffstat (limited to 'NetClient.cs')
| -rw-r--r-- | NetClient.cs | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/NetClient.cs b/NetClient.cs index 804be86..5146a0a 100644 --- a/NetClient.cs +++ b/NetClient.cs @@ -37,11 +37,20 @@ class Client NetDataWriter writer = new(); writer.Put(new PacketInfo(PacketType.UserInfo, Id)); - writer.Put(UserName.LimitLength(40)); - writer.Put(OnekoLocal.Instance!.Name.LimitLength(40)); - writer.PutBytesWithLength(OnekoLocal.Instance!.SpriteSheet.Serialize()); - //TODO: NETWORK THE CURSOR HERE - peer.Send(writer, DeliveryMethod.ReliableUnordered); + writer.Put(UserName, 40); + writer.PutBytesWithLength(MouseLocal.Instance!.Cursor.Serialize()); + writer.Put(OnekoOnline.SpectatorMode); + if (!OnekoOnline.SpectatorMode) { + writer.Put(OnekoLocal.Instance!.Name, 40); + writer.PutBytesWithLength(OnekoLocal.Instance!.SpriteSheet.Serialize()); + } + + if (writer.Length > 50000) { + peer.Disconnect(); + Console.WriteLine("You have too much data to send, try reducing the complexity of your sprites."); + } else { + peer.Send(writer, DeliveryMethod.ReliableUnordered); + } }; Listener.PeerDisconnectedEvent += (peer, info) => { @@ -74,10 +83,16 @@ class Client } else if (info.Type == PacketType.UserInfo) { - from.Username = reader.GetString().LimitLength(40); - from.Nekoname = reader.GetString().LimitLength(40); - from.SpriteSheet = reader.GetBytesWithLength(); - Console.WriteLine($"User {from.Username} joined with {from.Nekoname}!"); + from.Username = reader.GetString(40); + from.CursorSprite = reader.GetBytesWithLength(); + from.SpectatorMode = reader.GetBool(); + if (!from.SpectatorMode) { + from.Nekoname = reader.GetString(40); + from.SpriteSheet = reader.GetBytesWithLength(); + Console.WriteLine($"User {from.Username} joined with {from.Nekoname}!"); + } else { + Console.WriteLine($"User {from.Username} joined as a Spectator!"); + } from.Initialized = true; UserConnected?.Invoke(from); return; @@ -103,6 +118,7 @@ class Client class ClientUser(int id) : User(id) { + public bool SpectatorMode; public byte[]? SpriteSheet; public byte[]? CursorSprite; public string? Username; |
