AlexVinS 8 년 전
부모
커밋
6dd89efc9a
2개의 변경된 파일8개의 추가작업 그리고 4개의 파일을 삭제
  1. 6 1
      client/CPlayerInterface.cpp
  2. 2 3
      client/windows/CSpellWindow.cpp

+ 6 - 1
client/CPlayerInterface.cpp

@@ -15,6 +15,7 @@
 #include "gui/SDL_Extensions.h"
 #include "widgets/CComponent.h"
 #include "windows/CTradeWindow.h"
+#include "windows/CSpellWindow.h"
 #include "../lib/CConfigHandler.h"
 #include "battle/CCreatureAnimation.h"
 #include "Graphics.h"
@@ -2244,11 +2245,15 @@ void CPlayerInterface::viewWorldMap()
 void CPlayerInterface::advmapSpellCast(const CGHeroInstance * caster, int spellID)
 {
 	EVENT_HANDLER_CALLED_BY_CLIENT;
+
+    if(dynamic_cast<CSpellWindow *>(GH.topInt()))
+		GH.popIntTotally(GH.topInt());
+
 	if (spellID == SpellID::FLY || spellID == SpellID::WATER_WALK)
 	{
 		eraseCurrentPathOf(caster, false);
 	}
-	const CSpell * spell = CGI->spellh->objects[spellID];
+	const CSpell * spell = CGI->spellh->objects.at(spellID);
 
 	if (spellID == SpellID::VIEW_EARTH)
 	{

+ 2 - 3
client/windows/CSpellWindow.cpp

@@ -636,9 +636,8 @@ void CSpellWindow::SpellArea::clickLeft(tribool down, bool previousState)
 
 			auto guard = vstd::makeScopeGuard([this]
 			{
-				(owner->myInt->battleInt ? owner->myInt->spellbookSettings.spellbookLastTabBattle : owner->myInt->spellbookSettings.spellbookLastTabAdvmap) = owner->selectedTab;
-				(owner->myInt->battleInt ? owner->myInt->spellbookSettings.spellbookLastPageBattle : owner->myInt->spellbookSettings.spellbokLastPageAdvmap) = owner->currentPage;
-				delete owner;
+				owner->myInt->spellbookSettings.spellbookLastTabAdvmap = owner->selectedTab;
+				owner->myInt->spellbookSettings.spellbokLastPageAdvmap = owner->currentPage;
 			});
 
 			if(mySpell->getTargetType() == CSpell::LOCATION)