summaryrefslogtreecommitdiff
path: root/NetServer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'NetServer.cs')
-rw-r--r--NetServer.cs65
1 files changed, 31 insertions, 34 deletions
diff --git a/NetServer.cs b/NetServer.cs
index c2c626a..5ff35f1 100644
--- a/NetServer.cs
+++ b/NetServer.cs
@@ -45,44 +45,41 @@ class Server
ServerUser user = users[fromPeer.Id];
//Size limits for packet types
- if (info.Type == PacketType.OnekoSpritesheet && dataReader.AvailableBytes > 30000) return;
- else if (info.Type != PacketType.OnekoSpritesheet && dataReader.AvailableBytes > 500) return;
-
- if (info.Type == PacketType.OnekoSpritesheet) user.SpriteSheet = dataReader.GetRemainingBytes();
- else if (info.Type == PacketType.Username) user.Username = dataReader.GetString(64);
+ if (info.Type == PacketType.UserInfo && dataReader.AvailableBytes > 40000) return;
+ else if (info.Type != PacketType.UserInfo && dataReader.AvailableBytes > 500) return;
NetDataWriter writer = new();
- if (user.ExchangedData && !user.Initialized) {
- //Send ID
- writer.ResetWithInfo(new PacketInfo(PacketType.UserId, -1));
- writer.Put(user.Id);
- fromPeer.Send(writer, DeliveryMethod.ReliableUnordered);
- user.Initialized = true;
-
- Console.WriteLine($"{fromPeer.EndPoint} is {user.Username}!");
+ if (info.Type == PacketType.UserInfo) {
+ user.Username = dataReader.GetString();
+ if (user.Username.Length > 40) user.Username = user.Username[0..40]; //Clamp username length
+ user.SpriteSheet = dataReader.GetBytesWithLength();
- foreach (ServerUser toSend in users.Values)
- {
- if (!toSend.ExchangedData || toSend == user) continue;
-
- //Send all current users spritesheets to this user.
- writer.ResetWithInfo(new PacketInfo(PacketType.OnekoSpritesheet, toSend.Id), toSend.SpriteSheet!.Length);
- writer.Put(toSend.SpriteSheet);
+ if (!user.Initialized) {
+ //Send ID
+ writer.ResetWithInfo(new PacketInfo(PacketType.UserId, -1));
+ writer.Put(user.Id);
fromPeer.Send(writer, DeliveryMethod.ReliableUnordered);
-
- writer.ResetWithInfo(new PacketInfo(PacketType.Username, toSend.Id));
- writer.Put(toSend.Username);
- fromPeer.Send(writer, DeliveryMethod.ReliableUnordered);
-
- //Send all current users this users spritesheet
- writer.ResetWithInfo(new PacketInfo(PacketType.OnekoSpritesheet, user.Id), user.SpriteSheet!.Length);
- writer.Put(user.SpriteSheet);
- toSend.Peer.Send(writer, DeliveryMethod.ReliableUnordered);
-
- writer.ResetWithInfo(new PacketInfo(PacketType.Username, user.Id));
- writer.Put(user.Username);
- toSend.Peer.Send(writer, DeliveryMethod.ReliableUnordered);
+ user.Initialized = true;
+
+ Console.WriteLine($"{fromPeer.EndPoint} is {user.Username}!");
+
+ foreach (ServerUser toSend in users.Values)
+ {
+ if (!toSend.Initialized || toSend == user) continue;
+
+ //Send all current users spritesheets to this user.
+ writer.ResetWithInfo(new PacketInfo(PacketType.UserInfo, toSend.Id));
+ writer.Put(toSend.Username);
+ writer.PutBytesWithLength(toSend.SpriteSheet);
+ fromPeer.Send(writer, DeliveryMethod.ReliableUnordered);
+
+ //Send all current users this users spritesheet
+ writer.ResetWithInfo(new PacketInfo(PacketType.UserInfo, user.Id));
+ writer.Put(user.Username);
+ writer.PutBytesWithLength(user.SpriteSheet);
+ toSend.Peer.Send(writer, DeliveryMethod.ReliableUnordered);
+ }
}
}
@@ -90,7 +87,7 @@ class Server
writer.ResetWithInfo(new PacketInfo(info.Type, fromPeer.Id));
writer.Put(dataReader.GetRemainingBytes());
foreach (ServerUser toSend in users.Values) {
- if (!toSend.ExchangedData || toSend == user) continue;
+ if (!toSend.Initialized || toSend == user) continue;
toSend.Peer.Send(writer, DeliveryMethod);
}
}