TileRenderer.java 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package pathgame.rendering;
  2. import pathgame.tilemap.Tile;
  3. import pathgame.tilemap.TileMap;
  4. import pathgame.tilemap.Tiles;
  5. public class TileRenderer {
  6. public final static float TILE_SIZE = 32;
  7. private static TileTextureProvider[] tProviders = new TileTextureProvider[8];
  8. private static void register(Tile t, TileTextureProvider provider) {
  9. if(t.getId() >= tProviders.length) {
  10. TileTextureProvider[] newTProviders = new TileTextureProvider[tProviders.length * 2];
  11. System.arraycopy(tProviders, 0, newTProviders, 0, tProviders.length);
  12. tProviders = newTProviders;
  13. }
  14. tProviders[t.getId()] = provider;
  15. }
  16. static {
  17. register(Tiles.GRASS, new StaticTextureProvider(TileTexture.fromTextureId(0)));
  18. register(Tiles.GRASS_WITH_STONE, new StaticTextureProvider(TileTexture.fromTextureId(1)));
  19. register(Tiles.GRASS_WITH_6_BUSHES, new StaticTextureProvider(TileTexture.fromTextureId(2)));
  20. register(Tiles.GRASS_WITH_3_BUSHES, new StaticTextureProvider(TileTexture.fromTextureId(3)));
  21. register(Tiles.GRASS_WITH_FLOWERS_1, new StaticTextureProvider(TileTexture.fromTextureId(4)));
  22. register(Tiles.GRASS_WITH_FLOWERS_2, new StaticTextureProvider(TileTexture.fromTextureId(21)));
  23. register(Tiles.GRASS_WITH_FLOWERS_3, new StaticTextureProvider(TileTexture.fromTextureId(22)));
  24. register(Tiles.GRASS_WITH_FLOWERS_4, new StaticTextureProvider(TileTexture.fromTextureId(23)));
  25. register(Tiles.GRASS_WITH_HILL, new StaticTextureProvider(TileTexture.fromTextureId(5)));
  26. register(Tiles.GRASS_WITH_EARTH, new StaticTextureProvider(TileTexture.fromTextureId(6)));
  27. register(Tiles.FOREST, new StaticTextureProvider(TileTexture.fromTextureId(7)));
  28. register(Tiles.SHALLOW_WATER, new StaticTextureProvider(TileTexture.fromTextureId(8)));
  29. register(Tiles.DEEP_WATER, new StaticTextureProvider(TileTexture.fromTextureId(9)));
  30. register(Tiles.HILL, new StaticTextureProvider(TileTexture.fromTextureId(10)));
  31. register(Tiles.MOUNTAIN, new StaticTextureProvider(TileTexture.fromTextureId(11)));
  32. register(Tiles.SWAMP, new StaticTextureProvider(TileTexture.fromTextureId(12)));
  33. register(Tiles.SWAMP_DECO, new StaticTextureProvider(TileTexture.fromTextureId(13)));
  34. register(Tiles.SWAMP_TREE, new StaticTextureProvider(TileTexture.fromTextureId(14)));
  35. register(Tiles.SWAMP_BONES, new StaticTextureProvider(TileTexture.fromTextureId(41)));
  36. register(Tiles.TOWN, new StaticTextureProvider(TileTexture.fromTextureId(16)));
  37. register(Tiles.TOWN_BLOCKED_1, new StaticTextureProvider(TileTexture.fromTextureId(17)));
  38. register(Tiles.TOWN_BLOCKED_2, new StaticTextureProvider(TileTexture.fromTextureId(18)));
  39. register(Tiles.TOWN_BLOCKED_3, new StaticTextureProvider(TileTexture.fromTextureId(19)));
  40. register(Tiles.TOWN_BLOCKED_4, new StaticTextureProvider(TileTexture.fromTextureId(20)));
  41. register(Tiles.PORT, new StaticTextureProvider(TileTexture.fromTextureId(15)));
  42. register(Tiles.HOME_TOWN, new StaticTextureProvider(TileTexture.fromTextureId(39)));
  43. register(Tiles.PATH_N, new StaticTextureProvider(TileTexture.fromTextureId(24)));
  44. register(Tiles.PATH_E, new StaticTextureProvider(TileTexture.fromTextureId(25)));
  45. register(Tiles.PATH_S, new StaticTextureProvider(TileTexture.fromTextureId(26)));
  46. register(Tiles.PATH_W, new StaticTextureProvider(TileTexture.fromTextureId(27)));
  47. register(Tiles.PATH_E_W, new StaticTextureProvider(TileTexture.fromTextureId(28)));
  48. register(Tiles.PATH_N_S, new StaticTextureProvider(TileTexture.fromTextureId(29)));
  49. register(Tiles.PATH_S_W, new StaticTextureProvider(TileTexture.fromTextureId(30)));
  50. register(Tiles.PATH_N_E, new StaticTextureProvider(TileTexture.fromTextureId(31)));
  51. register(Tiles.PATH_E_S, new StaticTextureProvider(TileTexture.fromTextureId(32)));
  52. register(Tiles.PATH_N_W, new StaticTextureProvider(TileTexture.fromTextureId(33)));
  53. register(Tiles.PATH_N_E_W, new StaticTextureProvider(TileTexture.fromTextureId(34)));
  54. register(Tiles.PATH_N_S_W, new StaticTextureProvider(TileTexture.fromTextureId(35)));
  55. register(Tiles.PATH_N_E_S, new StaticTextureProvider(TileTexture.fromTextureId(36)));
  56. register(Tiles.PATH_E_S_W, new StaticTextureProvider(TileTexture.fromTextureId(37)));
  57. register(Tiles.PATH_N_E_S_W, new StaticTextureProvider(TileTexture.fromTextureId(38)));
  58. }
  59. public static TileTexture getTileTexture(TileMap map, Tile t, int x, int y) {
  60. if(t == null) {
  61. return null;
  62. }
  63. int id = t.getId();
  64. if(id < 0 || id >= tProviders.length || tProviders[id] == null) {
  65. return null;
  66. }
  67. return tProviders[id].getTexture(map, t, x, y);
  68. }
  69. }