From a753319ad0cc2a1ade2102859a6095a1c1a89bfd Mon Sep 17 00:00:00 2001
From: SoundSSGood <87084363+SoundSSGood@users.noreply.github.com>
Date: Thu, 18 Jan 2024 13:42:52 +0200
Subject: [PATCH] backpack window statusbar

---
 client/widgets/CWindowWithArtifacts.cpp | 3 +++
 client/windows/CHeroBackpackWindow.cpp  | 9 +++++++--
 client/windows/CHeroBackpackWindow.h    | 2 +-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/client/widgets/CWindowWithArtifacts.cpp b/client/widgets/CWindowWithArtifacts.cpp
index 360d896de..0902df564 100644
--- a/client/widgets/CWindowWithArtifacts.cpp
+++ b/client/widgets/CWindowWithArtifacts.cpp
@@ -279,6 +279,9 @@ void CWindowWithArtifacts::gestureArtPlaceHero(CArtifactsOfHeroBase & artsInst,
 				std::is_same_v<decltype(artSetWeak), std::weak_ptr<CArtifactsOfHeroMain>> ||
 				std::is_same_v<decltype(artSetWeak), std::weak_ptr<CArtifactsOfHeroKingdom>>)
 			{
+				if(!settings["general"]["enableUiEnhancements"].Bool())
+					return;
+
 				GH.windows().createAndPushWindow<CHeroQuickBackpackWindow>(artSetPtr->getHero(), artPlace.slot);
 				auto backpackWindow = GH.windows().topWindow<CHeroQuickBackpackWindow>();
 				backpackWindow->moveTo(cursorPosition - Point(1, 1));
diff --git a/client/windows/CHeroBackpackWindow.cpp b/client/windows/CHeroBackpackWindow.cpp
index 82186774d..250f4d00f 100644
--- a/client/windows/CHeroBackpackWindow.cpp
+++ b/client/windows/CHeroBackpackWindow.cpp
@@ -15,12 +15,13 @@
 
 #include "../widgets/Buttons.h"
 #include "../widgets/Images.h"
+#include "../widgets/TextControls.h"
 #include "CMessage.h"
 #include "render/Canvas.h"
 #include "CPlayerInterface.h"
 
 CHeroBackpackWindow::CHeroBackpackWindow(const CGHeroInstance * hero)
-	: CWindowObject((EOptions)0)
+	: CStatusbarWindow((EOptions)0)
 {
 	OBJECT_CONSTRUCTION_CAPTURING(255 - DISPOSE);
 
@@ -30,10 +31,14 @@ CHeroBackpackWindow::CHeroBackpackWindow(const CGHeroInstance * hero)
 	addSetAndCallbacks(arts);
 	arts->setHero(hero);
 	addCloseCallback(std::bind(&CHeroBackpackWindow::close, this));
-	quitButton = std::make_shared<CButton>(Point(), AnimationPath::builtin("IOKAY32.def"), CButton::tooltip(""), [this]() { close(); }, EShortcut::GLOBAL_RETURN);
+	quitButton = std::make_shared<CButton>(Point(), AnimationPath::builtin("IOKAY32.def"), CButton::tooltip(""),
+		[this]() { WindowBase::close(); }, EShortcut::GLOBAL_RETURN);
 	pos.w = stretchedBackground->pos.w = arts->pos.w + 2 * windowMargin;
 	pos.h = stretchedBackground->pos.h = arts->pos.h + quitButton->pos.h + 3 * windowMargin;
 	quitButton->moveTo(Point(pos.x + pos.w / 2 - quitButton->pos.w / 2, pos.y + arts->pos.h + 2 * windowMargin));
+	statusbar = CGStatusBar::create(0, pos.h, ImagePath::builtin("ADROLLVR.bmp"), pos.w);
+	pos.h += statusbar->pos.h;
+
 	center();
 }
 
diff --git a/client/windows/CHeroBackpackWindow.h b/client/windows/CHeroBackpackWindow.h
index 894d13343..9126e320c 100644
--- a/client/windows/CHeroBackpackWindow.h
+++ b/client/windows/CHeroBackpackWindow.h
@@ -14,7 +14,7 @@
 
 class CFilledTexture;
 
-class CHeroBackpackWindow : public CWindowObject, public CWindowWithArtifacts
+class CHeroBackpackWindow : public CStatusbarWindow, public CWindowWithArtifacts
 {
 public:
 	CHeroBackpackWindow(const CGHeroInstance * hero);