#pragma once #include #include #include #include #include "StaticRegistry.h" class Item; class ItemStack; class ItemSkill; class ItemSkillLevelUpRule; class ItemType : public virtual Framework::ReferenceCounter { protected: const int id; ItemType( int id ); virtual void loadSuperItem( Item *zItem, Framework::StreamReader *zReader ) const; public: ~ItemType(); int getId() const; virtual Item *createItem() const = 0; virtual ItemStack *createItemStack( int size ) const; virtual Item *loadItem( Framework::StreamReader *zReader ) const; };