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

📄 centermessagemanager.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.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 + -