001    /**
002     * Jetrix TetriNET Server
003     * Copyright (C) 2001-2004  Emmanuel Bourg
004     *
005     * This program is free software; you can redistribute it and/or
006     * modify it under the terms of the GNU General Public License
007     * as published by the Free Software Foundation; either version 2
008     * of the License, or (at your option) any later version.
009     *
010     * This program is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013     * GNU General Public License for more details.
014     *
015     * You should have received a copy of the GNU General Public License
016     * along with this program; if not, write to the Free Software
017     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
018     */
019    
020    package net.jetrix.commands;
021    
022    import net.jetrix.*;
023    import net.jetrix.config.*;
024    import net.jetrix.messages.channel.CommandMessage;
025    import net.jetrix.messages.channel.PlineMessage;
026    
027    /**
028     * List all players connected to the server.
029     *
030     * @author Emmanuel Bourg
031     * @version $Revision: 857 $, $Date: 2010-05-04 19:55:19 +0200 (mar., 04 mai 2010) $
032     */
033    public class WhoCommand extends AbstractCommand
034    {
035        public String[] getAliases()
036        {
037            return (new String[] { "who", "w", "cwho" });
038        }
039    
040        public void execute(CommandMessage m)
041        {
042            Client client = (Client) m.getSource();
043            ChannelManager channelManager = ChannelManager.getInstance();
044    
045            PlineMessage response = new PlineMessage();
046            response.setKey("command.who.header");        
047            client.send(response);
048    
049            for(Channel channel : channelManager.channels())
050            {
051                // skipping empty channels
052                if (channel.getPlayerCount() > 0)
053                {
054                    ChannelConfig conf = channel.getConfig();
055    
056                    boolean isInChannel = false;
057                    String channelColor = "<purple>";
058                    StringBuilder message = new StringBuilder();
059                    message.append("[" + conf.getName() + "] <darkBlue>");
060    
061                    for (int i = 1; i <= 6; i++)
062                    {
063                        Client clientInChannel = channel.getClient(i);
064                        if (clientInChannel != null)
065                        {
066                            User user = clientInChannel.getUser();
067    
068                            message.append(" ");
069    
070                            if (user.isRegistered())
071                            {
072                                message.append("<purple>�</purple>");
073                            }
074                            
075                            boolean fast = clientInChannel.getProtocol().getName().equals("tetrifast");
076                            
077                            if (user.getAccessLevel() > AccessLevel.PLAYER) message.append("<b>");
078                            if (fast) message.append("<i>");
079                            message.append(user.getName());
080                            if (fast) message.append("</i>");
081                            if (user.getAccessLevel() > AccessLevel.PLAYER) message.append("</b>");
082                        }
083    
084                        if (client == clientInChannel)
085                        {
086                            isInChannel = true;
087                        }
088                    }
089    
090                    if (isInChannel) channelColor = "<red>";
091    
092                    Message response2 = new PlineMessage(channelColor + message.toString());
093                    client.send(response2);
094                }
095            }
096        }
097    }