Example #1
0
 /// <summary>
 ///     Runs a callback over a NetIncomingMessage if the event matches.
 /// </summary>
 /// <param name="message"></param>
 /// <param name="ev"></param>
 /// <param name="receiverPeerType"></param>
 /// <param name="callback"></param>
 public static void RunEvent(this NetIncomingMessage message, Event ev, NetworkSingleton.PeerType receiverPeerType,
                             NetworkSingleton.IncomingMessageDelegate callback)
 {
     if ((Event)message.ReadUInt32() == ev)
     {
         callback.Invoke(receiverPeerType, message);
     }
 }
Example #2
0
        private void OnNetworkInitialized(NetworkSingleton.PeerType networkPeerType)
        {
            networkChat = new Chat();
            var chatUI = uiContainer.Component.GetSubUI <IChatUI>();

            networkChat.ClientOnMessageReceived += message => { chatUI.SetChatText(networkChat.ToString()); };

            chatUI.OnChatSubmitted += (sender, message) =>
            {
                networkChat.SendMessage(new ChatMessage(players.ClientPlayer, message, Chat.Channel.Public));
            };
        }
Example #3
0
        /// <summary>
        ///     Called when a chat message is received both on the client and server.
        /// </summary>
        /// <param name="receiverPeerType"></param>
        /// <param name="message"></param>
        private void ReceiveMessage(NetworkSingleton.PeerType receiverPeerType, NetIncomingMessage message)
        {
            var msg = message.ReadDataBytes().DeserializeEventData <ChatMessage>();

            messageQueue.Enqueue(msg);

            //Client receive message.
            if (receiverPeerType == NetworkSingleton.PeerType.Client)
            {
                DebugConsole.Instance.Log(msg);
                ClientOnMessageReceived?.Invoke(msg);
            }


            //Server received message
            if (receiverPeerType != NetworkSingleton.PeerType.Server)
            {
                return;
            }

            DebugConsole.Instance.Log(msg);

            if (msg.Channel.Value >= (ushort)Channel.Private)  //Private channel
            {
                msg.Channel.Decompress();

                //TODO: get players of these two id's and send.
                return;
            }

            switch (msg.Channel.Value)
            {
            case (ushort)Channel.Public:
                //Send to all
                Network.SendEventToAllClients(NetworkEvents.Event.ChatMessage, message);
                break;

            case (ushort)Channel.Vicinity:
                //TODO: Get clients in vicinity then send.
                break;

            case (ushort)Channel.Whisper:
                //TODO:Get clients in whisper distance and send.
                break;

            default:
                DebugConsole.Instance.Log("Chat channel not supported: " + msg.Channel);
                break;
            }
        }
Example #4
0
        private void OnClientConnected(NetworkSingleton.PeerType sender, NetConnection netconenction)
        {
            var player = players.CreatePlayer(sender, netconenction);

            if (player == null)
            {
                return;
            }
            //Set player position if local
            if (!player.IsRemote)
            {
                var spawnObject = map.ObjectGroups["Objects"].GetTiledObject("spawn");
                var pos         = new Vector2
                {
                    X = spawnObject.WorldPosition.X,
                    Y = spawnObject.WorldPosition.Y
                };
                player.Entity.SetPosition(pos);
            }
        }
Example #5
0
 public Player CreatePlayer(NetworkSingleton.PeerType netPeerType, NetConnection connection)
 {
     return(playerMap[netPeerType].Invoke(connection));
 }