Chunk.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "Block.h"
  3. #include <Vec3.h>
  4. #include <Array.h>
  5. #include <Datei.h>
  6. #include <Punkt.h>
  7. #include <Either.h>
  8. class Game;
  9. class Chunk : public virtual Framework::ReferenceCounter
  10. {
  11. private:
  12. Game* zGame;
  13. int dimensionId;
  14. Framework::Punkt location;
  15. Block** blocks;
  16. Chunk* zNeighbours[ 4 ];
  17. unsigned short* blockIds;
  18. Framework::Either<Block*, int> zBlockNeighbor( Framework::Vec3<int> location );
  19. public:
  20. Chunk( Framework::Punkt location, Game* zGame, int dimensionId );
  21. Chunk( Framework::Punkt location, Game* zGame, int dimensionId, Framework::StreamReader* zReader );
  22. ~Chunk();
  23. void api( Framework::StreamReader* zRequest, NetworkResponse* zResponse );
  24. Framework::Either<Block*, int> zBlockAt( Framework::Vec3<int> cLocation ) const;
  25. const Block* zBlockConst( Framework::Vec3<int> location ) const;
  26. void instantiateBlock( Framework::Vec3<int> location );
  27. void generateBlock( Framework::Vec3<int> location );
  28. void putBlockAt( Framework::Vec3<int> location, Block* block );
  29. void putBlockTypeAt( Framework::Vec3<int> location, int type );
  30. void setNeighbor( Direction dir, Chunk* zChunk );
  31. void load( Framework::StreamReader* zReader );
  32. void save( Framework::StreamWriter* zWriter );
  33. void removeUnusedBlocks();
  34. int getDimensionId() const;
  35. Framework::Punkt getCenter() const;
  36. Framework::Vec3<int> getMin() const;
  37. Framework::Vec3<int> getMax() const;
  38. Game* zGameObj() const;
  39. };