diff --git a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp index 40a853df..90a7fbef 100644 --- a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp @@ -44,64 +44,62 @@ using namespace Core::Network::ActorControl; void Core::Entity::Player::initInventory() { - auto setupContainer = [this]( InventoryType type ) - { m_inventoryMap[type] = make_ItemContainer( type ); }; + auto setupContainer = [this]( InventoryType type, uint8_t maxSize, const std::string& tableName, bool isMultiStorage ) + { m_inventoryMap[type] = make_ItemContainer( type, maxSize, tableName, isMultiStorage ); }; // main bags - setupContainer( Bag0 ); - setupContainer( Bag1 ); - setupContainer( Bag2 ); - setupContainer( Bag3 ); + setupContainer( Bag0, 34, "charaiteminventory", true ); + setupContainer( Bag1, 34, "charaiteminventory", true ); + setupContainer( Bag2, 34, "charaiteminventory", true ); + setupContainer( Bag3, 34, "charaiteminventory", true ); // gear set - setupContainer( GearSet0 ); + setupContainer( GearSet0, 13, "charaitemgearset", true ); // gil contianer - setupContainer( Currency ); + setupContainer( Currency, 11, "charaitemcurrency", false ); // crystals?? - setupContainer( Crystal ); - //m_inventoryMap[0x07D3] = ItemContainerPtr( new ItemContainer( UNKNOWN_0 ) ); - //m_inventoryMap[0x07D8] = ItemContainerPtr( new ItemContainer( UNKNOWN_1 ) ); + setupContainer( Crystal, 11, "charaitemcrystal", false ); // armory weapons - 0 - setupContainer( ArmoryMain ); + setupContainer( ArmoryMain, 34, "charaiteminventory", true ); // armory offhand - 1 - setupContainer( ArmoryOff ); + setupContainer( ArmoryOff, 34, "charaiteminventory", true ); //armory head - 2 - setupContainer( ArmoryHead ); + setupContainer( ArmoryHead, 34, "charaiteminventory", true ); //armory body - 3 - setupContainer( ArmoryBody ); + setupContainer( ArmoryBody, 34, "charaiteminventory", true ); //armory hand - 4 - setupContainer( ArmoryHand ); + setupContainer( ArmoryHand, 34, "charaiteminventory", true ); //armory waist - 5 - setupContainer( ArmoryWaist ); + setupContainer( ArmoryWaist, 34, "charaiteminventory", true ); //armory legs - 6 - setupContainer( ArmoryLegs ); + setupContainer( ArmoryLegs, 34, "charaiteminventory", true ); //armory feet - 7 - setupContainer( ArmoryFeet ); + setupContainer( ArmoryFeet, 34, "charaiteminventory", true ); //neck - setupContainer( ArmotyNeck ); + setupContainer( ArmotyNeck, 34, "charaiteminventory", true ); //earring - setupContainer( ArmoryEar ); + setupContainer( ArmoryEar, 34, "charaiteminventory", true ); //wrist - setupContainer( ArmoryWrist ); + setupContainer( ArmoryWrist, 34, "charaiteminventory", true ); //armory rings - 11 - setupContainer( ArmoryRing ); + setupContainer( ArmoryRing, 34, "charaiteminventory", true ); //soul crystals - 13 - setupContainer( ArmorySoulCrystal ); + setupContainer( ArmorySoulCrystal, 34, "charaiteminventory", true ); loadInventory(); diff --git a/src/servers/sapphire_zone/Inventory/ItemContainer.cpp b/src/servers/sapphire_zone/Inventory/ItemContainer.cpp index 54a65309..330c77f7 100644 --- a/src/servers/sapphire_zone/Inventory/ItemContainer.cpp +++ b/src/servers/sapphire_zone/Inventory/ItemContainer.cpp @@ -11,9 +11,11 @@ extern Core::Framework g_fw; -Core::ItemContainer::ItemContainer( uint16_t locationId ) : - m_id( locationId ), - m_size( 35 ) +Core::ItemContainer::ItemContainer( uint16_t storageId, uint8_t maxSize, const std::string& tableName, bool isMultiStorage ) : + m_id( storageId ), + m_size( maxSize ), + m_tableName( tableName ), + m_bMultiStorage( isMultiStorage ) { } @@ -63,7 +65,7 @@ const Core::ItemMap & Core::ItemContainer::getItemMap() const return m_itemMap; } -int16_t Core::ItemContainer::getFreeSlot() +int8_t Core::ItemContainer::getFreeSlot() { for( uint8_t slotId = 0; slotId < m_size; slotId++ ) { @@ -95,3 +97,20 @@ void Core::ItemContainer::setItem( uint8_t slotId, ItemPtr pItem ) m_itemMap[slotId] = pItem; } + +uint8_t Core::ItemContainer::getMaxSize() const +{ + return m_size; +} + +std::string Core::ItemContainer::getTableName() const +{ + return m_tableName; +} + +bool Core::ItemContainer::isMultiStorage() const +{ + return m_bMultiStorage; +} + + diff --git a/src/servers/sapphire_zone/Inventory/ItemContainer.h b/src/servers/sapphire_zone/Inventory/ItemContainer.h index 223dd7ae..0d0334bf 100644 --- a/src/servers/sapphire_zone/Inventory/ItemContainer.h +++ b/src/servers/sapphire_zone/Inventory/ItemContainer.h @@ -10,13 +10,13 @@ namespace Core { - typedef std::map< uint8_t, ItemPtr > ItemMap; + using ItemMap = std::map< uint8_t, ItemPtr >; class ItemContainer { public: - ItemContainer( uint16_t locationId ); + ItemContainer( uint16_t storageId, uint8_t maxSize, const std::string& tableName, bool isMultiStorage ); ~ItemContainer(); uint16_t getId() const; @@ -33,11 +33,19 @@ namespace Core void setItem( uint8_t slotId, ItemPtr item ); - int16_t getFreeSlot(); + int8_t getFreeSlot(); + uint8_t getMaxSize() const; + + std::string getTableName() const; + + bool isMultiStorage() const; + private: uint16_t m_id; uint8_t m_size; + std::string m_tableName; + bool m_bMultiStorage; ItemMap m_itemMap; Entity::PlayerPtr m_pOwner; };