@ -11,6 +11,9 @@ INCLUDE_GFX
safemap < std : : string , ItemInfo > ITEM_DATA ;
safemap < std : : string , ItemScript > ITEM_SCRIPTS ;
safemap < std : : string , std : : set < std : : string > > ITEM_CATEGORIES ;
Item Item : : BLANK ;
std : : map < IT , Item > Inventory : : _inventory ;
std : : map < ITCategory , std : : vector < IT > > Inventory : : sortedInv ;
ItemInfo : : ItemInfo ( )
: customProps ( { nullptr , nullptr } ) , img ( nullptr ) { }
@ -104,10 +107,13 @@ void ItemInfo::InitializeScripts(){
std : : cout < < ITEM_SCRIPTS . size ( ) < < " item scripts have been loaded. " < < std : : endl ;
}
Item : : Item ( )
: amt ( 0 ) , it ( nullptr ) { }
Item : : Item ( uint32_t amt , IT item )
: amt ( amt ) , it ( & ITEM_DATA . at ( item ) ) { }
void Inventory : : AddItem ( IT it , int amt ) {
void Inventory : : AddItem ( IT it , u int32_ t amt ) {
//There are two places to manipulate items in (Both the sorted inventory and the actual inventory)
if ( ! _inventory . count ( it ) ) {
_inventory [ it ] = Item { amt , it } ;
@ -117,6 +123,11 @@ void Inventory::AddItem(IT it,int amt){
}
}
Item Inventory : : GetItem ( IT it ) {
if ( ! _inventory . count ( it ) ) return Item : : BLANK ;
return _inventory . at ( it ) ;
}
uint32_t Inventory : : GetItemCount ( IT it ) {
if ( ! _inventory . count ( it ) ) {
return 0 ;
@ -125,7 +136,7 @@ uint32_t Inventory::GetItemCount(IT it){
}
}
void Inventory : : UseItem ( IT it , int amt ) {
void Inventory : : UseItem ( IT it , u int32_ t amt ) {
//There are two places to manipulate items in (Both the sorted inventory and the actual inventory)
for ( int i = 0 ; i < amt ; i + + ) {
if ( ExecuteAction ( it ) ) {
@ -134,7 +145,7 @@ void Inventory::UseItem(IT it,int amt){
}
}
void Inventory : : RemoveItem ( IT it , int amt ) {
void Inventory : : RemoveItem ( IT it , u int32_ t amt ) {
//There are two places to manipulate items in (Both the sorted inventory and the actual inventory)
if ( ! _inventory . count ( it ) ) return ;
if ( amt > = _inventory . at ( it ) . Amt ( ) ) {
@ -176,4 +187,43 @@ bool Inventory::SwapItems(IT it,IT it2){
auto index2 = std : : find ( inv . begin ( ) , inv . end ( ) , it2 ) ;
std : : swap ( * index1 , * index2 ) ;
return true ;
}
uint32_t Item : : Amt ( ) {
return amt ;
} ;
std : : string Item : : Name ( ) {
return it - > Name ( ) ;
} ;
std : : string Item : : Description ( ) {
return it - > Description ( ) ;
} ;
ITCategory Item : : Category ( ) {
return it - > Category ( ) ;
} ;
Decal * Item : : Decal ( ) {
return it - > Decal ( ) ;
} ;
ItemScript & Item : : OnUseAction ( ) {
return it - > OnUseAction ( ) ;
} ;
std : : string ItemInfo : : Name ( ) {
return name ;
} ;
std : : string ItemInfo : : Description ( ) {
return description ;
} ;
ITCategory ItemInfo : : Category ( ) {
return category ;
} ;
Decal * ItemInfo : : Decal ( ) {
return img ;
} ;
ItemScript & ItemInfo : : OnUseAction ( ) {
return ITEM_SCRIPTS . at ( useFunc ) ;
} ;
bool Item : : IsBlank ( ) {
return amt = = 0 | | it = = nullptr ;
}