map.c 805 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <os.h>
  2. #include "n2DLib/n2DLib.h"
  3. #include "map.h"
  4. #if INTERFACE
  5. typedef struct
  6. {
  7. unsigned w;
  8. unsigned h;
  9. unsigned *layer0;
  10. unsigned *layer1;
  11. } Map;
  12. #endif
  13. void map_draw(unsigned x, unsigned y, const Map map)
  14. {
  15. unsigned offset_x = x % 24 * -1;
  16. unsigned offset_y = y % 24 * -1;
  17. unsigned i, j, tile_offset;
  18. Rect sprite;
  19. sprite.y = 0;
  20. sprite.w = 24;
  21. sprite.h = 24;
  22. tile_offset = x / 24 + y / 24 * map.w;
  23. for (j = 0; j < 11; j++)
  24. {
  25. for (i = 0; i < 15; i++)
  26. {
  27. sprite.x = map.layer0[tile_offset] * 24;
  28. drawSpritePart(tiles, offset_x, offset_y, &sprite);
  29. sprite.x = map.layer1[tile_offset] * 24;
  30. drawSpritePart(tiles, offset_x, offset_y, &sprite);
  31. tile_offset++;
  32. offset_x += 24;
  33. }
  34. tile_offset += map.w - 15;
  35. offset_x -= 24 * 15;
  36. offset_y += 24;
  37. }
  38. }