1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-25 22:17: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()
{
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();

View file

@ -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;
}

View file

@ -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;
};