Refactored Building and Harvester Permission Lists, fixed AI pathing into cells

This commit is contained in:
Light2
2014-06-09 19:05:58 +02:00
parent 55624e8fd4
commit dd48daaca1
11 changed files with 172 additions and 52 deletions
@@ -35,6 +35,7 @@ import resources.datatables.Options;
import resources.objects.ObjectMessageBuilder;
import resources.objects.cell.CellObject;
import resources.objects.creature.CreatureObject;
import resources.objects.player.PlayerObject;
import resources.objects.tangible.TangibleObject;
import engine.clientdata.ClientFileManager;
import engine.clientdata.visitors.PortalVisitor;
@@ -54,6 +55,7 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
private Vector<Long> entryList = new Vector<Long>();
private Vector<Long> banList = new Vector<Long>();
private Vector<Long> adminList = new Vector<Long>();
public static final byte PRIVATE = (byte) 0;
public static final byte PUBLIC = (byte) 1;
@@ -289,6 +291,18 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(banListFirstNames, name));
}
public void setPermissionAdmin(String name, CreatureObject owner){
Vector<String> adminListFirstNames = new Vector<String>();
for (long oid : adminList) {
String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid);
adminListFirstNames.add(firstName);
}
owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(adminListFirstNames, name));
}
public void addPlayerToEntryList(CreatureObject owner, long oid, String firstName){
if (!entryList.contains(oid)){
SWGObject obj = NGECore.getInstance().objectService.getObject(oid);
@@ -329,6 +343,22 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
}
}
public void addPlayerToAdminList(CreatureObject owner, long oid, String firstName){
if (!adminList.contains(oid)){
adminList.add(oid);
if(owner != null)
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_added", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
}
}
public void removePlayerFromAdminList(CreatureObject owner, long oid, String firstName){
if (adminList.contains(oid)){
adminList.remove(oid);
if(owner != null)
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
}
}
@Override
public void notifyClients(IoBuffer buffer, boolean notifySelf) {
notifyObservers(buffer, false);
@@ -365,7 +395,7 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
}
public boolean canEnter(SWGObject object) {
return (getPrivacy() == PRIVATE && entryList.contains(object.getObjectID())) || !banList.contains(object.getObjectID());
return (getPrivacy() == PRIVATE && (entryList.contains(object.getObjectID()) || adminList.contains(object.getObjectID()))) || !banList.contains(object.getObjectID()) || object.getClient().isGM();
}
public void updateCellPermissions(SWGObject obj) {
@@ -374,4 +404,17 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
viewChildren(this, true, false, (cell) -> ((CellObject) cell).sendPermissionMessage(obj.getClient()));
}
public boolean isOnEntryList(CreatureObject creature) {
return entryList.contains(creature.getObjectID());
}
public boolean isOnBanList(CreatureObject creature) {
return banList.contains(creature.getObjectID());
}
public boolean isOnAdminList(CreatureObject creature) {
return adminList.contains(creature.getObjectID());
}
}