TileRenderer.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package pathgame.rendering;
  2. import pathgame.tilemap.Tile;
  3. import pathgame.tilemap.TileMap;
  4. import pathgame.tilemap.Tiles;
  5. /** Registry for rendering all possible tiles.
  6. *
  7. * @author kajetan
  8. */
  9. public class TileRenderer
  10. {
  11. /** The unscaled render size of a map tile. */
  12. public final static float TILE_SIZE = 32;
  13. private static TileTextureProvider[] tProviders = new TileTextureProvider[8];
  14. private static void register(Tile t, TileTextureProvider provider)
  15. {
  16. if(t.getId() >= tProviders.length)
  17. {
  18. TileTextureProvider[] newTProviders = new TileTextureProvider[tProviders.length * 2];
  19. System.arraycopy(tProviders, 0, newTProviders, 0, tProviders.length);
  20. tProviders = newTProviders;
  21. }
  22. tProviders[t.getId()] = provider;
  23. }
  24. static
  25. {
  26. register(Tiles.GRASS, new StaticTextureProvider(TileTexture.fromTextureId(0)));
  27. register(Tiles.GRASS_WITH_STONE, new StaticTextureProvider(TileTexture.fromTextureId(1)));
  28. register(Tiles.GRASS_WITH_6_BUSHES, new StaticTextureProvider(TileTexture.fromTextureId(2)));
  29. register(Tiles.GRASS_WITH_3_BUSHES, new StaticTextureProvider(TileTexture.fromTextureId(3)));
  30. register(Tiles.GRASS_WITH_FLOWERS_1, new StaticTextureProvider(TileTexture.fromTextureId(4)));
  31. register(Tiles.GRASS_WITH_FLOWERS_2, new StaticTextureProvider(TileTexture.fromTextureId(21)));
  32. register(Tiles.GRASS_WITH_FLOWERS_3, new StaticTextureProvider(TileTexture.fromTextureId(22)));
  33. register(Tiles.GRASS_WITH_FLOWERS_4, new StaticTextureProvider(TileTexture.fromTextureId(23)));
  34. register(Tiles.GRASS_WITH_HILL, new StaticTextureProvider(TileTexture.fromTextureId(5)));
  35. register(Tiles.GRASS_WITH_EARTH, new StaticTextureProvider(TileTexture.fromTextureId(6)));
  36. register(Tiles.FOREST, new StaticTextureProvider(TileTexture.fromTextureId(7)));
  37. register(Tiles.SHALLOW_WATER, new StaticTextureProvider(TileTexture.fromTextureId(8)));
  38. register(Tiles.DEEP_WATER, new StaticTextureProvider(TileTexture.fromTextureId(9)));
  39. register(Tiles.HILL, new StaticTextureProvider(TileTexture.fromTextureId(10)));
  40. register(Tiles.MOUNTAIN, new StaticTextureProvider(TileTexture.fromTextureId(11)));
  41. register(Tiles.SWAMP, new StaticTextureProvider(TileTexture.fromTextureId(12)));
  42. register(Tiles.SWAMP_DECO, new StaticTextureProvider(TileTexture.fromTextureId(13)));
  43. register(Tiles.SWAMP_TREE, new StaticTextureProvider(TileTexture.fromTextureId(14)));
  44. register(Tiles.SWAMP_BONES, new StaticTextureProvider(TileTexture.fromTextureId(41)));
  45. register(Tiles.TOWN, new StaticTextureProvider(TileTexture.fromTextureId(16)));
  46. register(Tiles.TOWN_BLOCKED_1, new StaticTextureProvider(TileTexture.fromTextureId(17)));
  47. register(Tiles.TOWN_BLOCKED_2, new StaticTextureProvider(TileTexture.fromTextureId(18)));
  48. register(Tiles.TOWN_BLOCKED_3, new StaticTextureProvider(TileTexture.fromTextureId(19)));
  49. register(Tiles.TOWN_BLOCKED_4, new StaticTextureProvider(TileTexture.fromTextureId(20)));
  50. register(Tiles.PORT, new StaticTextureProvider(TileTexture.fromTextureId(15)));
  51. register(Tiles.HOME_TOWN, new StaticTextureProvider(TileTexture.fromTextureId(39)));
  52. register(Tiles.PATH_N, new StaticTextureProvider(TileTexture.fromTextureId(24)));
  53. register(Tiles.PATH_E, new StaticTextureProvider(TileTexture.fromTextureId(25)));
  54. register(Tiles.PATH_S, new StaticTextureProvider(TileTexture.fromTextureId(26)));
  55. register(Tiles.PATH_W, new StaticTextureProvider(TileTexture.fromTextureId(27)));
  56. register(Tiles.PATH_E_W, new StaticTextureProvider(TileTexture.fromTextureId(28)));
  57. register(Tiles.PATH_N_S, new StaticTextureProvider(TileTexture.fromTextureId(29)));
  58. register(Tiles.PATH_S_W, new StaticTextureProvider(TileTexture.fromTextureId(30)));
  59. register(Tiles.PATH_N_E, new StaticTextureProvider(TileTexture.fromTextureId(31)));
  60. register(Tiles.PATH_E_S, new StaticTextureProvider(TileTexture.fromTextureId(32)));
  61. register(Tiles.PATH_N_W, new StaticTextureProvider(TileTexture.fromTextureId(33)));
  62. register(Tiles.PATH_N_E_W, new StaticTextureProvider(TileTexture.fromTextureId(34)));
  63. register(Tiles.PATH_N_S_W, new StaticTextureProvider(TileTexture.fromTextureId(35)));
  64. register(Tiles.PATH_N_E_S, new StaticTextureProvider(TileTexture.fromTextureId(36)));
  65. register(Tiles.PATH_E_S_W, new StaticTextureProvider(TileTexture.fromTextureId(37)));
  66. register(Tiles.PATH_N_E_S_W, new StaticTextureProvider(TileTexture.fromTextureId(38)));
  67. }
  68. /** Returns a tile texture of a given map tile.
  69. *
  70. * @param map a map
  71. * @param t a tile
  72. * @param x the x coordinate of the given tile
  73. * @param y the y coordinate of the given tile
  74. * @return a tile texture of a given map tile
  75. */
  76. public static TileTexture getTileTexture(TileMap map, Tile t, int x, int y)
  77. {
  78. if(t == null)
  79. {
  80. return null;
  81. }
  82. int id = t.getId();
  83. if(id < 0 || id >= tProviders.length || tProviders[id] == null)
  84. {
  85. return null;
  86. }
  87. return tProviders[id].getTexture(map, t, x, y);
  88. }
  89. }