OnCalled() public method

public OnCalled ( Message msg, NetIncomingMessage netMsg = null ) : void
msg Message
netMsg Lidgren.Network.NetIncomingMessage
return void
Esempio n. 1
0
        public void SendNetworkMessage(Message message, SendTo sendTo, NetIncomingMessage netMessage = null, NetDeliveryMethod deliveryMethod = NetDeliveryMethod.ReliableOrdered)
        {
            if (m_isServer)
            {
                Type messageType      = message.GetType();
                NetOutgoingMessage om = m_server.CreateMessage();
                om.Write((int)MessageFunction.ClassMessage);;
                om.Write(messageType.Assembly.ToString());
                om.Write(messageType.ToString());
                om.WriteAllFields(message);

                NetConnection sender = null;
                if (netMessage != null)
                {
                    sender = netMessage.SenderConnection;
                }

                switch (sendTo)
                {
                case SendTo.All:
                    message.OnCalled(message, netMessage);
                    m_server.SendToAll(om, sender, deliveryMethod, 0);
                    break;

                case SendTo.Others:
                    m_server.SendToAll(om, sender, deliveryMethod, 0);
                    if (sender != null)      //If server diden't send the message
                    {
                        message.OnCalled(message, netMessage);
                    }
                    break;

                case SendTo.Server:
                    message.OnCalled(message, netMessage);
                    break;
                }
            }
            else
            {
                Type messageType      = message.GetType();
                NetOutgoingMessage om = m_client.CreateMessage();
                om.Write((int)MessageFunction.ClassMessage);
                om.Write((int)sendTo);
                om.Write(messageType.Assembly.ToString());
                om.Write(messageType.ToString());
                om.WriteAllFields(message);
                m_client.SendMessage(om, deliveryMethod);

                if (sendTo == SendTo.All) //Trigger for sender if you sent it to everybody
                {
                    message.OnCalled(message, netMessage);
                }
            }
        }
Esempio n. 2
0
        void HandleClientMessage(NetIncomingMessage msg)
        {
            MessageFunction type = (MessageFunction)msg.ReadInt32();

            switch (type)
            {
            case MessageFunction.ClassMessage:
                string  assemblyName = msg.ReadString();
                string  classType    = msg.ReadString();
                Message report       = (Message)Activator.CreateInstance(assemblyName, classType).Unwrap();
                msg.ReadAllFields(report);
                report.OnCalled(report, msg);
                break;

            case MessageFunction.SpawnAllPlayer:
                int count = msg.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    int    id         = msg.ReadInt32();
                    string playerName = msg.ReadString();

                    SpawnPlayer(id, playerName);
                }

                int newId = SpawnLocalPlayer();
                MessageSpawnPlayer spawnMessage = new MessageSpawnPlayer();
                spawnMessage.playerId   = newId;
                spawnMessage.playerName = PlatformService.personaName;
                SendNetworkMessage(spawnMessage, SendTo.Others);
                break;

            case MessageFunction.UpdateVehiclesPositions:
                m_vNetworkManager.UpdateCarsPositions(msg);
                break;

            case MessageFunction.RemoveVehicle:
                int carID2 = msg.ReadInt32();
                m_vNetworkManager.RemoveCar(carID2);
                break;

            case MessageFunction.UpdateCitizensPositions:
                m_cNetworkManager.UpdateCitizensPositions(msg);
                break;

            default:
                Debug.LogWarning("Unhandled msg type: " + type.ToString());
                break;
            }
        }
        public void SendNetworkMessage(Message message, SendTo sendTo, NetIncomingMessage netMessage = null, NetDeliveryMethod deliveryMethod = NetDeliveryMethod.ReliableOrdered)
        {
            if (m_isServer)
            {
                Type messageType = message.GetType();
                NetOutgoingMessage om = m_server.CreateMessage();
                om.Write((int)MessageFunction.ClassMessage);;
                om.Write(messageType.Assembly.ToString());
                om.Write(messageType.ToString());
                om.WriteAllFields(message);

                NetConnection sender = null;
                if (netMessage != null)
                {
                    sender = netMessage.SenderConnection;
                }

                switch (sendTo)
                {
                    case SendTo.All:
                        message.OnCalled(message, netMessage);
                        m_server.SendToAll(om, sender, deliveryMethod, 0);
                        break;
                    case SendTo.Others:
                        m_server.SendToAll(om, sender, deliveryMethod, 0);
                        if (sender != null)  //If server diden't send the message
                            message.OnCalled(message, netMessage);
                        break;
                    case SendTo.Server:
                        message.OnCalled(message, netMessage);
                        break;
                }
            }
            else
            {
                Type messageType = message.GetType();
                NetOutgoingMessage om = m_client.CreateMessage();
                om.Write((int)MessageFunction.ClassMessage);
                om.Write((int) sendTo);
                om.Write(messageType.Assembly.ToString());
                om.Write(messageType.ToString());
                om.WriteAllFields(message);
                m_client.SendMessage(om, deliveryMethod);

                if (sendTo == SendTo.All) //Trigger for sender if you sent it to everybody
                {
                    message.OnCalled(message, netMessage);
                }
            }
        }