/// <summary>
 /// Sends data to the <see cref="INetworkSender"/>. This method is thread-safe.
 /// </summary>
 /// <param name="sender">The <see cref="INetworkSender"/> to use to send the data.</param>
 /// <param name="message">GameMessage to send to the User.</param>
 /// <param name="messageType">The <see cref="ServerMessageType"/> to use for sending the <paramref name="message"/>.</param>
 /// <param name="parameters">Message parameters.</param>
 public static void Send(this INetworkSender sender, GameMessage message, ServerMessageType messageType,
                         params object[] parameters)
 {
     using (var pw = ServerPacket.SendMessage(message, parameters))
     {
         sender.Send(pw, messageType);
     }
 }
示例#2
0
        /// <summary>
        /// Sends data to all users in the world. This method is thread-safe.
        /// </summary>
        /// <param name="message">GameMessage to send.</param>
        /// <param name="messageType">The <see cref="ServerMessageType"/> to use for sending the <paramref name="message"/>.</param>
        /// <param name="parameters">Message parameters.</param>
        public void Send(GameMessage message, ServerMessageType messageType, params object[] parameters)
        {
            using (var pw = ServerPacket.SendMessage(message, parameters))
            {
                foreach (var map in Maps)
                {
                    map.Send(pw, messageType);
                }

                foreach (var map in InstancedMaps)
                {
                    map.Send(pw, messageType);
                }
            }
        }
示例#3
0
        /// <summary>
        /// Sends data to all users in the map. This method is thread-safe.
        /// </summary>
        /// <param name="message">GameMessage to send.</param>
        /// <param name="messageType">The <see cref="ServerMessageType"/> to use for sending the <paramref name="message"/>.</param>
        /// <param name="parameters">Message parameters.</param>
        public void Send(GameMessage message, ServerMessageType messageType, params object[] parameters)
        {
            if (_users.Count == 0)
            {
                return;
            }

            using (var pw = ServerPacket.SendMessage(message, parameters))
            {
                foreach (var user in Users)
                {
                    user.Send(pw, messageType);
                }
            }
        }
示例#4
0
        public void GroupInvite(string userName)
        {
            if (!RequireInGroup())
            {
                return;
            }

            var target = World.FindUser(userName);

            if (target == null)
            {
                User.Send(GameMessage.GroupInviteFailedInvalidUser, ServerMessageType.GUI, userName);
                return;
            }

            if (target == User)
            {
                User.Send(GameMessage.GroupInviteFailedCannotInviteSelf, ServerMessageType.GUI);
                return;
            }

            if (!(((IGroupable)User).Group.TryInvite(target)))
            {
                // Invite failed
                if (((IGroupable)target).Group != null)
                {
                    User.Send(GameMessage.GroupInviteFailedAlreadyInGroup, ServerMessageType.GUI, target.Name);
                }
                else
                {
                    User.Send(GameMessage.GroupInviteFailedUnknownReason, ServerMessageType.GUI, target.Name);
                }
            }
            else
            {
                // Invite successful
                using (var pw = ServerPacket.SendMessage(GameMessage.GroupInvite, User.Name, target.Name))
                {
                    foreach (var u in ((IGroupable)User).Group.Members.OfType <User>())
                    {
                        u.Send(pw, ServerMessageType.GUI);
                    }
                }
            }
        }