Explorar o código

Fix University and Altar

Ivan Savenko %!s(int64=2) %!d(string=hai) anos
pai
achega
3cb489e9bd

+ 11 - 0
server/queries/MapQueries.cpp

@@ -164,6 +164,11 @@ OpenWindowQuery::OpenWindowQuery(CGameHandler * owner, const CGHeroInstance *her
 	addPlayer(hero->getOwner());
 }
 
+void OpenWindowQuery::onExposure(QueryPtr topQuery)
+{
+	//do nothing - wait for reply
+}
+
 bool OpenWindowQuery::blocksPack(const CPack *pack) const
 {
 	if (mode == EOpenWindowMode::TAVERN_WINDOW)
@@ -172,6 +177,12 @@ bool OpenWindowQuery::blocksPack(const CPack *pack) const
 			return false;
 	}
 
+	if (mode == EOpenWindowMode::UNIVERSITY_WINDOW)
+	{
+		if(dynamic_ptr_cast<TradeOnMarketplace>(pack) != nullptr)
+			return false;
+	}
+
 	if (mode == EOpenWindowMode::MARKET_WINDOW)
 	{
 		if(dynamic_ptr_cast<ExchangeArtifacts>(pack) != nullptr)

+ 2 - 1
server/queries/MapQueries.h

@@ -88,7 +88,8 @@ class OpenWindowQuery : public CDialogQuery
 public:
 	OpenWindowQuery(CGameHandler * owner, const CGHeroInstance *hero, EOpenWindowMode mode);
 
-	virtual bool blocksPack(const CPack *pack) const override;
+	bool blocksPack(const CPack *pack) const override;
+	void onExposure(QueryPtr topQuery) override;
 };
 
 class CTeleportDialogQuery : public CDialogQuery

+ 1 - 1
test/mock/mock_IGameCallback.h

@@ -48,7 +48,7 @@ public:
 	void showBlockingDialog(BlockingDialog *iw) override {}
 	void showGarrisonDialog(ObjectInstanceID upobj, ObjectInstanceID hid, bool removableUnits) override {} //cb will be called when player closes garrison window
 	void showTeleportDialog(TeleportDialog *iw) override {}
-	void showThievesGuildWindow(PlayerColor player, ObjectInstanceID requestingObjId) override {}
+	void showObjectWindow(const CGObjectInstance * object, EOpenWindowMode window, const CGHeroInstance * visitor, bool addQuery) override {};
 	void giveResource(PlayerColor player, GameResID which, int val) override {}
 	void giveResources(PlayerColor player, TResources resources) override {}