⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agentmessagemanager.java

📁 2004年robotcup世界冠军源代码
💻 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 + -