// Kartogony - Menu Items

typedef struct MenuItem
{
char state;
char text[RAYDIUM_MAX_NAME_LEN];
char texture[RAYDIUM_MAX_NAME_LEN];
void *OnClick; //event
int  param;
float px;
float py;
float sizex;
float sizey;
float text_size;
float colors[9]; // 3 each, off, on, current
} MenuItem;

#define MAX_MENU_ITEMS 20
MenuItem menus[MAX_MENU_ITEMS];
char menu;
char menu_server_ip[RAYDIUM_MAX_NAME_LEN];
char menu_networked_game;;
int  menu_team;

void MenuItem_init(MenuItem *e)
{
e->state=0;
e->OnClick=NULL;
}

void MenuItem_colors(MenuItem *e, float off_r, float off_g, float off_b, float on_r, float on_g, float on_b)
{
float f[9];
f[0]=off_r;
f[1]=off_g;
f[2]=off_b;
f[3]=on_r;
f[4]=on_g;
f[5]=on_b;
// current color
f[6]=off_r;
f[7]=off_g;
f[8]=off_b;
memcpy(e->colors,f,sizeof(float)*9);
}

void MenuItem_init_all(void)
{
int i;
for(i=0;i<MAX_MENU_ITEMS;i++)
    MenuItem_init(&menus[i]);
}

void MenuItem_draw(void)
{
int i;
void (*f)(int);
float dec;

float mx;
float my;
float inc;

mx=(raydium_mouse_x/(raydium_window_tx+0.1))*100;
my=100-(raydium_mouse_y/(raydium_window_ty+0.1))*100;
inc=frame_time*4;

for(i=0;i<MAX_MENU_ITEMS;i++)
    if(menus[i].state)
	{
	f=menus[i].OnClick;
	
	if(mx>menus[i].px-(menus[i].sizex/2) && mx<menus[i].px+(menus[i].sizex/2) &&
	   my>menus[i].py-(menus[i].sizey/2) && my<menus[i].py+(menus[i].sizey/2) )
	   {
	   // selected
	   if(menus[i].colors[3]>menus[i].colors[0] && menus[i].colors[6]<menus[i].colors[3])
		menus[i].colors[6]+=inc;
	   if(menus[i].colors[0]>menus[i].colors[3] && menus[i].colors[6]>menus[i].colors[3])
		menus[i].colors[6]-=inc;

	   if(menus[i].colors[4]>menus[i].colors[1] && menus[i].colors[7]<menus[i].colors[4])
		menus[i].colors[7]+=inc;
	   if(menus[i].colors[1]>menus[i].colors[4] && menus[i].colors[7]>menus[i].colors[4])
		menus[i].colors[7]-=inc;

	   if(menus[i].colors[5]>menus[i].colors[2] && menus[i].colors[8]<menus[i].colors[5])
		menus[i].colors[8]+=inc;
	   if(menus[i].colors[2]>menus[i].colors[5] && menus[i].colors[8]>menus[i].colors[5])
		menus[i].colors[8]-=inc;	   
	   if(raydium_mouse_click==1 && f) 
	    { 
	    f(menus[i].param); 
	    raydium_mouse_click=0;
//	    return;
	    }
	   }
	   else
	   {
	   // not selected
	   if(menus[i].colors[3]>menus[i].colors[0] && menus[i].colors[6]>menus[i].colors[0])
		menus[i].colors[6]-=inc;
	   if(menus[i].colors[0]>menus[i].colors[3] && menus[i].colors[6]<menus[i].colors[0])
		menus[i].colors[6]+=inc;

	   if(menus[i].colors[4]>menus[i].colors[1] && menus[i].colors[7]>menus[i].colors[1])
		menus[i].colors[7]-=inc;
	   if(menus[i].colors[1]>menus[i].colors[4] && menus[i].colors[7]<menus[i].colors[1])
		menus[i].colors[7]+=inc;

	   if(menus[i].colors[5]>menus[i].colors[2] && menus[i].colors[8]>menus[i].colors[2])
		menus[i].colors[8]-=inc;
	   if(menus[i].colors[2]>menus[i].colors[5] && menus[i].colors[8]<menus[i].colors[2])
		menus[i].colors[8]+=inc;	   

	   }
	   
	raydium_osd_color_rgba(menus[i].colors[6],menus[i].colors[7],menus[i].colors[8],1);
	raydium_osd_draw_name(menus[i].texture,
			      menus[i].px-(menus[i].sizex/2),
			      menus[i].py-(menus[i].sizey/2),
			      menus[i].px+(menus[i].sizex/2),
			      menus[i].py+(menus[i].sizey/2));
	dec=strlen(menus[i].text)-2;
	dec*=(menus[i].text_size/26);
	raydium_osd_printf(menus[i].px-dec,menus[i].py,menus[i].text_size,0.5,"font2.tga","%s",menus[i].text);
	}
}



/////////////////
void menu_color(int);
void menu_ip(int);
void menu_main(int);
void menu_game(int);
void start_game(void);
///

void menu_number(int num)
{
int i;
i=strlen(menu_server_ip);

if(num==27)
    {
    if(i==0) return;
    menu_server_ip[i-1]=0;
    }
else
    if(i<15)
    {
    menu_server_ip[i]=num;
    menu_server_ip[i+1]=0;
    }
sprintf(menus[13].text,"^f%s",menu_server_ip);
}

void menu_main(int dummy)
{
menu_networked_game=0;
menu=1;

MenuItem_init_all();

// Training
menus[0].state=1;
strcpy(menus[0].text,"^fTraining");
strcpy(menus[0].texture,"aqua.tga");
menus[0].OnClick=menu_color;
menus[0].px=50;
menus[0].py=80;
menus[0].sizex=30;
menus[0].sizey=10;
menus[0].text_size=20;
Menu