1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Fix not responding statusbar

This commit is contained in:
Dydzio 2018-10-29 14:12:07 +01:00
parent 0f1e853b4a
commit 22ce535a2a
6 changed files with 65 additions and 56 deletions

View File

@ -1096,7 +1096,7 @@ void CTownInfo::clickRight(tribool down, bool previousState)
}
CCastleInterface::CCastleInterface(const CGTownInstance * Town, const CGTownInstance * from):
CWindowObject(PLAYER_COLORED | BORDERED),
CStatusbarWindow(PLAYER_COLORED | BORDERED),
town(Town)
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -1316,7 +1316,7 @@ void CHallInterface::CBuildingBox::clickRight(tribool down, bool previousState)
}
CHallInterface::CHallInterface(const CGTownInstance * Town):
CWindowObject(PLAYER_COLORED | BORDERED, Town->town->clientInfo.hallBackground),
CStatusbarWindow(PLAYER_COLORED | BORDERED, Town->town->clientInfo.hallBackground),
town(Town)
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -1365,7 +1365,7 @@ CHallInterface::CHallInterface(const CGTownInstance * Town):
}
CBuildWindow::CBuildWindow(const CGTownInstance *Town, const CBuilding * Building, int state, bool rightClick):
CWindowObject(PLAYER_COLORED | (rightClick ? RCLICK_POPUP : 0), "TPUBUILD"),
CStatusbarWindow(PLAYER_COLORED | (rightClick ? RCLICK_POPUP : 0), "TPUBUILD"),
town(Town),
building(Building)
{
@ -1494,7 +1494,7 @@ void LabeledValue::hover(bool on)
}
CFortScreen::CFortScreen(const CGTownInstance * town):
CWindowObject(PLAYER_COLORED | BORDERED, getBgName(town))
CStatusbarWindow(PLAYER_COLORED | BORDERED, getBgName(town))
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
ui32 fortSize = town->creatures.size();
@ -1678,7 +1678,7 @@ void CFortScreen::RecruitArea::clickRight(tribool down, bool previousState)
}
CMageGuildScreen::CMageGuildScreen(CCastleInterface * owner,std::string imagem)
: CWindowObject(BORDERED, imagem)
: CStatusbarWindow(BORDERED, imagem)
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -1750,7 +1750,7 @@ void CMageGuildScreen::Scroll::hover(bool on)
}
CBlacksmithDialog::CBlacksmithDialog(bool possible, CreatureID creMachineID, ArtifactID aid, ObjectInstanceID hid):
CWindowObject(PLAYER_COLORED, "TPSMITH")
CStatusbarWindow(PLAYER_COLORED, "TPSMITH")
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);

View File

@ -195,7 +195,7 @@ public:
};
/// Class which manages the castle window
class CCastleInterface : public CWindowObject, public CGarrisonHolder
class CCastleInterface : public CStatusbarWindow, public CGarrisonHolder
{
std::shared_ptr<CLabel> title;
std::shared_ptr<CLabel> income;
@ -203,7 +203,6 @@ class CCastleInterface : public CWindowObject, public CGarrisonHolder
std::shared_ptr<CPicture> panel;
std::shared_ptr<CResDataBar> resdatabar;
std::shared_ptr<CGStatusBar> statusbar;
std::shared_ptr<CTownInfo> hall;
std::shared_ptr<CTownInfo> fort;
@ -240,7 +239,7 @@ public:
};
/// Hall window where you can build things
class CHallInterface : public CWindowObject
class CHallInterface : public CStatusbarWindow
{
class CBuildingBox : public CIntObject
{
@ -264,7 +263,6 @@ class CHallInterface : public CWindowObject
std::vector<std::vector<std::shared_ptr<CBuildingBox>>> boxes;
std::shared_ptr<CLabel> title;
std::shared_ptr<CMinorResDataBar> resdatabar;
std::shared_ptr<CGStatusBar> statusbar;
std::shared_ptr<CButton> exit;
public:
@ -272,13 +270,12 @@ public:
};
/// Window where you can decide to buy a building or not
class CBuildWindow: public CWindowObject
class CBuildWindow: public CStatusbarWindow
{
const CGTownInstance * town;
const CBuilding * building;
std::shared_ptr<CAnimImage> icon;
std::shared_ptr<CGStatusBar> statusbar;
std::shared_ptr<CLabel> name;
std::shared_ptr<CTextBox> description;
std::shared_ptr<CTextBox> stateText;
@ -308,7 +305,7 @@ public:
};
/// The fort screen where you can afford units
class CFortScreen : public CWindowObject
class CFortScreen : public CStatusbarWindow
{
class RecruitArea : public CIntObject
{
@ -336,7 +333,6 @@ class CFortScreen : public CWindowObject
std::shared_ptr<CLabel> title;
std::vector<std::shared_ptr<RecruitArea>> recAreas;
std::shared_ptr<CMinorResDataBar> resdatabar;
std::shared_ptr<CGStatusBar> statusbar;
std::shared_ptr<CButton> exit;
std::string getBgName(const CGTownInstance * town);
@ -348,7 +344,7 @@ public:
};
/// The mage guild screen where you can see which spells you have
class CMageGuildScreen : public CWindowObject
class CMageGuildScreen : public CStatusbarWindow
{
class Scroll : public CIntObject
{
@ -367,14 +363,13 @@ class CMageGuildScreen : public CWindowObject
std::vector<std::shared_ptr<CAnimImage>> emptyScrolls;
std::shared_ptr<CMinorResDataBar> resdatabar;
std::shared_ptr<CGStatusBar> statusbar;
public:
CMageGuildScreen(CCastleInterface * owner,std::string image);
};
/// The blacksmith window where you can buy available in town war machine
class CBlacksmithDialog : public CWindowObject
class CBlacksmithDialog : public CStatusbarWindow
{
std::shared_ptr<CButton> buy;
std::shared_ptr<CButton> cancel;
@ -384,7 +379,6 @@ class CBlacksmithDialog : public CWindowObject
std::shared_ptr<CAnimImage> costIcon;
std::shared_ptr<CLabel> costText;
std::shared_ptr<CLabel> costValue;
std::shared_ptr<CGStatusBar> statusbar;
public:
CBlacksmithDialog(bool possible, CreatureID creMachineID, ArtifactID aid, ObjectInstanceID hid);

View File

@ -238,3 +238,17 @@ void CWindowObject::clickRight(tribool down, bool previousState)
close();
CCS->curh->show();
}
CStatusbarWindow::CStatusbarWindow(int options, std::string imageName, Point centerAt) : CWindowObject(options, imageName, centerAt)
{
}
CStatusbarWindow::CStatusbarWindow(int options, std::string imageName) : CWindowObject(options, imageName)
{
}
void CStatusbarWindow::activate()
{
CIntObject::activate();
GH.statusbar = statusbar;
}

View File

@ -11,6 +11,8 @@
#include "../gui/CIntObject.h"
class CGStatusBar;
class CWindowObject : public WindowBase
{
std::shared_ptr<CPicture> createBg(std::string imageName, bool playerColored);
@ -50,3 +52,13 @@ public:
void showAll(SDL_Surface * to) override;
};
class CStatusbarWindow : public CWindowObject
{
public:
CStatusbarWindow(int options, std::string imageName, Point centerAt);
CStatusbarWindow(int options, std::string imageName = "");
void activate() override;
protected:
std::shared_ptr<CGStatusBar> statusbar;
};

View File

@ -194,7 +194,7 @@ void CRecruitmentWindow::showAll(SDL_Surface * to)
}
CRecruitmentWindow::CRecruitmentWindow(const CGDwelling * Dwelling, int Level, const CArmedInstance * Dst, const std::function<void(CreatureID,int)> & Recruit, int y_offset):
CWindowObject(PLAYER_COLORED, "TPRCRT"),
CStatusbarWindow(PLAYER_COLORED, "TPRCRT"),
onRecruit(Recruit),
level(Level),
dst(Dst),
@ -205,7 +205,7 @@ CRecruitmentWindow::CRecruitmentWindow(const CGDwelling * Dwelling, int Level, c
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
slider = std::make_shared<CSlider>(Point(176,279),135,std::bind(&CRecruitmentWindow::sliderMoved,this, _1),0,0,0,true);
@ -630,7 +630,7 @@ void CSystemOptionsWindow::closeAndPushEvent(int eventType, int code)
}
CTavernWindow::CTavernWindow(const CGObjectInstance * TavernObj)
: CWindowObject(PLAYER_COLORED, "TPTAVERN"),
: CStatusbarWindow(PLAYER_COLORED, "TPTAVERN"),
tavernObj(TavernObj)
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -656,7 +656,7 @@ CTavernWindow::CTavernWindow(const CGObjectInstance * TavernObj)
auto rumorText = boost::str(boost::format(CGI->generaltexth->allTexts[216]) % LOCPLINT->cb->getTavernRumor(tavernObj));
rumor = std::make_shared<CTextBox>(rumorText, Rect(32, 190, 330, 68), 0, FONT_SMALL, CENTER, Colors::WHITE);
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
cancel = std::make_shared<CButton>(Point(310, 428), "ICANCEL.DEF", CButton::tooltip(CGI->generaltexth->tavernInfo[7]), std::bind(&CTavernWindow::close, this), SDLK_ESCAPE);
recruit = std::make_shared<CButton>(Point(272, 355), "TPTAV01.DEF", CButton::tooltip(), std::bind(&CTavernWindow::recruitb, this), SDLK_RETURN);
thiefGuild = std::make_shared<CButton>(Point(22, 428), "TPTAV02.DEF", CButton::tooltip(CGI->generaltexth->tavernInfo[5]), std::bind(&CTavernWindow::thievesguildb, this), SDLK_t);
@ -788,7 +788,7 @@ void CTavernWindow::HeroPortrait::hover(bool on)
}
CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2, QueryID queryID)
: CWindowObject(PLAYER_COLORED | BORDERED, "TRADE2")
: CStatusbarWindow(PLAYER_COLORED | BORDERED, "TRADE2")
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -920,7 +920,7 @@ CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2,
questlogButton[1] = std::make_shared<CButton>(Point(740, 44), "hsbtns4.def", CButton::tooltip(CGI->generaltexth->heroscrn[0]), std::bind(&CExchangeWindow::questlog, this, 1));
Rect barRect(5, 578, 725, 18);
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, barRect, 5, 578, false));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, barRect, 5, 578, false));
//garrison interface
garr = std::make_shared<CGarrisonInt>(69, 131, 4, Point(418,0), heroInst[0], heroInst[1], true, true);
@ -978,7 +978,7 @@ void CExchangeWindow::updateWidgets()
}
CShipyardWindow::CShipyardWindow(const std::vector<si32> & cost, int state, int boatType, const std::function<void()> & onBuy)
: CWindowObject(PLAYER_COLORED, "TPSHIP")
: CStatusbarWindow(PLAYER_COLORED, "TPSHIP")
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -1013,7 +1013,7 @@ CShipyardWindow::CShipyardWindow(const std::vector<si32> & cost, int state, int
}
}
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
title = std::make_shared<CLabel>(164, 27, FONT_BIG, CENTER, Colors::YELLOW, CGI->generaltexth->jktexts[13]);
costLabel = std::make_shared<CLabel>(164, 220, FONT_MEDIUM, CENTER, Colors::WHITE, CGI->generaltexth->jktexts[14]);
@ -1159,7 +1159,7 @@ void CTransformerWindow::updateGarrisons()
}
CTransformerWindow::CTransformerWindow(const CGHeroInstance * _hero, const CGTownInstance * _town)
: CWindowObject(PLAYER_COLORED, "SKTRNBK"),
: CStatusbarWindow(PLAYER_COLORED, "SKTRNBK"),
hero(_hero),
town(_town)
{
@ -1178,7 +1178,7 @@ CTransformerWindow::CTransformerWindow(const CGHeroInstance * _hero, const CGTow
all = std::make_shared<CButton>(Point(146, 416), "ALTARMY.DEF", CGI->generaltexth->zelp[590], [&](){ addAll(); }, SDLK_a);
convert = std::make_shared<CButton>(Point(269, 416), "ALTSACR.DEF", CGI->generaltexth->zelp[591], [&](){ makeDeal(); }, SDLK_RETURN);
cancel = std::make_shared<CButton>(Point(392, 416), "ICANCEL.DEF", CGI->generaltexth->zelp[592], [&](){ close(); },SDLK_ESCAPE);
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
titleLeft = std::make_shared<CLabel>(153, 29,FONT_SMALL, CENTER, Colors::YELLOW, CGI->generaltexth->allTexts[485]);//holding area
titleRight = std::make_shared<CLabel>(153+295, 29, FONT_SMALL, CENTER, Colors::YELLOW, CGI->generaltexth->allTexts[486]);//transformer
@ -1254,7 +1254,7 @@ void CUniversityWindow::CItem::showAll(SDL_Surface * to)
}
CUniversityWindow::CUniversityWindow(const CGHeroInstance * _hero, const IMarket * _market)
: CWindowObject(PLAYER_COLORED, "UNIVERS1"),
: CStatusbarWindow(PLAYER_COLORED, "UNIVERS1"),
hero(_hero),
market(_market)
{
@ -1283,7 +1283,7 @@ CUniversityWindow::CUniversityWindow(const CGHeroInstance * _hero, const IMarket
items.push_back(std::make_shared<CItem>(this, goods[i], 54+i*104, 234));
cancel = std::make_shared<CButton>(Point(200, 313), "IOKAY.DEF", CGI->generaltexth->zelp[632], [&](){ close(); }, SDLK_RETURN);
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
}
void CUniversityWindow::makeDeal(int skill)
@ -1293,7 +1293,7 @@ void CUniversityWindow::makeDeal(int skill)
CUnivConfirmWindow::CUnivConfirmWindow(CUniversityWindow * owner_, int SKILL, bool available)
: CWindowObject(PLAYER_COLORED, "UNIVERS2.PCX"),
: CStatusbarWindow(PLAYER_COLORED, "UNIVERS2.PCX"),
owner(owner_)
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -1324,7 +1324,7 @@ CUnivConfirmWindow::CUnivConfirmWindow(CUniversityWindow * owner_, int SKILL, bo
confirm->block(!available);
cancel = std::make_shared<CButton>(Point(252,299), "ICANCEL.DEF", CGI->generaltexth->zelp[631], [&](){ close(); }, SDLK_ESCAPE);
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
}
void CUnivConfirmWindow::makeDeal(int skill)
@ -1375,7 +1375,7 @@ void CGarrisonWindow::updateGarrisons()
}
CHillFortWindow::CHillFortWindow(const CGHeroInstance * visitor, const CGObjectInstance * object)
: CWindowObject(PLAYER_COLORED, "APHLFTBK"),
: CStatusbarWindow(PLAYER_COLORED, "APHLFTBK"),
fort(object),
hero(visitor)
{
@ -1409,7 +1409,7 @@ CHillFortWindow::CHillFortWindow(const CGHeroInstance * visitor, const CGObjectI
upgradeAll->addImage(image);
quit = std::make_shared<CButton>(Point(294, 275), "IOKAY.DEF", CButton::tooltip(), std::bind(&CHillFortWindow::close, this), SDLK_RETURN);
statusBar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
statusbar = CGStatusBar::create(std::make_shared<CPicture>(*background, Rect(8, pos.h - 26, pos.w - 16, 19), 8, pos.h - 26));
garr = std::make_shared<CGarrisonInt>(108, 60, 18, Point(), hero, nullptr);
updateGarrisons();
@ -1579,7 +1579,7 @@ int CHillFortWindow::getState(SlotID slot)
}
CThievesGuildWindow::CThievesGuildWindow(const CGObjectInstance * _owner):
CWindowObject(PLAYER_COLORED | BORDERED, "TpRank"),
CStatusbarWindow(PLAYER_COLORED | BORDERED, "TpRank"),
owner(_owner)
{
OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE);
@ -1590,7 +1590,7 @@ CThievesGuildWindow::CThievesGuildWindow(const CGObjectInstance * _owner):
exitb = std::make_shared<CButton>(Point(748, 556), "TPMAGE1", CButton::tooltip(CGI->generaltexth->allTexts[600]), [&](){ close();}, SDLK_RETURN);
exitb->assignedKeys.insert(SDLK_ESCAPE);
statusBar = CGStatusBar::create(3, 555, "TStatBar.bmp", 742);
statusbar = CGStatusBar::create(3, 555, "TStatBar.bmp", 742);
resdatabar = std::make_shared<CMinorResDataBar>();
resdatabar->moveBy(pos.topLeft(), true);

View File

@ -38,7 +38,7 @@ class CResDataBar;
class CHeroWithMaybePickedArtifact;
/// Recruitment window where you can recruit creatures
class CRecruitmentWindow : public CWindowObject
class CRecruitmentWindow : public CStatusbarWindow
{
class CCreatureCard : public CIntObject, public std::enable_shared_from_this<CCreatureCard>
{
@ -64,8 +64,6 @@ class CRecruitmentWindow : public CWindowObject
int level;
const CArmedInstance * dst;
std::shared_ptr<CGStatusBar> statusBar;
std::shared_ptr<CCreatureCard> selected;
std::vector<std::shared_ptr<CCreatureCard>> cards;
@ -235,7 +233,7 @@ public:
CSystemOptionsWindow();
};
class CTavernWindow : public CWindowObject
class CTavernWindow : public CStatusbarWindow
{
public:
class HeroPortrait : public CIntObject
@ -273,7 +271,6 @@ public:
std::shared_ptr<CLabel> title;
std::shared_ptr<CLabel> cost;
std::shared_ptr<CTextBox> rumor;
std::shared_ptr<CGStatusBar> statusBar;
CTavernWindow(const CGObjectInstance * TavernObj);
~CTavernWindow();
@ -283,7 +280,7 @@ public:
void show(SDL_Surface * to) override;
};
class CExchangeWindow : public CWindowObject, public CGarrisonHolder, public CWindowWithArtifacts
class CExchangeWindow : public CStatusbarWindow, public CGarrisonHolder, public CWindowWithArtifacts
{
std::array<std::shared_ptr<CHeroWithMaybePickedArtifact>, 2> herosWArt;
@ -312,7 +309,6 @@ class CExchangeWindow : public CWindowObject, public CGarrisonHolder, public CWi
std::shared_ptr<CButton> quit;
std::array<std::shared_ptr<CButton>, 2> questlogButton;
std::shared_ptr<CGStatusBar> statusBar;
std::shared_ptr<CGarrisonInt> garr;
public:
@ -330,7 +326,7 @@ public:
};
/// Here you can buy ships
class CShipyardWindow : public CWindowObject
class CShipyardWindow : public CStatusbarWindow
{
std::shared_ptr<CPicture> bgWater;
std::shared_ptr<CAnimImage> bgShip;
@ -346,7 +342,6 @@ class CShipyardWindow : public CWindowObject
std::shared_ptr<CButton> build;
std::shared_ptr<CButton> quit;
std::shared_ptr<CGStatusBar> statusBar;
public:
CShipyardWindow(const std::vector<si32> & cost, int state, int boatType, const std::function<void()> & onBuy);
};
@ -373,7 +368,7 @@ public:
};
/// Creature transformer window
class CTransformerWindow : public CWindowObject, public CGarrisonHolder
class CTransformerWindow : public CStatusbarWindow, public CGarrisonHolder
{
class CItem : public CIntObject
{
@ -405,7 +400,6 @@ class CTransformerWindow : public CWindowObject, public CGarrisonHolder
std::shared_ptr<CButton> all;
std::shared_ptr<CButton> convert;
std::shared_ptr<CButton> cancel;
std::shared_ptr<CGStatusBar> statusBar;
public:
void makeDeal();
@ -414,7 +408,7 @@ public:
CTransformerWindow(const CGHeroInstance * _hero, const CGTownInstance * _town);
};
class CUniversityWindow : public CWindowObject
class CUniversityWindow : public CStatusbarWindow
{
class CItem : public CIntObject
{
@ -443,7 +437,6 @@ class CUniversityWindow : public CWindowObject
std::vector<std::shared_ptr<CItem>> items;
std::shared_ptr<CButton> cancel;
std::shared_ptr<CGStatusBar> statusBar;
std::shared_ptr<CIntObject> titlePic;
std::shared_ptr<CLabel> title;
std::shared_ptr<CTextBox> clerkSpeech;
@ -455,7 +448,7 @@ public:
};
/// Confirmation window for University
class CUnivConfirmWindow : public CWindowObject
class CUnivConfirmWindow : public CStatusbarWindow
{
std::shared_ptr<CTextBox> clerkSpeech;
std::shared_ptr<CLabel> name;
@ -463,7 +456,6 @@ class CUnivConfirmWindow : public CWindowObject
std::shared_ptr<CAnimImage> icon;
CUniversityWindow * owner;
std::shared_ptr<CGStatusBar> statusBar;
std::shared_ptr<CButton> confirm;
std::shared_ptr<CButton> cancel;
@ -494,7 +486,7 @@ public:
};
/// Hill fort is the building where you can upgrade units
class CHillFortWindow : public CWindowObject, public CGarrisonHolder
class CHillFortWindow : public CStatusbarWindow, public CGarrisonHolder
{
private:
static const int slotsCount = 7;
@ -522,8 +514,6 @@ private:
std::shared_ptr<CGarrisonInt> garr;
std::shared_ptr<CGStatusBar> statusBar;
std::string getDefForSlot(SlotID slot);
std::string getTextForSlot(SlotID slot);
@ -534,11 +524,10 @@ public:
void updateGarrisons() override;//update buttons after garrison changes
};
class CThievesGuildWindow : public CWindowObject
class CThievesGuildWindow : public CStatusbarWindow
{
const CGObjectInstance * owner;
std::shared_ptr<CGStatusBar> statusBar;
std::shared_ptr<CButton> exitb;
std::shared_ptr<CMinorResDataBar> resdatabar;