public NetworkGameServer(Type interfaceType, NetworkServerConfig config) { Config = config; clients = new Dictionary <NetworkConnection, NetworkClientPlayer>(); interfaces = new List <INetworkInterface>(); var networkInterface = (INetworkInterface)Activator.CreateInstance(interfaceType); AddNetworkInterface(networkInterface); }
// Server Methods /// <summary> /// Starts the local NetworkServer. /// </summary> /// <remarks> /// This does not connect the server to any client. This only opens the /// socket for a server. /// /// If a server is already active, another server will not be started. /// and the active server will be returned. /// </remarks> /// <param name="config">the NetworkServerConfig used to start the server.</param> /// <param name="interfaceType">INetworkInterface type to use, uses default if null.</param> /// <returns>the NetworkServer created or fetched.</returns> public async Task <INetworkServer> StartServer(NetworkServerConfig config, Type interfaceType = null) { if (Server != null) { return(Server); } interfaceType = interfaceType ?? DefaultNetworkInterfaceType; Server = new NetworkGameServer(interfaceType, config); await Server.Initialize(); return(Server); }
public NetworkGameServer(Type interfaceType, NetworkServerConfig config) { clients = new Dictionary <uint, NetworkClientPlayer>(); NetworkInterface = (INetworkInterface)Activator.CreateInstance(interfaceType); NetworkInterface.Initialize(config.Port); NetworkInterface.OnPeerConnected += OnConnect; NetworkInterface.OnPeerDisconnected += OnDisconnect; var handlers = NetworkInterface.MessageHandlers; handlers.RegisterHandler(MessageCodes.ClientReady, OnClientReady); handlers.RegisterHandler(MessageCodes.UpdateConfig, OnClientConfigUpdated); handlers.RegisterHandler(MessageCodes.UpdateInput, OnReceivedClientInput); }
// Server Methods /// <summary> /// Starts the local NetworkServer. /// </summary> /// <remarks> /// This does not connect the server to any client. This only opens the /// socket for a server. /// /// If a server is already active, another server will not be started. /// and the active server will be returned. /// </remarks> /// <param name="config">the NetworkServerConfig used to start the server.</param> /// <returns>the NetworkServer created or fetched.</returns> public INetworkServer StartServer(NetworkServerConfig config) { return(Server ?? (Server = new NetworkGameServer(NetworkInterfaceType, config))); }