Fixed LD within buildings and non-object awareness on zone in

This commit is contained in:
Obique
2018-03-19 01:07:45 -05:00
parent 3706b98abf
commit b1ef9a6725
4 changed files with 22 additions and 0 deletions
@@ -88,6 +88,7 @@ public class TerrainMap {
aware = getNearbyAware(obj);
else
aware = superParent.getAware(AwarenessType.OBJECT);
aware.removeIf(a -> !AwarenessUtilities.isInAwareness(a));
recursiveAdd(aware, obj);
return aware;
}
@@ -104,6 +104,19 @@ public class CreatureObject extends TangibleObject {
awareness.flushAware(getOwner());
}
public void resetObjectsAware() {
if (isPlayer())
awareness.resetObjectsAware();
}
public void addObjectsAware() {
if (isPlayer()) {
for (SWGObject obj : getAware()) {
awareness.addAware(obj);
}
}
}
@Override
public void addObject(SWGObject obj) {
super.addObject(obj);
@@ -93,6 +93,12 @@ public class CreatureObjectAwareness {
}
}
public synchronized void resetObjectsAware() {
aware.clear();
pendingAdd.clear();
pendingRemove.clear();
}
List<SWGObject> getCreateList() {
List<SWGObject> list = new ArrayList<>();
List<SWGObject> sortedDepth = new ArrayList<>(pendingAdd);
@@ -166,8 +166,10 @@ public class AwarenessService extends Service {
creature.systemMove(parent, loc);
creature.setOwner(null);
creature.setAware(AwarenessType.OBJECT, Collections.emptyList());
creature.resetObjectsAware();
creature.setOwner(player);
startZone(creature, firstZone);
creature.addObjectsAware();
awareness.updateObject(creature);
}