package iamrescue.communication.scenario;
import iamrescue.agent.ISimulationTimer;
import iamrescue.communication.IMessagingSchedule;
import iamrescue.communication.messages.Message;
import iamrescue.communication.messages.MessageChannel;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import rescuecore2.standard.entities.StandardEntityURN;
import rescuecore2.worldmodel.EntityID;
public interface ICommunicationScenario {
/**
* Returns the channels to communicate with other centers
*
* @return
*/
List<MessageChannel> getChannelsToOtherTeams();
/**
* Regardless of my actual type, what is the role I should be playing? I.e.
* if there is no Ambulance Center, an Ambulance might take this role.
*
* @return
*/
StandardEntityURN getMyRole();
/**
* Returns the channels to communicate with platoons that are associated
* with me
*
* @return
*/
List<MessageChannel> getChannelsToOwnTeam();
IMessagingSchedule getScheduler();
/**
* Returns a list of channels this agent should listen to
*
* @return
*/
List<MessageChannel> getChannelsToSubscribeTo();
/**
* Should distribute messages to the various teams on the channels.
*
* @return
*/
Map<MessageChannel, List<Message>> distributeMessages(
List<Message> messagesToOwnTeam,
List<Message> messagesToOtherTeams, ISimulationTimer timer);
void reinitialiseTeam(Collection<EntityID> toIgnore);
Collection<EntityID> getMyCentres();
boolean amICentre();
}