@Override protected Shape render(Human entity, Graphics2D g, ScreenTransform transform) { PlatoonAgent agent = ((PlatoonAgent) entity.getAgent()); String lastState = "Last Search State= " + agent.newSearch.searchType.name(); g.setFont(new Font("arial", Font.PLAIN, 30)); g.setColor(Color.yellow); g.drawString(lastState, 30, 80); return null; }
private void sendStockMessage(Path path) { if (me instanceof PoliceForceAgent) return; if (!(me.me() instanceof Human)) return; if (me.time() < 50) return; Human meEntity = (Human) me.me(); if (meEntity.isBuriednessDefined() && meEntity.getBuriedness() > 0) return; if (meEntity.getImReachableToEdges().isEmpty()) return; if (me.isTimeToActFinished()) return; if (me.lastException != null) return; try { // if (me.getMyClusterData().isCoverer()) // return; if (me.me().getAreaPosition().isBlockadesDefined() && me.me().getAreaPosition().getBlockadesID().isEmpty()) { boolean haveBlock = false; for (Area neighbour : me.me().getAreaPosition().getNeighbours()) { if (neighbour.isBlockadesDefined() && !neighbour.getBlockadesID().isEmpty()) haveBlock = true; } if (!haveBlock) return; } } catch (Exception e) { e.printStackTrace(); } log().debug("Sending Stock Message"); me.messageBlock = new MessageBlock(MessageXmlConstant.HEADER_AGENT_STOCK); me.messageBlock.addData( MessageXmlConstant.DATA_AREA_INDEX, me.me().getAreaPosition().getAreaIndex()); me.messages.add(me.messageBlock); me.lowCommunicationMessages.add(me.messageBlock); }
public boolean isReachableTo(StandardEntity se) { if (se instanceof Human) { Human hum = (Human) se; if (agent.getVisibleEntities(Human.class).contains(hum) && hum.isPositionDefined() && hum.getAreaPosition().isBlockadesDefined()) { for (Blockade blockade : hum.getAreaPosition().getBlockades()) { if (blockade.getShape().contains(hum.getPositionPoint().toGeomPoint())) return false; } } if (!hum.getImReachableToEdges().isEmpty()) return agent .move .getMoveType(PoliceReachablityMove.class) .isReallyReachableTo(hum.getImReachableToEdges()); } return isReachableTo(se.getPositionPair()); }
private void chooseHumanMessages() { PriorityQueue<Human> validHumans = new PriorityQueue<Human>( 50, new Comparator<Human>() { @Override public int compare(Human o1, Human o2) { return o2.updatedtime() - o1.updatedtime(); } }); for (Human hm : agent.model().humans()) { if ((hm.isHPDefined() && hm.isPositionDefined()) && (hm.getRescueInfo().getIgnoredUntil() == 1000 || (hm.getHP() < 10000 && hm.getPositionArea() instanceof Refuge) || hm.getHP() == 0)) { if (agent instanceof SOSAgent<?>) { SOSAgent<?> sosAgent = ((SOSAgent<?>) agent); sosAgent.sosLogger.noComunication.debug( hm + " ignoreUntil:" + hm.getRescueInfo().getIgnoredUntil() + " " + hm.getRescueInfo().getIgnoreReason() + " " + hm.fullDescription()); } MessageBlock messageBlock = new MessageBlock(HEADER_IGNORED_TARGET); messageBlock.addData(DATA_ID, hm.getID().getValue()); messageBlock.setPriority(8); sayMessages.add(messageBlock); } else if (hm.isPositionDefined() && ((hm.isDamageDefined() && hm.getDamage() > 0) || (hm.isBuriednessDefined() && hm.getBuriedness() > 0)) && hm.getHP() > 0 && !hm.getRescueInfo().isIgnored()) { int deathTime; if (agent instanceof AmbulanceTeamAgent) { deathTime = hm.getRescueInfo().getDeathTime(); } else deathTime = SimpleDeathTime.getEasyLifeTime(hm.getHP(), hm.getDamage(), hm.updatedtime()); if (deathTime - hm.getBuriedness() / 2 > agent.model().time()) validHumans.add(hm); } } // Collections.sort(validHumans, new Comparator<Human>() { // @Override // public int compare(Human o1, Human o2) { // return o2.updatedtime() - o1.updatedtime(); // } // }); int priority = 10; int count = 0; for (Human hm : validHumans) { count++; if (priority > 0 && count % 10 == 0) priority--; if (hm instanceof Civilian) { MessageBlock messageBlock = new MessageBlock(HEADER_SENSED_CIVILIAN); messageBlock.addData(DATA_ID, hm.getID().getValue()); messageBlock.addData(DATA_AREA_INDEX, hm.getPositionArea().getAreaIndex()); messageBlock.addData(DATA_HP, hm.getHP() / 322); int damage = hm.getDamage(); if (damage > 1200) damage = 1200; messageBlock.addData(DATA_DAMAGE, damage / 10); int buried = hm.getBuriedness(); if (buried > 126) buried = 126; messageBlock.addData(DATA_BURIEDNESS, buried); messageBlock.addData(DATA_TIME, hm.updatedtime()); boolean isReallyReachable; if (agent instanceof SOSAgent<?>) isReallyReachable = !((SOSAgent<?>) agent) .move.isReallyUnreachableXYPolice(hm.getPositionArea().getPositionPair()); else isReallyReachable = false; messageBlock.addData(DATA_IS_REALLY_REACHABLE, isReallyReachable ? 1 : 0); messageBlock.setPriority(priority); sayMessages.add(messageBlock); } else { MessageBlock messageBlock = new MessageBlock(HEADER_SENSED_AGENT); messageBlock.addData(DATA_AGENT_INDEX, hm.getAgentIndex()); messageBlock.addData(DATA_AREA_INDEX, hm.getPositionArea().getAreaIndex()); messageBlock.addData(DATA_HP, hm.getHP() / 322); int damage = hm.getDamage(); if (damage > 1200) damage = 1200; messageBlock.addData(DATA_DAMAGE, damage / 10); int buried = hm.getBuriedness(); if (buried > 126) buried = 126; messageBlock.addData(DATA_BURIEDNESS, buried); messageBlock.addData(DATA_TIME, hm.updatedtime()); messageBlock.setPriority(priority); sayMessages.add(messageBlock); } } }