Added automatic cell permission messages

This commit is contained in:
Light2
2014-06-04 22:29:56 +02:00
parent 5afdafae86
commit 4c9bc8ec66
4 changed files with 44 additions and 16 deletions
@@ -275,10 +275,7 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid);
entryListFirstNames.add(firstName);
}
entryListFirstNames.add("Peter");
entryListFirstNames.add("Jackson");
owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(entryListFirstNames, name));
}
@@ -289,38 +286,47 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid);
banListFirstNames.add(firstName);
}
banListFirstNames.add("Peter");
banListFirstNames.add("Smith");
owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(banListFirstNames, name));
}
public void addPlayerToEntryList(CreatureObject owner, long oid, String firstName){
if (!entryList.contains(oid)){
SWGObject obj = NGECore.getInstance().objectService.getObject(oid);
entryList.add(oid);
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_added", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
if(getObservers().contains(obj.getClient()))
updateCellPermissions(obj);
}
}
public void removePlayerFromEntryList(CreatureObject owner, long oid, String firstName){
if (entryList.contains(oid)){
SWGObject obj = NGECore.getInstance().objectService.getObject(oid);
entryList.remove(oid);
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
if(getObservers().contains(obj.getClient())) // TODO: eject player
updateCellPermissions(obj);
}
}
public void addPlayerToBanList(CreatureObject owner, long oid, String firstName){
if (!banList.contains(oid)){
SWGObject obj = NGECore.getInstance().objectService.getObject(oid);
banList.add(oid);
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_added", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
if(getObservers().contains(obj.getClient())) // TODO: eject player
updateCellPermissions(obj);
}
}
public void removePlayerFromBanList(CreatureObject owner, long oid, String firstName){
if (banList.contains(oid)){
SWGObject obj = NGECore.getInstance().objectService.getObject(oid);
banList.remove(oid);
owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen);
if(getObservers().contains(obj.getClient()))
updateCellPermissions(obj);
}
}
@@ -359,4 +365,14 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria
super.sendListDelta(viewType, updateType, buffer);
}
public boolean canEnter(SWGObject object) {
return (getPrivacy() == PRIVATE && entryList.contains(object.getObjectID())) || !banList.contains(object.getObjectID());
}
public void updateCellPermissions(SWGObject obj) {
if(obj.getClient() == null)
return;
viewChildren(this, true, false, (cell) -> ((CellObject) cell).sendPermissionMessage(obj.getClient()));
}
}
+14 -1
View File
@@ -27,6 +27,7 @@ import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.UpdateCellPermissionMessage;
import resources.objects.ObjectMessageBuilder;
import resources.objects.building.BuildingObject;
import com.sleepycat.persist.model.NotPersistent;
import com.sleepycat.persist.model.Persistent;
@@ -83,9 +84,21 @@ public class CellObject extends SWGObject implements Serializable {
destination.getSession().write(messageBuilder.buildBaseline3());
destination.getSession().write(messageBuilder.buildBaseline6());
destination.getSession().write(new UpdateCellPermissionMessage((byte) 1, getObjectID()).serialize());
sendPermissionMessage(destination);
}
public void sendPermissionMessage(Client destination) {
if(destination == null || destination.getSession() == null) {
System.out.println("NULL session");
return;
}
byte canEnter = (byte) (((BuildingObject) getContainer()).canEnter(destination.parent) ? 1 : 0);
destination.getSession().write(new UpdateCellPermissionMessage(canEnter, getObjectID()).serialize());
}
@Override
public void initAfterDBLoad() {