📄 centermessagemanager.java
字号:
package MRL.Utilities.MessageManagement;import yab.agent.DisasterSpace;import yab.agent.object.*;import yab.io.RCRSSProtocolSocket;import java.util.Collection;import java.util.Iterator;import java.util.Collections;import MRL.Utilities.Partitioning.Partition;/** * Message Manager for SBCe_Saviour 2006 * by Maryam Kalantary * **/public class CenterMessageManager extends BaseMessageManager{ public CenterMessageManager(RCRSSProtocolSocket socket, DisasterSpace world) { super(socket, world); fromAmbulanceCenter = fromFireStation = fromPoliceOffice = 0; listenToAmbulanceCenter = listenToFireCenter = listenToPoliceOffice = true; if (world.self instanceof PoliceOffice && world.policeForces.size() == 1) { listenToAmbulanceCenter = false; } if (world.self instanceof FireStation && world.fireBrigades.size() == 1) { listenToAmbulanceCenter = false; } if (world.self instanceof AmbulanceCenter && world.ambulanceTeams.size() == 1) { listenToFireCenter = false; } } private int fromAmbulanceCenter; private int fromFireStation; private int fromPoliceOffice; private boolean listenToAmbulanceCenter; private boolean listenToFireCenter; private boolean listenToPoliceOffice; public void importMessage(byte[] message, int time, RealObject sender) { if (sender == world.self) { return; } if (sender instanceof PoliceOffice) { if (fromPoliceOffice != time) { if (listenToPoliceOffice) { parseMessage(message, time, sender, true); fromPoliceOffice = time; } else { if (time % 2 == 0) { parseMessage(message, time, sender, true); fromPoliceOffice = time; } } } } else if (sender instanceof FireStation) { if (fromFireStation != time) { if (listenToFireCenter) { parseMessage(message, time, sender, true); fromPoliceOffice = time; } else { if (world.self instanceof AmbulanceCenter && time % 2 == 1 || world.self instanceof PoliceOffice && time % 2 == 0) { parseMessage(message, time, sender, true); fromPoliceOffice = time; } } } } else if (sender instanceof AmbulanceCenter) { if (fromAmbulanceCenter != time) { if (listenToAmbulanceCenter) { parseMessage(message, time, sender, true); fromAmbulanceCenter = time; } else { if (time % 2 == 1) { parseMessage(message, time, sender, true); fromAmbulanceCenter = time; } } } } else { parseMessage(message, time, sender, true); } } public void sendMessages() { sendMessages(STATION_MSG_COUNT - 1, messagesToCenters); sendMessages(1, messagesToAgents); } /////////////////////////////////////////// public void reportSetPartition(PoliceForce police, Partition part) { // System.out.println("BOOOOOOOOOOOOOOOOOOOOOOOOGH"); Collections.sort(world.policeForces, yab.agent.Util.idComparator); Message message = new SetPartitionMessage(world.policeForces.indexOf(police), part.getID()); messagesToAgents.add(message); } public void reportTarget(AmbulanceTeam ambulance, Humanoid target) { // System.out.println("BOOOOOOOOOOOOOOOOOOOOOOOOGH"); Collections.sort(world.ambulanceTeams, yab.agent.Util.idComparator); Message message = new TargetMessage(world.ambulanceTeams.indexOf(ambulance), target.id); messagesToAgents.add(message); } public void reportTask(PoliceForce pf , int task){ Collections.sort(world.policeForces, yab.agent.Util.idComparator); Message message = new TaskMessage(world.policeForces.indexOf(pf),task); messagesToAgents.add(message); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -