#pragma once #include "Block.h" #include "BlockType.h" #include "Item.h" class BlockType; class ItemType; class DirtBlockType; class DirtBlockItemType; class BasicBlock : public Block { public: BasicBlock( const BlockType* zType, ItemType* zTool, Framework::Vec3 pos ); virtual bool onTick( TickQueue* zQueue, int numTicks, bool& blocked ) override; virtual void onPostTick() override; friend DirtBlockType; }; class DirtBlockType : public BlockType { REGISTRABLE( DirtBlockType ) protected: virtual void loadSuperBlock( Block* zBlock, Framework::StreamReader* zReader ) const override; virtual void saveSuperBlock( Block* zBlock, Framework::StreamWriter* zWriter ) const override; virtual void createSuperBlock( Block* zBlock, Item* zItem ) const override; virtual void createSuperItem( Block* zBlock, Item* zItem ) const override; virtual Block* createBlock( Framework::Vec3 position ) const override; virtual Item* createItem() const override; DirtBlockType(); }; REGISTER( DirtBlockType, BlockType ) class DirtBlockItemType : public BasicBlockItemType { REGISTRABLE( DirtBlockItemType ) protected: DirtBlockItemType(); public: virtual Item* createItem() const override; }; REGISTER( DirtBlockItemType, ItemType )