#pragma once #include "BlockType.h" #include "Block.h" class NoBlockBlockType; class NoBlock : public Block { public: static const NoBlock INSTANCE; protected: NoBlock(); virtual bool onTick( TickQueue* zQueue, int numTicks, bool& blocked ) override; virtual void onPostTick() override; friend NoBlockBlockType; }; class NoBlockBlockType : public BlockType { REGISTRABLE( NoBlockBlockType ) protected: virtual Block* createBlock( Framework::Vec3 position, Game* zTarget ) override; virtual Item* createItem( Game* zTarget ) override; virtual Block* loadBlock( Framework::Vec3 position, Game* zTarget, Framework::StreamReader* zReader ) override; virtual void saveBlock( Block* zBlock, Framework::StreamWriter* zWriter ) override; virtual Item* getItemFromBlock( Block* zBlock, Game* zTarget ) override; virtual Block* createBlockAt( Framework::Vec3 position, Game* zTarget, Item* zUsedItem ) override; virtual const Block* zDefault() override; NoBlockBlockType(); NoBlockBlockType( int id ); }; REGISTER( NoBlockBlockType, BlockType ) class AirBlockBlockType : public NoBlockBlockType { REGISTRABLE( AirBlockBlockType ) protected: AirBlockBlockType(); }; REGISTER( AirBlockBlockType, BlockType )