package iamrescue.communication.messages.updates;
import iamrescue.belief.entities.RoutingInfoBlockade;
import iamrescue.communication.messages.MessagePrefixes;
import iamrescue.communication.messages.codec.IMessageCodec;
import iamrescue.communication.messages.codec.updates.EntityUpdatedMessageCodec;
import java.util.ArrayList;
import java.util.List;
import rescuecore2.registry.Registry;
import rescuecore2.standard.entities.Blockade;
import rescuecore2.standard.entities.StandardEntityURN;
import rescuecore2.standard.entities.StandardPropertyURN;
import rescuecore2.worldmodel.Entity;
import rescuecore2.worldmodel.EntityID;
/**
* Used to inform that an agent's position has been changed.
*
* @author rs06r
*/
public class BlockadeUpdatedMessage extends EntityUpdatedMessage {
public static final List<String> relevantProperties = new ArrayList<String>();
static {
// relevantProperties.add(StandardPropertyURN.APEXES.toString());
relevantProperties.add(StandardPropertyURN.POSITION.toString());
//relevantProperties.add(StandardPropertyURN.X.toString());
//relevantProperties.add(StandardPropertyURN.Y.toString());
relevantProperties.add(RoutingInfoBlockade.BLOCK_INFO_URN);
relevantProperties.add(StandardPropertyURN.REPAIR_COST.toString());
}
// private WorldModelConverter converter;
@Override
public List<String> getRelevantProperties() {
return relevantProperties;
}
public BlockadeUpdatedMessage(short timestamp) {// , WorldModelConverter
// coverter) {
super(timestamp);
// this.converter = coverter;
}
// @Override
// public boolean providesOwnCodec(String propertyURN) {
// if (propertyURN.equals(RoutingInfoBlockade.BLOCK_INFO_URN)) {
// return true;
// } else {
// return false;
// }
// }
// @Override
// public PropertyCodec getOwnCodec(String propertyURN) {
// if (propertyURN.equals(RoutingInfoBlockade.BLOCK_INFO_URN)) {
// return new BlockedNeighboursCodec(converter);
// } else {
// return super.getOwnCodec(propertyURN);
// }
// }
@Override
public IMessageCodec getCodec() {
// final WorldModelConverter finalConverter = converter;
return new EntityUpdatedMessageCodec(relevantProperties) {
@Override
public byte getMessagePrefix() {
return MessagePrefixes.BLOCKADE_UPDATE_PREFIX;
}
@Override
protected Class<? extends Entity> getObjectClass() {
return Blockade.class;
}
@Override
protected Entity createObject(EntityID id) {
return Registry.getCurrentRegistry().createEntity(
StandardEntityURN.BLOCKADE.toString(), id);
}
@Override
protected EntityUpdatedMessage createMessage(short timeStamp) {
return new BlockadeUpdatedMessage(timeStamp);// ,
// finalConverter);
}
};
}
@Override
protected EntityUpdatedMessage createMessage(short timestamp) {
return new BlockadeUpdatedMessage(timestamp);// , converter);
}
@Override
protected boolean isCorrectObjectClass(Entity object) {
return object instanceof Blockade;
}
@Override
public String getMessageName() {
return "BlockadeUpdatedMessage";
}
}