Join/part messages are not added to history.

This commit is contained in:
marcins78@gmail.com
2011-12-04 14:13:27 +00:00
parent 0f364aa6fe
commit fcdde94f0e

View File

@@ -10,28 +10,34 @@ public class ChatRoom {
public ChatRoom() { public ChatRoom() {
} }
public void postMessage(String from, String message) { private void postMessage(String from, String message, boolean addToHistory) {
ChatMessage chatMessage = new ChatMessage(new Date(), from, message); ChatMessage chatMessage = new ChatMessage(new Date(), from, message);
_lastMessages.add(chatMessage); if (addToHistory) {
shrinkLastMessages(); _lastMessages.add(chatMessage);
shrinkLastMessages();
}
for (Map.Entry<String, ChatRoomListener> listeners : _chatRoomListeners.entrySet()) for (Map.Entry<String, ChatRoomListener> listeners : _chatRoomListeners.entrySet())
if (!listeners.getKey().equals(from)) if (!listeners.getKey().equals(from))
listeners.getValue().messageReceived(chatMessage); listeners.getValue().messageReceived(chatMessage);
} }
public void postMessage(String from, String message) {
postMessage(from, message, true);
}
public void joinChatRoom(String playerId, ChatRoomListener listener) { public void joinChatRoom(String playerId, ChatRoomListener listener) {
boolean wasInRoom = _chatRoomListeners.containsKey(playerId); boolean wasInRoom = _chatRoomListeners.containsKey(playerId);
_chatRoomListeners.put(playerId, listener); _chatRoomListeners.put(playerId, listener);
for (ChatMessage lastMessage : _lastMessages) for (ChatMessage lastMessage : _lastMessages)
listener.messageReceived(lastMessage); listener.messageReceived(lastMessage);
if (!wasInRoom) if (!wasInRoom)
postMessage("System", playerId + " joined the room"); postMessage("System", playerId + " joined the room", false);
} }
public void partChatRoom(String playerId) { public void partChatRoom(String playerId) {
boolean wasInRoom = (_chatRoomListeners.remove(playerId) != null); boolean wasInRoom = (_chatRoomListeners.remove(playerId) != null);
if (wasInRoom) if (wasInRoom)
postMessage("System", playerId + " left the room"); postMessage("System", playerId + " left the room", false);
} }
public Set<String> getUsersInRoom() { public Set<String> getUsersInRoom() {