TileRenderer.java 4.9 KB

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