diff options
| author | Sarah B <git@sarahduck.ca> | 2023-12-25 00:02:12 -0800 |
|---|---|---|
| committer | Sarah B <git@sarahduck.ca> | 2023-12-25 00:02:12 -0800 |
| commit | ff3cbc5b49f8618531c5778d69b49c0aa4a9442a (patch) | |
| tree | bdee837392669a3eb4ac3f0296c3749c6485078c /NetClient.cs | |
| parent | 760fb20f4d248d19524392d2b8c3a3fcdb762453 (diff) | |
Changed how server handles UserInfo, and started work on networking the cursor's sprite.
Diffstat (limited to 'NetClient.cs')
| -rw-r--r-- | NetClient.cs | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/NetClient.cs b/NetClient.cs index 492c459..804be86 100644 --- a/NetClient.cs +++ b/NetClient.cs @@ -14,12 +14,12 @@ class Client readonly NetManager NetClient; public NetPeer ConnectedServer => NetClient.FirstPeer; - readonly Dictionary<int, User> users = []; - public ReadOnlyDictionary<int, User> Users => users.AsReadOnly(); + readonly Dictionary<int, ClientUser> users = []; + public ReadOnlyDictionary<int, ClientUser> Users => users.AsReadOnly(); - static public Action<User>? UserConnected; - static public Action<User>? UserDisconnected; - static public Action<NetDataReader, User, PacketType>? PacketRecived; + static public Action<ClientUser>? UserConnected; + static public Action<ClientUser>? UserDisconnected; + static public Action<NetDataReader, ClientUser, PacketType>? PacketRecived; static public Action? ServerDisconnected; public Client(string ServerAddress, int port, string ServerPassword) @@ -37,9 +37,10 @@ class Client NetDataWriter writer = new(); writer.Put(new PacketInfo(PacketType.UserInfo, Id)); - writer.Put(UserName); - writer.Put(OnekoLocal.Instance!.Name); + 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); }; @@ -50,7 +51,7 @@ class Client }; Listener.NetworkReceiveEvent += (fromPeer, reader, channel, DeliveryMethod) => { - if (reader.AvailableBytes < PacketInfo.SizeOf) return; + if (reader.AvailableBytes < PacketInfo.SizeOf || reader.AvailableBytes > 40000) return; PacketInfo info = reader.GetPacketInfo(); if (info.Type == PacketType.UserId) { @@ -58,7 +59,7 @@ class Client return; } - User? from; + ClientUser? from; if (!users.TryGetValue(info.FromId, out from)) { from = new(info.FromId); users.Add(from.Id, from); @@ -73,15 +74,17 @@ class Client } else if (info.Type == PacketType.UserInfo) { - from.Username = reader.GetString(); - from.Nekoname = reader.GetString(); + from.Username = reader.GetString().LimitLength(40); + from.Nekoname = reader.GetString().LimitLength(40); from.SpriteSheet = reader.GetBytesWithLength(); - Console.WriteLine($"User {from.Username} joined!"); + Console.WriteLine($"User {from.Username} joined with {from.Nekoname}!"); from.Initialized = true; UserConnected?.Invoke(from); return; } + if (reader.AvailableBytes > 500) return; + NetDataReader newReader = new(reader.GetRemainingBytes()); PacketRecived?.Invoke(newReader, from, info.Type); }; @@ -96,4 +99,12 @@ class Client { NetClient.DisconnectAll(); } +} + +class ClientUser(int id) : User(id) +{ + public byte[]? SpriteSheet; + public byte[]? CursorSprite; + public string? Username; + public string? Nekoname; }
\ No newline at end of file |
