mirror of
https://github.com/vcmi/vcmi.git
synced 2025-02-13 13:18:43 +02:00
suggested changes
This commit is contained in:
parent
cb6fc4a385
commit
39a0e56169
@ -185,11 +185,12 @@ void CAltarArtifacts::putBackArtifacts()
|
||||
CMarketBase::MarketShowcasesParams CAltarArtifacts::getShowcasesParams() const
|
||||
{
|
||||
if(const auto art = hero->getArt(ArtifactPosition::TRANSITION_POS))
|
||||
return std::make_tuple(
|
||||
return MarketShowcasesParams
|
||||
{
|
||||
std::nullopt,
|
||||
ShowcaseParams {std::to_string(offerQty), CGI->artifacts()->getByIndex(art->getTypeId())->getIconIndex()}
|
||||
);
|
||||
return std::make_tuple(std::nullopt, std::nullopt);
|
||||
};
|
||||
return MarketShowcasesParams {std::nullopt, std::nullopt};
|
||||
}
|
||||
|
||||
void CAltarArtifacts::onSlotClickPressed(const std::shared_ptr<CTradeableItem> & altarSlot, std::shared_ptr<TradePanelBase> & curPanel)
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "../../../lib/CGeneralTextHandler.h"
|
||||
#include "../../../lib/mapObjects/CGHeroInstance.h"
|
||||
#include "../../../lib/mapObjects/CGMarket.h"
|
||||
#include "../../../lib/MetaString.h"
|
||||
|
||||
CAltarCreatures::CAltarCreatures(const IMarket * market, const CGHeroInstance * hero)
|
||||
: CMarketBase(market, hero)
|
||||
@ -176,8 +177,8 @@ CMarketBase::MarketShowcasesParams CAltarCreatures::getShowcasesParams() const
|
||||
if(bidTradePanel->isHighlighted())
|
||||
bidSelected = ShowcaseParams {std::to_string(offerSlider->getValue()), CGI->creatures()->getByIndex(bidTradePanel->getSelectedItemId())->getIconIndex()};
|
||||
if(offerTradePanel->isHighlighted() && offerSlider->getValue() > 0)
|
||||
offerSelected = ShowcaseParams { offerTradePanel->highlightedSlot->subtitle->getText(), CGI->creatures()->getByIndex(offerTradePanel->getSelectedItemId())->getIconIndex()};
|
||||
return std::make_tuple(bidSelected, offerSelected);
|
||||
offerSelected = ShowcaseParams {offerTradePanel->highlightedSlot->subtitle->getText(), CGI->creatures()->getByIndex(offerTradePanel->getSelectedItemId())->getIconIndex()};
|
||||
return MarketShowcasesParams {bidSelected, offerSelected};
|
||||
}
|
||||
|
||||
void CAltarCreatures::sacrificeAll()
|
||||
@ -256,9 +257,9 @@ std::string CAltarCreatures::getTraderText()
|
||||
{
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted())
|
||||
{
|
||||
return boost::str(boost::format(
|
||||
CGI->generaltexth->allTexts[484]) %
|
||||
CGI->creh->objects[bidTradePanel->getSelectedItemId()]->getNamePluralTranslated());
|
||||
MetaString message = MetaString::createFromTextID("core.genrltxt.484");
|
||||
message.replaceNamePlural(CreatureID(bidTradePanel->getSelectedItemId()));
|
||||
return message.toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -88,11 +88,13 @@ void CArtifactsBuying::makeDeal()
|
||||
CMarketBase::MarketShowcasesParams CArtifactsBuying::getShowcasesParams() const
|
||||
{
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted())
|
||||
return std::make_tuple(
|
||||
return MarketShowcasesParams
|
||||
{
|
||||
ShowcaseParams {std::to_string(deal->isBlocked() ? 0 : bidQty), bidTradePanel->getSelectedItemId()},
|
||||
ShowcaseParams {std::to_string(deal->isBlocked() ? 0 : offerQty), CGI->artifacts()->getByIndex(offerTradePanel->getSelectedItemId())->getIconIndex()});
|
||||
ShowcaseParams {std::to_string(deal->isBlocked() ? 0 : offerQty), CGI->artifacts()->getByIndex(offerTradePanel->getSelectedItemId())->getIconIndex()}
|
||||
};
|
||||
else
|
||||
return std::make_tuple(std::nullopt, std::nullopt);
|
||||
return MarketShowcasesParams {std::nullopt, std::nullopt};
|
||||
}
|
||||
|
||||
void CArtifactsBuying::highlightingChanged()
|
||||
@ -110,12 +112,12 @@ std::string CArtifactsBuying::getTraderText()
|
||||
{
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted())
|
||||
{
|
||||
return boost::str(boost::format(
|
||||
CGI->generaltexth->allTexts[267]) %
|
||||
CGI->artifacts()->getByIndex(offerTradePanel->getSelectedItemId())->getNameTranslated() %
|
||||
bidQty %
|
||||
(bidQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]) %
|
||||
CGI->generaltexth->restypes[bidTradePanel->getSelectedItemId()]);
|
||||
MetaString message = MetaString::createFromTextID("core.genrltxt.267");
|
||||
message.replaceName(ArtifactID(offerTradePanel->getSelectedItemId()));
|
||||
message.replaceNumber(bidQty);
|
||||
message.replaceTextID(bidQty == 1 ? "core.genrltxt.161" : "core.genrltxt.160");
|
||||
message.replaceName(GameResID(bidTradePanel->getSelectedItemId()));
|
||||
return message.toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -122,12 +122,13 @@ std::shared_ptr<CArtifactsOfHeroMarket> CArtifactsSelling::getAOHset() const
|
||||
CMarketBase::MarketShowcasesParams CArtifactsSelling::getShowcasesParams() const
|
||||
{
|
||||
if(hero->getArt(selectedHeroSlot) && offerTradePanel->isHighlighted())
|
||||
return std::make_tuple(
|
||||
return MarketShowcasesParams
|
||||
{
|
||||
std::nullopt,
|
||||
ShowcaseParams {std::to_string(offerQty), offerTradePanel->getSelectedItemId()}
|
||||
);
|
||||
};
|
||||
else
|
||||
return std::make_tuple(std::nullopt, std::nullopt);
|
||||
return MarketShowcasesParams {std::nullopt, std::nullopt};
|
||||
}
|
||||
|
||||
void CArtifactsSelling::updateSubtitles()
|
||||
@ -154,12 +155,12 @@ std::string CArtifactsSelling::getTraderText()
|
||||
const auto art = hero->getArt(selectedHeroSlot);
|
||||
if(art && offerTradePanel->isHighlighted())
|
||||
{
|
||||
return boost::str(boost::format(
|
||||
CGI->generaltexth->allTexts[268]) %
|
||||
offerQty %
|
||||
(offerQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]) %
|
||||
CGI->generaltexth->restypes[offerTradePanel->getSelectedItemId()] %
|
||||
CGI->artifacts()->getByIndex(art->getTypeId())->getNameTranslated());
|
||||
MetaString message = MetaString::createFromTextID("core.genrltxt.268");
|
||||
message.replaceNumber(offerQty);
|
||||
message.replaceRawString(offerQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]);
|
||||
message.replaceName(GameResID(offerTradePanel->getSelectedItemId()));
|
||||
message.replaceName(art->getTypeId());
|
||||
return message.toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "../../../CCallback.h"
|
||||
|
||||
#include "../../../lib/CGeneralTextHandler.h"
|
||||
#include "../../../lib/MetaString.h"
|
||||
#include "../../../lib/mapObjects/CGHeroInstance.h"
|
||||
#include "../../../lib/mapObjects/CGMarket.h"
|
||||
|
||||
@ -77,11 +78,13 @@ void CFreelancerGuild::makeDeal()
|
||||
CMarketBase::MarketShowcasesParams CFreelancerGuild::getShowcasesParams() const
|
||||
{
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted())
|
||||
return std::make_tuple(
|
||||
return MarketShowcasesParams
|
||||
{
|
||||
ShowcaseParams {std::to_string(bidQty * offerSlider->getValue()), CGI->creatures()->getByIndex(bidTradePanel->getSelectedItemId())->getIconIndex()},
|
||||
ShowcaseParams {std::to_string(offerQty * offerSlider->getValue()), offerTradePanel->getSelectedItemId()});
|
||||
ShowcaseParams {std::to_string(offerQty * offerSlider->getValue()), offerTradePanel->getSelectedItemId()}
|
||||
};
|
||||
else
|
||||
return std::make_tuple(std::nullopt, std::nullopt);
|
||||
return MarketShowcasesParams {std::nullopt, std::nullopt};
|
||||
}
|
||||
|
||||
void CFreelancerGuild::highlightingChanged()
|
||||
@ -103,14 +106,16 @@ std::string CFreelancerGuild::getTraderText()
|
||||
{
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted())
|
||||
{
|
||||
return boost::str(boost::format(
|
||||
CGI->generaltexth->allTexts[269]) %
|
||||
offerQty %
|
||||
(offerQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]) %
|
||||
CGI->generaltexth->restypes[offerTradePanel->getSelectedItemId()] %
|
||||
bidQty %
|
||||
(bidQty == 1 ? CGI->creh->objects[bidTradePanel->getSelectedItemId()]->getNameSingularTranslated() :
|
||||
CGI->creh->objects[bidTradePanel->getSelectedItemId()]->getNamePluralTranslated()));
|
||||
MetaString message = MetaString::createFromTextID("core.genrltxt.269");
|
||||
message.replaceNumber(offerQty);
|
||||
message.replaceRawString(offerQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]);
|
||||
message.replaceName(GameResID(offerTradePanel->getSelectedItemId()));
|
||||
message.replaceNumber(bidQty);
|
||||
if(bidQty == 1)
|
||||
message.replaceNameSingular(bidTradePanel->getSelectedItemId());
|
||||
else
|
||||
message.replaceNamePlural(bidTradePanel->getSelectedItemId());
|
||||
return message.toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -108,9 +108,9 @@ void CMarketBase::updateShowcases()
|
||||
|
||||
const auto params = getShowcasesParams();
|
||||
if(bidTradePanel)
|
||||
updateSelectedBody(bidTradePanel, std::get<0>(params));
|
||||
updateSelectedBody(bidTradePanel, params.bidParams);
|
||||
if(offerTradePanel)
|
||||
updateSelectedBody(offerTradePanel, std::get<1>(params));
|
||||
updateSelectedBody(offerTradePanel, params.offerParams);
|
||||
}
|
||||
|
||||
void CMarketBase::highlightingChanged()
|
||||
|
@ -28,7 +28,11 @@ public:
|
||||
std::string text;
|
||||
int imageIndex;
|
||||
};
|
||||
using MarketShowcasesParams = std::tuple<std::optional<const ShowcaseParams>, std::optional<const ShowcaseParams>>;
|
||||
struct MarketShowcasesParams
|
||||
{
|
||||
std::optional<const ShowcaseParams> bidParams;
|
||||
std::optional<const ShowcaseParams> offerParams;
|
||||
};
|
||||
using ShowcasesParamsFunctor = std::function<const MarketShowcasesParams()>;
|
||||
|
||||
const IMarket * market;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "../../../CCallback.h"
|
||||
|
||||
#include "../../../lib/CGeneralTextHandler.h"
|
||||
#include "../../../lib/MetaString.h"
|
||||
#include "../../../lib/mapObjects/CGMarket.h"
|
||||
|
||||
CMarketResources::CMarketResources(const IMarket * market, const CGHeroInstance * hero)
|
||||
@ -69,11 +70,13 @@ void CMarketResources::makeDeal()
|
||||
CMarketBase::MarketShowcasesParams CMarketResources::getShowcasesParams() const
|
||||
{
|
||||
if(bidTradePanel->highlightedSlot && offerTradePanel->highlightedSlot && bidTradePanel->getSelectedItemId() != offerTradePanel->getSelectedItemId())
|
||||
return std::make_tuple(
|
||||
return MarketShowcasesParams
|
||||
{
|
||||
ShowcaseParams {std::to_string(bidQty * offerSlider->getValue()), bidTradePanel->getSelectedItemId()},
|
||||
ShowcaseParams {std::to_string(offerQty * offerSlider->getValue()), offerTradePanel->getSelectedItemId()});
|
||||
ShowcaseParams {std::to_string(offerQty * offerSlider->getValue()), offerTradePanel->getSelectedItemId()}
|
||||
};
|
||||
else
|
||||
return std::make_tuple(std::nullopt, std::nullopt);
|
||||
return MarketShowcasesParams {std::nullopt, std::nullopt};
|
||||
}
|
||||
|
||||
void CMarketResources::highlightingChanged()
|
||||
@ -104,14 +107,14 @@ std::string CMarketResources::getTraderText()
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted() &&
|
||||
bidTradePanel->getSelectedItemId() != offerTradePanel->getSelectedItemId())
|
||||
{
|
||||
return boost::str(boost::format(
|
||||
CGI->generaltexth->allTexts[157]) %
|
||||
offerQty %
|
||||
(offerQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]) %
|
||||
CGI->generaltexth->restypes[bidTradePanel->getSelectedItemId()] %
|
||||
bidQty %
|
||||
(bidQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]) %
|
||||
CGI->generaltexth->restypes[offerTradePanel->getSelectedItemId()]);
|
||||
MetaString message = MetaString::createFromTextID("core.genrltxt.157");
|
||||
message.replaceNumber(offerQty);
|
||||
message.replaceRawString(offerQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]);
|
||||
message.replaceName(GameResID(bidTradePanel->getSelectedItemId()));
|
||||
message.replaceNumber(bidQty);
|
||||
message.replaceRawString(bidQty == 1 ? CGI->generaltexth->allTexts[161] : CGI->generaltexth->allTexts[160]);
|
||||
message.replaceName(GameResID(offerTradePanel->getSelectedItemId()));
|
||||
return message.toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "../../../CCallback.h"
|
||||
|
||||
#include "../../../lib/CGeneralTextHandler.h"
|
||||
#include "../../../lib/MetaString.h"
|
||||
|
||||
CTransferResources::CTransferResources(const IMarket * market, const CGHeroInstance * hero)
|
||||
: CMarketBase(market, hero)
|
||||
@ -71,11 +72,13 @@ void CTransferResources::makeDeal()
|
||||
CMarketBase::MarketShowcasesParams CTransferResources::getShowcasesParams() const
|
||||
{
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted())
|
||||
return std::make_tuple(
|
||||
return MarketShowcasesParams
|
||||
{
|
||||
ShowcaseParams {std::to_string(offerSlider->getValue()), bidTradePanel->getSelectedItemId()},
|
||||
ShowcaseParams {CGI->generaltexth->capColors[offerTradePanel->getSelectedItemId()], offerTradePanel->getSelectedItemId()});
|
||||
ShowcaseParams {CGI->generaltexth->capColors[offerTradePanel->getSelectedItemId()], offerTradePanel->getSelectedItemId()}
|
||||
};
|
||||
else
|
||||
return std::make_tuple(std::nullopt, std::nullopt);
|
||||
return MarketShowcasesParams {std::nullopt, std::nullopt};
|
||||
}
|
||||
|
||||
void CTransferResources::highlightingChanged()
|
||||
@ -96,10 +99,10 @@ std::string CTransferResources::getTraderText()
|
||||
{
|
||||
if(bidTradePanel->isHighlighted() && offerTradePanel->isHighlighted())
|
||||
{
|
||||
return boost::str(boost::format(
|
||||
CGI->generaltexth->allTexts[165]) %
|
||||
CGI->generaltexth->restypes[bidTradePanel->getSelectedItemId()] %
|
||||
CGI->generaltexth->capColors[offerTradePanel->getSelectedItemId()]);
|
||||
MetaString message = MetaString::createFromTextID("core.genrltxt.165");
|
||||
message.replaceName(GameResID(bidTradePanel->getSelectedItemId()));
|
||||
message.replaceName(PlayerColor(offerTradePanel->getSelectedItemId()));
|
||||
return message.toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -115,7 +115,7 @@ void CMarketWindow::artifactMoved(const ArtifactLocation & srcLoc, const Artifac
|
||||
|
||||
void CMarketWindow::createChangeModeButtons(EMarketMode currentMode, const IMarket * market, const CGHeroInstance * hero)
|
||||
{
|
||||
auto isButton = [currentMode, market, hero](EMarketMode modeButton) -> bool
|
||||
auto isButtonVisible = [currentMode, market, hero](EMarketMode modeButton) -> bool
|
||||
{
|
||||
if(currentMode == modeButton)
|
||||
return false;
|
||||
@ -146,27 +146,27 @@ void CMarketWindow::createChangeModeButtons(EMarketMode currentMode, const IMark
|
||||
buttonPos -= Point(0, buttonHeightWithMargin);
|
||||
};
|
||||
|
||||
if(isButton(EMarketMode::RESOURCE_PLAYER))
|
||||
if(isButtonVisible(EMarketMode::RESOURCE_PLAYER))
|
||||
addButton(AnimationPath::builtin("TPMRKBU1.DEF"), CGI->generaltexth->zelp[612], std::bind(&CMarketWindow::createTransferResources, this, market, hero));
|
||||
if(isButton(EMarketMode::ARTIFACT_RESOURCE))
|
||||
if(isButtonVisible(EMarketMode::ARTIFACT_RESOURCE))
|
||||
addButton(AnimationPath::builtin("TPMRKBU3.DEF"), CGI->generaltexth->zelp[613], std::bind(&CMarketWindow::createArtifactsSelling, this, market, hero));
|
||||
if(isButton(EMarketMode::RESOURCE_ARTIFACT))
|
||||
if(isButtonVisible(EMarketMode::RESOURCE_ARTIFACT))
|
||||
addButton(AnimationPath::builtin("TPMRKBU2.DEF"), CGI->generaltexth->zelp[598], std::bind(&CMarketWindow::createArtifactsBuying, this, market, hero));
|
||||
|
||||
buttonPos = Point(516, 520 - buttonHeightWithMargin);
|
||||
if(isButton(EMarketMode::CREATURE_RESOURCE))
|
||||
if(isButtonVisible(EMarketMode::CREATURE_RESOURCE))
|
||||
addButton(AnimationPath::builtin("TPMRKBU4.DEF"), CGI->generaltexth->zelp[599], std::bind(&CMarketWindow::createFreelancersGuild, this, market, hero));
|
||||
if(isButton(EMarketMode::RESOURCE_RESOURCE))
|
||||
if(isButtonVisible(EMarketMode::RESOURCE_RESOURCE))
|
||||
addButton(AnimationPath::builtin("TPMRKBU5.DEF"), CGI->generaltexth->zelp[605], std::bind(&CMarketWindow::createMarketResources, this, market, hero));
|
||||
|
||||
buttonPos = Point(516, 421);
|
||||
if(isButton(EMarketMode::CREATURE_EXP))
|
||||
if(isButtonVisible(EMarketMode::CREATURE_EXP))
|
||||
{
|
||||
addButton(AnimationPath::builtin("ALTSACC.DEF"), CGI->generaltexth->zelp[572], std::bind(&CMarketWindow::createAltarCreatures, this, market, hero));
|
||||
if(marketWidget->hero->getAlignment() == EAlignment::GOOD)
|
||||
changeModeButtons.back()->block(true);
|
||||
}
|
||||
if(isButton(EMarketMode::ARTIFACT_EXP))
|
||||
if(isButtonVisible(EMarketMode::ARTIFACT_EXP))
|
||||
{
|
||||
addButton(AnimationPath::builtin("ALTART.DEF"), CGI->generaltexth->zelp[580], std::bind(&CMarketWindow::createAltarArtifacts, this, market, hero));
|
||||
if(marketWidget->hero->getAlignment() == EAlignment::EVIL)
|
||||
|
Loading…
x
Reference in New Issue
Block a user