1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 06:27:45 +00:00

Storing container configuration in container object

This commit is contained in:
Mordred Admin 2018-07-25 14:03:43 +02:00
parent e11f1b3f20
commit 260092f542
3 changed files with 56 additions and 31 deletions

View file

@ -44,64 +44,62 @@ using namespace Core::Network::ActorControl;
void Core::Entity::Player::initInventory() void Core::Entity::Player::initInventory()
{ {
auto setupContainer = [this]( InventoryType type ) auto setupContainer = [this]( InventoryType type, uint8_t maxSize, const std::string& tableName, bool isMultiStorage )
{ m_inventoryMap[type] = make_ItemContainer( type ); }; { m_inventoryMap[type] = make_ItemContainer( type, maxSize, tableName, isMultiStorage ); };
// main bags // main bags
setupContainer( Bag0 ); setupContainer( Bag0, 34, "charaiteminventory", true );
setupContainer( Bag1 ); setupContainer( Bag1, 34, "charaiteminventory", true );
setupContainer( Bag2 ); setupContainer( Bag2, 34, "charaiteminventory", true );
setupContainer( Bag3 ); setupContainer( Bag3, 34, "charaiteminventory", true );
// gear set // gear set
setupContainer( GearSet0 ); setupContainer( GearSet0, 13, "charaitemgearset", true );
// gil contianer // gil contianer
setupContainer( Currency ); setupContainer( Currency, 11, "charaitemcurrency", false );
// crystals?? // crystals??
setupContainer( Crystal ); setupContainer( Crystal, 11, "charaitemcrystal", false );
//m_inventoryMap[0x07D3] = ItemContainerPtr( new ItemContainer( UNKNOWN_0 ) );
//m_inventoryMap[0x07D8] = ItemContainerPtr( new ItemContainer( UNKNOWN_1 ) );
// armory weapons - 0 // armory weapons - 0
setupContainer( ArmoryMain ); setupContainer( ArmoryMain, 34, "charaiteminventory", true );
// armory offhand - 1 // armory offhand - 1
setupContainer( ArmoryOff ); setupContainer( ArmoryOff, 34, "charaiteminventory", true );
//armory head - 2 //armory head - 2
setupContainer( ArmoryHead ); setupContainer( ArmoryHead, 34, "charaiteminventory", true );
//armory body - 3 //armory body - 3
setupContainer( ArmoryBody ); setupContainer( ArmoryBody, 34, "charaiteminventory", true );
//armory hand - 4 //armory hand - 4
setupContainer( ArmoryHand ); setupContainer( ArmoryHand, 34, "charaiteminventory", true );
//armory waist - 5 //armory waist - 5
setupContainer( ArmoryWaist ); setupContainer( ArmoryWaist, 34, "charaiteminventory", true );
//armory legs - 6 //armory legs - 6
setupContainer( ArmoryLegs ); setupContainer( ArmoryLegs, 34, "charaiteminventory", true );
//armory feet - 7 //armory feet - 7
setupContainer( ArmoryFeet ); setupContainer( ArmoryFeet, 34, "charaiteminventory", true );
//neck //neck
setupContainer( ArmotyNeck ); setupContainer( ArmotyNeck, 34, "charaiteminventory", true );
//earring //earring
setupContainer( ArmoryEar ); setupContainer( ArmoryEar, 34, "charaiteminventory", true );
//wrist //wrist
setupContainer( ArmoryWrist ); setupContainer( ArmoryWrist, 34, "charaiteminventory", true );
//armory rings - 11 //armory rings - 11
setupContainer( ArmoryRing ); setupContainer( ArmoryRing, 34, "charaiteminventory", true );
//soul crystals - 13 //soul crystals - 13
setupContainer( ArmorySoulCrystal ); setupContainer( ArmorySoulCrystal, 34, "charaiteminventory", true );
loadInventory(); loadInventory();

View file

@ -11,9 +11,11 @@
extern Core::Framework g_fw; extern Core::Framework g_fw;
Core::ItemContainer::ItemContainer( uint16_t locationId ) : Core::ItemContainer::ItemContainer( uint16_t storageId, uint8_t maxSize, const std::string& tableName, bool isMultiStorage ) :
m_id( locationId ), m_id( storageId ),
m_size( 35 ) m_size( maxSize ),
m_tableName( tableName ),
m_bMultiStorage( isMultiStorage )
{ {
} }
@ -63,7 +65,7 @@ const Core::ItemMap & Core::ItemContainer::getItemMap() const
return m_itemMap; return m_itemMap;
} }
int16_t Core::ItemContainer::getFreeSlot() int8_t Core::ItemContainer::getFreeSlot()
{ {
for( uint8_t slotId = 0; slotId < m_size; slotId++ ) 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; 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;
}

View file

@ -10,13 +10,13 @@
namespace Core namespace Core
{ {
typedef std::map< uint8_t, ItemPtr > ItemMap; using ItemMap = std::map< uint8_t, ItemPtr >;
class ItemContainer class ItemContainer
{ {
public: public:
ItemContainer( uint16_t locationId ); ItemContainer( uint16_t storageId, uint8_t maxSize, const std::string& tableName, bool isMultiStorage );
~ItemContainer(); ~ItemContainer();
uint16_t getId() const; uint16_t getId() const;
@ -33,11 +33,19 @@ namespace Core
void setItem( uint8_t slotId, ItemPtr item ); 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: private:
uint16_t m_id; uint16_t m_id;
uint8_t m_size; uint8_t m_size;
std::string m_tableName;
bool m_bMultiStorage;
ItemMap m_itemMap; ItemMap m_itemMap;
Entity::PlayerPtr m_pOwner; Entity::PlayerPtr m_pOwner;
}; };