#pragma once #include #include #include class Entity; class EntityType : public virtual Framework::ReferenceCounter { private: const int id; protected: EntityType( int id ); virtual void loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const; virtual void createSuperEntity( Entity* zEntity ) const; virtual Entity* createEntity() const = 0; public: virtual Entity* loadEntity( Framework::StreamReader* zReader ) const; virtual void updateEntity( Entity* e, Framework::StreamReader* zReader ) const; int getId() const; };