BlockType.h 843 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <Reader.h>
  3. #include <ReferenceCounter.h>
  4. #include <Vec3.h>
  5. #include "StaticRegistry.h"
  6. class Block;
  7. class BlockType : public virtual Framework::ReferenceCounter
  8. {
  9. private:
  10. const int id;
  11. Block* defaultBlock;
  12. protected:
  13. BlockType( int id );
  14. virtual ~BlockType();
  15. virtual void loadSuperBlock( Block* zBlock, Framework::StreamReader* zReader );
  16. virtual void initializeSuperBlock( Block* zBlock ) = 0;
  17. public:
  18. virtual Block* createBlock( Framework::Vec3<int> position ) = 0;
  19. virtual Block* loadBlock( Framework::Vec3<int> position, Framework::StreamReader* zReader );
  20. virtual void updateBlock( Block* zBlock, Framework::StreamReader* zReader );
  21. virtual const Block* zDefault();
  22. virtual bool needsInstance() const = 0;
  23. int getId() const;
  24. };