summaryrefslogtreecommitdiff
path: root/NetClient.cs
diff options
context:
space:
mode:
authorSarah Bradley <git@sarahduck.ca>2023-12-25 01:50:06 -0800
committerSarah Bradley <git@sarahduck.ca>2023-12-25 01:50:06 -0800
commit828672047ffd306f78b93f11c3d9a8dfafa3d653 (patch)
tree06cc9c9ef7c4554574ee3855dd681fd88b8b408a /NetClient.cs
parentff3cbc5b49f8618531c5778d69b49c0aa4a9442a (diff)
Added spectator mode, and fixed some networking issues
Diffstat (limited to 'NetClient.cs')
-rw-r--r--NetClient.cs34
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;