I'm making my first game with libGDX and I'm currently working with the object collision methods. I have this code that works well, but is there a way to replace the foreach
loops in a generic method? (I need to know if the object is a Solid, Rock, etc..)
MapLayers layers = map.getLayers();
MapLayer layer = layers.get(Game.BORDER_LAYER);
MapObjects objects = layer.getObjects();
//border
for(MapObject object : objects.getByType(RectangleMapObject.class)){
Rectangle rect = ((RectangleMapObject) object).getRectangle();
new Border(world, map, rect);
}
layer = layers.get(Game.SOLID_LAYER);
objects = layer.getObjects();
//solid bricks
for(MapObject object : objects.getByType(RectangleMapObject.class)){
Rectangle rect = ((RectangleMapObject) object).getRectangle();
new Solid(world, map, rect);
}
layer = layers.get(Game.TREE_LAYER);
objects = layer.getObjects();
//trees
for(MapObject object : objects.getByType(RectangleMapObject.class)){
Rectangle rect = ((RectangleMapObject) object).getRectangle();
new Tree(world, map, rect);
}
layer = layers.get(Game.ROCK_LAYER);
objects = layer.getObjects();
//rocks
for(MapObject object : objects.getByType(RectangleMapObject.class)){
Rectangle rect = ((RectangleMapObject) object).getRectangle();
new Rock(world, map, rect);
}
Edit: All objects inherit from the same abstract class
public class Rock extends InteractiveTileObject
And the Game.XXXX_LAYER
is an integer that indicates the map layer in which those objects are located