diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp
index 49394a46..d712e488 100644
--- a/Crawler/Crawler.cpp
+++ b/Crawler/Crawler.cpp
@@ -176,7 +176,7 @@ bool Crawler::OnUserCreate(){
Inventory::AddItem("Blue Slime Remains",22);
LoadLevel(LEVEL_NAMES["starting_map"_S]);
- Inventory::AddItem("Blue Slime Remains",10);
+ Inventory::AddItem("Blue Slime Remains",10,true);
ChangePlayerClass(WARRIOR);
GameState::Initialize();
diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj
index b707914c..051cd64b 100644
--- a/Crawler/Crawler.vcxproj
+++ b/Crawler/Crawler.vcxproj
@@ -307,6 +307,10 @@
+
+
+
+
diff --git a/Crawler/Crawler.vcxproj.filters b/Crawler/Crawler.vcxproj.filters
index 99f3878e..9ac70e6c 100644
--- a/Crawler/Crawler.vcxproj.filters
+++ b/Crawler/Crawler.vcxproj.filters
@@ -255,6 +255,9 @@
Header Files\State
+
+ Header Files\Interface
+
diff --git a/Crawler/InventoryScrollableWindowComponent.h b/Crawler/InventoryScrollableWindowComponent.h
index 9c77ba5d..f0663d4b 100644
--- a/Crawler/InventoryScrollableWindowComponent.h
+++ b/Crawler/InventoryScrollableWindowComponent.h
@@ -41,11 +41,14 @@ SUCH DAMAGE.
typedef Attribute A;
class InventoryScrollableWindowComponent:public ScrollableWindowComponent{
+private:
+ std::string itemNameLabelName;
+ std::string itemDescriptionLabelName;
protected:
ITCategory inventoryType;
public:
- inline InventoryScrollableWindowComponent(MenuType parent,geom2d::rectrect,ITCategory invType,ComponentAttr attributes=ComponentAttr::BACKGROUND|ComponentAttr::OUTLINE)
- :ScrollableWindowComponent(parent,rect,attributes),inventoryType(invType){
+ inline InventoryScrollableWindowComponent(MenuType parent,geom2d::rectrect,ITCategory invType,std::string itemNameLabelName,std::string itemDescriptionLabelName,ComponentAttr attributes=ComponentAttr::BACKGROUND|ComponentAttr::OUTLINE)
+ :ScrollableWindowComponent(parent,rect,attributes),inventoryType(invType),itemNameLabelName(itemNameLabelName),itemDescriptionLabelName(itemDescriptionLabelName){
Menu::AddInventoryListener(this,invType);
}
protected:
diff --git a/Crawler/MenuLabel.h b/Crawler/MenuLabel.h
index 07a15f28..7385745b 100644
--- a/Crawler/MenuLabel.h
+++ b/Crawler/MenuLabel.h
@@ -40,9 +40,11 @@ SUCH DAMAGE.
INCLUDE_game
class MenuLabel:public MenuComponent{
+private:
+ int scale=1;
+protected:
bool shadow=false;
bool centered=true;
- int scale=1;
public:
inline MenuLabel(MenuType parent,geom2d::rectrect,std::string label,int scale=1,ComponentAttr attributes=ComponentAttr::NONE)
:MenuComponent(parent,rect,label,MenuFunc{},ButtonAttr::UNSELECTABLE|ButtonAttr::UNSELECTABLE_VIA_KEYBOARD),scale(scale),centered(!(attributes&ComponentAttr::LEFT_ALIGN)),shadow(attributes&ComponentAttr::SHADOW){
diff --git a/Crawler/PopupMenuLabel.h b/Crawler/PopupMenuLabel.h
new file mode 100644
index 00000000..422d91f0
--- /dev/null
+++ b/Crawler/PopupMenuLabel.h
@@ -0,0 +1,78 @@
+#pragma region License
+/*
+License (OLC-3)
+~~~~~~~~~~~~~~~
+
+Copyright 2018 - 2023 OneLoneCoder.com
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions or derivations of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+2. Redistributions or derivative works in binary form must reproduce the above
+copyright notice. This list of conditions and the following disclaimer must be
+reproduced in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may
+be used to endorse or promote products derived from this software without specific
+prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+*/
+#pragma endregion
+#pragma once
+#include "MenuLabel.h"
+#include "DEFINES.h"
+#include "Crawler.h"
+#include "util.h"
+
+INCLUDE_game
+
+class PopupMenuLabel:public MenuLabel{
+private:
+ float scale;
+public:
+ inline PopupMenuLabel(MenuType parent,geom2d::rectrect,std::string label,float scale=1,ComponentAttr attributes=ComponentAttr::NONE)
+ :MenuLabel(parent,rect,label,scale,attributes),scale(scale){
+ }
+protected:
+ virtual void inline Update(Crawler*game)override{
+ MenuLabel::Update(game);
+ }
+ virtual void inline Draw(Crawler*game,vf2d parentPos)override{}
+ virtual void inline DrawDecal(Crawler*game,vf2d parentPos,bool focused)override{
+ if(label.length()>0){
+ MenuLabel::DrawDecal(game,parentPos,focused);
+ std::string wrappedText=util::WrapText(game,label,rect.size.x,true,{scale,scale});
+ vf2d drawPos=parentPos+rect.middle()-vf2d{game->GetTextSizeProp(wrappedText)}*float(scale)/2; //Assume centered.
+ if(!centered){
+ drawPos=vf2d{rect.pos.x+2,rect.middle().y-game->GetTextSizeProp(wrappedText).y/2}+parentPos; //We should at least vertically align here.
+ }
+ if(shadow){
+ game->DrawShadowStringPropDecal(drawPos,wrappedText,WHITE,BLACK,{scale,scale});
+ }else{
+ game->DrawStringPropDecal(drawPos,wrappedText,WHITE,{scale,scale});
+ }
+ if(background){
+ game->FillRectDecal(rect.pos+parentPos,rect.size,PixelLerp(Menu::themes[Menu::themeSelection].GetButtonCol(),Menu::themes[Menu::themeSelection].GetHighlightCol(),hoverEffect/"ThemeGlobal.HighlightTime"_F));
+ }
+ if(border){
+ game->DrawRectDecal(rect.pos+parentPos,rect.size);
+ }
+ if(showDefaultLabel){
+ game->DrawStringPropDecal(rect.pos+parentPos+rect.size/2-game->GetTextSizeProp(label)/2,label);
+ }
+ }
+ }
+};
\ No newline at end of file
diff --git a/Crawler/Version.h b/Crawler/Version.h
index 87a2d3ff..92329897 100644
--- a/Crawler/Version.h
+++ b/Crawler/Version.h
@@ -35,7 +35,7 @@ SUCH DAMAGE.
#define VERSION_MAJOR 0
#define VERSION_MINOR 2
#define VERSION_PATCH 1
-#define VERSION_BUILD 2961
+#define VERSION_BUILD 2962
#define stringify(a) stringify_(a)
#define stringify_(a) #a