Added respawning (ie. for lifeday trees)

This commit is contained in:
Treeku
2013-11-10 08:43:25 +00:00
parent 76ebe9a5c1
commit 6b47d8d0b2
4 changed files with 63 additions and 5 deletions
+23
View File
@@ -33,7 +33,9 @@ import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import resources.common.*;
@@ -51,6 +53,7 @@ import protocol.swg.CmdStartScene;
import protocol.swg.HeartBeatMessage;
import protocol.swg.ParametersMessage;
import protocol.swg.SelectCharacter;
import protocol.swg.ServerTimeMessage;
import protocol.swg.UnkByteFlag;
import engine.clientdata.ClientFileManager;
import engine.clientdata.visitors.CrcStringTableVisitor;
@@ -94,6 +97,8 @@ public class ObjectService implements INetworkDispatch {
private Map<String, PyObject> serverTemplates = new ConcurrentHashMap<String, PyObject>();
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public ObjectService(final NGECore core) {
this.core = core;
databaseConnection = core.getDatabase1();
@@ -249,6 +254,24 @@ public class ObjectService implements INetworkDispatch {
public void destroyObject(SWGObject object) {
if (object instanceof TangibleObject &&
((TangibleObject) object).getRespawnTime() > 0) {
final long objectId = object.getObjectID();
final String Template = object.getTemplate();
final Planet planet = object.getPlanet();
final Point3D position = object.getPosition();
final Quaternion orientation = object.getOrientation();
scheduler.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
createObject(Template, objectId, planet, position, orientation);
}
}, 0, ((TangibleObject) object).getRespawnTime(), TimeUnit.SECONDS);
}
object.viewChildren(object, true, true, new Traverser() {
@Override
public void process(SWGObject obj) {