#pragma once #include "Block.h" #include "BlockType.h" class NoBlockBlockType : public BlockType { private: const Block* defaultB; protected: virtual Block* createBlock( Framework::Vec3 position, int dimensionId) const override; virtual Item* createItem() const override; virtual Block* loadBlock(Framework::Vec3 position, Framework::StreamReader* zReader, int dimensionId) const override; virtual void saveBlock( Block* zBlock, Framework::StreamWriter* zWriter) const override; virtual Item* getItemFromBlock(Block* zBlock) const override; virtual Block* createBlockAt(Framework::Vec3 position, int dimensionId, Item* zUsedItem) const override; virtual const Block* zDefault() const override; public: NoBlockBlockType(const Block* defaultB, Framework::Text name); virtual ItemType* createItemType() const override; }; 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; }; class AirBlock : public Block { public: static const AirBlock INSTANCE; protected: AirBlock(); virtual bool onTick( TickQueue* zQueue, int numTicks, bool& blocked) override; virtual void onPostTick() override; };