#pragma once #include #include #include #include "Area.h" #include "ModelInfo.h" class Block; class BlockType : public virtual Framework::ReferenceCounter { private: const int id; bool needsInstance; int initialMaxHP; bool needModelSubscription; bool fluid; char maxFlowDistance; ModelInfo model; Direction defaultFrontDirection; public: BlockType(int id, bool needsInstance, ModelInfo model, int initialMaxHP, bool needModelSubscription, bool fluid, char maxFlowDistance, Direction defaultFrontDirection); ~BlockType(); Block* createBlock(Framework::Vec3 position, bool passable, float speedModifier, Direction frontDirection); bool doesNeedInstance() const; bool doesNeedModelSubscription() const; bool isFluid() const; char getMaxFlowDistance() const; Direction getDefaultFrontDirection() const; const ModelInfo& getModelInfo() const; int getId() const; };