|
|
|
@ -45,6 +45,7 @@ All rights reserved. |
|
|
|
|
#include "MenuItemItemButton.h" |
|
|
|
|
#include "RowItemDisplay.h" |
|
|
|
|
#include "PlayerMoneyLabel.h" |
|
|
|
|
#include "SoundEffect.h" |
|
|
|
|
|
|
|
|
|
INCLUDE_game |
|
|
|
|
INCLUDE_ITEM_CATEGORIES |
|
|
|
@ -61,12 +62,17 @@ void Menu::InitializeInventoryWindow(){ |
|
|
|
|
inventoryWindow->ADD("Inventory Label",MenuLabel)(geom2d::rect<float>{{0,0},{inventoryWindow->size.x-1,24}},"Inventory",2,SHADOW|OUTLINE|BACKGROUND)END; |
|
|
|
|
inventoryWindow->ADD("Inventory Tabs Outline",MenuComponent)(geom2d::rect<float>{{0,28},{72,inventoryWindow->size.y-44}},"",DO_NOTHING,UNSELECTABLE)END; |
|
|
|
|
|
|
|
|
|
std::vector<std::pair<std::string,int>>categories; |
|
|
|
|
for(auto&[category,items]:ITEM_CATEGORIES){ |
|
|
|
|
if(DATA["ItemCategory"][category].GetString(0)=="!HIDE")continue; //This category is meant to be hidden!
|
|
|
|
|
categories.push_back({category,DATA["ItemCategory"][category].GetInt(0)}); //We assume the first value becomes the sort order we wish to use.
|
|
|
|
|
} |
|
|
|
|
std::sort(categories.begin(),categories.end(),[](std::pair<std::string,int>&cat1,std::pair<std::string,int>&cat2){return cat1.second<cat2.second;}); |
|
|
|
|
auto GetSortedCategories=[](){ |
|
|
|
|
std::vector<std::pair<std::string,int>>categories; |
|
|
|
|
for(auto&[category,items]:ITEM_CATEGORIES){ |
|
|
|
|
if(DATA["ItemCategory"][category].GetString(0)=="!HIDE")continue; //This category is meant to be hidden!
|
|
|
|
|
categories.push_back({category,DATA["ItemCategory"][category].GetInt(0)}); //We assume the first value becomes the sort order we wish to use.
|
|
|
|
|
} |
|
|
|
|
std::sort(categories.begin(),categories.end(),[](std::pair<std::string,int>&cat1,std::pair<std::string,int>&cat2){return cat1.second<cat2.second;}); |
|
|
|
|
return categories; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
std::vector<std::pair<std::string,int>>categories=GetSortedCategories(); |
|
|
|
|
|
|
|
|
|
#pragma region Inventory Tabs |
|
|
|
|
bool first=true; |
|
|
|
@ -83,6 +89,11 @@ void Menu::InitializeInventoryWindow(){ |
|
|
|
|
Component<RowInventoryScrollableWindowComponent>(data.menu.GetType(),"Inventory Display - "+data.component.lock()->S(A::CATEGORY_NAME))->Enable(); |
|
|
|
|
Component<MenuComponent>(data.menu.GetType(),data.component.lock()->S(A::CATEGORY_NAME)+" Inventory Tab")->SetSelected(true); |
|
|
|
|
data.menu.S(A::LAST_INVENTORY_TYPE_OPENED)=data.component.lock()->S(A::CATEGORY_NAME); |
|
|
|
|
data.menu.I(A::ITEM_SLOT)=Component<RowInventoryScrollableWindowComponent>(data.menu.GetType(),"Inventory Display - "+data.component.lock()->S(A::CATEGORY_NAME))->GetComponents().size()-1; |
|
|
|
|
if(data.menu.I(A::ITEM_SLOT)>=0){ |
|
|
|
|
data.menu.SetSelection(Component<RowInventoryScrollableWindowComponent>(data.menu.GetType(),"Inventory Display - "+data.component.lock()->S(A::CATEGORY_NAME))->GetComponents()[0],true); |
|
|
|
|
} |
|
|
|
|
SoundEffect::PlaySFX("Button Click",SoundEffect::CENTERED); |
|
|
|
|
return true; |
|
|
|
|
},vf2d{textScaling,1.f})END; |
|
|
|
|
button->SetSelectionType(HIGHLIGHT); |
|
|
|
@ -91,6 +102,7 @@ void Menu::InitializeInventoryWindow(){ |
|
|
|
|
auto inventoryDisplay=inventoryWindow->ADD("Inventory Display - "+category,RowInventoryScrollableWindowComponent)(geom2d::rect<float>{{72,28},{150,inventoryWindow->size.y-44}},"Item Name Label","Item Description Label",DO_NOTHING, |
|
|
|
|
[](MenuFuncData data){ |
|
|
|
|
Component<MenuItemItemButton>(data.menu.GetType(),"Item Icon")->SetItem(DYNAMIC_POINTER_CAST<RowItemDisplay>(data.component.lock())->GetItem()); |
|
|
|
|
data.menu.I(A::ITEM_SLOT)=data.parentComponent.lock()->GetComponentIndex(data.component); |
|
|
|
|
return true; |
|
|
|
|
}, |
|
|
|
|
[](MenuFuncData data){ |
|
|
|
@ -139,4 +151,332 @@ void Menu::InitializeInventoryWindow(){ |
|
|
|
|
Menu::CloseMenu(); |
|
|
|
|
return true; |
|
|
|
|
},vf2d{2.f,2.f})END; |
|
|
|
|
|
|
|
|
|
inventoryWindow->SetupKeyboardNavigation( |
|
|
|
|
[](MenuType type,Data&returnData){ //On Open
|
|
|
|
|
std::string category=Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED); |
|
|
|
|
auto inventoryDisplay=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - "+category); |
|
|
|
|
if(inventoryDisplay->GetComponents().size()>0){ |
|
|
|
|
returnData=inventoryDisplay->GetComponents()[0]; |
|
|
|
|
}else{ |
|
|
|
|
returnData=category+" Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
{ //Button Key
|
|
|
|
|
{game->KEY_BACK,{"Back",[](MenuType type){ |
|
|
|
|
Menu::CloseMenu(); |
|
|
|
|
}}}, |
|
|
|
|
{{game->KEY_SHOULDER,Pressed},{"Scroll Up/Down",[](MenuType type){}}}, |
|
|
|
|
{{game->KEY_FACEUP,Pressed},{"Change Category",[&](MenuType type){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category==Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED))break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index++; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index-=categories.size(); |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}}}, |
|
|
|
|
{{game->KEY_FASTSCROLLDOWN,PressedDAS},{"",[&](MenuType type){ |
|
|
|
|
if(!Menu::menus[type]->GetSelection().expired()&& |
|
|
|
|
!Menu::menus[type]->GetSelection().lock()->parentComponent.expired()){ |
|
|
|
|
Menu::menus[type]->GetSelection().lock()->parentComponent.lock()->IncreaseSelectionIndex(3.f); |
|
|
|
|
} |
|
|
|
|
}}}, |
|
|
|
|
{{game->KEY_FASTSCROLLUP,PressedDAS},{"",[&](MenuType type){ |
|
|
|
|
if(!Menu::menus[type]->GetSelection().expired()&& |
|
|
|
|
!Menu::menus[type]->GetSelection().lock()->parentComponent.expired()){ |
|
|
|
|
Menu::menus[type]->GetSelection().lock()->parentComponent.lock()->IncreaseSelectionIndex(-3.f); |
|
|
|
|
} |
|
|
|
|
}}}, |
|
|
|
|
{{game->KEY_SCROLL,Pressed},{"Navigate",[](MenuType type){}}}, |
|
|
|
|
{game->KEY_CONFIRM,{"Select",[](MenuType type){}}}, |
|
|
|
|
} |
|
|
|
|
,{ //Button Navigation Rules
|
|
|
|
|
{"Inventory Display - Consumables",{ |
|
|
|
|
.up=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)--; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)<0){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Consumables")->GetComponents().size()-1; |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Consumables")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.down=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)++; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Consumables")->GetComponents().size()){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)-=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Consumables")->GetComponents().size(); |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Consumables")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.left=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
}, |
|
|
|
|
.right=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
} |
|
|
|
|
}}, |
|
|
|
|
{"Inventory Display - Equipment",{ |
|
|
|
|
.up=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)--; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)<0){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Equipment")->GetComponents().size()-1; |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Equipment")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.down=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)++; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Equipment")->GetComponents().size()){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)-=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Equipment")->GetComponents().size(); |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Equipment")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.left=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
}, |
|
|
|
|
.right=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
} |
|
|
|
|
}}, |
|
|
|
|
{"Inventory Display - Accessories",{ |
|
|
|
|
.up=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)--; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)<0){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Accessories")->GetComponents().size()-1; |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Accessories")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.down=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)++; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Accessories")->GetComponents().size()){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)-=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Accessories")->GetComponents().size(); |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Accessories")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.left=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
}, |
|
|
|
|
.right=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
} |
|
|
|
|
}}, |
|
|
|
|
{"Inventory Display - Materials",{ |
|
|
|
|
.up=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)--; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)<0){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Materials")->GetComponents().size()-1; |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Materials")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.down=[](MenuType type,Data&returnData){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)++; |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Materials")->GetComponents().size()){ |
|
|
|
|
Menu::menus[type]->I(A::ITEM_SLOT)-=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Materials")->GetComponents().size(); |
|
|
|
|
} |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Materials")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}, |
|
|
|
|
.left=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
}, |
|
|
|
|
.right=[](MenuType type,Data&returnData){ |
|
|
|
|
returnData=std::format("{} Inventory Tab",Menu::menus[type]->S(A::LAST_INVENTORY_TYPE_OPENED)); |
|
|
|
|
} |
|
|
|
|
}}, |
|
|
|
|
{"Consumables Inventory Tab",{ |
|
|
|
|
.up=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Consumables")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index--; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index=categories.size()-1; |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.down=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Consumables")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index++; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index-=categories.size(); |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.left=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Consumables")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Consumables Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
.right=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Consumables")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Consumables Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}}, |
|
|
|
|
{"Equipment Inventory Tab",{ |
|
|
|
|
.up=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Equipment")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index--; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index=categories.size()-1; |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.down=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Equipment")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index++; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index-=categories.size(); |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.left=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Equipment")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Equipment Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
.right=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Equipment")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Equipment Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}}, |
|
|
|
|
{"Accessories Inventory Tab",{ |
|
|
|
|
.up=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Accessories")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index--; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index=categories.size()-1; |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.down=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Accessories")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index++; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index-=categories.size(); |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.left=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Accessories")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Accessories Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
.right=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Accessories")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Accessories Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}}, |
|
|
|
|
{"Materials Inventory Tab",{ |
|
|
|
|
.up=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Materials")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index--; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index=categories.size()-1; |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.down=[&](MenuType type,Data&returnData){ |
|
|
|
|
auto categories=GetSortedCategories(); |
|
|
|
|
size_t index=0; |
|
|
|
|
for(auto&[category,item]:categories){ |
|
|
|
|
if(category=="Materials")break; |
|
|
|
|
index++; |
|
|
|
|
} |
|
|
|
|
if(index<categories.size()){ |
|
|
|
|
index++; |
|
|
|
|
if(index>=categories.size()){ |
|
|
|
|
index-=categories.size(); |
|
|
|
|
} |
|
|
|
|
Component<MenuComponent>(type,std::format("{} Inventory Tab",categories[index].first))->Click(); |
|
|
|
|
returnData=std::format("{} Inventory Tab",categories[index].first); |
|
|
|
|
}else ERR("WARNING! Could not find current category! THIS SHOULD NOT BE HAPPENING!"); |
|
|
|
|
}, |
|
|
|
|
.left=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Materials")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Materials Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
.right=[&](MenuType type,Data&returnData){ |
|
|
|
|
if(Menu::menus[type]->I(A::ITEM_SLOT)>=0){ |
|
|
|
|
returnData=Component<RowInventoryScrollableWindowComponent>(type,"Inventory Display - Materials")->GetComponents()[Menu::menus[type]->I(A::ITEM_SLOT)]; |
|
|
|
|
}else{ |
|
|
|
|
returnData="Materials Inventory Tab"; |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}}, |
|
|
|
|
}); |
|
|
|
|
} |