#include #include "ItemType.h" #include "ItemStack.h" ItemType::ItemType( int id ) : ReferenceCounter(), id( id ) { StaticRegistry::INSTANCE.registerT( this, id ); } ItemType::~ItemType() {} void ItemType::loadSuperItem( Item *zItem, Framework::StreamReader *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 ); unsigned char flags = 0; zReader->lese( (char *)&flags, 1 ); zItem->eatable = ( flags | 1 ) == flags; zItem->placeable = ( flags | 2 ) == flags; zItem->equippable = ( flags | 4 ) == flags; zItem->solid = ( flags | 8 ) == flags; zItem->usable = ( flags | 16 ) == flags; zReader->lese( (char *)&zItem->maxStackSize, 1 ); unsigned char len = 0; zReader->lese( (char *)&len, 1 ); zItem->name.fillText( ' ', len ); zReader->lese( zItem->name, len ); } int ItemType::getId() const { return id; } ItemStack *ItemType::createItemStack( int size ) const { Item *item = createItem(); if( !item ) return 0; return new ItemStack( item, MIN( size, item->getMaxStackSize() ) ); } Item *ItemType::loadItem( Framework::StreamReader *zReader ) const { Item *item = createItem(); loadSuperItem( item, zReader ); return item; }