Added a popup menu label class and require menu label defines for InventoryScrollableWindowComponents
This commit is contained in:
parent
3ff558d44e
commit
8af7afadae
@ -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();
|
||||
|
||||
@ -307,6 +307,10 @@
|
||||
<ClInclude Include="olcUTIL_Geometry2D.h" />
|
||||
<ClInclude Include="Pathfinding.h" />
|
||||
<ClInclude Include="Player.h" />
|
||||
<ClInclude Include="PopupMenuLabel.h">
|
||||
<SubType>
|
||||
</SubType>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="resource1.h" />
|
||||
<ClInclude Include="safemap.h" />
|
||||
|
||||
@ -255,6 +255,9 @@
|
||||
<ClInclude Include="State_LevelComplete.h">
|
||||
<Filter>Header Files\State</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PopupMenuLabel.h">
|
||||
<Filter>Header Files\Interface</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Player.cpp">
|
||||
|
||||
@ -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::rect<float>rect,ITCategory invType,ComponentAttr attributes=ComponentAttr::BACKGROUND|ComponentAttr::OUTLINE)
|
||||
:ScrollableWindowComponent(parent,rect,attributes),inventoryType(invType){
|
||||
inline InventoryScrollableWindowComponent(MenuType parent,geom2d::rect<float>rect,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:
|
||||
|
||||
@ -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::rect<float>rect,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){
|
||||
|
||||
78
Crawler/PopupMenuLabel.h
Normal file
78
Crawler/PopupMenuLabel.h
Normal file
@ -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::rect<float>rect,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user