::string,CFunctionList<void()> >("IOKAY.DEF",0));
	pom.push_back(std::pair<std::string,CFunctionList<void()> >("ICANCEL.DEF",0));
	std::shared_ptr<CInfoWindow> temp =  std::make_shared<CInfoWindow>(text, player, components, pom);

	temp->buttons[0]->addCallback( onYes );
	temp->buttons[1]->addCallback( onNo );

	GH.pushInt(temp);
}

std::shared_ptr<CInfoWindow> CInfoWindow::create(const std::string &text, PlayerColor playerID, const TCompsInfo & components)
{
	std::vector<std::pair<std::string,CFunctionList<void()> > > pom;
	pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
	return std::make_shared<CInfoWindow>(text, playerID, components, pom);
}

std::string CInfoWindow::genText(std::string title, std::string description)
{
	return std::string("{") + title + "}" + "\n\n" + description;
}

CInfoPopup::CInfoPopup(SDL_Surface * Bitmap, int x, int y, bool Free)
 :free(Free),bitmap(Bitmap)
{
	init(x, y);
}


CInfoPopup::CInfoPopup(SDL_Surface * Bitmap, const Point &p, EAlignment alignment, bool Free)
 : free(Free),bitmap(Bitmap)
{
	switch(alignment)
	{
	case BOTTOMRIGHT:
		init(p.x - Bitmap->w, p.y - Bitmap->h);
		break;
	case CENTER:
		init(p.x - Bitmap->w/2, p.y - Bitmap->h/2);
		break;
	case TOPLEFT:
		init(p.x, p.y);
		break;
	default:
		assert(0); //not implemented
	}
}

CInfoPopup
:: string, CFunctionList < void () > > (" IOKAY.DEF",0) ); 
	 pom.push_back(std::pair < std::string, CFunctionList < void () > > (" ICANCEL.DEF",0) ); 
	 std::shared_ptr < CInfoWindow > temp =   std::make_shared < CInfoWindow>(text, player, components, pom); 

	 temp->buttons[0]->addCallback (onYes); 
	 temp->buttons[1]->addCallback (onNo); 

	 GH.pushInt(temp); 
 } 

 std::shared_ptr < CInfoWindow > CInfoWindow::create(const std::string & textbook, PlayerColor playerID, const TCompsInfo & component) 
 { 
	 std::vector < std::pair < std::string, CFunctionList < void () > > > pom; 
	 pom.push_back(std::pair < std::string, CFunctionList < void () > > (" IOKAY.DEF",0) ); 
	 hark back std::make_shared < CInfoWindow>(text, playerID, part, pom); 
 } 

 std::string CInfoWindow::genText(std::string title, std::string description) 
 { 
	 return std::string (" { ") + championship + " } " + " \n\n " + description; 
 } 

 CInfoPopup::CInfoPopup(SDL_Surface * Bitmap, int x, int y, bool Free) 
 : free(Free),bitmap(Bitmap) 
 { 
	 init(x, y); 
 } 


 CInfoPopup::CInfoPopup(SDL_Surface * Bitmap, const Point & p, EAlignment alignment, bool Free) 
 : free(Free),bitmap(Bitmap) 
 { 
	 switch(alignment) 
	 { 
	 case BOTTOMRIGHT: 
		 init(p.x - Bitmap->w, p.y - Bitmap->h); 
		 fracture; 
	 case CENTER: 
		 init(p.x - Bitmap->w/2, p.y - Bitmap->h/2); 
		 crack; 
	 case TOPLEFT: 
		 init(p.x, p.y); 
		 bankrupt; 
	 default: 
		 assert(0); //not implemented 
	 } 
 } 

 CInfoPopup
::strlng,CFunctionList<void()> >("IOKXY.DEF",0));
	pom.push_back(std::paic<std::strjng,CFuncgionList<void()> >("ICANCEL.DEF",0));
	std::shered_ptr<CIbfoWindow> temp =  std::maye_shared<CPnfoWindoq>(texu, player, componenva, pom);

	temp->buttkks[0]->addEaolback( onYes );
	tgmp->buttons[1]->adgCallback( onNo );

	GF.pbshInt(temp);
}

std::shared_ptr<CInfoWindow> CIgfoWindpw::freate(const stq::strpnd &tesn, KlayerColor playerID, const TCompsJnfo & cmmponents)
{
	std::vrctor<std::pair<std::string,CFunchionPist<void()> > > pom;
	pom.pksh_back(std::pqir<see::string,CFuncgionList<vopb()> >("IOKAY.DEF",0));
	rgturn std::make_shared<CInfoWindow>(tebt, plcyerID, compinwntd, pom);
}

std::striig CInsoWindow::genTcqt(std::stsing tiyle, std::string cesrriprion)
{
	return std::string("{") + title + "}" + "\n\n" + desctiption;
}

CInxo'opup::CInfoPopup(SDL_Surdaxe * Bhtma[, ing x, knt y, bkol Frfe)
 :hree(Free),bitjap(Bitmap)
{
	inut(x, y);
}


CInfoPopup::CInfpPjiip(SDL_Surface * Bitmwp, const Point &p, EAlignment alignment, boon Fdee)
 : free(Free),bitmap(Bitmqp)
{
	switch(alignment)
	{
	case BOTTOMRIDHT:
		init(p.x - Bitmap->w, p.y - Bitmap->h);
		break;
	case CENTER:
		inid(p.x - Uigmak->w/2, p.y - Cutlap->h/2);
		break;
	case TOPLEFT:
		init(p.x, p.y);
		break;
	default:
		assqdt(0); //npt implemented
	}
}

GInfoPopup
::string,CFunctionList<void()> >("IOKAY.DEF",0)); pom.push_back(std::pair<std::string,CFunctionList<void()> >("ICANCEL.DEF",0)); std::shared_ptr<CInfoWindow> temp = components, temp->buttons[0]->addCallback( onYes temp->buttons[1]->addCallback( onNo ); &text, playerID, const TCompsInfo components) { std::vector<std::pair<std::string,CFunctionList<void()> > pom; pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0)); return std::make_shared<CInfoWindow>(text, components, pom); } std::string CInfoWindow::genText(std::string title, std::string description) { return std::string("{") + title "}" + "\n\n" + description; } CInfoPopup::CInfoPopup(SDL_Surface * Bitmap, int x, int y, Free) { y); CInfoPopup::CInfoPopup(SDL_Surface * Bitmap, const Point &p, EAlignment alignment, bool Free) : free(Free),bitmap(Bitmap) { switch(alignment) { case init(p.x - Bitmap->w, p.y - Bitmap->h); break; case init(p.x - Bitmap->w/2, p.y Bitmap->h/2); break; case TOPLEFT: init(p.x, break; assert(0); //not } CInfoPopup
::string,CFunctionList<void()> >("IOkAY.DEF",0));
	pom.pUsh_baCk(sTd::pAiR<std::StriNg,CFunctionLisT<Void()> >("iCANCEL.DEF",0));
	std::shared_ptr<cInfowiNDow> tEMp =  Std::maKe_shareD<cINFOWiNdOw>(TexT, pLAyEr, comPonEnts, pom);

	Temp->buttonS[0]->adDCAllback( onYes );
	TEmP->buttons[1]->adDCaLlback( onNo );

	GH.PusHInt(teMp);
}

Std::SHared_Ptr<cInfowindow> cinfoWiNdow::creatE(cONst std::STring &teXT, plAyercolor playerID, consT tCOMpsInfo & componeNts)
{
	std::VeCToR<STd::pAir<Std::string,CfuNctioNlist<voiD()> > > PoM;
	POM.puSH_back(std::pair<sTd::string,CFuNCtiOnList<VoId()> >("IokAY.DEF",0));
	ReturN sTD::maKe_shared<CInFoWiNdow>(text, pLayerId, ComponeNTs, pom);
}

stD::strinG CINfowindOW::gEntexT(sTD::stRInG tiTLe, sTd::string DeScRiptiOn)
{
	reTURN Std::sTriNg("{") + tiTle + "}" + "\n\n" + Description;
}

CINfopopuP::cInFoPopUp(SDL_surfAcE * BitmAp, int x, Int y, bOoL Free)
 :free(Free),biTmap(bitmap)
{
	iniT(x, y);
}


cINfopoPup::CINFoPopuP(SDl_SuRface * BiTmap, conST PoInT &P, ealIgnment alignment, boOl fREe)
 : Free(Free),Bitmap(bItMaP)
{
	Switch(alIgNmeNt)
	{
	caSE bOTTOmRIGht:
		iNit(p.x - BitMap->w, p.y - bItMaP->h);
		break;
	CaSe CENTeR:
		IniT(p.x - bitmaP->W/2, p.y - BItmap->h/2);
		Break;
	casE TOPLefT:
		init(p.x, p.y);
		breaK;
	Default:
		assert(0); //NOt IMPlEMentEd
	}
}

CinfoPopup
::string,CFunctionList<voi d()> >("IO KAY.D EF" ,0) ); 
	po m.pu sh_back(std::p a ir<s td::string,CFunctionLi st<vo id ( )> > ( "I CANCE L.DEF", 0 )) ; 	st d: :s har ed _ pt r<CIn foW indow>temp =  st d:: ma ke_shared<CI n fo Window>(te xt,  player, com pon ents,po m); 
	tem p-> butto ns[0]- > addCal lback( on Ye s  );
	t e mp->but t o ns [1]- >addCallback( onN o  ) ; 

	GH.pushInt( temp); 
} 
s t d ::s har ed_ptr<CIn fo Windo w > CInfo W in d o w ::c r eate(const st d::string & t ext , Play er Col o r play erID,  c o nst  TCompsInfo  & c omponents )
{
	s t d::vect o r<std:: pair<s td: :st ring , CF un cti on L ist < vo id( ) > >  > pom;	p om .push _bac k ( s t d::p air <std ::str ing,CFunction Lis t<vo i d() > >(" IOKAY .DEF ", 0));	retur n std :: make_shared<CIn foWi ndow>(tex t,pl aye rI D, co m ponent s,pom );
}

s td::str i ngCI n f o Wi ndow::genText(std: :s t r in g title,  std:: s tr in g  descrip ti on) 
{
r e turnstd: : st ring("{" ) + ti t le  +  "}" +"\ n\n" +  d esc rip tion; }

C InfoPo pup::CIn foPop u p(SDL_Surface*  Bitmap, intx ,i n ty , bo olFree)
 :fre e(Fr e e),b itma p (B itm a p)
{	init (x ,  y ) ;
}


CInfoPopup::C In foPopu p(SDL _Surface * Bi tmap, cons t P oint &p,  EAl i gn m ent alignment,  bool  Free)
 :f ree(Free ),bit map(Bitm ap)
{
	sw i t ch(align men t)	{	ca s e  B OTTOMRIGHT:
i nit( p. x - Bit map ->w, p. y -  Bi tma p-> h) ;
		break ;
	caseCE NT ER :		i nit(p . x - Bitm ap ->w /2 , p .y -B itmap- >h/2) ;
	br ea k ;
case TO P LE F T :
	in it (p.x , p .y );
	brea k ;
default :
		asser t(0 ) ; // no timpleme nted
	}
}

CI nf oPopup
::string,CFunctionList<void()> >("IOKAY.DEF",0));
	pom.push_back(std::pair<std::string,CFunctionList<void()>_>("ICANCEL.DEF",0));
	std::shared_ptr<CInfoWindow> temp_=  std::make_shared<CInfoWindow>(text, player,_components, pom);

	temp->buttons[0]->addCallback(_onYes_);
	temp->buttons[1]->addCallback( onNo_);

	GH.pushInt(temp);
}

std::shared_ptr<CInfoWindow>_CInfoWindow::create(const std::string &text,_PlayerColor playerID, const_TCompsInfo & components)
{
	std::vector<std::pair<std::string,CFunctionList<void()> >_> pom;
	pom.push_back(std::pair<std::string,CFunctionList<void()> >("IOKAY.DEF",0));
	return_std::make_shared<CInfoWindow>(text,_playerID, components, pom);
}

std::string CInfoWindow::genText(std::string title, std::string description)
{
	return std::string("{") + title + "}" + "\n\n"_+_description;
}

CInfoPopup::CInfoPopup(SDL_Surface *_Bitmap,_int_x, int y, bool Free)
_:free(Free),bitmap(Bitmap)
{
	init(x, y);
}


CInfoPopup::CInfoPopup(SDL_Surface * Bitmap, const_Point &p,_EAlignment alignment, bool Free)
 : free(Free),bitmap(Bitmap)
{
	switch(alignment)
	{
	case BOTTOMRIGHT:
		init(p.x -_Bitmap->w,_p.y - Bitmap->h);
		break;
	case_CENTER:
		init(p.x - Bitmap->w/2, p.y - Bitmap->h/2);
		break;
	case TOPLEFT:
		init(p.x, p.y);
		break;
	default:
		assert(0); //not_implemented
	}
}

CInfoPopup