BlockType.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <Vec3.h>
  3. #include <Array.h>
  4. #include <Writer.h>
  5. #include "StaticRegistry.h"
  6. #include "Block.h"
  7. class Game;
  8. class Item;
  9. class Block;
  10. class BlockType : public virtual Framework::ReferenceCounter
  11. {
  12. private:
  13. const int id;
  14. protected:
  15. BlockType( int id );
  16. virtual void loadSuperBlock( Block *zBlock, Framework::Reader *zReader );
  17. virtual void saveSuperBlock( Block *zBlock, Framework::Writer *zWriter );
  18. virtual void createSuperBlock( Block *zBlock, Item *zItem );
  19. virtual void createSuperItem( Block *zBlock, Item *zItem );
  20. virtual Block *createBlock( Framework::Vec3<int> position, Game *zTarget ) = 0;
  21. virtual Item *createItem( Game *zTarget ) = 0;
  22. public:
  23. virtual Block *loadBlock( Framework::Vec3<int> position, Game *zTarget, Framework::Reader *zReader );
  24. virtual void saveBlock( Block *zBlock, Framework::Writer *zWriter );
  25. virtual Item *getItemFromBlock( Block *zBlock, Game *zTarget );
  26. virtual Block *createBlockAt( Framework::Vec3<int> position, Game *zTarget, Item *zUsedItem );
  27. int getId() const;
  28. };