#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; }; class NoBlockBlockType : public BlockType { REGISTRABLE(NoBlockBlockType) protected: NoBlockBlockType(); NoBlockBlockType(int id); virtual Block* createBlock(Framework::Vec3 position) const override; virtual Item* createItem() const override; virtual Block* loadBlock(Framework::Vec3 position, Framework::StreamReader* zReader) 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, Item* zUsedItem) const override; virtual const Block* zDefault() const override; }; REGISTER(NoBlockBlockType, BlockType) 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; }; class AirBlockBlockType : public NoBlockBlockType { REGISTRABLE(AirBlockBlockType) protected: AirBlockBlockType(); virtual const Block* zDefault() const override; }; REGISTER(AirBlockBlockType, BlockType)