//Config for Crosshairs
//crosshairs can be altered or added by editing only this file

//winquake calls this every frame.
//gl calls when changed or animating (that's the diference in animated and non animated)

//don't use a point more than 8 units away from the centre.
//default must be non animated

#ifdef NUMCROSSHAIRS

//case 0 is no cursor
//case 1 is the console text '+'
//neither use this file.

case 2:
	Pix(0 - 1, 0, c);
	Pix(0 - 3, 0, c2);
	Pix(0 + 1, 0, c);
	Pix(0 + 3, 0, c2);
	Pix(0, 0 - 1, c);
	Pix(0, 0 - 3, c2);
	Pix(0, 0 + 1, c);
	Pix(0, 0 + 3, c2);
	break;

case 3:
	Pix(0 - 1, 0, c);
	Pix(0 - 2, 0, c2);
	Pix(0 + 1, 0, c);
	Pix(0 + 2, 0, c2);
	Pix(0, 0 - 1, c);
	Pix(0, 0 - 2, c2);
	Pix(0, 0 + 1, c);
	Pix(0, 0 + 2, c2);
	break;

case 4:
	Pix(0-1, 0-1, c);
	Pix(0-2, 0-2, c2);
	Pix(0+1, 0+1, c);
	Pix(0+2, 0+2, c2);
	Pix(0-1, 0+1, c);
	Pix(0-2, 0+2, c2);
	Pix(0+1, 0-1, c);
	Pix(0+2, 0-2, c2);
	break;

case 5:
	Pix(0-1, 0-1, c);
	Pix(0-3, 0-3, c2);
	Pix(0+1, 0+1, c);
	Pix(0+3, 0+3, c2);
	Pix(0-1, 0+1, c);
	Pix(0-3, 0+3, c2);
	Pix(0+1, 0-1, c);
	Pix(0+3, 0-3, c2);
	break;

case 6:
	Pix(0-1, 0-2, c2);
	Pix(0+1, 0-2, c2);
	Pix(0-1, 0+2, c2);
	Pix(0+1, 0+2, c2);
	Pix(0-2, 0+1, c);
	Pix(0-2, 0-1, c);
	Pix(0+2, 0+1, c);
	Pix(0+2, 0-1, c);
	break;

case 7:
	Pix(0  , 0+2, c);
	Pix(0+1, 0+1, c2);
	Pix(0+2, 0  , c);
	Pix(0+1, 0-1, c2);
	Pix(0  , 0-2, c);
	Pix(0-1, 0-1, c2);
	Pix(0-2, 0  , c);
	Pix(0-1, 0+1, c2);
	break;

case 8:
	Pix(0  , 0+2, c);
	Pix(0  , 0-2, c);
	Pix(0+2, 0  , c2);
	Pix(0-2, 0  , c2);		
	break;

case 9:
	Pix(0  , 0-1, c);
	Pix(0-2, 0+1, c2);
	Pix(0+2, 0+1, c2);	
	break;

case 10:
	Pix(0  , 0-3, c);
	Pix(0-2, 0-2, c2);
	Pix(0  , 0-2, c);
	Pix(0+2, 0-2, c2);	
	Pix(0-3, 0  , c);
	Pix(0-2, 0  , c);
	Pix(0+2, 0  , c);
	Pix(0+3, 0  , c);
	Pix(0  , 0+3, c);
	Pix(0-2, 0+2, c2);
	Pix(0  , 0+2, c);
	Pix(0+2, 0+2, c2);
	break;

case 11:
	Pix(0-3, 0-3, c2);
	Pix(0  , 0-3, c);
	Pix(0+3, 0-3, c2);
	Pix(0-2, 0-2, c2);
	Pix(0  , 0-2, c);
	Pix(0+2, 0-2, c2);	
	Pix(0-3, 0  , c);
	Pix(0-2, 0  , c);
	Pix(0+2, 0  , c);
	Pix(0+3, 0  , c);
	Pix(0  , 0+3, c);
	Pix(0-2, 0+2, c2);
	Pix(0  , 0+2, c);
	Pix(0-3, 0+3, c2);
	Pix(0+2, 0+2, c2);
	Pix(0+3, 0+3, c2);
	break;

case 12:
	Pix(0-4, 0  , c2);
	Pix(0-3, 0  , c2);
	Pix(0-2, 0  , c);
	Pix(0-1, 0  , c);
	Pix(0+1, 0  , c);
	Pix(0+2, 0  , c);	
	Pix(0+3, 0  , c2);
	Pix(0+4, 0  , c2);		
	break;

case 13:
	Pix(0  , 0-4, c2);
	Pix(0  , 0-3, c2);
	Pix(0  , 0-2, c);
	Pix(0  , 0-1, c);
	Pix(0  , 0+1, c);
	Pix(0  , 0+2, c);	
	Pix(0  , 0+3, c2);
	Pix(0  , 0+4, c2);		
	break;

case 14:
	Pix(0-4, 0  , c2);
	Pix(0-3, 0  , c2);
	Pix(0-2, 0  , c);
	Pix(0-1, 0  , c);
	Pix(0+1, 0  , c);
	Pix(0+2, 0  , c);	
	Pix(0+3, 0  , c2);
	Pix(0+4, 0  , c2);		

	Pix(0  , 0-4, c2);
	Pix(0  , 0-3, c2);
	Pix(0  , 0-2, c);
	Pix(0  , 0-1, c);
	Pix(0  , 0+1, c);
	Pix(0  , 0+2, c);	
	Pix(0  , 0+3, c2);
	Pix(0  , 0+4, c2);
	break;

case 15:
	Pix(0  , 0-4, c);
	Pix(0-3, 0-3, c2);
	Pix(0  , 0-3, c);
	Pix(0+3, 0-3, c2);
	Pix(0-2, 0-2, c2);
	Pix(0  , 0-2, c);
	Pix(0+2, 0-2, c2);	
	Pix(0-4, 0  , c);
	Pix(0-3, 0  , c);
	Pix(0-2, 0  , c);
	Pix(0+2, 0  , c);
	Pix(0+3, 0  , c);
	Pix(0+4, 0  , c);
	Pix(0  , 0+3, c);
	Pix(0-2, 0+2, c2);
	Pix(0  , 0+2, c);
	Pix(0-3, 0+3, c2);
	Pix(0+2, 0+2, c2);
	Pix(0+3, 0+3, c2);
	Pix(0  , 0+4, c);
	break;

case 16:
	Pix(0  , 0  , c2);
	Pix(0+1, 0+1, c);
	break;

case 17:
	Pix(0 , 0 , c);
	Pix(0 ,  1, c2);
	Pix(0 ,  2, c2);
	Pix( 1,  3, c);
	Pix( 1, 0 , c2);
	Pix( 2, 0 , c2);
	Pix( 3,  1, c);
	break;

case 18:
	Pix(0 , 0 , c);
	Pix(-2, 0 , c2);
	Pix(-3, 0 , c2);
	Pix( 2, 0 , c2);
	Pix( 3, 0 , c2);
	Pix(-3, 1 , c2);
	Pix( 3, 1 , c2);
	Pix(-3, 2 , c2);
	Pix( 3, 2 , c2);
	Pix(-2, 2 , c2);
	Pix( 2, 2 , c2);
	Pix(-2, 3 , c2);
	Pix( 2, 3 , c2);
	Pix(-1, 3 , c2);
	Pix( 1, 3 , c2);
	Pix( 0, 3 , c2);
	Pix( 0, 4 , c2);
	break;

case 19:	//tripointer
	Pix(0 , -1, c);	//north
	Pix(0 , -2, c);
	Pix(0 , -3, c);

	Pix(1 , 1 , c);
	Pix(2 , 2 , c);//east
	Pix(3 , 3 , c);

	Pix(-1, 1 , c);//west
	Pix(-2, 2 , c);
	Pix(-3, 3 , c);
	
	break;

case 20:	//twin circles
	{
	#define DEG(a) (a * (3.14 / 180))
	#define SCLE 8	//don't let it get bigger than 16 wide (+-8)
	#define SCLE2 4

		int a;
		#ifndef GLQUAKE
		for (a = 0; a < 360; a+=5)	//softquake doesn't draw as many pixels.
		#else
		for (a = 0; a < 360; a+=1)	//glquake gets high precision - done less, ya see
		#endif
		{
			Pix((int)(sin(DEG(a)) * SCLE ), (int)(cos(DEG(a)) * SCLE ) , c );
			Pix((int)(cos(DEG(a)) * SCLE2), (int)(sin(DEG(a)) * SCLE2) , c2);
		}

	#undef SCLE
	}
break;

#else
//what's the next?
#define FIRSTANIMATEDCROSHAIR 21
#endif
#ifdef NUMCROSSHAIRS

case FIRSTANIMATEDCROSHAIR:	//spinners
{
	#define DEG(a) (a * (3.14 / 180))
	#define SPEED 6
	#define SCLE 8	//don't let it get bigger than 16 wide (+-8)
	#define SCLE2 4
	#define TIMER realtime
	Pix((int)(sin(TIMER*SPEED         ) * SCLE ), (int)(cos(TIMER*SPEED         ) * SCLE ) , c );
	Pix((int)(sin(TIMER*SPEED+DEG(90 )) * SCLE ), (int)(cos(TIMER*SPEED+DEG(90 )) * SCLE ) , c );
	Pix((int)(sin(TIMER*SPEED+DEG(180)) * SCLE ), (int)(cos(TIMER*SPEED+DEG(180)) * SCLE ) , c );	
	Pix((int)(sin(TIMER*SPEED+DEG(270)) * SCLE ), (int)(cos(TIMER*SPEED+DEG(270)) * SCLE ) , c );

	Pix((int)(cos(TIMER*SPEED         ) * SCLE2), (int)(sin(TIMER*SPEED         ) * SCLE2) , c2);
	Pix((int)(cos(TIMER*SPEED+DEG(90 )) * SCLE2), (int)(sin(TIMER*SPEED+DEG(90 )) * SCLE2) , c2);
	Pix((int)(cos(TIMER*SPEED+DEG(180)) * SCLE2), (int)(sin(TIMER*SPEED+DEG(180)) * SCLE2) , c2);	
	Pix((int)(cos(TIMER*SPEED+DEG(270)) * SCLE2), (int)(sin(TIMER*SPEED+DEG(270)) * SCLE2) , c2);

	#undef SCLE
}
	break;

case (FIRSTANIMATEDCROSHAIR+1):
{
	#define DEG(a) (a * (3.14 / 180))
	#define SPEED 6
	#define SCLE 4	//don't let it get bigger than 16 wide (+-8)
	#define TIMER realtime
	
	Pix((int)(sin(TIMER*SPEED         ) * SCLE), (int)(sin(TIMER*SPEED         ) * -SCLE) , c );
	Pix((int)(sin(TIMER*SPEED+DEG(180)) * SCLE), (int)(sin(TIMER*SPEED+DEG(180)) * -SCLE) , c2);	

	Pix((int)(cos(TIMER*SPEED         ) * SCLE), (int)(cos(TIMER*SPEED         ) * SCLE ) , c );
	Pix((int)(cos(TIMER*SPEED+DEG(180)) * SCLE), (int)(cos(TIMER*SPEED+DEG(180)) * SCLE ) , c2);	

	#undef SCLE
	#undef SPEED
}
	break;

case (FIRSTANIMATEDCROSHAIR+2):
{
	#define DEG(a) (a * (3.14 / 180))
	#define SPEED 6
	#define SCLE 4	//don't let it get bigger than 16 wide (+-8)
	#define TIMER realtime
	
	Pix((int)(sin(TIMER*SPEED         ) * SCLE), (int)(sin(TIMER*SPEED         ) * -SCLE) , c );
	Pix((int)(sin(TIMER*SPEED+DEG(90)) * SCLE), (int)(sin(TIMER*SPEED+DEG(90)) * -SCLE) , c2);
	Pix((int)(sin(TIMER*SPEED+DEG(180)) * SCLE), (int)(sin(TIMER*SPEED+DEG(180)) * -SCLE) , c);
	Pix((int)(sin(TIMER*SPEED+DEG(270)) * SCLE), (int)(sin(TIMER*SPEED+DEG(270)) * -SCLE) , c2);

	Pix((int)(cos(TIMER*SPEED         ) * SCLE), (int)(cos(TIMER*SPEED         ) * SCLE ) , c );
	Pix((int)(sin(TIMER*SPEED+DEG(90)) * SCLE), (int)(sin(TIMER*SPEED+DEG(90)) * SCLE) , c2);
	Pix((int)(cos(TIMER*SPEED+DEG(180)) * SCLE), (int)(cos(TIMER*SPEED+DEG(180)) * SCLE ) , c);	
	Pix((int)(sin(TIMER*SPEED+DEG(270)) * SCLE), (int)(sin(TIMER*SPEED+DEG(270)) * SCLE) , c2);

	#undef SCLE
	#undef SPEED
}
	break;

case (FIRSTANIMATEDCROSHAIR+3):
{
	int a;
	#define DEG(a) (a * (3.14 / 180))
	#define SPEED 9
	#define SPEED2 4
	#define SIZE 8	//don't let it get bigger than 16 wide (+-8)
	#define SCLE 8
	#define TIMER realtime

	for (a = -SIZE; a < SIZE; a+=2)
	{
		Pix(a, (int)(sin(TIMER*SPEED2) * SCLE), c);
		Pix((int)(sin(TIMER*SPEED) * SCLE), a, c2);
	}

}
	break;
#else

//what did we reach
#define NUMCROSSHAIRS FIRSTANIMATEDCROSHAIR+3
#define CROSSHAIR_H

#endif