[CF-Devel] cfclient, fixed parse_game_button_press()

crossfire-devel-admin at archives.real-time.com crossfire-devel-admin at archives.real-time.com
Wed Oct 15 15:22:19 CDT 2003


Hi!

The parse_game_button_press() function in x11/x11.c didn't take the
configured mapsize into account, but calculated the direction relative
to the player position in the default sized map.
Besides this, I cleaned up the code a bit, so I can as well paste the
whole function here instead of a patch:


static void parse_game_button_press(int button, int x, int y)
{
	int dx, dy, i;
	x = (x-2)/image_size;
	y = (y-2)/image_size;
	dx = x-use_config[CONFIG_MAPWIDTH]/2;
	dy = y-use_config[CONFIG_MAPHEIGHT]/2;

	if(button == 1)
	{

		/* Its unlikely this will happen, but if the window is
		 * resized, its possible to be out of bounds.
		 */
		if(dx<(-use_config[CONFIG_MAPWIDTH]/2)||dx>(use_config[CONFIG_MAPWIDTH]/2)||dy<(-use_config[CONFIG_MAPHEIGHT]/2)||dy>(use_config[CONFIG_MAPHEIGHT]/2)) return;
		look_at(dx,dy);
		return;
	}
	
	if (dx<0)
		i = 0;
	else if (dx>0)
		i = 6;
	else i =3;

	if (dy>0)
		i += 2;
	else if (dy==0)
		i++;

	if (button==2) {
		switch (i) {
			case 0: fire_dir (8);break;
			case 1: fire_dir (7);break;
			case 2: fire_dir (6);break;
			case 3: fire_dir (1);break;
			case 5: fire_dir (5);break;
			case 6: fire_dir (2);break;
			case 7: fire_dir (3);break;
			case 8: fire_dir (4);break;
		}
		/* Only want to fire once */
		clear_fire();
		return;
	}

	switch (i) {
		case 0: move_player (8);break;
		case 1: move_player (7);break;
		case 2: move_player (6);break;
		case 3: move_player (1);break;
		case 5: move_player (5);break;
		case 6: move_player (2);break;
		case 7: move_player (3);break;
		case 8: move_player (4);break;
	}
}


It would be nice if someone could commit this to CVS.

Bye
Jochen

-- 
Jochen Suckfuell  ---  
     
     http://www.suckfuell.net/jochen/
     
       ---

_______________________________________________
crossfire-devel mailing list
     
     crossfire-devel at lists.real-time.com
     
     
     https://mailman.real-time.com/mailman/listinfo/crossfire-devel
     
     
    


More information about the crossfire mailing list