浏览代码

hero screen garrison and small crashbugfix

mateuszb 17 年之前
父节点
当前提交
2b4e5ff2e2
共有 2 个文件被更改,包括 20 次插入1 次删除
  1. 19 1
      CHeroWindow.cpp
  2. 1 0
      CHeroWindow.h

+ 19 - 1
CHeroWindow.cpp

@@ -28,6 +28,8 @@ CHeroWindow::CHeroWindow(int playerColor):
 	curHero = NULL;
 	activeArtPlace = NULL;
 
+	garInt = NULL;
+
 	quitButton = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::quit, 674, 524, "hsbtns.def", this);
 	dismissButton = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::dismissCurrent, 519, 437, "hsbtns2.def", this);
 	questlogButton = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::questlog, 379, 437, "hsbtns4.def", this);
@@ -117,6 +119,8 @@ CHeroWindow::~CHeroWindow()
 	delete skillpics;
 	delete flags;
 
+	delete garInt;
+
 	for(int g=0; g<artWorn.size(); ++g)
 	{
 		delete artWorn[g];
@@ -157,6 +161,8 @@ void CHeroWindow::show(SDL_Surface *to)
 	leftArtRoll->show();
 	rightArtRoll->show();
 
+	garInt->show();
+
 	for(int d=0; d<artWorn.size(); ++d)
 	{
 		artWorn[d]->show(to);
@@ -176,6 +182,9 @@ void CHeroWindow::setHero(const CGHeroInstance *hero)
 	curHero = hero;
 	portraitArea->text = hero->biography;
 
+	delete garInt;
+	garInt = new CGarrisonInt(80, 494, 8, 0, curBack, 13, 482, curHero);
+
 	for(int g=0; g<primSkillAreas.size(); ++g)
 	{
 		primSkillAreas[g]->bonus = hero->primSkills[g];
@@ -526,6 +535,9 @@ void CHeroWindow::activate()
 	portraitArea->activate();
 	expArea->activate();
 	spellPointsArea->activate();
+
+	garInt->activate();
+
 	for(int v=0; v<primSkillAreas.size(); ++v)
 	{
 		primSkillAreas[v]->activate();
@@ -568,6 +580,9 @@ void CHeroWindow::deactivate()
 	portraitArea->deactivate();
 	expArea->deactivate();
 	spellPointsArea->deactivate();
+
+	garInt->deactivate();
+
 	for(int v=0; v<primSkillAreas.size(); ++v)
 	{
 		primSkillAreas[v]->deactivate();
@@ -874,7 +889,10 @@ void CArtPlace::clickLeft(boost::logic::tribool down)
 					ourWindow->activeArtPlace->text = pmh->description;
 				else
 					ourWindow->activeArtPlace->text = std::string();
-				text = ourArt->description;
+				if(ourArt)
+					text = ourArt->description;
+				else
+					text = std::string();
 				
 				ourWindow->activeArtPlace->clicked = false;
 				ourWindow->activeArtPlace = NULL;

+ 1 - 0
CHeroWindow.h

@@ -83,6 +83,7 @@ class CHeroWindow: public IActivable, public IShowable, public virtual CIntObjec
 {
 	SDL_Surface * background, * curBack;
 	const CGHeroInstance * curHero;
+	CGarrisonInt * garInt;
 
 	//general graphics
 	CDefHandler * skillpics, *flags;