| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089 | #include "stdafx.h"#include "CGameInterface.h"#include "CAdvMapInterface.h"#include "CMessage.h"#include "mapHandler.h"#include "SDL_Extensions.h"#include "SDL_framerate.h"#include "CScreenHandler.h"#include "CCursorHandler.h"#include "CCallback.h"#include "SDL_Extensions.h"#include "hch/CLodHandler.h"#include "CPathfinder.h"#include <sstream>#ifdef _WIN32	#include <windows.h> //for .dll libs#else	#include <dlfcn.h>#endifusing namespace CSDL_Ext;class OCM_HLP_CGIN{public:	bool operator ()(const std::pair<CObjectInstance*,std::pair<SDL_Rect, std::vector<std::list<int3>>>>  & a, const std::pair<CObjectInstance*,std::pair<SDL_Rect, std::vector<std::list<int3>>>> & b) const	{		return (*a.first)<(*b.first);	}} ocmptwo_cgin ;CSimpleWindow::~CSimpleWindow(){	SDL_FreeSurface(bitmap);	bitmap=NULL;}CButtonBase::CButtonBase(){	curimg=0;	type=-1;	abs=false;	active=false;	ourObj=NULL;	state=0;}void CButtonBase::show(){	if (abs)	{		blitAt(imgs[curimg][state],pos.x,pos.y);		updateRect(&pos);	}	else	{		blitAt(imgs[curimg][state],pos.x+ourObj->pos.x,pos.y+ourObj->pos.y);		updateRect(&genRect(pos.h,pos.w,pos.x+ourObj->pos.x,pos.y+ourObj->pos.y));			}}ClickableL::ClickableL(){	pressedL=false;}void ClickableL::clickLeft(tribool down){	if (down)		pressedL=true;	else		pressedL=false;}void ClickableL::activate(){	LOCPLINT->lclickable.push_back(this);}void ClickableL::deactivate(){	LOCPLINT->lclickable.erase		(std::find(LOCPLINT->lclickable.begin(),LOCPLINT->lclickable.end(),this));}ClickableR::ClickableR(){	pressedR=false;}void ClickableR::activate(){	LOCPLINT->rclickable.push_back(this);}void ClickableR::deactivate(){	LOCPLINT->rclickable.erase(std::find(LOCPLINT->rclickable.begin(),LOCPLINT->rclickable.end(),this));}void Hoverable::activate(){	LOCPLINT->hoverable.push_back(this);}void Hoverable::deactivate(){	LOCPLINT->hoverable.erase(std::find(LOCPLINT->hoverable.begin(),LOCPLINT->hoverable.end(),this));}void Hoverable::hover(bool on){	hovered=on;}void KeyInterested::activate(){	LOCPLINT->keyinterested.push_back(this);}void KeyInterested::deactivate(){	LOCPLINT->		keyinterested.erase(std::find(LOCPLINT->keyinterested.begin(),LOCPLINT->keyinterested.end(),this));}void MotionInterested::activate(){	LOCPLINT->motioninterested.push_back(this);}void MotionInterested::deactivate(){	LOCPLINT->		motioninterested.erase(std::find(LOCPLINT->motioninterested.begin(),LOCPLINT->motioninterested.end(),this));}CGlobalAI * CAIHandler::getNewAI(CCallback * cb, std::string dllname){	dllname = "AI/"+dllname;	CGlobalAI * ret=NULL;	CGlobalAI*(*getAI)();	void(*getName)(char*);#ifdef _WIN32	HINSTANCE dll = LoadLibraryA(dllname.c_str());	if (!dll)	{		std::cout << "Cannot open AI library ("<<dllname<<"). Throwing..."<<std::endl;		throw new std::exception("Cannot open AI library");	}	//int len = dllname.size()+1;	getName = (void(*)(char*))GetProcAddress(dll,"GetAiName");	getAI = (CGlobalAI*(*)())GetProcAddress(dll,"GetNewAI");#else	; //TODO: handle AI library on Linux#endif	char * temp = new char[50];	getName(temp);	std::cout << "Loaded .dll with AI named " << temp << std::endl;	delete temp;	ret = getAI();	ret->init(cb);	return ret;}//CGlobalAI::CGlobalAI()//{//}CPlayerInterface::CPlayerInterface(int Player, int serial){	playerID=Player;	serialID=serial;	CGI->localPlayer = playerID;	human=true;	hInfo = CGI->bitmaph->loadBitmap("HEROQVBK.bmp");	SDL_SetColorKey(hInfo,SDL_SRCCOLORKEY,SDL_MapRGB(hInfo->format,0,255,255));	slotsPos.push_back(std::pair<int,int>(44,82));	slotsPos.push_back(std::pair<int,int>(80,82));	slotsPos.push_back(std::pair<int,int>(116,82));	slotsPos.push_back(std::pair<int,int>(26,131));	slotsPos.push_back(std::pair<int,int>(62,131));	slotsPos.push_back(std::pair<int,int>(98,131));	slotsPos.push_back(std::pair<int,int>(134,131));	luck22 = CGI->spriteh->giveDefEss("ILCK22.DEF");	luck30 = CGI->spriteh->giveDefEss("ILCK30.DEF");	luck42 = CGI->spriteh->giveDefEss("ILCK42.DEF");	luck82 = CGI->spriteh->giveDefEss("ILCK82.DEF");	morale22 = CGI->spriteh->giveDefEss("IMRL22.DEF");	morale30 = CGI->spriteh->giveDefEss("IMRL30.DEF");	morale42 = CGI->spriteh->giveDefEss("IMRL42.DEF");	morale82 = CGI->spriteh->giveDefEss("IMRL82.DEF");}void CPlayerInterface::init(CCallback * CB){	cb = CB;	CGI->localPlayer = serialID;	adventureInt = new CAdvMapInt(playerID);}void CPlayerInterface::yourTurn(){	makingTurn = true;	CGI->localPlayer = serialID;	unsigned char & animVal = LOCPLINT->adventureInt->anim; //for animations handling	adventureInt->show();	//show rest of things	//initializing framerate keeper	mainFPSmng = new FPSmanager;	SDL_initFramerate(mainFPSmng);	SDL_setFramerate(mainFPSmng, 24);	SDL_Event sEvent;	//framerate keeper initialized	for(;makingTurn;) // main loop	{		CGI->screenh->updateScreen();		LOCPLINT->adventureInt->updateScreen = false;		while (SDL_PollEvent(&sEvent))  //wait for event...		{			handleEvent(&sEvent);		}		++LOCPLINT->adventureInt->animValHitCount; //for animations		if(LOCPLINT->adventureInt->animValHitCount == 2)		{			LOCPLINT->adventureInt->animValHitCount = 0;			++animVal;			LOCPLINT->adventureInt->updateScreen = true;		}		if(LOCPLINT->adventureInt->scrollingLeft)		{			if(LOCPLINT->adventureInt->position.x>-Woff)			{				LOCPLINT->adventureInt->position.x--;				LOCPLINT->adventureInt->updateScreen = true;				adventureInt->updateMinimap=true;			}		}		if(LOCPLINT->adventureInt->scrollingRight)		{			if(LOCPLINT->adventureInt->position.x<CGI->ac->map.width-19+4)			{				LOCPLINT->adventureInt->position.x++;				LOCPLINT->adventureInt->updateScreen = true;				adventureInt->updateMinimap=true;			}		}		if(LOCPLINT->adventureInt->scrollingUp)		{			if(LOCPLINT->adventureInt->position.y>-Hoff)			{				LOCPLINT->adventureInt->position.y--;				LOCPLINT->adventureInt->updateScreen = true;				adventureInt->updateMinimap=true;			}		}		if(LOCPLINT->adventureInt->scrollingDown)		{			if(LOCPLINT->adventureInt->position.y<CGI->ac->map.height-18+4)			{				LOCPLINT->adventureInt->position.y++;				LOCPLINT->adventureInt->updateScreen = true;				adventureInt->updateMinimap=true;			}		}		if(LOCPLINT->adventureInt->updateScreen)		{			adventureInt->update();			adventureInt->updateScreen=false;		}		if (LOCPLINT->adventureInt->updateMinimap)		{			adventureInt->minimap.draw();			adventureInt->updateMinimap=false;		}		for(int i=0;i<objsToBlit.size();i++)			blitAt(objsToBlit[i]->bitmap,objsToBlit[i]->pos.x,objsToBlit[i]->pos.y);		SDL_Delay(5); //give time for other apps		SDL_framerateDelay(mainFPSmng);	}	adventureInt->hide();}inline void subRect(const int & x, const int & y, const int & z, SDL_Rect & r, const int & hid){	for(int h=0; h<CGI->mh->ttiles[x][y][z].objects.size(); ++h)		if(CGI->mh->ttiles[x][y][z].objects[h].first->id==hid)		{			CGI->mh->ttiles[x][y][z].objects[h].second.first = r;			break;		}}inline void delObjRect(const int & x, const int & y, const int & z, const int & hid){	for(int h=0; h<CGI->mh->ttiles[x][y][z].objects.size(); ++h)		if(CGI->mh->ttiles[x][y][z].objects[h].first->id==hid)		{			CGI->mh->ttiles[x][y][z].objects.erase(CGI->mh->ttiles[x][y][z].objects.begin()+h);			break;		}}void CPlayerInterface::heroMoved(const HeroMoveDetails & details){	adventureInt->minimap.draw();	//initializing objects and performing first step of move	CObjectInstance * ho = details.ho; //object representing this hero	int3 hp = details.src;	if (adventureInt->terrain.currentPath) //&& hero is moving	{		adventureInt->terrain.currentPath->nodes.erase(adventureInt->terrain.currentPath->nodes.end()-1);	}	int3 buff = details.ho->pos;	buff.x-=11;	buff.y-=9;	buff = repairScreenPos(buff);	LOCPLINT->adventureInt->position = buff; //actualizing screen pos	if(details.dst.x+1 == details.src.x && details.dst.y+1 == details.src.y) //tl	{		ho->moveDir = 1;		ho->isStanding = false;		CGI->mh->ttiles[hp.x-3][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 1, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 33, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 65, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, 1), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, 1), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, 1), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, 1), ho->id);		CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, 33), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 33), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 33), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 33), ho->id);		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);	}	else if(details.dst.x == details.src.x && details.dst.y+1 == details.src.y) //t	{		ho->moveDir = 2;		ho->isStanding = false;		CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 0, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 32, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 64, -31), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 0, 1), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 32, 1), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 64, 1), ho->id);		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 0, 33), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 32, 33), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 64, 33), ho->id);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);	}	else if(details.dst.x-1 == details.src.x && details.dst.y+1 == details.src.y) //tr	{		ho->moveDir = 3;		ho->isStanding = false;		CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -1, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 31, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 63, -31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x+1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, -31), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, 1), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, 1), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, 1), ho->id);		CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, 1), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 33), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 33), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 33), ho->id);		CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, 33), std::vector<std::list<int3>>())));		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.end(), ocmptwo_cgin);	}	else if(details.dst.x-1 == details.src.x && details.dst.y == details.src.y) //r	{		ho->moveDir = 4;		ho->isStanding = false;		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, 0), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, 0), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, 0), ho->id);		CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, 0), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 32), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 32), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 32), ho->id);		CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, 32), std::vector<std::list<int3>>())));		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.end(), ocmptwo_cgin);	}	else if(details.dst.x-1 == details.src.x && details.dst.y-1 == details.src.y) //br	{		ho->moveDir = 5;		ho->isStanding = false;		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, -1), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, -1), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, -1), ho->id);		CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, -1), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 31), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 31), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 31), ho->id);		CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, 31), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -1, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 31, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 63, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x+1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 95, 63), std::vector<std::list<int3>>())));		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);	}	else if(details.dst.x == details.src.x && details.dst.y-1 == details.src.y) //b	{		ho->moveDir = 6;		ho->isStanding = false;		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 0, -1), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 32, -1), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 64, -1), ho->id);		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 0, 31), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 32, 31), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 64, 31), ho->id);		CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 0, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 32, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 64, 63), std::vector<std::list<int3>>())));		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);	}	else if(details.dst.x+1 == details.src.x && details.dst.y-1 == details.src.y) //bl	{		ho->moveDir = 7;		ho->isStanding = false;		CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, -1), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, -1), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, -1), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, -1), ho->id);		CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, 31), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 31), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 31), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 31), ho->id);		CGI->mh->ttiles[hp.x-3][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 1, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 33, 63), std::vector<std::list<int3>>())));		CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, 65, 63), std::vector<std::list<int3>>())));		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);	}	else if(details.dst.x+1 == details.src.x && details.dst.y == details.src.y) //l	{		ho->moveDir = 8;		ho->isStanding = false;		CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, 0), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, 0), ho->id);		subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, 0), ho->id);		subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, 0), ho->id);		CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(std::make_pair(ho, std::make_pair(genRect(32, 32, -31, 32), std::vector<std::list<int3>>())));		subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 32), ho->id);		subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 32), ho->id);		subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 32), ho->id);		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);		std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);	}	//first initializing done	SDL_framerateDelay(mainFPSmng); // after first move	//main moving	for(int i=1; i<32; i+=4)	{		if(details.dst.x+1 == details.src.x && details.dst.y+1 == details.src.y) //tl		{			subRect(hp.x-3, hp.y-2, hp.z, genRect(32, 32, -31+i, -31+i), ho->id);			subRect(hp.x-2, hp.y-2, hp.z, genRect(32, 32, 1+i, -31+i), ho->id);			subRect(hp.x-1, hp.y-2, hp.z, genRect(32, 32, 33+i, -31+i), ho->id);			subRect(hp.x, hp.y-2, hp.z, genRect(32, 32, 65+i, -31+i), ho->id);			subRect(hp.x-3, hp.y-1, hp.z, genRect(32, 32, -31+i, 1+i), ho->id);			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1+i, 1+i), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33+i, 1+i), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65+i, 1+i), ho->id);			subRect(hp.x-3, hp.y, hp.z, genRect(32, 32, -31+i, 33+i), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1+i, 33+i), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33+i, 33+i), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65+i, 33+i), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);*/		}		else if(details.dst.x == details.src.x && details.dst.y+1 == details.src.y) //t		{			subRect(hp.x-2, hp.y-2, hp.z, genRect(32, 32, 0, -31+i), ho->id);			subRect(hp.x-1, hp.y-2, hp.z, genRect(32, 32, 32, -31+i), ho->id);			subRect(hp.x, hp.y-2, hp.z, genRect(32, 32, 64, -31+i), ho->id);			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 0, 1+i), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 32, 1+i), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 64, 1+i), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 0, 33+i), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 32, 33+i), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 64, 33+i), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);*/		}		else if(details.dst.x-1 == details.src.x && details.dst.y+1 == details.src.y) //tr		{			subRect(hp.x-2, hp.y-2, hp.z, genRect(32, 32, -1-i, -31+i), ho->id);			subRect(hp.x-1, hp.y-2, hp.z, genRect(32, 32, 31-i, -31+i), ho->id);			subRect(hp.x, hp.y-2, hp.z, genRect(32, 32, 63-i, -31+i), ho->id);			subRect(hp.x+1, hp.y-2, hp.z, genRect(32, 32, 95-i, -31+i), ho->id);			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1-i, 1+i), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31-i, 1+i), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63-i, 1+i), ho->id);			subRect(hp.x+1, hp.y-1, hp.z, genRect(32, 32, 95-i, 1+i), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1-i, 33+i), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31-i, 33+i), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63-i, 33+i), ho->id);			subRect(hp.x+1, hp.y, hp.z, genRect(32, 32, 95-i, 33+i), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-2][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.end(), ocmptwo_cgin);*/		}		else if(details.dst.x-1 == details.src.x && details.dst.y == details.src.y) //r		{			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1-i, 0), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31-i, 0), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63-i, 0), ho->id);			subRect(hp.x+1, hp.y-1, hp.z, genRect(32, 32, 95-i, 0), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1-i, 32), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31-i, 32), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63-i, 32), ho->id);			subRect(hp.x+1, hp.y, hp.z, genRect(32, 32, 95-i, 32), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.end(), ocmptwo_cgin);*/		}		else if(details.dst.x-1 == details.src.x && details.dst.y-1 == details.src.y) //br		{			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1-i, -1-i), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31-i, -1-i), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63-i, -1-i), ho->id);			subRect(hp.x+1, hp.y-1, hp.z, genRect(32, 32, 95-i, -1-i), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1-i, 31-i), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31-i, 31-i), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63-i, 31-i), ho->id);			subRect(hp.x+1, hp.y, hp.z, genRect(32, 32, 95-i, 31-i), ho->id);			subRect(hp.x-2, hp.y+1, hp.z, genRect(32, 32, -1-i, 63-i), ho->id);			subRect(hp.x-1, hp.y+1, hp.z, genRect(32, 32, 31-i, 63-i), ho->id);			subRect(hp.x, hp.y+1, hp.z, genRect(32, 32, 63-i, 63-i), ho->id);			subRect(hp.x+1, hp.y+1, hp.z, genRect(32, 32, 95-i, 63-i), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);*/		}		else if(details.dst.x == details.src.x && details.dst.y-1 == details.src.y) //b		{			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 0, -1-i), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 32, -1-i), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 64, -1-i), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 0, 31-i), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 32, 31-i), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 64, 31-i), ho->id);			subRect(hp.x-2, hp.y+1, hp.z, genRect(32, 32, 0, 63-i), ho->id);			subRect(hp.x-1, hp.y+1, hp.z, genRect(32, 32, 32, 63-i), ho->id);			subRect(hp.x, hp.y+1, hp.z, genRect(32, 32, 64, 63-i), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);*/		}		else if(details.dst.x+1 == details.src.x && details.dst.y-1 == details.src.y) //bl		{			subRect(hp.x-3, hp.y-1, hp.z, genRect(32, 32, -31+i, -1-i), ho->id);			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1+i, -1-i), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33+i, -1-i), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65+i, -1-i), ho->id);			subRect(hp.x-3, hp.y, hp.z, genRect(32, 32, -31+i, 31-i), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1+i, 31-i), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33+i, 31-i), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65+i, 31-i), ho->id);			subRect(hp.x-3, hp.y+1, hp.z, genRect(32, 32, -31+i, 63-i), ho->id);			subRect(hp.x-2, hp.y+1, hp.z, genRect(32, 32, 1+i, 63-i), ho->id);			subRect(hp.x-1, hp.y+1, hp.z, genRect(32, 32, 33+i, 63-i), ho->id);			subRect(hp.x, hp.y+1, hp.z, genRect(32, 32, 65+i, 63-i), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.end(), ocmptwo_cgin);*/		}		else if(details.dst.x+1 == details.src.x && details.dst.y == details.src.y) //l		{			subRect(hp.x-3, hp.y-1, hp.z, genRect(32, 32, -31+i, 0), ho->id);			subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1+i, 0), ho->id);			subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33+i, 0), ho->id);			subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65+i, 0), ho->id);			subRect(hp.x-3, hp.y, hp.z, genRect(32, 32, -31+i, 32), ho->id);			subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1+i, 32), ho->id);			subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33+i, 32), ho->id);			subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65+i, 32), ho->id);			/*std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y-1][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y][hp.z].objects.end(), ocmptwo_cgin);			std::stable_sort(CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.begin(), CGI->mh->ttiles[hp.x][hp.y][hp.z].objects.end(), ocmptwo_cgin);*/		}		LOCPLINT->adventureInt->update(); //updating screen		CGI->screenh->updateScreen();		LOCPLINT->adventureInt->anim++;		SDL_framerateDelay(mainFPSmng); //for animation purposes	} //for(int i=1; i<32; i+=4)	//main moving done	//finishing move	if(details.dst.x+1 == details.src.x && details.dst.y+1 == details.src.y) //tl	{		delObjRect(hp.x, hp.y-2, hp.z, ho->id);		delObjRect(hp.x, hp.y-1, hp.z, ho->id);		delObjRect(hp.x, hp.y, hp.z, ho->id);		delObjRect(hp.x-1, hp.y, hp.z, ho->id);		delObjRect(hp.x-2, hp.y, hp.z, ho->id);		delObjRect(hp.x-3, hp.y, hp.z, ho->id);	}	else if(details.dst.x == details.src.x && details.dst.y+1 == details.src.y) //t	{		delObjRect(hp.x, hp.y, hp.z, ho->id);		delObjRect(hp.x-1, hp.y, hp.z, ho->id);		delObjRect(hp.x-2, hp.y, hp.z, ho->id);	}	else if(details.dst.x-1 == details.src.x && details.dst.y+1 == details.src.y) //tr	{		delObjRect(hp.x-2, hp.y-2, hp.z, ho->id);		delObjRect(hp.x-2, hp.y-1, hp.z, ho->id);		delObjRect(hp.x+1, hp.y, hp.z, ho->id);		delObjRect(hp.x, hp.y, hp.z, ho->id);		delObjRect(hp.x-1, hp.y, hp.z, ho->id);		delObjRect(hp.x-2, hp.y, hp.z, ho->id);	}	else if(details.dst.x-1 == details.src.x && details.dst.y == details.src.y) //r	{		delObjRect(hp.x-2, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-2, hp.y, hp.z, ho->id);	}	else if(details.dst.x-1 == details.src.x && details.dst.y-1 == details.src.y) //br	{		delObjRect(hp.x-2, hp.y+1, hp.z, ho->id);		delObjRect(hp.x-2, hp.y, hp.z, ho->id);		delObjRect(hp.x+1, hp.y-1, hp.z, ho->id);		delObjRect(hp.x, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-1, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-2, hp.y-1, hp.z, ho->id);	}	else if(details.dst.x == details.src.x && details.dst.y-1 == details.src.y) //b	{		delObjRect(hp.x, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-1, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-2, hp.y-1, hp.z, ho->id);	}	else if(details.dst.x+1 == details.src.x && details.dst.y-1 == details.src.y) //bl	{		delObjRect(hp.x, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-1, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-2, hp.y-1, hp.z, ho->id);		delObjRect(hp.x-3, hp.y-1, hp.z, ho->id);		delObjRect(hp.x, hp.y, hp.z, ho->id);		delObjRect(hp.x, hp.y+1, hp.z, ho->id);	}	else if(details.dst.x+1 == details.src.x && details.dst.y == details.src.y) //l	{		delObjRect(hp.x, hp.y-1, hp.z, ho->id);		delObjRect(hp.x, hp.y, hp.z, ho->id);	}	ho->pos = details.dst; //copy of hero's position	//ho->moveDir = 0; //move ended	ho->isStanding = true;	//move finished	adventureInt->heroList.draw();}void CPlayerInterface::heroKilled(const CHeroInstance * hero){}void CPlayerInterface::heroCreated(const CHeroInstance * hero){}SDL_Surface * CPlayerInterface::infoWin(void * specific) //specific=0 => draws info about selected town/hero //TODO - gdy sie dorobi sensowna hierarchie klas ins. to wywalic tego brzydkiego void*{	if (specific)		;//TODO: dorobic, ale w ogole to moze lepiej najpierw zastapic tego voida czym innym	else	{		if (adventureInt->selection.type == HEROI_TYPE)		{			char * buf = new char[10];			SDL_Surface * ret = copySurface(hInfo);			SDL_SetColorKey(ret,SDL_SRCCOLORKEY,SDL_MapRGB(ret->format,0,255,255));			blueToPlayersAdv(ret,playerID,1);			const CHeroInstance * curh = (const CHeroInstance *)adventureInt->selection.selected;			printAt(curh->name,75,15,GEOR13,zwykly,ret);			for (int i=0;i<PRIMARY_SKILLS;i++)			{				itoa(curh->primSkills[i],buf,10);				printAtMiddle(buf,84+28*i,68,GEOR13,zwykly,ret);			}			for (std::map<int,std::pair<CCreature*,int> >::const_iterator i=curh->army.slots.begin(); i!=curh->army.slots.end();i++)			{				blitAt(CGI->creh->smallImgs[(*i).second.first->idNumber],slotsPos[(*i).first].first+1,slotsPos[(*i).first].second+1,ret);				itoa((*i).second.second,buf,10);				printAtMiddle(buf,slotsPos[(*i).first].first+17,slotsPos[(*i).first].second+39,GEORM,zwykly,ret);			}			blitAt(curh->type->portraitLarge,11,12,ret);			itoa(curh->mana,buf,10);			printAtMiddle(buf,166,109,GEORM,zwykly,ret); //mana points			delete buf;			blitAt(morale22->ourImages[curh->getCurrentMorale()+3].bitmap,14,84,ret);			blitAt(luck22->ourImages[curh->getCurrentLuck()+3].bitmap,14,101,ret);			//SDL_SaveBMP(ret,"inf1.bmp");			return ret;		}		else if (adventureInt->selection.type == TOWNI_TYPE)		{			char * buf = new char[10];			SDL_Surface * ret = copySurface(hInfo);			return ret;		}		else			return NULL;	}	return NULL;}void CPlayerInterface::handleEvent(SDL_Event *sEvent){	current = sEvent;	if(sEvent->type == SDL_MOUSEMOTION)	{		CGI->curh->cursorMove(sEvent->motion.x, sEvent->motion.y);	}	if(sEvent->type==SDL_QUIT) 		exit(0);	else if (sEvent->type==SDL_KEYDOWN)	{		switch (sEvent->key.keysym.sym)		{		case SDLK_LEFT:			{				LOCPLINT->adventureInt->scrollingLeft = true;				break;			}		case (SDLK_RIGHT):			{				LOCPLINT->adventureInt->scrollingRight = true;				break;			}		case (SDLK_UP):			{				LOCPLINT->adventureInt->scrollingUp = true;				break;			}		case (SDLK_DOWN):			{				LOCPLINT->adventureInt->scrollingDown = true;				break;			}		case (SDLK_q):			{				exit(0);				break;			}		case (SDLK_u):			{				adventureInt->underground.clickLeft(true);			}		}	} //keydown end	else if(sEvent->type==SDL_KEYUP) 	{		switch (sEvent->key.keysym.sym)		{		case SDLK_LEFT:			{				LOCPLINT->adventureInt->scrollingLeft = false;				break;			}		case (SDLK_RIGHT):			{				LOCPLINT->adventureInt->scrollingRight = false;				break;			}		case (SDLK_UP):			{				LOCPLINT->adventureInt->scrollingUp = false;				break;			}		case (SDLK_DOWN):			{				LOCPLINT->adventureInt->scrollingDown = false;				break;			}		case (SDLK_u):			{				adventureInt->underground.clickLeft(false);			}		}	}//keyup end	else if(sEvent->type==SDL_MOUSEMOTION)	{		for (int i=0; i<hoverable.size();i++)		{			if (isItIn(&hoverable[i]->pos,sEvent->motion.x,sEvent->motion.y))			{				if (!hoverable[i]->hovered)					hoverable[i]->hover(true);			}			else if (hoverable[i]->hovered)			{				hoverable[i]->hover(false);			}		}		for(int i=0; i<motioninterested.size();i++)		{			if (isItIn(&motioninterested[i]->pos,sEvent->motion.x,sEvent->motion.y))			{				motioninterested[i]->mouseMoved(sEvent->motion);			}		}		if(sEvent->motion.x<15)		{			LOCPLINT->adventureInt->scrollingLeft = true;		}		else		{			LOCPLINT->adventureInt->scrollingLeft = false;		}		if(sEvent->motion.x>ekran->w-15)		{			LOCPLINT->adventureInt->scrollingRight = true;		}		else		{			LOCPLINT->adventureInt->scrollingRight = false;		}		if(sEvent->motion.y<15)		{			LOCPLINT->adventureInt->scrollingUp = true;		}		else		{			LOCPLINT->adventureInt->scrollingUp = false;		}		if(sEvent->motion.y>ekran->h-15)		{			LOCPLINT->adventureInt->scrollingDown = true;		}		else		{			LOCPLINT->adventureInt->scrollingDown = false;		}	} //mousemotion end	else if ((sEvent->type==SDL_MOUSEBUTTONDOWN) && (sEvent->button.button == SDL_BUTTON_LEFT))	{		for(int i=0; i<lclickable.size();i++)		{			if (isItIn(&lclickable[i]->pos,sEvent->motion.x,sEvent->motion.y))			{				lclickable[i]->clickLeft(true);			}		}	}	else if ((sEvent->type==SDL_MOUSEBUTTONUP) && (sEvent->button.button == SDL_BUTTON_LEFT))	{		for(int i=0; i<lclickable.size();i++)		{			if (isItIn(&lclickable[i]->pos,sEvent->motion.x,sEvent->motion.y))			{				lclickable[i]->clickLeft(false);			}			else				lclickable[i]->clickLeft(boost::logic::indeterminate);		}	}	else if ((sEvent->type==SDL_MOUSEBUTTONDOWN) && (sEvent->button.button == SDL_BUTTON_RIGHT))	{		for(int i=0; i<rclickable.size();i++)		{			if (isItIn(&rclickable[i]->pos,sEvent->motion.x,sEvent->motion.y))			{				rclickable[i]->clickRight(true);			}		}	}	else if ((sEvent->type==SDL_MOUSEBUTTONUP) && (sEvent->button.button == SDL_BUTTON_RIGHT))	{		for(int i=0; i<rclickable.size();i++)		{			if (isItIn(&rclickable[i]->pos,sEvent->motion.x,sEvent->motion.y))			{				rclickable[i]->clickRight(false);			}			else				rclickable[i]->clickRight(boost::logic::indeterminate);		}	}	current = NULL;} //event endint3 CPlayerInterface::repairScreenPos(int3 pos){	if(pos.x<=-Woff)		pos.x = -Woff+1;	if(pos.y<=-Hoff)		pos.y = -Hoff+1;	if(pos.x>CGI->mh->reader->map.width - this->adventureInt->terrain.tilesw + Woff)		pos.x = CGI->mh->reader->map.width - this->adventureInt->terrain.tilesw + Woff;	if(pos.y>CGI->mh->reader->map.height - this->adventureInt->terrain.tilesh + Hoff)		pos.y = CGI->mh->reader->map.height - this->adventureInt->terrain.tilesh + Hoff;	return pos;}
 |