I have a super class named Monster
which implements Poolable
. Then I got child classes which extends from the Monster
class, but I can not figure out how I will use pool and maintain only one set of pool array.
Here is my current pool setup:
public class GameWorld {
// Map
private TmxMapLoader mapLoader;
private TiledMap map;
// Creatures
private Player player;
private final Array<Monster> activeMonsters = new Array<Monster>();
private final Pool<Monster> monsterPool = new Pool<Monster>() {
@Override
protected Monster newObject() {
return new Monster();
}
};
public GameWorld(String path) {
mapLoader = new TmxMapLoader();
map = mapLoader.load(path);
player = new Player();
player.init("Player", this, new Vector2(5, 5));
Monster firefox = Pools.obtain(Firefox.class);
for (int i = 0; i <= 10; i++) {
firefox.init("Firefox", this, new Vector2(8, 8));
activeMonsters.add(firefox);
}
}
public Player getPlayer() {
return this.player;
}
public TiledMap getMap() {
return map;
}
public Array<Monster> getMonsters() {
Monster monster;
int len = activeMonsters.size;
for (int i = len; --i >= 0;) {
monster = activeMonsters.get(i);
if (monster.isVisible == false) {
activeMonsters.removeIndex(i);
monsterPool.free(monster);
}
}
return this.activeMonsters;
}
}