#pragma once #include #include #include #include #include #include class Item; class ItemStack; class ItemSkill; class ItemSkillLevelUpRule; class ItemType : public virtual Framework::ReferenceCounter { protected: const int id; const char* defaultName; ItemType( int id, const char* defaultName ); 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; virtual Framework::Model3DData* getItemModel() const = 0; virtual Framework::Model3DTextur* getItemTextur() const = 0; const char* getDefaultItemName() const; };