/** @return all the units in the game state */ public List<Unit> getUnits() { List<Unit> units = new ArrayList<Unit>(); Lane[] lanes = map.getLanes(); for (Lane l : lanes) { Wave[] waves = l.getWaves(); for (Wave w : waves) { Unit[] us = w.getUnits(); for (Unit u : us) { units.add(u); } } } Collections.sort( units, new Comparator<Unit>() { @Override public int compare(Unit o1, Unit o2) { if (o1.getCollisionStrategy() instanceof Ground && o2.getCollisionStrategy() instanceof Flying) return -1; else if (o2.getCollisionStrategy() instanceof Ground && o1.getCollisionStrategy() instanceof Flying) return 1; else return 0; } }); return units; }