Browse Source

Fixed setting adventure map underground button state after game load;

Fay 10 years ago
parent
commit
8adc209366

+ 2 - 0
client/CPlayerInterface.cpp

@@ -143,6 +143,8 @@ void CPlayerInterface::init(shared_ptr<CCallback> CB)
 
 
 	if(!adventureInt)
 	if(!adventureInt)
 		adventureInt = new CAdvMapInt();
 		adventureInt = new CAdvMapInt();
+	else
+		adventureInt->restoreState();
 }
 }
 void CPlayerInterface::yourTurn()
 void CPlayerInterface::yourTurn()
 {
 {

+ 13 - 5
client/windows/CAdvmapInterface.cpp

@@ -402,10 +402,11 @@ void CResDataBar::showAll(SDL_Surface * to)
 CAdvMapInt::CAdvMapInt():
 CAdvMapInt::CAdvMapInt():
 	mode(EAdvMapMode::NORMAL),
 	mode(EAdvMapMode::NORMAL),
 	minimap(Rect(ADVOPT.minimapX, ADVOPT.minimapY, ADVOPT.minimapW, ADVOPT.minimapH)),
 	minimap(Rect(ADVOPT.minimapX, ADVOPT.minimapY, ADVOPT.minimapW, ADVOPT.minimapH)),
-statusbar(ADVOPT.statusbarX,ADVOPT.statusbarY,ADVOPT.statusbarG),
-heroList(ADVOPT.hlistSize, Point(ADVOPT.hlistX, ADVOPT.hlistY), ADVOPT.hlistAU, ADVOPT.hlistAD),
-townList(ADVOPT.tlistSize, Point(ADVOPT.tlistX, ADVOPT.tlistY), ADVOPT.tlistAU, ADVOPT.tlistAD),
-infoBar(Rect(ADVOPT.infoboxX, ADVOPT.infoboxY, 192, 192) )
+	statusbar(ADVOPT.statusbarX,ADVOPT.statusbarY,ADVOPT.statusbarG),
+	heroList(ADVOPT.hlistSize, Point(ADVOPT.hlistX, ADVOPT.hlistY), ADVOPT.hlistAU, ADVOPT.hlistAD),
+	townList(ADVOPT.tlistSize, Point(ADVOPT.tlistX, ADVOPT.tlistY), ADVOPT.tlistAU, ADVOPT.tlistAD),
+	infoBar(Rect(ADVOPT.infoboxX, ADVOPT.infoboxY, 192, 192) ),
+	activeMapPanel(nullptr)
 {
 {
 	duringAITurn = false;
 	duringAITurn = false;
 	state = NA;
 	state = NA;
@@ -546,10 +547,17 @@ infoBar(Rect(ADVOPT.infoboxX, ADVOPT.infoboxY, 192, 192) )
 											Colors::WHITE, CGI->generaltexth->allTexts[618]));
 											Colors::WHITE, CGI->generaltexth->allTexts[618]));
 
 
 	activeMapPanel = panelMain;
 	activeMapPanel = panelMain;
+	restoreState();
+
+	addUsedEvents(MOVE);
+}
+
+void CAdvMapInt::restoreState()
+{
+	changeMode(EAdvMapMode::NORMAL);
 
 
 	underground->block(!CGI->mh->map->twoLevel);
 	underground->block(!CGI->mh->map->twoLevel);
 	worldViewUnderground->block(!CGI->mh->map->twoLevel);
 	worldViewUnderground->block(!CGI->mh->map->twoLevel);
-	addUsedEvents(MOVE);
 }
 }
 
 
 CAdvMapInt::~CAdvMapInt()
 CAdvMapInt::~CAdvMapInt()

+ 3 - 0
client/windows/CAdvmapInterface.h

@@ -208,6 +208,9 @@ public:
 	void updateMoveHero(const CGHeroInstance *h, tribool hasPath = boost::logic::indeterminate);
 	void updateMoveHero(const CGHeroInstance *h, tribool hasPath = boost::logic::indeterminate);
 	void updateNextHero(const CGHeroInstance *h);
 	void updateNextHero(const CGHeroInstance *h);
 
 
+	/// called by player interface if it wants to reuse this object for new/loaded map
+	void restoreState();
+
 	/// changes current adventure map mode; used to switch between default view and world view; scale is ignored if EAdvMapMode == NORMAL
 	/// changes current adventure map mode; used to switch between default view and world view; scale is ignored if EAdvMapMode == NORMAL
 	void changeMode(EAdvMapMode newMode, float newScale = 0.36f);
 	void changeMode(EAdvMapMode newMode, float newScale = 0.36f);
 };
 };