public static RobotInfo[] getRobotsCloserToUs( RobotInfo[] robots, RobotInfo[] nearbyFriendlies, RobotInfo[] nearbyEnemies) { int length = robots.length; int index[] = new int[length]; for (int i = 0; i < length; i++) { index[i] = -1; } int count = 0; for (int i = 0; i < length; i++) { int ourDistance = RobotUtil.getShortestDistance(robots[i], nearbyFriendlies); int theirDistance = RobotUtil.getShortestDistance(robots[i], nearbyEnemies); if (ourDistance <= theirDistance) { index[i] = count++; } } RobotInfo[] closerToUs = new RobotInfo[count]; for (int i = 0; i < length; i++) { if (index[i] == -1) { continue; } closerToUs[index[i]] = robots[i]; } return closerToUs; }
public static RobotInfo[] removeRobots(RobotInfo[] robots, RobotData[] robotsToRemove) { int removeCount = 0; int robotCount = robots.length; for (int i = 0; i < robotCount; i++) { if (RobotUtil.robotInCollection(robots[i], robotsToRemove)) { removeCount++; } } int newCount = robotCount - removeCount; RobotInfo[] trimmed = new RobotInfo[newCount]; int index = 0; for (int i = 0; i < robotCount; i++) { if (!RobotUtil.robotInCollection(robots[i], robotsToRemove)) { trimmed[index++] = robots[i]; } } return trimmed; }
public static int countCanAttack( RobotInfo[] nearbyFriendlies, BoundedQueue<RobotInfo> enemiesCanAttackMe) { int canAttack = 0; for (int i = 0; i < nearbyFriendlies.length; i++) { if (RobotUtil.canAttackAny(nearbyFriendlies[i], enemiesCanAttackMe)) { canAttack++; } } return canAttack; }
public static RobotInfo getHighestPriorityEnemyUnit(RobotInfo[] enemies) { int highestPriority = -1; int enemyCount = enemies.length; RobotInfo highestRobot = null; for (int i = 0; i < enemyCount; i++) { int currentPriority = RobotUtil.getPriority(enemies[i].type); if (currentPriority > highestPriority) { highestPriority = currentPriority; highestRobot = enemies[i]; } } return highestRobot; }