Inventoty.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "Inventory.h"
  2. #include "Area.h"
  3. using namespace Framework;
  4. Inventory::Inventory( const Framework::Vec3<float> location, bool hasInventory )
  5. : ReferenceCounter(),
  6. location( location )
  7. {
  8. if( hasInventory )
  9. {
  10. pullSlotsOrder = new Framework::RCArray<ItemSlot>();
  11. pushSlotsOrder = new Framework::RCArray<ItemSlot>();
  12. }
  13. else
  14. {
  15. pullSlotsOrder = 0;
  16. pushSlotsOrder = 0;
  17. }
  18. }
  19. Inventory::~Inventory()
  20. {
  21. if( pullSlotsOrder )
  22. pullSlotsOrder->release();
  23. if( pushSlotsOrder )
  24. pushSlotsOrder->release();
  25. }
  26. void Inventory::loadInventory( Framework::StreamReader *zReader )
  27. {
  28. if( pushSlotsOrder )
  29. {
  30. for( auto iterator = pushSlotsOrder->getIterator(); iterator; iterator++ )
  31. {
  32. int size = 0;
  33. zReader->lese( (char *)&size, 4 );
  34. if( size != 0 )
  35. {
  36. int id = 0;
  37. zReader->lese( (char *)&id, 4 );
  38. Item *item = StaticRegistry<ItemType>::INSTANCE.zElement( id )->loadItem( zReader );
  39. iterator->setItems( new ItemStack( item, size ) );
  40. }
  41. }
  42. }
  43. }