/// <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); } }
/// <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); }