#include "ItemType.h" #include "ItemSkill.h" #include "ItemStack.h" ItemType::ItemType( int id, ItemSkillLevelUpRule *levelUpRule, ItemType *zBrokenType ) : ReferenceCounter(), id( id ), levelUpRule( levelUpRule ), zBrokenType( zBrokenType ) { StaticRegistry::INSTANCE.registerT( this, id ); } ItemType::~ItemType() { if( levelUpRule ) levelUpRule->release(); } void ItemType::loadSuperItem( Item *zItem, Framework::Reader *zReader ) const { zReader->lese( (char *)&zItem->damage, 4 ); zReader->lese( (char *)&zItem->maxDamage, 4 ); zReader->lese( (char *)&zItem->durability, 4 ); zReader->lese( (char *)&zItem->maxDurability, 4 ); zReader->lese( (char *)&zItem->eatable, 1 ); zReader->lese( (char *)&zItem->placeable, 1 ); zReader->lese( (char *)&zItem->equippable, 1 ); zReader->lese( (char *)&zItem->usable, 1 ); zReader->lese( (char *)&zItem->maxStackSize, 1 ); unsigned char len = 0; zReader->lese( (char *)&len, 1 ); zItem->name.fillText( ' ', len ); zReader->lese( zItem->name, len ); } void ItemType::saveSuperItem( Item *zItem, Framework::Writer *zWriter ) const { zWriter->schreibe( (char *)&zItem->damage, 4 ); zWriter->schreibe( (char *)&zItem->maxDamage, 4 ); zWriter->schreibe( (char *)&zItem->durability, 4 ); zWriter->schreibe( (char *)&zItem->maxDurability, 4 ); zWriter->schreibe( (char *)&zItem->eatable, 1 ); zWriter->schreibe( (char *)&zItem->placeable, 1 ); zWriter->schreibe( (char *)&zItem->equippable, 1 ); zWriter->schreibe( (char *)&zItem->usable, 1 ); zWriter->schreibe( (char *)&zItem->maxStackSize, 1 ); unsigned char len = (unsigned char)zItem->name.getLength(); zWriter->schreibe( (char *)&len, 1 ); zWriter->schreibe( zItem->name, len ); } int ItemType::getId() const { return id; } ItemType *ItemType::zBrokenItemType() const { return zBrokenType; } ItemStack *ItemType::createItemStack( int size ) const { Item *item = createItem(); if( !item ) return 0; return new ItemStack( item, MIN( size, item->getMaxStackSize() ) ); } ItemSkill *ItemType::createDefaultItemSkill() const { return 0; } void ItemType::levelUpItemSkill( ItemSkill *zSkill ) const { if( levelUpRule ) levelUpRule->applyOn( zSkill ); } Item *ItemType::loadItem( Framework::Reader *zReader ) const { Item *item = createItem(); loadSuperItem( item, zReader ); return item; } void ItemType::saveItem( Item *zItem, Framework::Writer *zWriter ) const { saveSuperItem( zItem, zWriter ); }