namespace Syntriax.Engine.Network; public interface INetworkCommunicator { event OnPacketReceivedDelegate? OnPacketReceived; INetworkCommunicator Stop(); delegate void OnPacketReceivedDelegate(INetworkCommunicator sender, object packet, string from); } public interface INetworkCommunicatorClient : INetworkCommunicator { INetworkCommunicatorClient Connect(string address, int port, string? password = null); INetworkCommunicatorClient SendToServer(T packet) where T : class, new(); } public interface INetworkCommunicatorServer : INetworkCommunicator { string Password { get; } int MaxConnectionCount { get; } int Port { get; } INetworkCommunicatorServer Start(int port, int maxConnectionCount, string? password = null); INetworkCommunicatorServer SendToClient(string to, T packet) where T : class, new(); }