| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 | #include "stdafx.h"#include "CGameInterface.h"#include "CAdvMapInterface.h"#include "CMessage.h"#include "SDL_Extensions.h"#include "SDL_framerate.h"using namespace CSDL_Ext;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));			}}void ClickableL::activate(){	LOCPLINT->lclickable.push_back(this);}void ClickableL::deactivate(){	LOCPLINT->lclickable.erase		(std::find(LOCPLINT->lclickable.begin(),LOCPLINT->lclickable.end(),this));}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));}CPlayerInterface::CPlayerInterface(int Player, int serial){	playerID=Player;	serialID=serial;	CGI->localPlayer = playerID;	human=true;}void CPlayerInterface::init(){	CGI->localPlayer = serialID;	adventureInt = new CAdvMapInt(playerID);}void CPlayerInterface::yourTurn(){	CGI->localPlayer = serialID;	unsigned char & animVal = LOCPLINT->adventureInt->anim; //for animations handling	adventureInt->show();	//show rest of things	//initializing framerate keeper	FPSmanager * mainLoopFramerateKeeper = new FPSmanager;	SDL_initFramerate(mainLoopFramerateKeeper);	SDL_setFramerate(mainLoopFramerateKeeper, 24);	SDL_Event sEvent;	//framerate keeper initialized	for(;;) // main loop	{				LOCPLINT->adventureInt->updateScreen = false;		if(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;			}		}		if(LOCPLINT->adventureInt->scrollingRight)		{			if(LOCPLINT->adventureInt->position.x<CGI->ac->map.width-19+4)			{				LOCPLINT->adventureInt->position.x++;				LOCPLINT->adventureInt->updateScreen = true;			}		}		if(LOCPLINT->adventureInt->scrollingUp)		{			if(LOCPLINT->adventureInt->position.y>-Hoff)			{				LOCPLINT->adventureInt->position.y--;				LOCPLINT->adventureInt->updateScreen = true;			}		}		if(LOCPLINT->adventureInt->scrollingDown)		{			if(LOCPLINT->adventureInt->position.y<CGI->ac->map.height-18+4)			{				LOCPLINT->adventureInt->position.y++;				LOCPLINT->adventureInt->updateScreen = true;			}		}		if(LOCPLINT->adventureInt->updateScreen)		{			adventureInt->update();			LOCPLINT->adventureInt->updateScreen=false;		}		SDL_Delay(5); //give time for other apps		SDL_framerateDelay(mainLoopFramerateKeeper);	}}void CPlayerInterface::handleEvent(SDL_Event *sEvent){	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);			}		}		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;		}	}	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);		}	}} //event end
 |