#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( 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::Reader *zReader ) override; virtual void saveSuperBlock( Block *zBlock, Framework::Writer *zWriter ) override; virtual void createSuperBlock( Block *zBlock, Item *zItem ) override; virtual void createSuperItem( Block *zBlock, Item *zItem ) override; virtual Block *createBlock( Framework::Vec3 position, Game *zTarget ) override; virtual Item *createItem( Game *zTarget ) override; DirtBlockType(); }; #ifdef REGISTER REGISTER( DirtBlockType, BlockType ) #endif class DirtBlockItemType : public BasicBlockItemType { REGISTRABLE( DirtBlockItemType ) protected: DirtBlockItemType(); public: virtual Item *createItem() const override; }; #ifdef REGISTER REGISTER( DirtBlockItemType, ItemType ) #endif