package org.pokenet.client.network; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IoSession; import org.pokenet.client.GameClient; import org.pokenet.client.ui.Ui; /** * Handles chat messages * @author shadowkanji * */ public class ChatProtocolHandler extends IoHandlerAdapter { /** * Called when a message is received from chat server */ public void messageReceived(IoSession session, Object m) throws Exception { String message = (String) m; String [] details = null; switch(message.charAt(0)) { case 'l': switch(message.charAt(1)) { case 's': //Successful login - ls break; case 'e': //Invalid username or password - le break; case 'c': //Chat server couldn't connect to database - lc break; case 'r': //This user left a room - rROOMNUMBER break; } break; case 'f': //Friends online list - fUSERNAME,USERNAME,USERNAME,etc. details = message.substring(1).split(","); for (String friend : details){ Ui.getInstance().getFriendsList().setFriendOnline(friend, true); } break; case 'F': // A friend logged on/off switch(message.charAt(1)) { case 'n': //Logged on GameClient.getInstance().getUi().getFriendsList().setFriendOnline(message.substring(2), true); break; case 'f': //Logged off GameClient.getInstance().getUi().getFriendsList().setFriendOnline(message.substring(2), false); break; } break; case 'a': //Friend added - aUSERNAME Ui.getInstance().getFriendsList().addFriend(message.substring(1)); break; case 'r': //Friend removed - rUSERNAME Ui.getInstance().getFriendsList().removeFriend(message.substring(1)); break; case 'j': //Joined chatroom - jROOMNUMBER,ROOMNAME details = message.substring(1).split(","); Ui.getInstance().getChat().addChat(details[1], false); break; case 'p': //Private chat - pUSERNAME,MESSAGE details = message.substring(1).split(","); Ui.getInstance().getChat().addChat(details[0], true); Ui.getInstance().getChat().addWhisperLine(details[0], details[1]); break; case 'c': //Chatroom chat - cROOMNUMBER,MESSAGE (NOTE: MESSAGE = <Username> Hi guys!) details = message.substring(1).split(","); Ui.getInstance().getChat().addChatLine(Integer.parseInt(details[0]), details[1]); break; case 'C': //Chatroom could not be created break; case 'E': //Chatroom no longer exists break; case 'R': //Add room to list of available rooms - RROOMNUMBER,ROOMNAME details = message.substring(1).split(","); Ui.getInstance().getChat().addChat(details[1], false); break; case '!': //Announcement - !MESSAGE Ui.getInstance().getChat().addSystemMessage( message.substring(1)); break; } } }