📄 agentmessagemanager.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.Path;/** * Message Manager for SBCe_Saviour 2006 * by Maryam Kalantary * **/public class AgentMessageManager extends BaseMessageManager{ private int fromCenter; public AgentMessageManager(RCRSSProtocolSocket socket, DisasterSpace world) { super(socket, world); fromCenter = 0; } public void importMessage(byte[] message, int time, RealObject sender) { if (sender == world.self) { return; } if (!(sender instanceof Building)) { return; } if (fromCenter == time) { parseMessage(message, time, sender, false); } else { fromCenter = time; } } public void sendMessages() { if (!messagesToCenters.isEmpty()) { sendMessages(0, messagesToCenters); } else { clearForNextCycle(); } } public void reportVictim(Humanoid victim) { if (victim != null) { Message message = new VictimMessage(victim); messagesToCenters.add(message); } } public void reportVictim(Collection victims) { for (Iterator i = victims.iterator(); i.hasNext();) { Humanoid h = (Humanoid) i.next(); Message message = new VictimMessage(h); messagesToCenters.add(message); } } public void reportFire(Building building) { if (building != null) { Message message = new FireMessage(building); messagesToCenters.add(message);// log ("\nFire Report send Building Id = " + building.id + " virtual Id = " + ((Integer)(idToVirtualId.get (new Integer(building.id)))).toString () +"\n"); } } public void reportFire(Collection building) { for (Iterator iterator = building.iterator(); iterator.hasNext();) { Building b = (Building) iterator.next(); Message message = new FireMessage(b); messagesToCenters.add(message);// log ("\nFire Report send Building Id = " + b.id + " virtual Id = " + ((Integer)(idToVirtualId.get (new Integer(b.id)))).toString () +"\n"); } } //saeed 85-2-3 public void reportClear(Road road) { if (road != null) { //log ("\n CLEAR REPORTER " + road.id); Message message = new ClearMessage(road); messagesToCenters.add(message); } } public void reportClear(Collection roads) { for (Iterator iterator = roads.iterator(); iterator.hasNext();) { MotionlessObject r = (MotionlessObject) iterator.next(); //r.reportNumber++; // inc number of reported a road; if (r instanceof Road) { //log ("\n CLEAR REPORTER " + r.id); Message message = new ClearMessage((Road) r); messagesToCenters.add(message); } } } public void reportEmptyBuilding(Building building) { if (building != null) { Message message = new EmptyBuildingMessage(building); messagesToCenters.add(message); } } public void reportEmptyBuilding(Collection buildings) { for (Iterator iterator = buildings.iterator(); iterator.hasNext();) { MotionlessObject b = (MotionlessObject) iterator.next(); if (b instanceof Building) { Message message = new EmptyBuildingMessage((Building) b); messagesToCenters.add(message); } else { ; } //;//System.out.println("\n\n REPORTING SOMETHING AS AN EMPTY BUILING THAT IS NOT A BUILDING!!\n\n"); } } public void reportPosition(Humanoid hum) { if (hum == null || hum.position() == null) { //;//System.out.println ("\nWARNING: POSITION IS NULL IN REPORT POSITION"); return; } Collections.sort(world.agents, yab.agent.Util.idComparator); Message message = new PositionMessage(hum, world.agents.indexOf(world.self)); messagesToCenters.add(message); } public void reportUnClear(Road road) { if (road == null) { //;//System.out.println ("\nWARNING: ROAD IS NULL IN REPORT UNCLEAR"); return; } Message message = new UnClearMessage(road); messagesToCenters.add(message); } public void reportBlock(Road road) { if (road == null) { return; } Message message = new BlockMessage(road); messagesToCenters.add(message); } public void reportHeardCivilian(Civilian civilian, MotionlessObject position , int positionExtra) { Message message = new HeardCivilianMessage(civilian, position,positionExtra); messagesToCenters.add(message); } public void reportLockedByBlockade(MotionlessObject position) { if (position == null || !(world.self instanceof Humanoid)) { return; } Collections.sort(world.agents, yab.agent.Util.idComparator); Message message = new LockedByBlockadeMessage(world.agents.indexOf(world.self), position); messagesToCenters.add(message); } public void reportRequestPartitionChanging() { if (world.self instanceof PoliceForce) { Collections.sort(world.policeForces, yab.agent.Util.idComparator); Message message = new RequestPartitionChangingMessage(world.policeForces.indexOf(world.self)); messagesToCenters.add(message); } } public void reportPartitionFinished() { if (world.self instanceof PoliceForce) { Collections.sort(world.policeForces, yab.agent.Util.idComparator); Message message = new PartitionFinishedMessage(world.policeForces.indexOf(world.self)); messagesToCenters.add(message); } } public void reportClearedPath(Path path) { Message message = new ClearedPathMessage(world.paths.indexOf(path)); messagesToCenters.add(message); } public void reportRequestTarget() { if (world.self instanceof AmbulanceTeam) { Collections.sort(world.ambulanceTeams, yab.agent.Util.idComparator); Message message = new RequestTargetMessage(world.ambulanceTeams.indexOf(world.self)); messagesToCenters.add(message); } } public void reportTaskFinished(){ if(world.self instanceof PoliceForce){ Collections.sort(world.policeForces, yab.agent.Util.idComparator); Message message = new TaskFinishedMessage(world.policeForces.indexOf(world.self)); messagesToCenters.add(message); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -