#pragma once #include #include #include #include #include "ModelInfo.h" #include "StaticRegistry.h" class Entity; class EntityTypeEnum { public: static const int PLAYER = 0; static const int ITEM = 1; }; class EntityType : public virtual Framework::ReferenceCounter { private: const int id; const ModelInfo model; protected: EntityType(int id, ModelInfo model); virtual void loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader) const; virtual void saveSuperEntity( Entity* zEntity, Framework::StreamWriter* zWriter) const; virtual void createSuperEntity(Entity* zEntity) const; public: virtual Entity* loadEntity(Framework::StreamReader* zReader) const; virtual void saveEntity( Entity* zEntity, Framework::StreamWriter* zWriter) const; virtual Entity* createEntityAt( Framework::Vec3 position, int dimensionId) const; virtual Entity* createEntity(Framework::Vec3 position, int dimensionId, int entityId) const = 0; int getId() const; const ModelInfo& getModel() const; };