Added Query to track visit duration for Taverns and Markets

This commit is contained in:
Ivan Savenko committed 2023-10-04 17:47:12 +03:00
1 parent e322d0a084
commit 898733eed7
27 files changed
+230 -113

No files matched your search

+33
View File
@@ -157,6 +157,39 @@ CBlockingDialogQuery::CBlockingDialogQuery(CGameHandler * owner, const BlockingD
addPlayer(bd.player);
}
OpenWindowQuery::OpenWindowQuery(CGameHandler * owner, const CGHeroInstance *hero, EOpenWindowMode mode):
CDialogQuery(owner),
mode(mode)
{
addPlayer(hero->getOwner());
}
bool OpenWindowQuery::blocksPack(const CPack *pack) const
{
if (mode == EOpenWindowMode::TAVERN_WINDOW)
{
if(dynamic_ptr_cast<HireHero>(pack) != nullptr)
return false;
}
if (mode == EOpenWindowMode::MARKET_WINDOW)
{
if(dynamic_ptr_cast<ExchangeArtifacts>(pack) != nullptr)
return false;
if(dynamic_ptr_cast<AssembleArtifacts>(pack))
return false;
if(dynamic_ptr_cast<EraseArtifactByClient>(pack))
return false;
if(dynamic_ptr_cast<TradeOnMarketplace>(pack) != nullptr)
return false;
}
return CDialogQuery::blocksPack(pack);
}
void CTeleportDialogQuery::notifyObjectAboutRemoval(const CObjectVisitQuery & objectVisit) const
{
// do not change to dynamic_ptr_cast - SIGSEGV!
+9 -1
View File
@@ -61,7 +61,6 @@ public:
virtual void onRemoval(PlayerColor color) override;
};
class CGarrisonDialogQuery : public CDialogQuery //used also for hero exchange dialogs
{
public:
@@ -83,6 +82,15 @@ public:
virtual void notifyObjectAboutRemoval(const CObjectVisitQuery &objectVisit) const override;
};
class OpenWindowQuery : public CDialogQuery
{
EOpenWindowMode mode;
public:
OpenWindowQuery(CGameHandler * owner, const CGHeroInstance *hero, EOpenWindowMode mode);
virtual bool blocksPack(const CPack *pack) const override;
};
class CTeleportDialogQuery : public CDialogQuery
{
public: