@Override public void evaluate(EnvironmentEntity entity, float delta) { if (numToSpawn == 0) { return; } spawnAccumulator += delta; if (spawnAccumulator >= delay) { spawnAccumulator = 0; GameEntity ge = GameEntity.load(entityName); GameTile tile = entity.tile[0][0]; int x = tile.x; int y = tile.y; GameTile spawnTile = null; for (Global.Direction d : Global.Direction.values()) { int nx = x + d.getX(); int ny = y + d.getY(); GameTile ntile = tile.level.getGameTile(nx, ny); if (ntile != null && ntile.getPassable(ge.getTravelType(), null) && ntile.entity == null) { spawnTile = ntile; break; } } if (spawnTile != null) { spawnTile.addGameEntity(ge); numToSpawn--; } } }