patternjavaMinor
Update on tileMap Class
Viewed 0 times
tilemapclassupdate
Problem
This is an update from An Update on my TileMap Class. It's a
Tile.java
TileMap.java
tileMap class for a top-down old-school final fantasy game. User @Tim gave me suggestions and I updated some of the code accordingly.Tile.java
import com.stardust.rpgtest2.gfx.Assets;
import java.awt.image.BufferedImage;
public enum Tile
{
Grass(1, Assets.grass, false),
Dirt(2, Assets.dirt, false),
Tree(3, Assets.tree, true),
Blank(36, Assets.blankTile, false);
public int texKey;
public BufferedImage texture;
public boolean collidable;
Tile(int texKey, BufferedImage texture, boolean collidable)
{
this.texKey = texKey;
this.texture = texture;
this.collidable = collidable;
}
public static BufferedImage getTileImage(int texKey1)
{
BufferedImage image;
switch(texKey1)
{
case 1:
{
image = Grass.texture;
break;
}
case 2:
{
image = Dirt.texture;
break;
}
case 3:
{
image = Tree.texture;
break;
}
case 36:
{
image = Blank.texture;
break;
}
default:
{
image = Blank.texture;
break;
}
}
return image;
}
}TileMap.java
render() methodpublic void render(Graphics g)
{
for(int y = 0; y < tilemap.length; y++)
{
for(int x = 0; x < tilemap.length; x++)
{
int textureType = tilemap[x][y];
BufferedImage texture = Tile.getTileImage(textureType);
g.drawImage(texture, posX, posY, null);
posY += 32;
}
posX += 32;
posY = Game.mapY;
}
posX = Game.mapX;
posY = Game.mapY;
}Solution
posY += 32;
}
posX += 32;You have your tile sizes hardcoded in the TileMap ... in an obscure place (render code).
Consider placing them as constants in Tile or TileMap. That way, upscaling to 64x64 tiles is a lot easier.
public static BufferedImage getTileImage(int texKey1)
{
BufferedImage image;
switch(texKey1)
{
case 1:
{
image = Grass.texture;
break;
}
case 2:
{
image = Dirt.texture;
break;
}
case 3:
{
image = Tree.texture;
break;
}
case 36:
{
image = Blank.texture;
break;
}
default:
{
image = Blank.texture;
break;
}
}
return image;
}You could use a
Map here. Map, or better, Map. Then you just have to get the Tile from the map, and ask that for the image. And if it's null you can return a blank.Code Snippets
posY += 32;
}
posX += 32;public static BufferedImage getTileImage(int texKey1)
{
BufferedImage image;
switch(texKey1)
{
case 1:
{
image = Grass.texture;
break;
}
case 2:
{
image = Dirt.texture;
break;
}
case 3:
{
image = Tree.texture;
break;
}
case 36:
{
image = Blank.texture;
break;
}
default:
{
image = Blank.texture;
break;
}
}
return image;
}Context
StackExchange Code Review Q#84868, answer score: 2
Revisions (0)
No revisions yet.