Beispiel #1
0
  /**
   * 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);
      }
    }
  }