package iamrescue.communication.messages.updates; 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.Building; import rescuecore2.standard.entities.StandardEntityURN; import rescuecore2.standard.entities.StandardPropertyURN; import rescuecore2.worldmodel.Entity; import rescuecore2.worldmodel.EntityID; /** * Used to inform that a building's properties have changed. * * @author rs06r */ public class BuildingUpdatedMessage extends EntityUpdatedMessage { public static final List<String> relevantProperties = new ArrayList<String>(); private static final Logger LOGGER = Logger .getLogger(BuildingUpdatedMessage.class); static { //relevantProperties.add(StandardPropertyURN.BROKENNESS.toString()); relevantProperties.add(StandardPropertyURN.FIERYNESS.toString()); //relevantProperties.add(StandardPropertyURN.BLOCKADES.toString()); //relevantProperties.add(StandardPropertyURN.TEMPERATURE.toString()); //relevantProperties.add(StandardPropertyURN.IGNITION.toString()); } @Override public List<String> getRelevantProperties() { return relevantProperties; } public BuildingUpdatedMessage(short timestamp) { super(timestamp); } @Override public IMessageCodec getCodec() { return new EntityUpdatedMessageCodec(relevantProperties) { @Override public byte getMessagePrefix() { return MessagePrefixes.BUILDING_UPDATE_PREFIX; } @Override protected Class<? extends Entity> getObjectClass() { return Building.class; } @Override protected Entity createObject(EntityID id) { LOGGER.error("Should not have to create new buildings."); return Registry.getCurrentRegistry().createEntity( StandardEntityURN.BUILDING.toString(), id); } @Override protected EntityUpdatedMessage createMessage(short timeStamp) { return new BuildingUpdatedMessage(timeStamp); } }; } @Override protected EntityUpdatedMessage createMessage(short timestamp) { return new BuildingUpdatedMessage(timestamp); } @Override protected boolean isCorrectObjectClass(Entity object) { return object instanceof Building; } @Override public String getMessageName() { return "BuildingUpdatedMessage"; } }