All pastes #182738 Raw Edit

Stuff

public text v1 · immutable
#182738 ·published 2006-09-26 09:27 UTC
rendered paste body
void playerrequestsmove(int pid, int loc)
{
	if(!canplayermove(pid))
	{
		//TODO: Siust paketa zaidejuij, kad tipo BEEP
		return;
	}
	int ballx = playerlocx(pid);
	int bally = playerlocy(pid);
	int ballx_new;
	int bally_new;
	//I kuria puse eina zaidejas?
	if (loc == 1) //LEFT
	{
		ballx_new = (ballx - 1);
		bally_new = bally;
	}
	else if (loc == 2) //UP
	{
		ballx_new = ballx;
		bally_new = (bally - 1);
	}
	else if (loc == 3) //RIGHT
	{
		ballx_new = (ballx + 1);
		bally_new = bally;
	}
	else 
	{
		ballx_new = ballx;
		bally_new = (bally + 1);
	}
	//Jei sekanciam taske nieko ner, tadu iskart judam nieko toliau netikrindami
	if ((ballx_new < 1) || (ballx_new > 16) || (bally_new < 1) || (bally_new > 16) || (playerbyloc(ballx_new,bally_new)))
	{
		//TODO: Siunciam paketa, kad niekur neini (BEEP)
		return;
	}
	else if (getobjbyloc(ballx_new,bally_new))
	{
		unsigned int obj = getobjbyid(getobjbyloc(ballx_new,bally_new));
		if ((obj >= unmovable_min) && (obj <= unmovable_max) || (obj >= padid_min) && (obj <= padid_max))
		{
			//TODO: Siunciam paketa, kad niekur neini (BEEP)
			return;
		}
		else if ((boxid_min >= obj) && (boxid_max <= obj)) //jeigu kitas objektas, tada reiks kruvos checku, kaip stumdos, kur pasistums ir pan
		{
			if (player_cant_move_boxes[(pid - 20)])
			{		
				//TODO: Siunciam paketa, kad niekur neini (BEEP)
				return;
			}
			unsigned int nextpos;
			unsigned int obj_new;
			switch(loc)
			{
				case 1: //##!LEFT!##
					nextpos = (ballx_new - 1);
					obj_new = getobjbyid(getobjbyloc(nextpos,bally));
					if ((obj_new >= unmovable_min) && (obj_new <= unmovable_min) || (obj_new >= boxid_min) && (obj_new >= boxid_max) || (playerbyloc(nextpos,bally_new)))
					{
						//TODO: Siunciam paketa, kad niekur neini (BEEP)
						return;
					}
					else if (isdeathpoint(nextpos,bally))
					{
						changeobjtype(getobjbyloc(ballx_new,bally_new),32);
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
						//TODO: Paleist timeri, kuris istrintu tai po time_to_remove_dead_box sekundziu
						//timers uz time_to_remove_dead_box s. deleteobj(getobjbyloc(ballx_new,bally_new)) 
						return;
					}
					else if ((obj_new >= padid_min) && (obj_new <= padid_max))
					{
						//jei niekas nestovi ant pado, tadu deze ivaroma ten, ir priskaiciujami taskai ar tai efektas
						if (playerbyloc(nextpos,bally))
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						else if (player_pad_locked[(pid - 20)])
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						//Gaunam pid, kuriam priklauso pad'as, ant kurio uzvedama deze
						unsigned pid2 = (obj_new - 10);
						playeraddscore(pid2,generatescore(obj));

						//TODO: Broadcastinam paketa apie tai
						deleteobj(getobjbyloc(ballx_new,bally_new));
						playermove(pid,ballx_new,bally_new);
					}
					else 
					{
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
					}
					break;
				case 2: //##!UP!##
					nextpos = (bally_new - 1);
					obj_new = getobjbyid(getobjbyloc(ballx,nextpos));
					if ((obj_new >= unmovable_min) && (obj_new <= unmovable_min) || (obj_new >= boxid_min) && (obj_new >= boxid_max) || (playerbyloc(nextpos,bally_new)))
					{
						//TODO: Siunciam paketa, kad niekur neini (BEEP)
						return;
					}
					else if (isdeathpoint(ballx,nextpos))
					{
						changeobjtype(getobjbyloc(ballx_new,bally_new),32);
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
						//TODO: Paleist timeri, kuris istrintu tai po time_to_remove_dead_box sekundziu
						//timers uz time_to_remove_dead_box s. deleteobj(getobjbyloc(ballx_new,bally_new)) 
						return;
					}
					else if ((obj_new >= padid_min) && (obj_new <= padid_max))
					{
						//jei niekas nestovi ant pado, tadu deze ivaroma ten, ir priskaiciujami taskai ar tai efektas
						if (playerbyloc(nextpos,bally))
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						else if (player_pad_locked[(pid - 20)])
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						//Gaunam pid, kuriam priklauso pad'as, ant kurio uzvedama deze
						unsigned pid2 = (obj_new - 10);
						playeraddscore(pid2,generatescore(obj));

						//TODO: Broadcastinam paketa apie tai
						deleteobj(getobjbyloc(ballx_new,bally_new));
						playermove(pid,ballx_new,bally_new);
					}
					else 
					{
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
					}
					break;
				case 3://##!RIGHT!##
					nextpos = (ballx_new + 1);
					obj_new = getobjbyid(getobjbyloc(nextpos,bally));
					if ((obj_new >= unmovable_min) && (obj_new <= unmovable_min) || (obj_new >= boxid_min) && (obj_new >= boxid_max) || (playerbyloc(nextpos,bally_new)))
					{
						//TODO: Siunciam paketa, kad niekur neini (BEEP)
						return;
					}
					else if (isdeathpoint(nextpos,bally))
					{
						changeobjtype(getobjbyloc(ballx_new,bally_new),32);
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
						//TODO: Paleist timeri, kuris istrintu tai po time_to_remove_dead_box sekundziu
						//timers uz time_to_remove_dead_box s. deleteobj(getobjbyloc(ballx_new,bally_new)) 
						return;
					}
					else if ((obj_new >= padid_min) && (obj_new <= padid_max))
					{
						//jei niekas nestovi ant pado, tadu deze ivaroma ten, ir priskaiciujami taskai ar tai efektas
						if (playerbyloc(nextpos,bally))
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						else if (player_pad_locked[(pid - 20)])
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						//Gaunam pid, kuriam priklauso pad'as, ant kurio uzvedama deze
						unsigned pid2 = (obj_new - 10);
						playeraddscore(pid2,generatescore(obj));

						//TODO: Broadcastinam paketa apie tai
						deleteobj(getobjbyloc(ballx_new,bally_new));
						playermove(pid,ballx_new,bally_new);
					}
					else 
					{
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
					}
					break;
				case 4://##!DOWN!##
					nextpos = (bally_new + 1);
					obj_new = getobjbyid(getobjbyloc(ballx,nextpos));
					if ((obj_new >= unmovable_min) && (obj_new <= unmovable_min) || (obj_new >= boxid_min) && (obj_new >= boxid_max) || (playerbyloc(nextpos,bally_new)))
					{
						//TODO: Siunciam paketa, kad niekur neini (BEEP)
						return;
					}
					else if (isdeathpoint(ballx,nextpos))
					{
						changeobjtype(getobjbyloc(ballx_new,bally_new),32);
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
						//TODO: Paleist timeri, kuris istrintu tai po time_to_remove_dead_box sekundziu
						//timers uz time_to_remove_dead_box s. deleteobj(getobjbyloc(ballx_new,bally_new)) 
						return;
					}
					else if ((obj_new >= padid_min) && (obj_new <= padid_max))
					{
						//jei niekas nestovi ant pado, tadu deze ivaroma ten, ir priskaiciujami taskai ar tai efektas
						if (playerbyloc(nextpos,bally))
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						else if (player_pad_locked[(pid - 20)])
						{
							//TODO: Siunciam paketa, kad niekur neini (BEEP)
							return;
						}
						//Gaunam pid, kuriam priklauso pad'as, ant kurio uzvedama deze
						unsigned pid2 = (obj_new - 10);
						playeraddscore(pid2,generatescore(obj));

						//TODO: Broadcastinam paketa apie tai
						deleteobj(getobjbyloc(ballx_new,bally_new));
						playermove(pid,ballx_new,bally_new);
					}
					else 
					{
						playermove(pid,ballx_new,bally_new);
						moveobj(ballx_new,bally_new,nextpos,bally);
						//Broadcastint
					}
					break;
			}
		}
		else
			cout << "Bandoma pajudint nezinoma objekta: " << obj;
	}
	else {
		//TODO: Kelias laisvas, siunciam paketa, kad zaidejas pajudejo, ir pastumiam ji i nauja vieta
		playermove(pid,ballx_new,bally_new);
	}
	//1 - left; 2 up; 3 - right; 4 - down
}