示例#1
0
        /// <summary>
        /// Lets the player join/leave the appropriate chat-channels
        /// </summary>
        /// <param name="chr">the player</param>
        private void UpdateChannels(Character chr, Zone oldZone)
        {
            var newChannels = GetChatChannels(chr.FactionGroup);

            if (oldZone != null)
            {
                var oldChannels = oldZone.GetChatChannels(chr.FactionGroup);

                if (oldZone.Template.IsCity)
                {
                    ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.Leave(chr, false);
                }

                foreach (var oldChnl in oldChannels)
                {
                    if (!newChannels.Contains(oldChnl))
                    {
                        oldChnl.Leave(chr, false);
                    }
                }

                foreach (var newChnl in newChannels)
                {
                    if (!oldChannels.Contains(newChnl))
                    {
                        newChnl.TryJoin(chr);
                    }
                }
            }
            else
            {
                foreach (var newChnl in newChannels)
                {
                    newChnl.TryJoin(chr);
                }
            }

            if (Template.IsCity)
            {
                ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.TryJoin(chr);
            }
        }
示例#2
0
        /// <summary>
        /// Lets the player join/leave the appropriate chat-channels
        /// </summary>
        /// <param name="chr">the player</param>
        private void UpdateChannels(Character chr, Zone oldZone)
        {
            IList <ChatChannel> chatChannels1 = GetChatChannels(chr.FactionGroup);

            if (oldZone != null)
            {
                IList <ChatChannel> chatChannels2 = oldZone.GetChatChannels(chr.FactionGroup);
                if (oldZone.Template.IsCity)
                {
                    ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.Leave(chr, false);
                }
                foreach (ChatChannel chatChannel in chatChannels2)
                {
                    if (!chatChannels1.Contains(chatChannel))
                    {
                        chatChannel.Leave(chr, false);
                    }
                }

                foreach (ChatChannel chatChannel in chatChannels1)
                {
                    if (!chatChannels2.Contains(chatChannel))
                    {
                        chatChannel.TryJoin(chr);
                    }
                }
            }
            else
            {
                foreach (ChatChannel chatChannel in chatChannels1)
                {
                    chatChannel.TryJoin(chr);
                }
            }

            if (!Template.IsCity)
            {
                return;
            }
            ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.TryJoin(chr);
        }
示例#3
0
文件: Zone.cs 项目: remixod/netServer
		/// <summary>
		/// Lets the player join/leave the appropriate chat-channels
		/// </summary>
		/// <param name="chr">the player</param>
		private void UpdateChannels(Character chr, Zone oldZone)
		{
			var newChannels = GetChatChannels(chr.FactionGroup);
			if (oldZone != null)
			{
				var oldChannels = oldZone.GetChatChannels(chr.FactionGroup);

				if (oldZone.Template.IsCity)
				{
					ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.Leave(chr, false);
				}

				foreach (var oldChnl in oldChannels)
				{
					if (!newChannels.Contains(oldChnl))
					{
						oldChnl.Leave(chr, false);
					}
				}

				foreach (var newChnl in newChannels)
				{
					if (!oldChannels.Contains(newChnl))
					{
						newChnl.TryJoin(chr);
					}
				}
			}
			else
			{
				foreach (var newChnl in newChannels)
				{
					newChnl.TryJoin(chr);
				}
			}

			if (Template.IsCity)
			{
				ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.TryJoin(chr);
			}
		}