Removed getObjectByFirstName from ChatService (deprecated), Changed getting object by names methods to account for all type cases

These changes should fix a lot of issues (mainly chat related like
mails, tells, chat channels) for anything that was using the out-dated
getObjectByFirstName() in chatservice. Also it'll allow us to not have
to go through uppercase and lowercase versions every time we try and
pull an object by names.
This commit is contained in:
Waverunner
2014-07-11 23:17:07 +02:00
committed by CharonInferar
parent 1b6ad100f3
commit 667b9161d2
2 changed files with 37 additions and 43 deletions
+32 -39
View File
@@ -50,6 +50,7 @@ import resources.common.*;
import resources.datatables.DisplayType;
import resources.guild.Guild;
import resources.objects.creature.CreatureObject;
import resources.objects.group.GroupObject;
import resources.objects.player.PlayerObject;
import protocol.swg.AddIgnoreMessage;
import protocol.swg.ObjControllerMessage;
@@ -222,7 +223,7 @@ public class ChatService implements INetworkDispatch {
SWGObject recipient = getObjectByFirstName(firstName);
if (recipient == null)
if (recipient == null || !recipient.isInQuadtree())
return;
PlayerObject recipientGhost = (PlayerObject) recipient.getSlottedObject("ghost");
@@ -266,29 +267,34 @@ public class ChatService implements INetworkDispatch {
if(sender == null)
return;
// TODO: Recipient handling for values: citizens, group, guild ranks (ace, boot, admiral, etc.)
if (packet.getRecipient().equals("guild")) {
Guild guild = core.guildService.getGuildById(((CreatureObject) sender).getGuildId());
if (guild == null || !guild.getMembers().containsKey(sender.getObjectID())) {
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
switch (packet.getRecipient()) {
case "citizens": break;
case "guild":
Guild guild = core.guildService.getGuildById(((CreatureObject) sender).getGuildId());
if (guild == null || !guild.getMembers().containsKey(sender.getObjectID())) {
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
session.write(response.serialize());
return;
}
if (!guild.getMember(sender.getObjectID()).hasMailPermission()) {
((CreatureObject) sender).sendSystemMessage("@guild:generic_fail_no_permission", (byte) 0);
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
session.write(response.serialize());
return;
}
guild.sendGuildMail(sender.getCustomName(), packet.getSubject(), packet.getMessage());
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(0, packet.getCounter());
session.write(response.serialize());
return;
}
case "group": break;
if (!guild.getMember(sender.getObjectID()).hasMailPermission()) {
((CreatureObject) sender).sendSystemMessage("@guild:generic_fail_no_permission", (byte) 0);
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
session.write(response.serialize());
return;
}
guild.sendGuildMail(sender.getCustomName(), packet.getSubject(), packet.getMessage());
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(0, packet.getCounter());
session.write(response.serialize());
return;
default: break;
// TODO: Guild ranks
}
SWGObject recipient = core.objectService.getObjectByFirstName(packet.getRecipient());
if (recipient == null)
@@ -750,25 +756,6 @@ public class ChatService implements INetworkDispatch {
}
public SWGObject getObjectByFirstName(String name) {
ConcurrentHashMap<IoSession, Client> clients = core.getActiveConnectionsMap();
if(name.contains(" "))
name = name.split(" ")[0];
for(Client client : clients.values()) {
if(client.getParent() == null)
continue;
String fullName = client.getParent().getCustomName();
String firstName = fullName.split(" ")[0];
if(firstName.equalsIgnoreCase(name))
return client.getParent();
}
return null;
}
public int generateMailId() {
Random rand = new Random();
@@ -1077,4 +1064,10 @@ public class ChatService implements INetworkDispatch {
return message;
}
@Deprecated
public SWGObject getObjectByFirstName(String name) {
return core.objectService.getObjectByFirstName(name);
}
}
+5 -4
View File
@@ -52,6 +52,7 @@ import resources.datatables.PlayerFlags;
import resources.guild.Guild;
import resources.harvest.SurveyTool;
import org.apache.commons.lang3.text.WordUtils;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.python.core.Py;
@@ -606,7 +607,7 @@ public class ObjectService implements INetworkDispatch {
for(SWGObject obj : objectList.values()) {
if(obj.getCustomName() == null)
continue;
if(obj.getCustomName().equals(customName))
if(obj.getCustomName().equalsIgnoreCase(customName))
return obj;
}
@@ -621,7 +622,7 @@ public class ObjectService implements INetworkDispatch {
continue;
}
if (object.getCustomName() != null && customName.length() > 0 && object.getCustomName().equals(customName)) {
if (object.getCustomName() != null && customName.length() > 0 && object.getCustomName().equalsIgnoreCase(customName)) {
return object;
}
}
@@ -640,7 +641,7 @@ public class ObjectService implements INetworkDispatch {
continue;
if(obj.getCustomName() == null)
continue;
if(obj.getCustomName().startsWith(customName))
if(obj.getCustomName().startsWith(customName) || obj.getCustomName().toUpperCase().startsWith(WordUtils.capitalize(customName)))
return obj;
}
@@ -655,7 +656,7 @@ public class ObjectService implements INetworkDispatch {
continue;
}
if (object.getCustomName() != null && customName.length() > 0 && object.getCustomName().startsWith(customName)) {
if (object.getCustomName() != null && customName.length() > 0 && (object.getCustomName().startsWith(customName) || object.getCustomName().toUpperCase().startsWith(WordUtils.capitalize(customName)))) {
return object;
}
}