mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	CSpellWindow widgets capturing
This commit is contained in:
		| @@ -105,6 +105,7 @@ CSpellWindow::CSpellWindow(const CGHeroInstance * _myHero, CPlayerInterface * _m | ||||
| 	myHero(_myHero), | ||||
| 	myInt(_myInt) | ||||
| { | ||||
| 	OBJ_CONSTRUCTION_CAPTURING_ALL; | ||||
| 	//initializing castable spells | ||||
| 	mySpells.reserve(CGI->spellh->objects.size()); | ||||
| 	for(const CSpell * spell : CGI->spellh->objects) | ||||
| @@ -182,32 +183,32 @@ CSpellWindow::CSpellWindow(const CGHeroInstance * _myHero, CPlayerInterface * _m | ||||
| 	schoolBorders[2] = CDefHandler::giveDef("SplevW.def"); | ||||
| 	schoolBorders[3] = CDefHandler::giveDef("SplevE.def"); | ||||
|  | ||||
| 	statusBar = new CGStatusBar(7, 569, "Spelroll.bmp"); | ||||
|  | ||||
| 	statusBar = new CGStatusBar(7 + pos.x, 569 + pos.y, "Spelroll.bmp"); | ||||
| 	SDL_Rect temp_rect = genRect(45, 35, 479 + pos.x, 405 + pos.y); | ||||
| 	exitBtn = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fexitb, this), 460, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fexitb, this), 460, this); | ||||
| 	temp_rect = genRect(45, 35, 221 + pos.x, 405 + pos.y); | ||||
| 	battleSpells = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fbattleSpellsb, this), 453, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fbattleSpellsb, this), 453, this); | ||||
| 	temp_rect = genRect(45, 35, 355 + pos.x, 405 + pos.y); | ||||
| 	adventureSpells = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fadvSpellsb, this), 452, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fadvSpellsb, this), 452, this); | ||||
| 	temp_rect = genRect(45, 35, 418 + pos.x, 405 + pos.y); | ||||
| 	manaPoints = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fmanaPtsb, this), 459, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fmanaPtsb, this), 459, this); | ||||
|  | ||||
| 	temp_rect = genRect(36, 56, 549 + pos.x, 94 + pos.y); | ||||
| 	selectSpellsA = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 0), 454, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 0), 454, this); | ||||
| 	temp_rect = genRect(36, 56, 549 + pos.x, 151 + pos.y); | ||||
| 	selectSpellsE = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 3), 457, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 3), 457, this); | ||||
| 	temp_rect = genRect(36, 56, 549 + pos.x, 210 + pos.y); | ||||
| 	selectSpellsF = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 1), 455, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 1), 455, this); | ||||
| 	temp_rect = genRect(36, 56, 549 + pos.x, 270 + pos.y); | ||||
| 	selectSpellsW = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 2), 456, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 2), 456, this); | ||||
| 	temp_rect = genRect(36, 56, 549 + pos.x, 330 + pos.y); | ||||
| 	selectSpellsAll = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 4), 458, this); | ||||
| 	new InteractiveArea(temp_rect, std::bind(&CSpellWindow::selectSchool, this, 4), 458, this); | ||||
|  | ||||
| 	temp_rect = genRect(leftCorner->h, leftCorner->w, 97 + pos.x, 77 + pos.y); | ||||
| 	lCorner = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fLcornerb, this), 450, this); | ||||
| 	temp_rect = genRect(rightCorner->h, rightCorner->w, 487 + pos.x, 72 + pos.y); | ||||
| 	rCorner = new InteractiveArea(temp_rect, std::bind(&CSpellWindow::fRcornerb, this), 451, this); | ||||
| 	lCorner = genRect(leftCorner->h, leftCorner->w, 97 + pos.x, 77 + pos.y); | ||||
| 	new InteractiveArea(lCorner, std::bind(&CSpellWindow::fLcornerb, this), 450, this); | ||||
| 	rCorner = genRect(rightCorner->h, rightCorner->w, 487 + pos.x, 72 + pos.y); | ||||
| 	new InteractiveArea(rCorner, std::bind(&CSpellWindow::fRcornerb, this), 451, this); | ||||
|  | ||||
| 	//areas for spells | ||||
| 	int xpos = 117 + pos.x, ypos = 90 + pos.y; | ||||
| @@ -254,26 +255,6 @@ CSpellWindow::~CSpellWindow() | ||||
| 	delete schools; | ||||
| 	for(auto & elem : schoolBorders) | ||||
| 		delete elem; | ||||
|  | ||||
| 	delete exitBtn; | ||||
| 	delete battleSpells; | ||||
| 	delete adventureSpells; | ||||
| 	delete manaPoints; | ||||
| 	delete statusBar; | ||||
|  | ||||
| 	delete selectSpellsA; | ||||
| 	delete selectSpellsE; | ||||
| 	delete selectSpellsF; | ||||
| 	delete selectSpellsW; | ||||
| 	delete selectSpellsAll; | ||||
|  | ||||
| 	delete lCorner; | ||||
| 	delete rCorner; | ||||
|  | ||||
| 	for(auto & elem : spellAreas) | ||||
| 	{ | ||||
| 		delete elem; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void CSpellWindow::fexitb() | ||||
| @@ -351,11 +332,7 @@ void CSpellWindow::showAll(SDL_Surface * to) | ||||
| 	CWindowObject::showAll(to); | ||||
| 	blitAt(spellTab->ourImages[selectedTab].bitmap, 524 + pos.x, 88 + pos.y, to); | ||||
|  | ||||
| 	std::ostringstream mana; | ||||
| 	mana<<myHero->mana; | ||||
| 	printAtMiddleLoc(mana.str(), 435, 426, FONT_SMALL, Colors::YELLOW, to); | ||||
|  | ||||
| 	statusBar->showAll(to); | ||||
| 	printAtMiddleLoc(boost::lexical_cast<std::string>(myHero->mana), 435, 426, FONT_SMALL, Colors::YELLOW, to); | ||||
|  | ||||
| 	//printing school images | ||||
| 	if(selectedTab!=4 && currentPage == 0) | ||||
| @@ -366,17 +343,11 @@ void CSpellWindow::showAll(SDL_Surface * to) | ||||
| 	//printing corners | ||||
| 	if(currentPage!=0) | ||||
| 	{ | ||||
| 		blitAt(leftCorner, lCorner->pos.x, lCorner->pos.y, to); | ||||
| 		blitAt(leftCorner, lCorner.x, lCorner.y, to); | ||||
| 	} | ||||
| 	if((currentPage+1) < (pagesWithinCurrentTab()) ) | ||||
| 	{ | ||||
| 		blitAt(rightCorner, rCorner->pos.x, rCorner->pos.y, to); | ||||
| 	} | ||||
|  | ||||
| 	//printing spell info | ||||
| 	for(auto & elem : spellAreas) | ||||
| 	{ | ||||
| 		elem->showAll(to); | ||||
| 		blitAt(rightCorner, rCorner.x, rCorner.y, to); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -458,52 +429,6 @@ void CSpellWindow::computeSpellsPerArea() | ||||
| 	redraw(); | ||||
| } | ||||
|  | ||||
| void CSpellWindow::activate() | ||||
| { | ||||
| 	CIntObject::activate(); | ||||
| 	exitBtn->activate(); | ||||
| 	battleSpells->activate(); | ||||
| 	adventureSpells->activate(); | ||||
| 	manaPoints->activate(); | ||||
|  | ||||
| 	selectSpellsA->activate(); | ||||
| 	selectSpellsE->activate(); | ||||
| 	selectSpellsF->activate(); | ||||
| 	selectSpellsW->activate(); | ||||
| 	selectSpellsAll->activate(); | ||||
|  | ||||
| 	for(auto & elem : spellAreas) | ||||
| 	{ | ||||
| 		elem->activate(); | ||||
| 	} | ||||
|  | ||||
| 	lCorner->activate(); | ||||
| 	rCorner->activate(); | ||||
| } | ||||
|  | ||||
| void CSpellWindow::deactivate() | ||||
| { | ||||
| 	CIntObject::deactivate(); | ||||
| 	exitBtn->deactivate(); | ||||
| 	battleSpells->deactivate(); | ||||
| 	adventureSpells->deactivate(); | ||||
| 	manaPoints->deactivate(); | ||||
|  | ||||
| 	selectSpellsA->deactivate(); | ||||
| 	selectSpellsE->deactivate(); | ||||
| 	selectSpellsF->deactivate(); | ||||
| 	selectSpellsW->deactivate(); | ||||
| 	selectSpellsAll->deactivate(); | ||||
|  | ||||
| 	for(auto & elem : spellAreas) | ||||
| 	{ | ||||
| 		elem->deactivate(); | ||||
| 	} | ||||
|  | ||||
| 	lCorner->deactivate(); | ||||
| 	rCorner->deactivate(); | ||||
| } | ||||
|  | ||||
| void CSpellWindow::turnPageLeft() | ||||
| { | ||||
| 	if (settings["video"]["spellbookAnimation"].Bool()) | ||||
|   | ||||
| @@ -64,15 +64,14 @@ private: | ||||
|  | ||||
| 	SDL_Surface * leftCorner, * rightCorner; | ||||
|  | ||||
| 	SDL_Rect lCorner, rCorner; | ||||
|  | ||||
| 	CAnimation * spells; //pictures of spells | ||||
|  | ||||
| 	CDefHandler	* spellTab, //school select | ||||
| 		* schools, //schools' pictures | ||||
| 		* schoolBorders [4]; //schools' 'borders': [0]: air, [1]: fire, [2]: water, [3]: earth | ||||
|  | ||||
| 	InteractiveArea * exitBtn, * battleSpells, * adventureSpells, * manaPoints; | ||||
| 	InteractiveArea * selectSpellsA, * selectSpellsE, * selectSpellsF, * selectSpellsW, * selectSpellsAll; | ||||
| 	InteractiveArea * lCorner, * rCorner; | ||||
| 	SpellArea * spellAreas[12]; | ||||
| 	CGStatusBar * statusBar; | ||||
|  | ||||
| @@ -109,8 +108,6 @@ public: | ||||
| 	void selectSchool(int school); //schools: 0 - air magic, 1 - fire magic, 2 - water magic, 3 - earth magic, 4 - all schools | ||||
| 	int pagesWithinCurrentTab(); | ||||
| 	void keyPressed(const SDL_KeyboardEvent & key); | ||||
| 	void activate(); | ||||
| 	void deactivate(); | ||||
| 	void showAll(SDL_Surface * to); | ||||
| 	void show(SDL_Surface * to); | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user