A 2D tile-based sandbox game.
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <SFML/Graphics/Texture.hpp>
  3. #include <string.h>
  4. #include "common.h"
  5. #include "Tile.h"
  6. namespace Swan {
  7. class World;
  8. class Chunk {
  9. public:
  10. using RelPos = TilePos;
  11. Chunk(ChunkPos pos): pos_(pos) {
  12. texture_.create(CHUNK_WIDTH * TILE_SIZE, CHUNK_HEIGHT * TILE_SIZE);
  13. sprite_ = sf::Sprite(texture_);
  14. }
  15. void setTileID(World &world, RelPos pos, Tile::ID id);
  16. Tile &getTile(World &world, RelPos pos);
  17. void render(World &world);
  18. void draw(Win &win);
  19. ChunkPos pos_;
  20. Tile::ID tiles_[CHUNK_WIDTH][CHUNK_HEIGHT];
  21. private:
  22. static sf::Uint8 *imgbuf;
  23. void drawBlock(RelPos pos, const Tile &t);
  24. void drawBlock(World &world, RelPos pos, Tile::ID id);
  25. bool dirty_ = false;
  26. sf::Texture texture_;
  27. sf::Sprite sprite_;
  28. };
  29. }