X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=073e0db8c220116aa33eb1c88f880f4c0d20b980;hb=519124736d97d1e9042eb4713dc23e1a543e3dd4;hp=9526f198b7c3e228b4f13e1834eab148d07c4fd9;hpb=a59ebe8eb3a68db0a2ffcb8ce5127c767737d5ad;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index 9526f198..073e0db8 100644 --- a/src/events.c +++ b/src/events.c @@ -466,6 +466,17 @@ static void SetPlayerMouseAction(int mx, int my, int button) SetTileCursorXY(lx, ly); } +static Key GetKeyFromGridButton(int grid_button) +{ + return (grid_button == CHAR_GRID_BUTTON_LEFT ? setup.input[0].key.left : + grid_button == CHAR_GRID_BUTTON_RIGHT ? setup.input[0].key.right : + grid_button == CHAR_GRID_BUTTON_UP ? setup.input[0].key.up : + grid_button == CHAR_GRID_BUTTON_DOWN ? setup.input[0].key.down : + grid_button == CHAR_GRID_BUTTON_SNAP ? setup.input[0].key.snap : + grid_button == CHAR_GRID_BUTTON_DROP ? setup.input[0].key.drop : + KSYM_UNDEFINED); +} + void HandleButtonEvent(ButtonEvent *event) { #if DEBUG_EVENTS_BUTTON @@ -665,42 +676,11 @@ static struct static void HandleFingerEvent_VirtualButtons(FingerEvent *event) { -#if 1 int x = event->x * overlay.grid_xsize; int y = event->y * overlay.grid_ysize; int grid_button = overlay.grid_button[x][y]; int grid_button_action = GET_ACTION_FROM_GRID_BUTTON(grid_button); - Key key = (grid_button == CHAR_GRID_BUTTON_LEFT ? setup.input[0].key.left : - grid_button == CHAR_GRID_BUTTON_RIGHT ? setup.input[0].key.right : - grid_button == CHAR_GRID_BUTTON_UP ? setup.input[0].key.up : - grid_button == CHAR_GRID_BUTTON_DOWN ? setup.input[0].key.down : - grid_button == CHAR_GRID_BUTTON_SNAP ? setup.input[0].key.snap : - grid_button == CHAR_GRID_BUTTON_DROP ? setup.input[0].key.drop : - KSYM_UNDEFINED); -#else - float ypos = 1.0 - 1.0 / 3.0 * video.display_width / video.display_height; - float event_x = (event->x); - float event_y = (event->y - ypos) / (1 - ypos); - Key key = (event_x > 0 && event_x < 1.0 / 6.0 && - event_y > 2.0 / 3.0 && event_y < 1 ? - setup.input[0].key.snap : - event_x > 1.0 / 6.0 && event_x < 1.0 / 3.0 && - event_y > 2.0 / 3.0 && event_y < 1 ? - setup.input[0].key.drop : - event_x > 7.0 / 9.0 && event_x < 8.0 / 9.0 && - event_y > 0 && event_y < 1.0 / 3.0 ? - setup.input[0].key.up : - event_x > 6.0 / 9.0 && event_x < 7.0 / 9.0 && - event_y > 1.0 / 3.0 && event_y < 2.0 / 3.0 ? - setup.input[0].key.left : - event_x > 8.0 / 9.0 && event_x < 1 && - event_y > 1.0 / 3.0 && event_y < 2.0 / 3.0 ? - setup.input[0].key.right : - event_x > 7.0 / 9.0 && event_x < 8.0 / 9.0 && - event_y > 2.0 / 3.0 && event_y < 1 ? - setup.input[0].key.down : - KSYM_UNDEFINED); -#endif + Key key = GetKeyFromGridButton(grid_button); int key_status = (event->type == EVENT_FINGERRELEASE ? KEY_RELEASED : KEY_PRESSED); char *key_status_name = (key_status == KEY_RELEASED ? "KEY_RELEASED" :