Refactored ChatRoom to store Strings for lists instead of CreatureObject

This commit is contained in:
Waverunner
2014-04-10 14:45:00 -04:00
parent 6374f9d5b8
commit b8b33a5019
3 changed files with 56 additions and 46 deletions
@@ -54,37 +54,37 @@ public class ChatQueryRoomResults extends SWGMessage {
buffer.putShort((short) 7);
buffer.putInt(0xC4DE864E);
Vector<CreatureObject> users = room.getUserList();
Vector<String> users = room.getUserList();
buffer.putInt(users.size());
if (users.size() > 0) {
for (CreatureObject creo : users) {
for (String str : users) {
buffer.put(getAsciiString("SWG"));
buffer.put(getAsciiString(server));
buffer.put(getAsciiString(creo.getCustomName()));
buffer.put(getAsciiString(str));
}
}
buffer.putInt(0); // TODO: Invited list for chat rooms
Vector<CreatureObject> moderators = room.getModeratorList();
Vector<String> moderators = room.getModeratorList();
buffer.putInt(moderators.size());
if (moderators.size() > 0) {
for (CreatureObject creo : users) {
for (String str : moderators) {
buffer.put(getAsciiString("SWG"));
buffer.put(getAsciiString(server));
buffer.put(getAsciiString(creo.getCustomName()));
buffer.put(getAsciiString(str));
}
}
Vector<CreatureObject> banned = room.getBanList();
Vector<String> banned = room.getBanList();
buffer.putInt(banned.size());
if (banned.size() > 0) {
for (CreatureObject creo : users) {
for (String str : banned) {
buffer.put(getAsciiString("SWG"));
buffer.put(getAsciiString(server));
buffer.put(getAsciiString(creo.getCustomName()));
buffer.put(getAsciiString(str));
}
}
+33 -21
View File
@@ -37,10 +37,10 @@ public class ChatRoom {
private int roomId;
private String roomAddress; // name
private Vector<CreatureObject> moderatorList = new Vector<CreatureObject>();
private Vector<CreatureObject> banList = new Vector<CreatureObject>();
private Vector<String> moderatorList = new Vector<String>();
private Vector<String> banList = new Vector<String>();
@NotPersistent
private Vector<CreatureObject> userList = new Vector<CreatureObject>(); // current users
private Vector<String> userList = new Vector<String>(); // current users
private boolean moderatorsOnly;
private boolean privateRoom;
@@ -50,9 +50,9 @@ public class ChatRoom {
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
this.creator = creator.toLowerCase();
}
public String getRoomAddress() {
@@ -71,22 +71,14 @@ public class ChatRoom {
this.roomId = roomId;
}
public Vector<CreatureObject> getModeratorList() {
public Vector<String> getModeratorList() {
return moderatorList;
}
public void setModeratorList(Vector<CreatureObject> moderatorList) {
this.moderatorList = moderatorList;
}
public Vector<CreatureObject> getUserList() {
public Vector<String> getUserList() {
return userList;
}
public void setUserList(Vector<CreatureObject> userList) {
this.userList = userList;
}
public boolean isModeratorsOnly() {
return moderatorsOnly;
}
@@ -108,17 +100,13 @@ public class ChatRoom {
}
public void setOwner(String owner) {
this.owner = owner;
this.owner = owner.toLowerCase();
}
public Vector<CreatureObject> getBanList() {
public Vector<String> getBanList() {
return banList;
}
public void setBanList(Vector<CreatureObject> banList) {
this.banList = banList;
}
public String getDescription() {
return description;
}
@@ -134,4 +122,28 @@ public class ChatRoom {
public void setVisible(boolean visible) {
this.visible = visible;
}
public void addUser(String user) {
userList.add(user.toLowerCase());
}
public void addModerator(String moderator) {
moderatorList.add(moderator.toLowerCase());
}
public void banUser(String user) {
banList.add(user.toLowerCase());
}
public boolean hasUser(String user) {
return userList.contains(user.toLowerCase());
}
public boolean hasModerator(String moderator) {
return moderatorList.contains(moderator.toLowerCase());
}
public boolean hasBan(String user) {
return banList.contains(user.toLowerCase());
}
}
+14 -16
View File
@@ -451,7 +451,7 @@ public class ChatService implements INetworkDispatch {
ChatEnterRoomById sentPacket = new ChatEnterRoomById();
sentPacket.deserialize(data);
joinChatRoom((CreatureObject) obj, sentPacket.getRoomId());
joinChatRoom(obj.getCustomName(), sentPacket.getRoomId());
//System.out.println("Entering room... " + sentPacket.getRoomId());
@@ -763,24 +763,25 @@ public class ChatService implements INetworkDispatch {
return room;
}
public void joinChatRoom(CreatureObject player, int roomId) {
public void joinChatRoom(String user, int roomId) {
String playerName = player.getCustomName().toLowerCase();
if (playerName.contains(" "))
playerName = playerName.split(" ")[0];
if (user.contains(" "))
user = user.split(" ")[0];
ChatRoom room = getChatRoom(roomId);
if (room == null)
return;
ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(playerName, 0, roomId, true);
if (!room.getUserList().contains(player))
room.getUserList().add(player);
room.getUserList().stream().forEach(user -> user.getClient().getSession().write(enterRoom.serialize()));
if (!room.hasUser(user)) {
ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(user, 0, roomId, true);
room.addUser(user);
room.getUserList().stream().forEach(str -> {
SWGObject userObj = getObjectByFirstName(str);
if (userObj != null) { userObj.getClient().getSession().write(enterRoom.serialize()); }
});
}
}
public void leaveChatRoom(CreatureObject player, int roomId) {
@@ -815,11 +816,8 @@ public class ChatService implements INetworkDispatch {
sender.getClient().getSession().write(onSend.serialize());
ChatRoomMessage roomMessage = new ChatRoomMessage(roomId, senderName, message);
Vector<CreatureObject> users = room.getUserList();
Vector<String> users = room.getUserList();
for (CreatureObject user : users) {
user.getClient().getSession().write(roomMessage.serialize());
}
}
public ConcurrentHashMap<Integer, ChatRoom> getChatRooms() {