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
|
|
|
};
|