#pragma once #include #include #include #include #include "StaticRegistry.h" class Entity; class Game; class EntityType : public virtual Framework::ReferenceCounter { private: const int id; protected: EntityType( int id ); virtual void loadSuperEntity( Entity *zEntity, Framework::Reader *zReader ); virtual void saveSuperEntity( Entity *zEntity, Framework::Writer *zWriter ); virtual void createSuperEntity( Entity *zEntity ); virtual void saveSuperEntity( Entity *zEntity ); virtual Entity *createEntity( Game *zTarget ) = 0; public: virtual Entity *loadEntity( Framework::Vec3 position, Game *zTarget, Framework::Reader *zReader ); virtual void saveEntity( Entity *zEntity, Framework::Writer *zWriter ); virtual Entity *createEntityAt( Framework::Vec3 position, Game *zTarget ); int getId() const; };