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

📄 basemessagemanager.java

📁 2004年robotcup世界冠军源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    protected void log(String message)    {        try        {            fw.write(message);            fw.flush();        }        catch (IOException e)        {            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.        }    }    protected void parseMessage(byte[] message, int time, RealObject sender, boolean isCenter)    {        log("\n ----- TIME = " + time + " ----- importMessage from = " + sender.id);        char[] messageArray = byteArrayToCharArray(message);        boolean fromCenter = sender instanceof MotionlessObject;        pointer = 0;        while (true)        {            int header = Util.charArrayToint(readMessage(messageArray, HEADER_SIZE), 0, HEADER_SIZE);            int length = 0;            if (header != HEADER_NULL)            {                length = Util.charArrayToint(readMessage(messageArray, LENGTH_SIZE), 0, LENGTH_SIZE);            }            Message m = null;            switch (header)            {                case HEADER_NULL:                    {                        //log (" end ===\n");                        //;//System.out.println("");                        return;                    }                case HEADER_CLEAR:                    {                       // log(" " + Type.CLEAR_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new ClearMessage(readMessage(messageArray, ClearMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            log(", ClearMessage " + m.obj.id);                         //   System.out.print(Type.CLEAR_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedClears, centerReportedClears, true);                        }                        break;                    }                case HEADER_CIVILIAN:                    {                      //  log(" " + Type.CIVILIAN_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new VictimMessage(readMessage(messageArray, VictimMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            log(", CivilianMessage " + m.obj.id);                       //     System.out.print(Type.CIVILIAN_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedVictims, centerReportedVictims, true);                        }                        break;                    }                case HEADER_FIRE:                    {                     //   log(" " + Type.FIRE_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new FireMessage(readMessage(messageArray, FireMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            log(", FireMessage " + m.obj.id);                        //    System.out.print(Type.FIRE_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedFires, centerReportedFires, true);                            Building b = (Building) world.get(((FireMessage) m).getBuildingId());                            log("\nFire Report received Building Id = " + b.id + " virtual Id = " + ((Integer) (idToVirtualId.get(new Integer(b.id)))).toString() + "\n");                        }                        break;                    }                case HEADER_POSITION:                    {                      //  log(" " + Type.POSITION_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new PositionMessage(readMessage(messageArray, PositionMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            Collections.sort(world.agents, yab.agent.Util.idComparator);                            log(", Position(" + ((PositionMessage) m).index + "=" + ((Humanoid) (world.agents.get(((PositionMessage) m).index))).id + ") " + ((PositionMessage) m).positionId);                        //    System.out.print(Type.POSITION_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedPositions, centerReportedPositions, true);                        }                        break;                    }                case HEADER_UNCLEAR:                    {                     //   log(" " + Type.UNCLEAR_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new UnClearMessage(readMessage(messageArray, UnClearMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            log(", UnClear " + ((UnClearMessage) m).obj.id);                         //   System.out.print(Type.UNCLEAR_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedUnClears, centerReportedUnClears, true);                        }                        break;                    }                case HEADER_BLOCK:                    {                     //   log(" " + Type.BLOCK_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new BlockMessage(readMessage(messageArray, BlockMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            log(", Block " + ((BlockMessage) m).obj.id);                         //   System.out.print(Type.BLOCK_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedBlocks, centerReportedBlocks, true);                        }                        break;                    }                case HEADER_EMPTYBUILDING:                    {                       // log(" " + Type.EMPTYBUILDING_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new EmptyBuildingMessage(readMessage(messageArray, EmptyBuildingMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            log(", EmptyBuilding " + m.obj.id);                           // System.out.print(Type.EMPTYBUILDING_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedEmptyBuildings, centerReportedEmptyBuidings, true);                        }                        break;                    }                case HEADER_HEARDCIVILIAN:                    {                    //    log(" " + Type.HEARDCIVILIAN_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new HeardCivilianMessage(readMessage(messageArray, HeardCivilianMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            log(", HeardCivilian: " + m.obj.id + "in Position: "+((HeardCivilianMessage)m).posId);                         //   System.out.print(Type.HEARDCIVILIAN_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedHeardCivilians, centerReportedHeardCivilians, true);                        }                        break;                    }                case HEADER_LOCKEDBYBLOCKADE:                    {                     //   log(" " + Type.LOCKEDBYBLOCKADE_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new LockedByBlockadeMessage(readMessage(messageArray, LockedByBlockadeMessage.staticLength()), virtualIdToId);                            m.updateWorld(world, time);                            Collections.sort(world.agents, yab.agent.Util.idComparator);                            log(", LockedByBlockade(" + ((LockedByBlockadeMessage) m).index + "=" + ((Humanoid) (world.agents.get(((LockedByBlockadeMessage) m).index))).id + ") " + ((LockedByBlockadeMessage) m).positionId);//                            System.out.print(Type.LOCKEDBYBLOCKADE_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedLockedByBlockades, centerReportedLockedByBlockades, true);                        }                        break;                    }                case HEADER_REQUESTPARTITIONCHANGING:                    {                     //   log(" " + Type.REQUESTPARTITIONCHANGING_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new RequestPartitionChangingMessage(readMessage(messageArray, RequestPartitionChangingMessage.staticLength()));                            m.updateWorld(world, time);                            Collections.sort(world.policeForces, yab.agent.Util.idComparator);                            log(", requestPartitionChanging: " + ((RequestPartitionChangingMessage)m).index);                        //    System.out.print(Type.REQUESTPARTITIONCHANGING_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedRequestPartitionChangings, centerReportedRequestPartitionChangings, true);                        }                        break;                    }                case HEADER_PARTITIONFINISHED:                    {                //        log(" " + Type.PARTITIONFINISHED_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new PartitionFinishedMessage(readMessage(messageArray, PartitionFinishedMessage.staticLength()));                            m.updateWorld(world, time);                            Collections.sort(world.policeForces, yab.agent.Util.idComparator);                            log(", partitionFinished: " + ((PartitionFinishedMessage)m).index);                       //     System.out.print(Type.PARTITIONFINISHED_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedPartitionFinisheds, centerReportedPartitionFinisheds, true);                        }                        break;                    }                case HEADER_SETPARTITION:                    {                       // log(" " + Type.SETPARTITION_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new SetPartitionMessage(readMessage(messageArray, SetPartitionMessage.staticLength()));                            m.updateWorld(world, time);                            Collections.sort(world.policeForces, yab.agent.Util.idComparator);                            log(", setPartition( Police: " + ((SetPartitionMessage)m).policeIdx + ", partition: " + ((SetPartitionMessage)m).partId + ")");                        //    System.out.print(Type.SETPARTITION_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedSetPartitions, centerReportedSetPartitions, true);                        }                        break;                    }                case HEADER_CLEAREDPATH:                    {                    //    log(" " + Type.CLEAREDPATH_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new ClearedPathMessage(readMessage(messageArray, ClearedPathMessage.staticLength()));                            m.updateWorld(world, time);                            log(", clearedPathIndex: " + ((ClearedPathMessage)m).pathIndex );                    //        System.out.print(Type.CLEAREDPATH_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedClearedPaths, centerReportedClearedPaths, true);                        }                        break;                    }                case HEADER_TARGET:                    {                        //log(" " + Type.TARGET_REPORT.toString() + length);                        for (int i = 0; i < length; i++)                        {                            m = new TargetMessage(readMessage(messageArray, TargetMessage.staticLength()));                            m.updateWorld(world, time);                            log(", tagert: " + ((TargetMessage)m).targetId + ", index:"+((TargetMessage)m).index);                            //System.out.print(Type.TARGET_REPORT.toString());                            addToLists(fromCenter, m, isCenter, reportedTargets, centerReportedTargets, true);                        }                        break;                    }                    case HEADER_REQUESTTARGET:                     {                         //log(" " + Type.REQUESTTARGET_REPORT.toString() + length);                         for (int i = 0; i < length; i++)                         {                             m = new RequestTargetMessage(readMessage(messageArray, RequestTargetMessage.staticLength()));                             m.updateWorld(world, time);                             log(",Request tagert: " + ((RequestTargetMessage)m).index);                             //System.out.print(Type.REQUESTTARGET_REPORT.toString());                             addToLists(fromCenter, m, isCenter, reportedRequestTargets, centerReportedRequestTargets, false);                         }                         break;                     }                    case HEADER_TASK:                     {                         //log(" " + Type.REQUESTTARGET_REPORT.toString() + length);                         for (int i = 0; i < length; i++)                         {                             m = new TaskMessage(readMessage(messageArray, TaskMessage.staticLength()));                             m.updateWorld(world, time);                             log(",Pol : " + ((TaskMessage)m).polIndex + ",Task : " + ((TaskMessage)m).task);                             //System.out.print(Type.REQUESTTARGET_REPORT.toString());                             addToLists(fromCenter, m, isCenter, reportedTasks, centerReportedTasks, false);                         }                         break;                     }                     case HEADER_TASK_FINISHED:                     {                         //log(" " + Type.REQUESTTARGET_REPORT.toString() + length);                         for (int i = 0; i < length; i++)                         {                             m = new TaskFinishedMessage(readMessage(messageArray, TaskFinishedMessage.staticLength()));                             m.updateWorld(world, time);                             log(",Pol : " + ((TaskFinishedMessage)m).index);                             //System.out.print(Type.REQUESTTARGET_REPORT.toString());                             addToLists(fromCenter, m, isCenter, reportedFinishedTasks, centerReportedFinishedTasks, false);                         }                         break;                     }            }        }    }    private void addToLists(boolean fromCenter, Message m, boolean isCenter, Collection agentList, Collection centerList, boolean sendToCenters)    {        if (fromCenter)        {            centerList.add(m);        }        else        {            agentList.add(m);        }        if (isCenter)        {            messagesToAgents.add(m);            if (!fromCenter && sendToCenters)            {                messagesToCenters.add(m);            }        }    }    private char[] readMessage(char[] message, int length)    {        char[] result = new char[length];        if (!Util.copyArray(message, result, pointer, 0, length)) ;        //;//System.out.println ("copyArray is false");        pointer += length;        return result;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -