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:
parent
e11f1b3f20
commit
260092f542
3 changed files with 56 additions and 31 deletions
|
@ -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();
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue