I have a parent class Tile and inherited classes Walltile, FloorTile, EntityTile. Each inherited class have BufferedImage attributes that is related with its name.
public class WallTile extends Tile {
public static BufferedImage WATER_TOP_LEFT = Game.tilesSpritesheet.getSprite(34, 0);
public static BufferedImage WATER_TOP = Game.tilesSpritesheet.getSprite(51, 0);
public static BufferedImage WATER_TOP_RIGHT = Game.tilesSpritesheet.getSprite(68, 0);
public static BufferedImage WATER_LEFT = Game.tilesSpritesheet.getSprite(34, 17);
public static BufferedImage WATER_CENTER = Game.tilesSpritesheet.getSprite(51, 17);
public static BufferedImage WATER_RIGHT = Game.tilesSpritesheet.getSprite(68, 17);
public static BufferedImage WATER_BOTTOM_LEFT = Game.tilesSpritesheet.getSprite(34, 34);
public static BufferedImage WATER_BOTTOM = Game.tilesSpritesheet.getSprite(51, 34);
public static BufferedImage WATER_BOTTOM_RIGHT = Game.tilesSpritesheet.getSprite(68, 34);
public static BufferedImage WATER_LITTLE_TOP_LEFT = Game.tilesSpritesheet.getSprite(17, 34);
public WallTile(BufferedImage sprite, int x, int y) {
super(sprite, x, y);
}
}
public class FloorTile extends Tile {
public static BufferedImage TILE_GRASS = Game.tilesSpritesheet.getSprite(85, 0);
public static BufferedImage TILE_SAND = Game.tilesSpritesheet.getSprite(136, 0);
public FloorTile(BufferedImage sprite, int x, int y) {
super(sprite, x, y);
}
}
public class EntityTile extends Tile {
public static BufferedImage TILE_TREE_1 = Game.tilesSpritesheet.getSprite(221, 153);
public static BufferedImage TILE_TALL_GRASS = Game.tilesSpritesheet.getSprite(374, 187);
public static List<BufferedImage> spriteList = new ArrayList<BufferedImage>();
// Construtor
public EntityTile(BufferedImage sprite, int x, int y) {
super(sprite, x, y);
}
@Override
public void render(Graphics g) {
g.drawImage(FloorTile.TILE_GRASS, x - Camera.x, y - Camera.y, null);
g.drawImage(sprite, x - Camera.x, y - Camera.y, null);
}
}
I instantiate Tile and then i cast to the specific class, like:
Tile tile = new Tile(sprite, 0, 0);
WallTile wt = (WallTile) tile;
But i need to know if this Tile object is WallTile, FloorTile or EntityTile. For that i have the sprite attribute which corresponds to the ****Tile class i want. How can i get this info? When i use sprite.getClass() it returns BufferedImage, but i need return like WallTile, FloorTile or EntityTile. To do this:
if (tile.sprite.getClass().toString() == "class World.WallTile")
//do something