From de267a9d0f358240e7aa434c5d0ee268462603cc Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 1 Feb 2024 23:38:39 +0300 Subject: [PATCH] feat: NetworkServer --- Game/Network/NetworkServer.cs | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Game/Network/NetworkServer.cs diff --git a/Game/Network/NetworkServer.cs b/Game/Network/NetworkServer.cs new file mode 100644 index 0000000..b09bdab --- /dev/null +++ b/Game/Network/NetworkServer.cs @@ -0,0 +1,39 @@ +using LiteNetLib; + +namespace Game.Network; + +public class NetworkServer +{ + public string Password { get; private set; } = string.Empty; + public int MaxConnectionCount { get; private set; } = 0; + public int Port { get; private set; } = 8888; + + public readonly EventBasedNetListener Listener = null!; + public readonly NetManager Server = null!; + + public NetworkServer() + { + Listener = new EventBasedNetListener(); + Server = new NetManager(Listener); + + Listener.ConnectionRequestEvent += request => + { + if (Server.ConnectedPeersCount < MaxConnectionCount) + request.AcceptIfKey(Password); + else + request.Reject(); + }; + } + + public void Start(int port, int maxConnectionCount, string? password = null) + { + Password = password ?? string.Empty; + MaxConnectionCount = maxConnectionCount; + Port = port; + + Server.Start(port); + } + + public void PollEvents() => Server.PollEvents(); + public void Stop() => Server.Stop(); +}