From afb5c58447670fc687121506fc446a981beeeb45 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Wed, 12 Mar 2014 15:19:27 -0400 Subject: [PATCH] Reverted Changes Light's already fixed this --- src/services/ConnectionService.java | 11 +--- src/services/LoginService.java | 78 ++++++++++++-------------- src/services/object/ObjectService.java | 23 ++------ 3 files changed, 44 insertions(+), 68 deletions(-) diff --git a/src/services/ConnectionService.java b/src/services/ConnectionService.java index 94b05138..934efd58 100644 --- a/src/services/ConnectionService.java +++ b/src/services/ConnectionService.java @@ -226,13 +226,10 @@ public class ConnectionService implements INetworkDispatch { long parentId = object.getParentId(); - boolean removed = false; if(object.getContainer() == null) { boolean remove = core.simulationService.remove(object, object.getPosition().x, object.getPosition().z); - if(remove) { + if(remove) System.out.println("Successful quadtree remove"); - removed = true; - } } else { object.getContainer()._remove(object); object.setParentId(parentId); @@ -253,10 +250,8 @@ public class ConnectionService implements INetworkDispatch { object.createTransaction(core.getCreatureODB().getEnvironment()); core.getCreatureODB().put(object, Long.class, CreatureObject.class, object.getTransaction()); object.getTransaction().commitSync(); - if(removed) - core.objectService.destroyObject(object, false); - else - core.objectService.destroyObject(object); + core.objectService.destroyObject(object); + } diff --git a/src/services/LoginService.java b/src/services/LoginService.java index 2cdc4e38..374400ef 100644 --- a/src/services/LoginService.java +++ b/src/services/LoginService.java @@ -42,6 +42,7 @@ import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; import engine.resources.service.LocalDbLoginProvider; import engine.resources.service.VBLoginProvider; + import protocol.swg.CharacterCreationDisabled; import protocol.swg.ClientUIErrorMessage; import protocol.swg.DeleteCharacterMessage; @@ -55,6 +56,7 @@ import protocol.swg.ServerNowEpochTime; import protocol.swg.StationIdHasJediSlot; import resources.common.*; import resources.datatables.PlayerFlags; + import resources.objects.creature.CreatureObject; @SuppressWarnings("unused") @@ -179,50 +181,42 @@ public class LoginService implements INetworkDispatch{ DeleteCharacterMessage packet = new DeleteCharacterMessage(); packet.deserialize(data); Client client = core.getClient(session); - - PreparedStatement preparedStatement; - - preparedStatement = databaseConnection1.preparedStatement("DELETE FROM characters WHERE \"id\"=? AND \"galaxyId\"=? AND \"accountId\"=?"); - preparedStatement.setLong(1, packet.getcharId()); - preparedStatement.setInt(2, packet.getgalaxyId()); - preparedStatement.setInt(3, (int) client.getAccountId()); - boolean resultSet = preparedStatement.execute(); - CreatureObject object = (CreatureObject) core.objectService.getObject(packet.getcharId()); - - // TODO: Revert DELETE if everything fails for some reason... ? - if(!resultSet) { - if (object != null) { - boolean destroyed = false; - if(object.isInQuadtree() && object.getClient() != null) { - core.connectionService.disconnect(object.getClient()); // destroyed in method - destroyed = true; - } - else { - core.objectService.destroyObject(object, false, false); - destroyed = true; - } - if(destroyed) { - core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class); - DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(0); - session.write(reply.serialize()); - } else { - //core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class); - DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(1); - session.write(reply.serialize()); - } - } else { - //core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class); - DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(1); - session.write(reply.serialize()); - } - } else { - //core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class); - DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(1); - session.write(reply.serialize()); - } - preparedStatement.close(); + + PreparedStatement preparedStatement; + + preparedStatement = databaseConnection1.preparedStatement("DELETE FROM characters WHERE \"id\"=? AND \"galaxyId\"=? AND \"accountId\"=?"); + preparedStatement.setLong(1, packet.getcharId()); + preparedStatement.setInt(2, packet.getgalaxyId()); + preparedStatement.setInt(3, (int) client.getAccountId()); + boolean resultSet = preparedStatement.execute(); + + //TODO: send deletecharacter failed + if(!resultSet) { + CreatureObject object = (CreatureObject) core.objectService.getObject(packet.getcharId()); + + if (object != null) { + if (object.isInQuadtree() && object.getClient() != null) { + core.connectionService.disconnect(object.getClient()); + } + + if (object.isInQuadtree()) { + core.simulationService.remove(object, object.getPosition().x, object.getPosition().z, true); + } + + core.objectService.destroyObject(object); + } + + core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class); + DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(0); + session.write(reply.serialize()); + } + + preparedStatement.close(); + } + }); + } public void shutdown() { diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index e756aab7..6771397a 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -357,22 +357,18 @@ public class ObjectService implements INetworkDispatch { public Map getObjectList() { return objectList; } - public void destroyObject(SWGObject object) { - destroyObject(object, false, true); - } - public void destroyObject(final SWGObject object, int seconds) { scheduler.schedule(new Runnable() { @Override public void run() { - destroyObject(object, false, true); + destroyObject(object); } }, seconds, TimeUnit.SECONDS); } - public void destroyObject(SWGObject object, boolean notify, boolean removeFromQt) { + public void destroyObject(SWGObject object) { if (object == null) { return; } @@ -415,29 +411,20 @@ public class ObjectService implements INetworkDispatch { objectList.remove(obj.getObjectID()); } }); - - if(removeFromQt && !notify) - core.simulationService.remove(object, object.getPosition().x, object.getPosition().y); - - else if(notify && removeFromQt) - core.simulationService.remove(object, object.getPosition().x, object.getPosition().y, true); - objectList.remove(object.getObjectID()); - + core.simulationService.remove(object, object.getPosition().x, object.getPosition().y); + } public void destroyObject(long objectID) { SWGObject object = getObject(objectID); if(object != null) { - destroyObject(object, false, true); + destroyObject(object); } } - public void destroyObject(SWGObject object, boolean removeFromQt) { - destroyObject(object, false, removeFromQt); - } public SWGObject getObjectByCustomName(String customName) { synchronized(objectList) {