1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-04 09:42:40 +02:00
vcmi/client/windows/CMarketWindow.h

50 lines
2.1 KiB
C++
Raw Normal View History

2024-02-03 13:26:24 +02:00
/*
* CMarketWindow.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
2024-03-02 20:30:29 +02:00
#include "../widgets/markets/CMarketBase.h"
2024-04-23 15:21:45 +02:00
#include "CWindowWithArtifacts.h"
2024-02-03 13:26:24 +02:00
2024-02-29 22:33:12 +02:00
class CMarketWindow : public CStatusbarWindow, public CWindowWithArtifacts, public IGarrisonHolder
2024-02-03 13:26:24 +02:00
{
public:
CMarketWindow(const IMarket * market, const CGHeroInstance * hero, const std::function<void()> & onWindowClosed, EMarketMode mode);
2024-02-29 22:33:12 +02:00
void updateResource();
void updateArtifacts();
2024-02-03 22:59:05 +02:00
void updateGarrisons() override;
2024-02-29 22:33:12 +02:00
void updateHero();
2024-02-03 13:26:24 +02:00
void close() override;
2024-02-29 22:33:12 +02:00
bool holdsGarrison(const CArmedInstance * army) override;
void artifactRemoved(const ArtifactLocation & artLoc) override;
void artifactMoved(const ArtifactLocation & srcLoc, const ArtifactLocation & destLoc, bool withRedraw) override;
2024-02-03 13:26:24 +02:00
private:
2024-02-03 22:59:05 +02:00
void createChangeModeButtons(EMarketMode currentMode, const IMarket * market, const CGHeroInstance * hero);
2024-02-29 22:33:12 +02:00
void initWidgetInternals(const EMarketMode mode, const std::pair<std::string, std::string> & quitButtonHelpContainer);
2024-02-03 13:26:24 +02:00
void createArtifactsBuying(const IMarket * market, const CGHeroInstance * hero);
void createArtifactsSelling(const IMarket * market, const CGHeroInstance * hero);
void createMarketResources(const IMarket * market, const CGHeroInstance * hero);
void createFreelancersGuild(const IMarket * market, const CGHeroInstance * hero);
void createTransferResources(const IMarket * market, const CGHeroInstance * hero);
void createAltarArtifacts(const IMarket * market, const CGHeroInstance * hero);
void createAltarCreatures(const IMarket * market, const CGHeroInstance * hero);
const int buttonHeightWithMargin = 32 + 3;
std::vector<std::shared_ptr<CButton>> changeModeButtons;
std::shared_ptr<CButton> quitButton;
std::function<void()> windowClosedCallback;
const Point quitButtonPos = Point(516, 520);
2024-03-02 20:30:29 +02:00
std::shared_ptr<CMarketBase> marketWidget;
// This is workaround for bug in H3 files where this slot for ragdoll on this screen is missing
std::shared_ptr<CPicture> artSlotBack;
2024-02-03 22:59:05 +02:00
};