/** * This method actually notifies which enemies need to update their paths * * @param inMiddleOfWave * @param enemy */ private void updateEnemyPaths(boolean inMiddleOfWave, Enemy enemy) { if (inMiddleOfWave) { Log.i("Updating path", "Updating path"); enemy.setNeedToUpdatePath(true); for (Enemy child : enemy.childArray) { child.setNeedToUpdatePath(true); } } else { Path p = null; Enemy en = null; for (Enemy e : currentWave.getEnemies()) { if (e.getClass() != BeachballEnemy.class) { p = aStarHelper.getPath(e); en = e; break; } } // We have a wave full of beach-ball enemies if (en == null) return; if (p == null) { removeCurrentTower(true); p = aStarHelper.getPath(en); } for (Enemy e : currentWave.getEnemies()) { if (e.getClass() != BeachballEnemy.class) e.setPath(p.deepCopy()); else aStarHelper.getPath(e); } } }