package iamrescue.communication.messages.updates; import iamrescue.belief.entities.BlockInfoRoad; 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 org.apache.log4j.Logger; import rescuecore2.registry.Registry; import rescuecore2.standard.entities.Road; import rescuecore2.standard.entities.StandardEntityURN; import rescuecore2.standard.entities.StandardPropertyURN; import rescuecore2.worldmodel.Entity; import rescuecore2.worldmodel.EntityID; /** * Used to inform that a road's properties have changed. * * @author rs06r */ public class RoadUpdatedMessage extends EntityUpdatedMessage { public static final List<String> relevantProperties = new ArrayList<String>(); public static final Logger LOGGER = Logger .getLogger(RoadUpdatedMessage.class); static { relevantProperties.add(StandardPropertyURN.BLOCKADES.toString()); relevantProperties.add(BlockInfoRoad.HAS_BEEN_PASSED_URN); } @Override public List<String> getRelevantProperties() { return relevantProperties; } public RoadUpdatedMessage(short timestamp) { super(timestamp); } @Override public IMessageCodec getCodec() { return new EntityUpdatedMessageCodec(relevantProperties) { @Override public byte getMessagePrefix() { return MessagePrefixes.ROAD_UPDATE_PREFIX; } @Override protected Class<? extends Entity> getObjectClass() { return Road.class; } @Override protected Entity createObject(EntityID id) { LOGGER.error("Should not have to create new roads."); return Registry.getCurrentRegistry().createEntity( StandardEntityURN.ROAD.toString(), id); } @Override protected EntityUpdatedMessage createMessage(short timeStamp) { return new RoadUpdatedMessage(timeStamp); } }; } @Override protected EntityUpdatedMessage createMessage(short timestamp) { return new RoadUpdatedMessage(timestamp); } @Override protected boolean isCorrectObjectClass(Entity object) { return object instanceof Road; } @Override public String getMessageName() { return "RoadUpdatedMessage"; } }