[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