The open source repository for the action RPG game in development by Sig Productions titled 'Adventures in Lestoria'!
https://forums.lestoria.net
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.8 KiB
46 lines
1.8 KiB
#pragma once
|
|
#include "Crawler.h"
|
|
#include "DEFINES.h"
|
|
#include "olcPixelGameEngine.h"
|
|
#include "safemap.h"
|
|
#include "Item.h"
|
|
#include "MenuItemButton.h"
|
|
#include "MenuLabel.h"
|
|
#include "ScrollableWindowComponent.h"
|
|
|
|
INCLUDE_GFX
|
|
typedef Attribute A;
|
|
|
|
void Menu::InitializeInventoryWindow(){
|
|
constexpr int invWidth=5;
|
|
constexpr int initialInvHeight=3;
|
|
|
|
constexpr int itemSpacing=8;
|
|
constexpr int buttonSize=24;
|
|
constexpr int totalSpacing=buttonSize+itemSpacing;
|
|
|
|
vf2d windowSize={totalSpacing*invWidth-itemSpacing+2+24,totalSpacing*(3+1)-itemSpacing+24}; //Need space for the button.
|
|
|
|
Menu*inventoryWindow=CreateMenu(INVENTORY,CENTERED,windowSize);
|
|
|
|
ScrollableWindowComponent*inventory=new ScrollableWindowComponent(INVENTORY,{{1,0},{windowSize.x,totalSpacing*3-itemSpacing}},nullptr,[](MenuFuncData data){});
|
|
inventoryWindow->AddComponent("inventory",inventory);
|
|
|
|
MenuFunc useItemFunc=[](MenuFuncData data){
|
|
MenuItemButton*button=(MenuItemButton*)data.component;
|
|
button->UseItem();
|
|
};
|
|
|
|
for(int i=0;i<Inventory::get("Consumables").size();i++){
|
|
int x=i%invWidth;
|
|
int y=i/invWidth;
|
|
int itemIndex=y*invWidth+x;
|
|
MenuItemButton*button=new MenuItemButton{INVENTORY,{{float(totalSpacing*x),float(totalSpacing*y)},{float(buttonSize),float(buttonSize)}},Inventory::get("Consumables"),itemIndex,useItemFunc};
|
|
inventory->AddComponent(inventoryWindow,"item"+std::to_string(itemIndex),button);
|
|
}
|
|
|
|
MenuLabel*itemNameLabel=new MenuLabel{INVENTORY,geom2d::rect<float>(vf2d{2,initialInvHeight*totalSpacing-4},windowSize),"",false,true};
|
|
inventoryWindow->AddComponent("itemName",itemNameLabel);
|
|
MenuLabel*itemDescriptionLabel=new MenuLabel{INVENTORY,geom2d::rect<float>(vf2d{2,initialInvHeight*totalSpacing+itemSpacing},{windowSize.x-4,windowSize.y-108}),"",true,true};
|
|
inventoryWindow->AddComponent("itemDescription",itemDescriptionLabel);
|
|
} |