NoBlock.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include "BlockType.h"
  3. #include "Block.h"
  4. class NoBlockBlockType;
  5. class NoBlock : public Block
  6. {
  7. public:
  8. static const NoBlock INSTANCE;
  9. protected:
  10. NoBlock();
  11. friend NoBlockBlockType;
  12. };
  13. class NoBlockBlockType : public BlockType
  14. {
  15. REGISTRABLE( NoBlockBlockType )
  16. protected:
  17. NoBlockBlockType();
  18. NoBlockBlockType( int id );
  19. virtual Block* createBlock( Framework::Vec3<int> position ) override;
  20. virtual Block* loadBlock( Framework::Vec3<int> position, Framework::StreamReader* zReader ) override;
  21. virtual void initializeSuperBlock( Block* zBlock ) override;
  22. virtual const Block* zDefault() override;
  23. virtual bool needsInstance() const override;
  24. };
  25. REGISTER( NoBlockBlockType, BlockType )
  26. class AirBlock : public Block
  27. {
  28. public:
  29. static const AirBlock INSTANCE;
  30. protected:
  31. AirBlock();
  32. };
  33. class AirBlockBlockType : public NoBlockBlockType
  34. {
  35. REGISTRABLE( AirBlockBlockType )
  36. protected:
  37. AirBlockBlockType();
  38. virtual const Block* zDefault() override;
  39. };
  40. REGISTER( AirBlockBlockType, BlockType )