示例#1
0
        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);
        }
示例#4
0
        // 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)));
        }