Beispiel #1
0
        protected void SendMessage(Agent senderAgent, Agent currentSenderAgent, Agent receiverAgent,
                                   string receiverId,
                                   BroadcastType messageType,
                                   MessagesContent messageContent, Ruler rulerAgent)
        {
            var message = new Message
            {
                CurrentSenderAgent   = currentSenderAgent,
                CurrentSenderAgentId = currentSenderAgent.AgentId,
                SenderAgentId        = senderAgent.AgentId,
                SenderAgent          = senderAgent,
                ReceiverAgent        = receiverAgent,
                ReceiverAgentId      = receiverId,
                MessageContent       = messageContent,
                MessageType          = messageType
            };

            if (Position.Position.CalculateDistance(message.ReceiverAgent.Position.Position) <= RadioRange)
            {
                message.CurrentReceiverAgent   = message.ReceiverAgent;
                message.CurrentReceiverAgentId = message.ReceiverAgentId;
            }
            else
            {
                var temp = FindNearestMessenger(Position, receiverAgent.Position, message);
                message.RulerPingReply         = rulerAgent;
                message.CurrentReceiverAgent   = temp;
                message.CurrentReceiverAgentId = temp.AgentId;
            }

            Container.ContainerMedia.SendMessage(message.Copy());
        }
Beispiel #2
0
        protected void SendBroadcastMessage(Agent senderAgent,
                                            Agent currentSenderAgent,
                                            BroadcastType messageType,
                                            MessagesContent messageContent,
                                            int iBroadcastNum)
        {
            var message = new Message
            {
                CurrentSenderAgent     = currentSenderAgent,
                CurrentSenderAgentId   = currentSenderAgent.AgentId,
                SenderAgentId          = senderAgent.AgentId,
                SenderAgent            = senderAgent,
                ReceiverAgent          = null,
                ReceiverAgentId        = "-1",
                MessageContent         = messageContent,
                MessageType            = messageType,
                NumOfBroadcastSteps    = iBroadcastNum,
                CurrentReceiverAgentId = "-1",
                CurrentReceiverAgent   = null
            };

            Container.ContainerMedia.SendMessage(message.Copy());
        }
Beispiel #3
0
        private void SendBroadcastMessage(Agent senderAgent,
                                          Agent currentSenderAgent,
                                          BroadcastType messageType,
                                          MessagesContent messageContent, int iBroadcastNum)
        {
            if (Status == State.Failed)
            {
                return;
            }

            var message = new Message
            {
                CurrentSenderAgent   = currentSenderAgent,
                CurrentSenderAgentId = currentSenderAgent.AgentId,
                SenderAgentId        = senderAgent.AgentId,
                SenderAgent          = senderAgent,
                ReceiverAgent        = null,
                ReceiverAgentId      = "-1",
                MessageContent       = messageContent,
                MessageType          = messageType,
                NumOfBroadcastSteps  = iBroadcastNum
            };
            var messengerAgent = FindNearestMessenger(Position);

            if (messengerAgent == null)
            {
                RadioRange += 50;
                SendBroadcastMessage(senderAgent, currentSenderAgent, messageType, messageContent, iBroadcastNum);
                return;
            }

            message.CurrentReceiverAgent   = messengerAgent;
            message.CurrentReceiverAgentId = messengerAgent.AgentId;

            Container.ContainerMedia.SendMessage(message.Copy());
        }