Fixed NGE-395 'New characters dont crash spawned in characters anymore'

This commit is contained in:
Obique PSWG
2016-05-24 09:43:42 -05:00
parent 6c4d21ecb7
commit da71dd34f5
12 changed files with 90 additions and 108 deletions
+12 -55
View File
@@ -46,7 +46,6 @@ import network.packets.Packet;
import network.packets.swg.ErrorMessage;
import network.packets.swg.zone.SceneDestroyObject;
import network.packets.swg.zone.insertion.SelectCharacter;
import resources.Location;
import resources.control.Intent;
import resources.control.Manager;
import resources.objects.SWGObject;
@@ -223,12 +222,19 @@ public class ObjectManager extends Manager {
}
private void processObjectCreatedIntent(ObjectCreatedIntent intent) {
putObject(intent.getObject());
if (!(intent.getObject() instanceof AIObject))
SWGObject obj = intent.getObject();
putObject(obj);
if (obj instanceof CreatureObject && ((CreatureObject) obj).isPlayer()) {
synchronized (database) {
database.put(obj.getObjectId(), obj);
database.save();
}
}
if (!(obj instanceof AIObject))
return;
synchronized (objectMap) {
if (started.get())
((AIObject) intent.getObject()).aiStart();
((AIObject) obj).aiStart();
}
}
@@ -257,7 +263,7 @@ public class ObjectManager extends Manager {
}
}
public SWGObject deleteObject(long objId) {
private SWGObject deleteObject(long objId) {
synchronized (database) {
database.remove(objId);
database.save();
@@ -279,14 +285,8 @@ public class ObjectManager extends Manager {
objectMap.put(object.getObjectId(), object);
}
}
public SWGObject destroyObject(long objectId) {
SWGObject object = getObjectById(objectId);
return (object != null ? destroyObject(object) : null);
}
public SWGObject destroyObject(SWGObject object) {
private SWGObject destroyObject(SWGObject object) {
long objId = object.getObjectId();
@@ -321,49 +321,6 @@ public class ObjectManager extends Manager {
return object;
}
public SWGObject createObject(String template) {
return createObject(template, null);
}
public SWGObject createObject(SWGObject parent, String template) {
return createObject(parent, template, null);
}
public SWGObject createObject(String template, Location l) {
return createObject(template, l, true);
}
public SWGObject createObject(SWGObject parent, String template, boolean addToDatabase) {
return createObject(parent, template, null, addToDatabase);
}
public SWGObject createObject(SWGObject parent, String template, Location l) {
return createObject(parent, template, l, true);
}
public SWGObject createObject(String template, Location l, boolean addToDatabase) {
return createObject(null, template, l, addToDatabase);
}
public SWGObject createObject(SWGObject parent, String template, Location l, boolean addToDatabase) {
SWGObject obj = ObjectCreator.createObjectFromTemplate(template);
if (obj == null) {
Log.e(this, "Unable to create object with template " + template);
return null;
}
obj.setLocation(l);
obj.moveToContainer(parent);
synchronized (database) {
if (addToDatabase) {
database.put(obj.getObjectId(), obj);
database.save();
}
}
Log.v("ObjectManager", "Created object %d [%s]", obj.getObjectId(), obj.getTemplate());
new ObjectCreatedIntent(obj).broadcast();
return obj;
}
private void zoneInCharacter(PlayerManager playerManager, long netId, long characterId) {
Player player = playerManager.getPlayerFromNetworkId(netId);
if (player == null) {