示例#1
0
        public static ChatChannel GetChannel(Player player, ushort channelId)
        {
            switch (channelId)
            {
            case Constants.ChatChannelGuild:
                //Guild* guild = player.getGuild(); //TODO: GUILD
                //if (guild) {
                //    auto it = guildChannels.find(guild->getId());
                //    if (it != guildChannels.end()) {
                //        return it->second;
                //    }
                //}
                break;

            case Constants.ChatChannelParty:
                //Party* party = player.getParty(); //TODO: PARTY
                //if (party) {
                //    auto it = partyChannels.find(party);
                //    if (it != partyChannels.end()) {
                //        return it->second;
                //    }
                //}
                break;

            default:
                ChatChannel channel;
                if (NormalChannels.TryGetValue(channelId, out channel))
                {
                    if (!channel.CanJoin(player))
                    {
                        return(null);
                    }
                    return(channel);
                }

                PrivateChatChannel pChannel;
                if (PrivateChannels.TryGetValue(channelId, out pChannel))
                {
                    if (pChannel.IsInvited(player.CharacterId))
                    {
                        return(pChannel);
                    }
                }
                break;
            }
            return(null);
        }
示例#2
0
        public static bool DeleteChannel(Player player, ushort channelId)
        {
            switch (channelId)
            {
            case Constants.ChatChannelGuild:
                //Guild* guild = player.getGuild(); //TODO: GUILD
                //if (!guild) {
                //    return false;
                //}

                //auto it = guildChannels.find(guild->getId());
                //if (it == guildChannels.end()) {
                //    return false;
                //}

                //delete it->second;
                //guildChannels.erase(it);
                break;

            case Constants.ChatChannelParty:
                //Party* party = player.getParty(); //TODO: PARTY
                //if (!party) {
                //    return false;
                //}

                //auto it = partyChannels.find(party);
                //if (it == partyChannels.end()) {
                //    return false;
                //}

                //delete it->second;
                //partyChannels.erase(it);
                break;

            default:
                PrivateChatChannel channel;
                if (!PrivateChannels.TryGetValue(channelId, out channel))
                {
                    return(false);
                }

                channel.CloseChannel();
                return(PrivateChannels.Remove(channelId));
            }
            return(true);
        }