package iamrescue.communication; import iamrescue.communication.messages.MessageChannel; import iamrescue.communication.messages.MessageChannelType; import java.util.ArrayList; import java.util.List; import rescuecore2.standard.entities.StandardEntityURN; import rescuecore2.worldmodel.EntityID; public abstract class ASimulationCommunicationConfiguration implements ISimulationCommunicationConfiguration { private ArrayList<MessageChannel> radioChannels; private ArrayList<MessageChannel> voiceChannels; private EntityID id; private StandardEntityURN type; public ASimulationCommunicationConfiguration(EntityID id, StandardEntityURN myType) { this.id = id; this.type = myType; } @Override public EntityID getEntityID() { return id; } @Override public final List<MessageChannel> getRadioChannels() { if (radioChannels == null) { radioChannels = new ArrayList<MessageChannel>(); for (MessageChannel messageChannel : getChannels()) { if (messageChannel.getType() == MessageChannelType.RADIO) { radioChannels.add(messageChannel); } } } return radioChannels; } @Override public final List<MessageChannel> getVoiceChannels() { if (voiceChannels == null) { voiceChannels = new ArrayList<MessageChannel>(); for (MessageChannel messageChannel : getChannels()) { if (messageChannel.getType() == MessageChannelType.VOICE) { voiceChannels.add(messageChannel); } } } return voiceChannels; } @Override public final List<MessageChannel> getRadioChannels(int... indices) { List<MessageChannel> result = new ArrayList<MessageChannel>(); for (int index : indices) { result.add(getRadioChannels().get(index)); } return result; } @Override public MessageChannel getRadioChannel(int i) { return getRadioChannels().get(i); } @Override public final int getMaxListenChannelCount() { switch (type) { case AMBULANCE_TEAM: case FIRE_BRIGADE: case POLICE_FORCE: return getMaxListenChannelCountPlatoon(); case AMBULANCE_CENTRE: case FIRE_STATION: case POLICE_OFFICE: return getMaxListenChannelCountCentre(); } throw new IllegalArgumentException("Type unknown"); } @Override public final StandardEntityURN getAgentType() { return type; } @Override public int getRadioChannelCount() { return getRadioChannels().size(); } }