A 2D tile-based sandbox game.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

cygnet-test.cc 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include <cygnet/Context.h>
  2. #include <cygnet/Window.h>
  3. #include <cygnet/Renderer.h>
  4. #include <swan-common/constants.h>
  5. #include <stdint.h>
  6. #include <SDL_image.h>
  7. #include <SDL.h>
  8. void addTile(Cygnet::Renderer &rnd, const char *path) {
  9. static size_t id = 0;
  10. SDL_Surface *surf = IMG_Load(path);
  11. rnd.registerTileTexture(id++, surf->pixels, surf->pitch * surf->h);
  12. SDL_FreeSurface(surf);
  13. }
  14. int main() {
  15. Cygnet::Context ctx;
  16. IMG_Init(IMG_INIT_PNG);
  17. //Cygnet::Window win("Cygnet Test", 640, 480);
  18. Cygnet::Window win("Cygnet Test", 680, 680);
  19. Cygnet::Renderer rnd;
  20. for (auto path: {
  21. "core.mod/assets/tile/dirt.png",
  22. "core.mod/assets/tile/grass.png",
  23. "core.mod/assets/tile/leaves.png",
  24. "core.mod/assets/tile/stone.png",
  25. "core.mod/assets/tile/torch.png",
  26. "core.mod/assets/tile/tree-trunk.png",
  27. }) addTile(rnd, path);
  28. rnd.uploadTileTexture();
  29. Cygnet::RenderChunk chunk;
  30. {
  31. uint16_t tiles[SwanCommon::CHUNK_WIDTH * SwanCommon::CHUNK_HEIGHT];
  32. memset(tiles, 0, sizeof(tiles));
  33. tiles[0] = 1;
  34. tiles[1] = 2;
  35. tiles[2] = 3;
  36. chunk = rnd.createChunk(tiles);
  37. }
  38. while (true) {
  39. SDL_Event evt;
  40. while (SDL_PollEvent(&evt)) {
  41. switch (evt.type) {
  42. case SDL_QUIT:
  43. goto exit;
  44. }
  45. }
  46. rnd.drawChunk({0, 0}, chunk);
  47. win.clear();
  48. rnd.draw();
  49. win.flip();
  50. }
  51. exit:
  52. IMG_Quit();
  53. }